gwenhywfar  4.3.1
gwen_sar_fileheader.c
Go to the documentation of this file.
00001 /**********************************************************
00002  * This file has been automatically created by "typemaker2"
00003  * from the file "gwen_sar_fileheader.xml".
00004  * Please do not edit this file, all changes will be lost.
00005  * Better edit the mentioned source file instead.
00006  **********************************************************/
00007 
00008 #ifdef HAVE_CONFIG_H
00009 # include <config.h>
00010 #endif
00011 
00012 #include "gwen_sar_fileheader_p.h"
00013 
00014 #include <gwenhywfar/misc.h>
00015 #include <gwenhywfar/debug.h>
00016 
00017 /* code headers */
00018 
00019 /* macro functions */
00020 GWEN_LIST_FUNCTIONS(GWEN_SAR_FILEHEADER, GWEN_SarFileHeader)
00021 GWEN_LIST2_FUNCTIONS(GWEN_SAR_FILEHEADER, GWEN_SarFileHeader)
00022 
00023 
00024 GWEN_SAR_FILEHEADER_FTYPE GWEN_SarFileHeader_FType_fromString(const char *p_s) {
00025   if (p_s && *p_s) {
00026     if (strcasecmp(p_s, "none") == 0)
00027       return GWEN_SarFileHeader_FType_None;
00028     else if (strcasecmp(p_s, "file") == 0)
00029       return GWEN_SarFileHeader_FType_File;
00030     else if (strcasecmp(p_s, "dir") == 0)
00031       return GWEN_SarFileHeader_FType_Dir;
00032     else if (strcasecmp(p_s, "symLink") == 0)
00033       return GWEN_SarFileHeader_FType_SymLink;
00034   }
00035   return GWEN_SarFileHeader_FType_Unknown;
00036 }
00037 
00038 GWEN_SAR_FILEHEADER_STATUS GWEN_SarFileHeader_Status_fromString(const char *p_s) {
00039   if (p_s && *p_s) {
00040     if (strcasecmp(p_s, "active") == 0)
00041       return GWEN_SarFileHeader_Status_Active;
00042     else if (strcasecmp(p_s, "deleted") == 0)
00043       return GWEN_SarFileHeader_Status_Deleted;
00044   }
00045   return GWEN_SarFileHeader_Status_Unknown;
00046 }
00047 
00048 const char *GWEN_SarFileHeader_FType_toString(GWEN_SAR_FILEHEADER_FTYPE p_i) {
00049   switch(p_i) {
00050   case GWEN_SarFileHeader_FType_None:
00051     return "none";
00052   case GWEN_SarFileHeader_FType_File:
00053     return "file";
00054   case GWEN_SarFileHeader_FType_Dir:
00055     return "dir";
00056   case GWEN_SarFileHeader_FType_SymLink:
00057     return "symLink";
00058   default:
00059     return "unknown";
00060   }
00061 }
00062 
00063 const char *GWEN_SarFileHeader_Status_toString(GWEN_SAR_FILEHEADER_STATUS p_i) {
00064   switch(p_i) {
00065   case GWEN_SarFileHeader_Status_Active:
00066     return "active";
00067   case GWEN_SarFileHeader_Status_Deleted:
00068     return "deleted";
00069   default:
00070     return "unknown";
00071   }
00072 }
00073 
00074 GWEN_SAR_FILEHEADER *GWEN_SarFileHeader_new(void) {
00075   GWEN_SAR_FILEHEADER *p_struct;
00076 
00077   GWEN_NEW_OBJECT(GWEN_SAR_FILEHEADER, p_struct)
00078   p_struct->_refCount = 1;
00079   GWEN_LIST_INIT(GWEN_SAR_FILEHEADER, p_struct)
00080   /* members */
00081   p_struct->status = 0;
00082   p_struct->flags = 0;
00083   p_struct->path = NULL;
00084   p_struct->fileType = 0;
00085   p_struct->permissions = 0;
00086   p_struct->atime = NULL;
00087   p_struct->mtime = NULL;
00088   p_struct->ctime = NULL;
00089   p_struct->fileSize = 0;
00090   p_struct->headerStartPos = 0;
00091   p_struct->headerSize = 0;
00092   p_struct->dataPos = 0;
00093   p_struct->dataSize = 0;
00094   p_struct->hashPos = 0;
00095 
00096   return p_struct;
00097 }
00098 
00099 void GWEN_SarFileHeader_free(GWEN_SAR_FILEHEADER *p_struct) {
00100   if (p_struct) {
00101     assert(p_struct->_refCount);
00102     if (p_struct->_refCount == 1) {
00103       GWEN_LIST_FINI(GWEN_SAR_FILEHEADER, p_struct)
00104       /* members */
00105       free(p_struct->path);
00106       GWEN_Time_free(p_struct->atime);
00107       GWEN_Time_free(p_struct->mtime);
00108       GWEN_Time_free(p_struct->ctime);
00109       p_struct->_refCount = 0;
00110       GWEN_FREE_OBJECT(p_struct);
00111     } else
00112       p_struct->_refCount--;
00113   }
00114 }
00115 
00116 void GWEN_SarFileHeader_Attach(GWEN_SAR_FILEHEADER *p_struct) {
00117   assert(p_struct);
00118   assert(p_struct->_refCount);
00119   p_struct->_refCount++;
00120 }
00121 
00122 GWEN_SAR_FILEHEADER *GWEN_SarFileHeader_dup(const GWEN_SAR_FILEHEADER *p_src) {
00123   GWEN_SAR_FILEHEADER *p_struct;
00124 
00125   assert(p_src);
00126   p_struct = GWEN_SarFileHeader_new();
00127   /* member "status" */
00128   p_struct->status = p_src->status;
00129 
00130   /* member "flags" */
00131   p_struct->flags = p_src->flags;
00132 
00133   /* member "path" */
00134   if (p_struct->path) {
00135     free(p_struct->path);
00136     p_struct->path = NULL;
00137   }
00138   if (p_src->path) {
00139     p_struct->path = strdup(p_src->path);
00140   }
00141 
00142   /* member "fileType" */
00143   p_struct->fileType = p_src->fileType;
00144 
00145   /* member "permissions" */
00146   p_struct->permissions = p_src->permissions;
00147 
00148   /* member "atime" */
00149   if (p_struct->atime) {
00150     GWEN_Time_free(p_struct->atime);
00151     p_struct->atime = NULL;
00152   }
00153   if (p_src->atime) {
00154     p_struct->atime = GWEN_Time_dup(p_src->atime);
00155   }
00156 
00157   /* member "mtime" */
00158   if (p_struct->mtime) {
00159     GWEN_Time_free(p_struct->mtime);
00160     p_struct->mtime = NULL;
00161   }
00162   if (p_src->mtime) {
00163     p_struct->mtime = GWEN_Time_dup(p_src->mtime);
00164   }
00165 
00166   /* member "ctime" */
00167   if (p_struct->ctime) {
00168     GWEN_Time_free(p_struct->ctime);
00169     p_struct->ctime = NULL;
00170   }
00171   if (p_src->ctime) {
00172     p_struct->ctime = GWEN_Time_dup(p_src->ctime);
00173   }
00174 
00175   /* member "fileSize" */
00176   p_struct->fileSize = p_src->fileSize;
00177 
00178   /* member "headerStartPos" */
00179   p_struct->headerStartPos = p_src->headerStartPos;
00180 
00181   /* member "headerSize" */
00182   p_struct->headerSize = p_src->headerSize;
00183 
00184   /* member "dataPos" */
00185   p_struct->dataPos = p_src->dataPos;
00186 
00187   /* member "dataSize" */
00188   p_struct->dataSize = p_src->dataSize;
00189 
00190   /* member "hashPos" */
00191   p_struct->hashPos = p_src->hashPos;
00192 
00193   return p_struct;
00194 }
00195 
00196 int GWEN_SarFileHeader_GetStatus(const GWEN_SAR_FILEHEADER *p_struct) {
00197   assert(p_struct);
00198   return p_struct->status;
00199 }
00200 
00201 uint32_t GWEN_SarFileHeader_GetFlags(const GWEN_SAR_FILEHEADER *p_struct) {
00202   assert(p_struct);
00203   return p_struct->flags;
00204 }
00205 
00206 const char *GWEN_SarFileHeader_GetPath(const GWEN_SAR_FILEHEADER *p_struct) {
00207   assert(p_struct);
00208   return p_struct->path;
00209 }
00210 
00211 int GWEN_SarFileHeader_GetFileType(const GWEN_SAR_FILEHEADER *p_struct) {
00212   assert(p_struct);
00213   return p_struct->fileType;
00214 }
00215 
00216 uint32_t GWEN_SarFileHeader_GetPermissions(const GWEN_SAR_FILEHEADER *p_struct) {
00217   assert(p_struct);
00218   return p_struct->permissions;
00219 }
00220 
00221 const GWEN_TIME *GWEN_SarFileHeader_GetAtime(const GWEN_SAR_FILEHEADER *p_struct) {
00222   assert(p_struct);
00223   return p_struct->atime;
00224 }
00225 
00226 const GWEN_TIME *GWEN_SarFileHeader_GetMtime(const GWEN_SAR_FILEHEADER *p_struct) {
00227   assert(p_struct);
00228   return p_struct->mtime;
00229 }
00230 
00231 const GWEN_TIME *GWEN_SarFileHeader_GetCtime(const GWEN_SAR_FILEHEADER *p_struct) {
00232   assert(p_struct);
00233   return p_struct->ctime;
00234 }
00235 
00236 uint64_t GWEN_SarFileHeader_GetFileSize(const GWEN_SAR_FILEHEADER *p_struct) {
00237   assert(p_struct);
00238   return p_struct->fileSize;
00239 }
00240 
00241 uint64_t GWEN_SarFileHeader_GetHeaderStartPos(const GWEN_SAR_FILEHEADER *p_struct) {
00242   assert(p_struct);
00243   return p_struct->headerStartPos;
00244 }
00245 
00246 uint64_t GWEN_SarFileHeader_GetHeaderSize(const GWEN_SAR_FILEHEADER *p_struct) {
00247   assert(p_struct);
00248   return p_struct->headerSize;
00249 }
00250 
00251 uint64_t GWEN_SarFileHeader_GetDataPos(const GWEN_SAR_FILEHEADER *p_struct) {
00252   assert(p_struct);
00253   return p_struct->dataPos;
00254 }
00255 
00256 uint64_t GWEN_SarFileHeader_GetDataSize(const GWEN_SAR_FILEHEADER *p_struct) {
00257   assert(p_struct);
00258   return p_struct->dataSize;
00259 }
00260 
00261 uint64_t GWEN_SarFileHeader_GetHashPos(const GWEN_SAR_FILEHEADER *p_struct) {
00262   assert(p_struct);
00263   return p_struct->hashPos;
00264 }
00265 
00266 void GWEN_SarFileHeader_SetStatus(GWEN_SAR_FILEHEADER *p_struct, int p_src) {
00267   assert(p_struct);
00268   p_struct->status = p_src;
00269 }
00270 
00271 void GWEN_SarFileHeader_AddStatus(GWEN_SAR_FILEHEADER *p_struct, int p_src) {
00272   assert(p_struct);
00273   p_struct->status |= p_src;
00274 }
00275 
00276 void GWEN_SarFileHeader_SubStatus(GWEN_SAR_FILEHEADER *p_struct, int p_src) {
00277   assert(p_struct);
00278   p_struct->status &= ~p_src;
00279 }
00280 
00281 void GWEN_SarFileHeader_SetFlags(GWEN_SAR_FILEHEADER *p_struct, uint32_t p_src) {
00282   assert(p_struct);
00283   p_struct->flags = p_src;
00284 }
00285 
00286 void GWEN_SarFileHeader_AddFlags(GWEN_SAR_FILEHEADER *p_struct, uint32_t p_src) {
00287   assert(p_struct);
00288   p_struct->flags |= p_src;
00289 }
00290 
00291 void GWEN_SarFileHeader_SubFlags(GWEN_SAR_FILEHEADER *p_struct, uint32_t p_src) {
00292   assert(p_struct);
00293   p_struct->flags &= ~p_src;
00294 }
00295 
00296 void GWEN_SarFileHeader_SetPath(GWEN_SAR_FILEHEADER *p_struct, const char *p_src) {
00297   assert(p_struct);
00298   if (p_struct->path) {
00299     free(p_struct->path);
00300   }
00301   if (p_src) {
00302     p_struct->path = strdup(p_src);
00303   } else {
00304     p_struct->path = NULL;
00305   }
00306 }
00307 
00308 void GWEN_SarFileHeader_SetFileType(GWEN_SAR_FILEHEADER *p_struct, int p_src) {
00309   assert(p_struct);
00310   p_struct->fileType = p_src;
00311 }
00312 
00313 void GWEN_SarFileHeader_SetPermissions(GWEN_SAR_FILEHEADER *p_struct, uint32_t p_src) {
00314   assert(p_struct);
00315   p_struct->permissions = p_src;
00316 }
00317 
00318 void GWEN_SarFileHeader_AddPermissions(GWEN_SAR_FILEHEADER *p_struct, uint32_t p_src) {
00319   assert(p_struct);
00320   p_struct->permissions |= p_src;
00321 }
00322 
00323 void GWEN_SarFileHeader_SubPermissions(GWEN_SAR_FILEHEADER *p_struct, uint32_t p_src) {
00324   assert(p_struct);
00325   p_struct->permissions &= ~p_src;
00326 }
00327 
00328 void GWEN_SarFileHeader_SetAtime(GWEN_SAR_FILEHEADER *p_struct, GWEN_TIME *p_src) {
00329   assert(p_struct);
00330   if (p_struct->atime) {
00331     GWEN_Time_free(p_struct->atime);
00332   }
00333   p_struct->atime = p_src;
00334 }
00335 
00336 void GWEN_SarFileHeader_SetMtime(GWEN_SAR_FILEHEADER *p_struct, GWEN_TIME *p_src) {
00337   assert(p_struct);
00338   if (p_struct->mtime) {
00339     GWEN_Time_free(p_struct->mtime);
00340   }
00341   p_struct->mtime = p_src;
00342 }
00343 
00344 void GWEN_SarFileHeader_SetCtime(GWEN_SAR_FILEHEADER *p_struct, GWEN_TIME *p_src) {
00345   assert(p_struct);
00346   if (p_struct->ctime) {
00347     GWEN_Time_free(p_struct->ctime);
00348   }
00349   p_struct->ctime = p_src;
00350 }
00351 
00352 void GWEN_SarFileHeader_SetFileSize(GWEN_SAR_FILEHEADER *p_struct, uint64_t p_src) {
00353   assert(p_struct);
00354   p_struct->fileSize = p_src;
00355 }
00356 
00357 void GWEN_SarFileHeader_SetHeaderStartPos(GWEN_SAR_FILEHEADER *p_struct, uint64_t p_src) {
00358   assert(p_struct);
00359   p_struct->headerStartPos = p_src;
00360 }
00361 
00362 void GWEN_SarFileHeader_SetHeaderSize(GWEN_SAR_FILEHEADER *p_struct, uint64_t p_src) {
00363   assert(p_struct);
00364   p_struct->headerSize = p_src;
00365 }
00366 
00367 void GWEN_SarFileHeader_SetDataPos(GWEN_SAR_FILEHEADER *p_struct, uint64_t p_src) {
00368   assert(p_struct);
00369   p_struct->dataPos = p_src;
00370 }
00371 
00372 void GWEN_SarFileHeader_SetDataSize(GWEN_SAR_FILEHEADER *p_struct, uint64_t p_src) {
00373   assert(p_struct);
00374   p_struct->dataSize = p_src;
00375 }
00376 
00377 void GWEN_SarFileHeader_SetHashPos(GWEN_SAR_FILEHEADER *p_struct, uint64_t p_src) {
00378   assert(p_struct);
00379   p_struct->hashPos = p_src;
00380 }
00381 
00382 GWEN_SAR_FILEHEADER_LIST *GWEN_SarFileHeader_List_dup(const GWEN_SAR_FILEHEADER_LIST *p_src) {
00383   GWEN_SAR_FILEHEADER_LIST *p_dest;
00384   GWEN_SAR_FILEHEADER *p_elem;
00385 
00386   assert(p_src);
00387   p_dest = GWEN_SarFileHeader_List_new();
00388   p_elem = GWEN_SarFileHeader_List_First(p_src);
00389   while(p_elem) {
00390     GWEN_SAR_FILEHEADER *p_cpy;
00391 
00392     p_cpy = GWEN_SarFileHeader_dup(p_elem);
00393     GWEN_SarFileHeader_List_Add(p_cpy, p_dest);
00394     p_elem = GWEN_SarFileHeader_List_Next(p_elem);
00395   }
00396 
00397   return p_dest;
00398 }
00399 
00400 
00401 /* code headers */
00402