home *** CD-ROM | disk | FTP | other *** search
/ Geek Gadgets 1 / ADE-1.bin / ade-dist / rpm-2.2.6-bin.lha / include / rpm / header.h < prev    next >
C/C++ Source or Header  |  1996-10-12  |  2KB  |  80 lines

  1. /* RPM - Copyright (C) 1995 Red Hat Software
  2.  * 
  3.  * header.h - routines for managing rpm tagged structures
  4.  */
  5.  
  6. #ifndef _header_h
  7. #define _header_h
  8. #include <stdio.h>
  9.  
  10. #if defined(__alpha__)
  11. typedef long int int_64;
  12. typedef int int_32;
  13. typedef short int int_16;
  14. typedef char int_8;
  15.  
  16. typedef unsigned int uint_32;
  17. typedef unsigned short uint_16;
  18.  
  19. #else
  20.  
  21. typedef long long int int_64;
  22. typedef int int_32;
  23. typedef short int int_16;
  24. typedef char int_8;
  25.  
  26. typedef unsigned int uint_32;
  27. typedef unsigned short uint_16;
  28. #endif
  29.  
  30. typedef struct headerToken *Header;
  31. typedef struct headerIteratorS *HeaderIterator;
  32.  
  33. /* read and write a header from a file */
  34. Header readHeader(int fd, int magicp);
  35. void writeHeader(int fd, Header h, int magicp);
  36. unsigned int sizeofHeader(Header h, int magicp);
  37.  
  38. #define NO_HEADER_MAGIC 0
  39. #define HEADER_MAGIC    1
  40.  
  41. /* load and unload a header from a chunk of memory */
  42. Header loadHeader(void *p);
  43. void *unloadHeader(Header h);
  44.  
  45. Header newHeader(void);
  46. void freeHeader(Header h);
  47.  
  48. /* dump a header to a file, in human readable format */
  49. void dumpHeader(Header h, FILE *f, int flags);
  50.  
  51. #define DUMP_INLINE   1
  52. #define DUMP_SYMBOLIC 2
  53.  
  54. int getEntry(Header h, int_32 tag, int_32 *type, void **p, int_32 *c);
  55. int addEntry(Header h, int_32 tag, int_32 type, void *p, int_32 c);
  56. int modifyEntry(Header h, int_32 tag, int_32 type, void *p, int_32 c);
  57.  
  58. int isEntry(Header h, int_32 tag);
  59.  
  60. HeaderIterator initIterator(Header h);
  61. int nextIterator(HeaderIterator iter,
  62.          int_32 *tag, int_32 *type, void **p, int_32 *c);
  63. void freeIterator(HeaderIterator iter);
  64.  
  65. Header copyHeader(Header h);
  66.  
  67. /* Entry Types */
  68.  
  69. #define NULL_TYPE 0
  70. #define CHAR_TYPE 1
  71. #define INT8_TYPE 2
  72. #define INT16_TYPE 3
  73. #define INT32_TYPE 4
  74. #define INT64_TYPE 5
  75. #define STRING_TYPE 6
  76. #define BIN_TYPE 7
  77. #define STRING_ARRAY_TYPE 8
  78.  
  79. #endif _header_h
  80.