1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162
|
/* Tux Commander VFS: Virtual File System types and definitions
* - prototypes functions and types
* draft version 3
*
* Copyright (C) 2003 Radek Cervinka <radek.cervinka@centrum.cz>
* Copyright (C) 2008 Tomas Bzatek <tbzatek@users.sourceforge.net>
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#ifndef __VFS_TYPES_H__
#define __VFS_TYPES_H__
#include <stdio.h>
#include <stdint.h>
#include <sys/types.h>
typedef int TVFSResult;
/* Compatible with gio/GAskPasswordFlags */
typedef enum {
VFS_ASK_PASSWORD_NEED_PASSWORD = 1<<0,
VFS_ASK_PASSWORD_NEED_USERNAME = 1<<1,
VFS_ASK_PASSWORD_NEED_DOMAIN = 1<<2,
VFS_ASK_PASSWORD_SAVING_SUPPORTED = 1<<3,
VFS_ASK_PASSWORD_ANONYMOUS_SUPPORTED = 1<<4,
VFS_ASK_PASSWORD_SAVE_INTERNAL = 1<<14,
VFS_ASK_PASSWORD_ARCHIVE_MODE = 1<<15
} TVFSAskPasswordFlags;
/* Compatible with gio/GPasswordSave */
typedef enum {
VFS_PASSWORD_SAVE_NEVER,
VFS_PASSWORD_SAVE_FOR_SESSION,
VFS_PASSWORD_SAVE_PERMANENTLY
} TVFSPasswordSave;
typedef void (* TVFSLogFunc)(const char *s);
typedef void *TVFSFileDes;
/* Return FALSE to break the operation */
typedef int (* TVFSProgressCallback)
(u_int64_t position,
u_int64_t max,
void *user_data);
/* Return index of the choice selected or negative number when dialog has been cancelled */
typedef void (* TVFSAskQuestionCallback)
(const char *message,
const char **choices,
int *choice,
int cancel_choice,
void *user_data);
typedef int (* TVFSAskPasswordCallback)
(const char *message,
const char *default_user,
const char *default_domain,
const char *default_password,
TVFSAskPasswordFlags flags,
char **username,
char **password,
int *anonymous,
char **domain,
TVFSPasswordSave *password_save,
void *user_data);
static const int cVFSVersion = 5; // current version of the VFS API
// Capabilities
static const int capVFS_nil = 0;
static const int capVFS_List = 1 << 0;
static const int capVFS_CopyOut = 1 << 1;
static const int capVFS_CopyIn = 1 << 2;
static const int capVFS_MkDir = 1 << 3;
static const int capVFS_RmDir = 1 << 4;
static const int capVFS_Multiple = 1 << 5; // support multiple files = background copy & thread safe
static const int capVFS_Delete = 1 << 6;
static const int capVFS_Rename = 1 << 7;
static const int capVFS_Execute = 1 << 8;
static const int capVFS_Append = 1 << 9;
// Error codes (TVFSResult)
enum {
cVFS_OK = 0,
cVFS_Failed = 1, // also No such file
cVFS_Cancelled = 2,
cVFS_Not_Supported = 3,
cVFS_No_More_Files = 4,
cVFS_ReadErr = 5,
cVFS_WriteErr = 6, // also Readonly FileSystem
cVFS_LoginFailed = 7,
cVFS_PermissionDenied = 8,
cVFS_NoSpaceLeft = 9,
cVFS_mallocFailed = 10,
cVFS_BadPassword = 11,
cVFS_MissingVolume = 12,
cVFS_CorruptedArchive = 13
};
// Open modes
enum {
cVFS_OpenRead,
cVFS_OpenWrite,
cVFS_OpenAppend
};
// Item Type enum
enum TVFSItemType {
vRegular = 0,
vSymlink = 1,
vChardev = 2,
vBlockdev = 3,
vDirectory = 4,
vFifo = 5,
vSock = 6,
vOther = 7
};
struct TVFSItem {
char *FName;
char *FDisplayName; // valid UTF-8 string
int64_t iSize;
int64_t iPackedSize; // set to -1 if plugin doesn't support this feature
__time_t m_time; // numbers should be located before the other variables (bug?)
__time_t a_time;
__time_t c_time;
__mode_t iMode;
char *sLinkTo;
__uid_t iUID;
__gid_t iGID;
enum TVFSItemType ItemType;
};
struct TVFSInfo {
char *ID; // unique identifier, not shown in GUI
char *Name; // plugin name, GUI string (UTF-8)
char *About; // GUI string (UTF-8)
char *Copyright; // GUI string (UTF-8)
};
#endif /* __VFS_TYPES_H__ */
|