diff options
Diffstat (limited to 'common/tuxcmd-vfs.h')
| -rw-r--r-- | common/tuxcmd-vfs.h | 154 |
1 files changed, 154 insertions, 0 deletions
diff --git a/common/tuxcmd-vfs.h b/common/tuxcmd-vfs.h new file mode 100644 index 0000000..2ebed6d --- /dev/null +++ b/common/tuxcmd-vfs.h @@ -0,0 +1,154 @@ +/* Tux Commander VFS: Virtual File System types and definitions + * - prototypes functions and types + * draft version 5 + * + * Copyright (C) 2003 Radek Cervinka <radek.cervinka@centrum.cz> + * Copyright (C) 2008-2009 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__ + +#ifdef __cplusplus + extern "C" { +#endif + + +#include <glib.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) + (guint64 position, + guint64 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); + + +/* current version of the VFS API */ +static const int cVFSVersion = 5; + +/* 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 +}; + + +enum TVFSItemType { + vRegular = 0, + vChardev = 1, + vBlockdev = 2, + vDirectory = 3, + vFifo = 4, + vSock = 5, + vOther = 6 +}; + + +struct TVFSItem { + char *FName; + char *FDisplayName; /* valid UTF-8 string */ + guint64 iSize; + gint64 iPackedSize; /* set to -1 if plugin doesn't support this feature */ + guint32 m_time; + guint32 a_time; + guint32 c_time; + guint32 iMode; + gboolean IsLink; + char *sLinkTo; + guint32 iUID; + guint32 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) */ +}; + + +#ifdef __cplusplus + } +#endif +#endif /* __VFS_TYPES_H__ */ |
