structure memory optimizations.
[silc.git] / lib / silcsftp / sftp_fs_memory.c
index b60cce73cb6c9c80f6871cea83904480d3b2770a..5ac53706a16739180c30dcf3fb4c145f09dd030b 100644 (file)
 
 #define DIR_SEPARATOR "/"
 
-struct SilcSFTPFilesystemOpsStruct silc_sftp_fs_memory;
+const struct SilcSFTPFilesystemOpsStruct silc_sftp_fs_memory;
 
-/* Memory filesystem entry */
 typedef struct MemFSEntryStruct {
-  char *name;                       /* Name of the entry */
-  char *data;                      /* Data of the entry */
-  bool directory;                  /* TRUE if this is directory */
-  SilcSFTPFSMemoryPerm perm;       /* Permissions */
   struct MemFSEntryStruct **entry;  /* Files and sub-directories */
-  SilcUInt32 entry_count;                  /* Number of files and sub-directories */
+  SilcUInt32 entry_count;                  /* Number of files and sub-directories */
   struct MemFSEntryStruct *parent;  /* non-NULL if `directory' is TRUE,
                                       includes parent directory. */
   unsigned long created;           /* Time of creation */
+  char *name;                       /* Name of the entry */
+  char *data;                      /* Data of the entry */
+  unsigned int directory : 1;      /* Set if this is directory */
+  unsigned int perm : 7;           /* Permissions */
 } *MemFSEntry;
 
 /* File handle. */
@@ -320,7 +319,8 @@ SilcSFTPFilesystem silc_sftp_fs_memory_alloc(SilcSFTPFSMemoryPerm perm)
   fs->root->name = strdup(DIR_SEPARATOR);
 
   filesystem = silc_calloc(1, sizeof(*filesystem));
-  filesystem->fs = &silc_sftp_fs_memory;
+  filesystem->fs = 
+    (struct SilcSFTPFilesystemOpsStruct *)&silc_sftp_fs_memory;
   filesystem->fs_context = (void *)fs;
 
   return filesystem;
@@ -1014,7 +1014,7 @@ void mem_extended(void *context, SilcSFTP sftp,
              callback_context);
 }
 
-struct SilcSFTPFilesystemOpsStruct silc_sftp_fs_memory = {
+const struct SilcSFTPFilesystemOpsStruct silc_sftp_fs_memory = {
   mem_get_handle,
   mem_encode_handle,
   mem_open,