/* Tux Commander VFS: Virtual File System types and definitions * - prototypes functions and types * draft version 5 * * Copyright (C) 2003 Radek Cervinka * Copyright (C) 2008-2009 Tomas Bzatek * * 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 /* 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; /* Module capability flags */ typedef enum { VFS_CAP_HANDLES_MULTIPLE_REQUESTS = 1 << 0, /* Multiple (background) operations; usually unsuitable for archives */ VFS_CAP_CAN_BROWSE_NETWORK = 1 << 1, /* Can handle network:// URIs, scan network resources */ VFS_CAP_CAN_CREATE_ARCHIVES = 1 << 2, /* Creating archives from scratch */ VFS_CAP_ARCHIVE_STREAMING = 1 << 3 /* Streaming archive type, can't handle random requests */ } TVFSModuleCapabilities; typedef void (* TVFSLogFunc) (const char *s); typedef void * TVFSFileDes; /* Return FALSE to break the operation */ typedef gboolean (* TVFSProgressCallback) (guint64 position, GError *error, 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 gboolean (* TVFSAskPasswordCallback) (const char *message, const char *default_user, const char *default_domain, const char *default_password, TVFSAskPasswordFlags flags, char **username, char **password, gboolean *anonymous, char **domain, TVFSPasswordSave *password_save, void *user_data); /* current version of the VFS API */ static const int cVFSVersion = 5; /* 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 */ guint64 inode_no; /* return 0 if not supported */ 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__ */