home *** CD-ROM | disk | FTP | other *** search
/ Chip 2001 Mobile / Chip_Mobile_2001.iso / palm / hobby / setiatpa / setiatpa.exe / seti@palm / pdbmake / pdb.h < prev    next >
C/C++ Source or Header  |  1999-07-20  |  3KB  |  99 lines

  1. /*
  2.  
  3.                            PDB file format
  4.  
  5.         This should be used only for reference because it
  6.         assumes no structure padding and big-endian
  7.         byte alignment.  All I/O to the actual PDB file must
  8.         be done with padding and byte order independent code.
  9.  
  10. */
  11.  
  12. #define kMaxPDBNameSize         32
  13. #define kPDBNameSuffix          ".PDB"
  14. #define kDOSFilenameSize        12
  15.  
  16. #if PRAGMA_ALIGN_SUPPORTED
  17. #pragma options align=packed
  18. #endif
  19.  
  20. #define timeOffset  2082844886LU      /* Time offset from Unix time() values */
  21.  
  22. typedef struct PDBHeader
  23. {
  24.         char            name[kMaxPDBNameSize];
  25.         unsigned short  flags;
  26.         unsigned short  version;
  27.         unsigned long   creationTime;
  28.         unsigned long   modificationTime;
  29.         unsigned long   backupTime;
  30.         unsigned long   modificationNumber;
  31.         unsigned long   appInfoOffset;
  32.         unsigned long   sortInfoOffset;
  33.         unsigned long   type;
  34.         unsigned long   creator;
  35.         unsigned long   uniqueID;
  36.         unsigned long   nextRecordID;
  37.         unsigned short  numRecords;
  38. } PDBHeader;
  39.  
  40. #define kPDBHeaderSize  78
  41.  
  42. typedef struct PDBResourceEntry
  43. {
  44.         unsigned long   type;
  45.         unsigned short  id;
  46.         unsigned long   offset;
  47. } PDBResourceEntry;
  48.  
  49. #define kPDBResourceEntrySize   10
  50.  
  51. typedef struct PDBRecordEntry
  52. {
  53.         unsigned long   offset;
  54.         unsigned char   attr;
  55.         unsigned long   uniqueID:24;
  56. } PDBRecordEntry;
  57.  
  58. #define dmRecAttrDelete 0x80    /* Delete this record on next sync */
  59. #define dmRecAttrDirty  0x40    /* Archive this record on next sync */
  60. #define dmRecAttrBusy   0x20    /* Record is in use */
  61. #define dmRecAttrSecret 0x10    /* Secret record, protected by password */
  62.  
  63. #define dmRecAttrCategoryMask 0x0F /* Mask to extract category from attribute */
  64.  
  65. #define kPDBRecordEntrySize     8
  66.  
  67. /*      PDB Format
  68.  
  69.         PBDHeader
  70.         PDBResourceEntry|PDBRecordEntry [numRecords]
  71.         2 bytes 
  72.         AppInfo (if applicable)
  73.         SortInfo (if applicable)
  74.         DATA ENTRIES
  75. */
  76.  
  77. #define kPDBFirstResourceOffset (kPDBHeaderSize + kPDBResourceEntrySize + 2)
  78. #define kPDBFirstRecordOffset   (kPDBHeaderSize + kPDBRecordEntrySize + 2)
  79.  
  80. enum PDBFlags {
  81.         pdbResourceFlag = 0x0001,          /* Is this a resource file ? */
  82.         pdbReadOnlyFlag = 0x0002,          /* Is database read only ? */
  83.         pdbAppInfoDirtyFlag = 0x0004,      /* Is application info block dirty ? */
  84.         pdbBackupFlag = 0x0008,            /* Back up to PC if no conduit defined */
  85.         pdbOKToInstallNewer = 0x0010,      /* OK to install a newer version if current database open */
  86.         pdbResetAfterInstall = 0x0020,     /* Must reset machine after installation */
  87.         pdbStream = 0x0080,                /* Used for file streaming */
  88.         pdbOpenFlag = 0x8000               /* Not closed properly */
  89. };
  90.  
  91. enum PDBVersion {
  92.         pdbVerReadOnly = 0x0001,
  93.         pdbVerWrite = 0x0002,
  94.         pdbVerReadWrite = 0x0003,
  95.         pdbVerLeaveOpen = 0x0004,
  96.         pdbVerExclusive = 0x0008,
  97.         pdbVerShowSecret = 0x0010
  98. };
  99.