fsmodule.h

Go to the documentation of this file.
00001 /***************************************************************************
00002  $RCSfile$
00003                              -------------------
00004     cvs         : $Id: fsmodule.h 82 2005-06-16 22:55:47Z aquamaniac $
00005     begin       : Mon Mar 01 2004
00006     copyright   : (C) 2004 by Martin Preuss
00007     email       : martin@libchipcard.de
00008 
00009  ***************************************************************************
00010  *          Please see toplevel file COPYING for license details           *
00011  ***************************************************************************/
00012 
00013 
00014 #ifndef LC_FS_MODULE_H
00015 #define LC_FS_MODULE_H
00016 
00017 
00018 #include <gwenhywfar/misc.h>
00019 #include <gwenhywfar/inherit.h>
00020 #include <gwenhywfar/stringlist2.h>
00021 #include <gwenhywfar/buffer.h>
00022 
00023 #include <chipcard2/chipcard2.h>
00024 
00025 
00026 enum LC_FS_ERROR {
00027   LC_FS_ErrorNone=0,
00028   LC_FS_ErrorGeneric,
00029   LC_FS_ErrorNotSupported,
00030   LC_FS_ErrorNotFound,
00031   LC_FS_ErrorNotFile,
00032   LC_FS_ErrorNotDir,
00033   LC_FS_ErrorExists,
00034   LC_FS_ErrorFull,
00035   LC_FS_ErrorInvalid,
00036   LC_FS_ErrorBrokenPipe,
00037   LC_FS_ErrorMissingArgs,
00038   LC_FS_ErrorNotEmpty,
00039 };
00040 
00041 
00042 
00043 typedef struct LC_FS_MODULE LC_FS_MODULE;
00044 
00045 GWEN_INHERIT_FUNCTION_LIB_DEFS(LC_FS_MODULE, CHIPCARD_API)
00046 
00047 
00048 #include <chipcard2-client/fs/fsnode.h>
00049 #include <chipcard2-client/fs/fs.h>
00050 
00051 
00052 LC_FS_MODULE *LC_FSModule_new();
00053 void LC_FSModule_free(LC_FS_MODULE *fs);
00054 void LC_FSModule_Attach(LC_FS_MODULE *fs);
00055 
00056 
00057 
00058 typedef int (*LC_FS_MODULE_MOUNT_FN)(LC_FS_MODULE *fs,
00059                                      LC_FS_NODE **nPtr);
00060 typedef int (*LC_FS_MODULE_UNMOUNT_FN)(LC_FS_MODULE *fs,
00061                                        LC_FS_NODE *node);
00062 
00063 
00064 typedef int (*LC_FS_MODULE_OPENDIR_FN)(LC_FS_MODULE *fs,
00065                                        LC_FS_NODE *node,
00066                                        const char *name,
00067                                        LC_FS_NODE **nPtr);
00068 
00069 typedef int (*LC_FS_MODULE_MKDIR_FN)(LC_FS_MODULE *fs,
00070                                      LC_FS_NODE *node,
00071                                      const char *name,
00072                                      GWEN_TYPE_UINT32 flags,
00073                                      LC_FS_NODE **nPtr);
00074 
00075 
00076 typedef int (*LC_FS_MODULE_READDIR_FN)(LC_FS_MODULE *fs,
00077                                        LC_FS_NODE *node,
00078                                        GWEN_STRINGLIST2 *sl);
00079 
00080 typedef int (*LC_FS_MODULE_CLOSEDIR_FN)(LC_FS_MODULE *fs,
00081                                         LC_FS_NODE *node);
00082 
00083 
00084 typedef int (*LC_FS_MODULE_OPENFILE_FN)(LC_FS_MODULE *fs,
00085                                         LC_FS_NODE *node,
00086                                         const char *name,
00087                                         LC_FS_NODE **nPtr);
00088 
00089 typedef int (*LC_FS_MODULE_CREATEFILE_FN)(LC_FS_MODULE *fs,
00090                                           LC_FS_NODE *node,
00091                                           const char *name,
00092                                           GWEN_TYPE_UINT32 flags,
00093                                           LC_FS_NODE **nPtr);
00094 
00095 typedef int (*LC_FS_MODULE_CLOSEFILE_FN)(LC_FS_MODULE *fs,
00096                                          LC_FS_NODE *node);
00097 
00098 
00099 typedef int (*LC_FS_MODULE_READFILE_FN)(LC_FS_MODULE *fs,
00100                                         LC_FS_NODE *node,
00101                                         GWEN_TYPE_UINT32 mode,
00102                                         GWEN_TYPE_UINT32 offset,
00103                                         GWEN_TYPE_UINT32 len,
00104                                         GWEN_BUFFER *buf);
00105 
00106 typedef int (*LC_FS_MODULE_WRITEFILE_FN)(LC_FS_MODULE *fs,
00107                                          LC_FS_NODE *node,
00108                                          GWEN_TYPE_UINT32 mode,
00109                                          GWEN_TYPE_UINT32 offset,
00110                                          GWEN_BUFFER *buf);
00111 
00112 typedef int (*LC_FS_MODULE_LOOKUP_FN)(LC_FS_MODULE *fs,
00113                                       LC_FS_NODE *node,
00114                                       const char *name,
00115                                       LC_FS_NODE **nPtr);
00116 
00117 typedef int (*LC_FS_MODULE_UNLINK_FN)(LC_FS_MODULE *fs,
00118                                       LC_FS_NODE *node,
00119                                       const char *name);
00120 
00121 
00122 typedef int (*LC_FS_MODULE_DUMP_FN)(LC_FS_MODULE *fs,
00123                                     LC_FS_NODE *node,
00124                                     FILE *f,
00125                                     int indent);
00126 
00127 
00128 
00129 void LC_FSModule_SetMountFn(LC_FS_MODULE *fs, LC_FS_MODULE_MOUNT_FN f);
00130 LC_FS_MODULE_MOUNT_FN LC_FSModule_GetMountFn(const LC_FS_MODULE *fs);
00131 
00132 void LC_FSModule_SetUnmountFn(LC_FS_MODULE *fs, LC_FS_MODULE_UNMOUNT_FN f);
00133 LC_FS_MODULE_UNMOUNT_FN LC_FSModule_GetUnmountFn(const LC_FS_MODULE *fs);
00134 
00135 void LC_FSModule_SetOpenDirFn(LC_FS_MODULE *fs, LC_FS_MODULE_OPENDIR_FN f);
00136 LC_FS_MODULE_OPENDIR_FN LC_FSModule_GetOpenDirFn(const LC_FS_MODULE *fs);
00137 
00138 void LC_FSModule_SetMkDirFn(LC_FS_MODULE *fs, LC_FS_MODULE_MKDIR_FN f);
00139 LC_FS_MODULE_MKDIR_FN LC_FSModule_GetMkDirFn(const LC_FS_MODULE *fs);
00140 
00141 void LC_FSModule_SetReadDirFn(LC_FS_MODULE *fs, LC_FS_MODULE_READDIR_FN f);
00142 LC_FS_MODULE_READDIR_FN LC_FSModule_GetReadDirFn(const LC_FS_MODULE *fs);
00143 
00144 void LC_FSModule_SetCloseDirFn(LC_FS_MODULE *fs, LC_FS_MODULE_CLOSEDIR_FN f);
00145 LC_FS_MODULE_CLOSEDIR_FN LC_FSModule_GetCloseDirFn(const LC_FS_MODULE *fs);
00146 
00147 void LC_FSModule_SetOpenFileFn(LC_FS_MODULE *fs, LC_FS_MODULE_OPENFILE_FN f);
00148 LC_FS_MODULE_OPENFILE_FN LC_FSModule_GetOpenFileFn(const LC_FS_MODULE *fs);
00149 
00150 void LC_FSModule_SetCreateFileFn(LC_FS_MODULE *fs,
00151                                  LC_FS_MODULE_CREATEFILE_FN f);
00152 LC_FS_MODULE_CREATEFILE_FN LC_FSModule_GetCreateFileFn(const LC_FS_MODULE *fs);
00153 
00154 void LC_FSModule_SetCloseFileFn(LC_FS_MODULE *fs,
00155                                 LC_FS_MODULE_CLOSEFILE_FN f);
00156 LC_FS_MODULE_CLOSEFILE_FN LC_FSModule_GetCloseFileFn(const LC_FS_MODULE *fs);
00157 
00158 
00159 void LC_FSModule_SetReadFileFn(LC_FS_MODULE *fs, LC_FS_MODULE_READFILE_FN f);
00160 LC_FS_MODULE_READFILE_FN LC_FSModule_GetReadFileFn(const LC_FS_MODULE *fs);
00161 
00162 void LC_FSModule_SetWriteFileFileFn(LC_FS_MODULE *fs,
00163                                     LC_FS_MODULE_WRITEFILE_FN f);
00164 LC_FS_MODULE_WRITEFILE_FN
00165   LC_FSModule_GetWriteFileFileFn(const LC_FS_MODULE *fs);
00166  
00167 
00168 void LC_FSModule_SetLookupFn(LC_FS_MODULE *fs, LC_FS_MODULE_LOOKUP_FN f);
00169 LC_FS_MODULE_LOOKUP_FN LC_FSModule_GetLookupFn(const LC_FS_MODULE *fs);
00170 
00171 void LC_FSModule_SetUnlinkFn(LC_FS_MODULE *fs, LC_FS_MODULE_UNLINK_FN f);
00172 LC_FS_MODULE_UNLINK_FN LC_FSModule_GetUnlinkFn(const LC_FS_MODULE *fs);
00173 
00174 void LC_FSModule_SetDumpFn(LC_FS_MODULE *fs, LC_FS_MODULE_DUMP_FN f);
00175 LC_FS_MODULE_DUMP_FN LC_FSModule_GetDumpFn(const LC_FS_MODULE *fs);
00176 
00177 
00178 
00179 GWEN_TYPE_UINT32 LC_FSModule_GetMountFlags(const LC_FS_MODULE *fs);
00180 void LC_FSModule_SetMountFlags(LC_FS_MODULE *fs, GWEN_TYPE_UINT32 fl);
00181 void LC_FSModule_AddMountFlags(LC_FS_MODULE *fs, GWEN_TYPE_UINT32 fl);
00182 void LC_FSModule_SubMountFlags(LC_FS_MODULE *fs, GWEN_TYPE_UINT32 fl);
00183 
00184 GWEN_TYPE_UINT32 LC_FSModule_GetActiveNodes(const LC_FS_MODULE *fs);
00185 void LC_FSModule_IncActiveNodes(LC_FS_MODULE *fs);
00186 void LC_FSModule_DecActiveNodes(LC_FS_MODULE *fs);
00187 
00188 
00189 int LC_FSModule_Dump(LC_FS_MODULE *fs,
00190                      LC_FS_NODE *node,
00191                      FILE *f,
00192                      int indent);
00193 
00194 
00195 #endif /* LC_FS_MODULE_H */

Generated on Sun Sep 23 14:52:31 2007 for libchipcard2 by  doxygen 1.5.3