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

  1. #ifndef H_RPMLIB
  2. #define H_RPMLIB
  3.  
  4. /* This is the *only* module users of rpmlib should need to include */
  5.  
  6. #include <db.h>
  7.  
  8. /* it shouldn't need these :-( */
  9. #include "dbindex.h"
  10. #include "header.h"
  11. #include "messages.h"
  12.  
  13. struct rpmTagTableEntry {
  14.     char * name;
  15.     int val;
  16. };
  17.  
  18. int pkgReadHeader(int fd, Header * hdr, int * isSource, int * major,
  19.           int * minor);
  20.    /* 0 = success */
  21.    /* 1 = bad magic */
  22.    /* 2 = error */
  23.  
  24. extern const struct rpmTagTableEntry rpmTagTable[];
  25. extern const int rpmTagTableSize;
  26.  
  27. /* these tags are for both the database and packages */
  28. /* none of these can be 0 !!                         */
  29.  
  30. #define RPMTAG_NAME              1000
  31. #define RPMTAG_VERSION            1001
  32. #define RPMTAG_RELEASE            1002
  33. #define RPMTAG_SERIAL           1003
  34. #define    RPMTAG_SUMMARY            1004
  35. #define RPMTAG_DESCRIPTION        1005
  36. #define RPMTAG_BUILDTIME        1006
  37. #define RPMTAG_BUILDHOST        1007
  38. #define RPMTAG_INSTALLTIME        1008
  39. #define RPMTAG_SIZE            1009
  40. #define RPMTAG_DISTRIBUTION        1010
  41. #define RPMTAG_VENDOR            1011
  42. #define RPMTAG_GIF            1012
  43. #define RPMTAG_XPM            1013
  44. #define RPMTAG_COPYRIGHT                1014
  45. #define RPMTAG_PACKAGER                 1015
  46. #define RPMTAG_GROUP                    1016
  47. #define RPMTAG_CHANGELOG                1017
  48. #define RPMTAG_SOURCE                   1018
  49. #define RPMTAG_PATCH                    1019
  50. #define RPMTAG_URL                      1020
  51. #define RPMTAG_OS                       1021
  52. #define RPMTAG_ARCH                     1022
  53. #define RPMTAG_PREIN                    1023
  54. #define RPMTAG_POSTIN                   1024
  55. #define RPMTAG_PREUN                    1025
  56. #define RPMTAG_POSTUN                   1026
  57. #define RPMTAG_FILENAMES        1027
  58. #define RPMTAG_FILESIZES        1028
  59. #define RPMTAG_FILESTATES        1029
  60. #define RPMTAG_FILEMODES        1030
  61. #define RPMTAG_FILEUIDS            1031
  62. #define RPMTAG_FILEGIDS            1032
  63. #define RPMTAG_FILERDEVS        1033
  64. #define RPMTAG_FILEMTIMES        1034
  65. #define RPMTAG_FILEMD5S            1035
  66. #define RPMTAG_FILELINKTOS        1036
  67. #define RPMTAG_FILEFLAGS        1037
  68. #define RPMTAG_ROOT                     1038
  69. #define RPMTAG_FILEUSERNAME             1039
  70. #define RPMTAG_FILEGROUPNAME            1040
  71. #define RPMTAG_EXCLUDE                  1041 /* not used */
  72. #define RPMTAG_EXCLUSIVE                1042 /* not used */
  73. #define RPMTAG_ICON                     1043
  74. #define RPMTAG_SOURCERPM                1044
  75. #define RPMTAG_FILEVERIFYFLAGS          1045
  76. #define RPMTAG_ARCHIVESIZE              1046
  77. #define RPMTAG_PROVIDES                 1047
  78. #define RPMTAG_REQUIREFLAGS             1048
  79. #define RPMTAG_REQUIRENAME              1049
  80. #define RPMTAG_REQUIREVERSION           1050
  81. #define RPMTAG_NOSOURCE                 1051
  82. #define RPMTAG_NOPATCH                  1052
  83. #define RPMTAG_CONFLICTFLAGS            1053
  84. #define RPMTAG_CONFLICTNAME             1054
  85. #define RPMTAG_CONFLICTVERSION          1055
  86. #define RPMTAG_DEFAULTPREFIX            1056
  87. #define RPMTAG_BUILDROOT                1057
  88. #define RPMTAG_INSTALLPREFIX        1058
  89. #define RPMTAG_EXCLUDEARCH              1059
  90. #define RPMTAG_EXCLUDEOS                1060
  91. #define RPMTAG_EXCLUSIVEARCH            1061
  92. #define RPMTAG_EXCLUSIVEOS              1062
  93. #define RPMTAG_AUTOREQPROV              1063 /* used internally by builds */
  94. #define RPMTAG_RPMVERSION        1064
  95.  
  96. #define RPMFILE_STATE_NORMAL         0
  97. #define RPMFILE_STATE_REPLACED         1
  98. #define RPMFILE_STATE_NOTINSTALLED    2
  99.  
  100. /* these can be ORed together */
  101. #define RPMFILE_CONFIG            1
  102. #define RPMFILE_DOC            2
  103.  
  104. #define INSTALL_REPLACEPKG    (1 << 0)
  105. #define INSTALL_REPLACEFILES    (1 << 1)
  106. #define INSTALL_TEST        (1 << 2)
  107. #define INSTALL_UPGRADE        (1 << 3)
  108. #define INSTALL_UPGRADETOOLD    (1 << 4)
  109. #define INSTALL_NODOCS        (1 << 5)
  110. #define INSTALL_NOSCRIPTS    (1 << 6)
  111. #define INSTALL_NOARCH        (1 << 7)
  112. #define INSTALL_NOOS        (1 << 8)
  113.  
  114. #define UNINSTALL_TEST          (1 << 0)
  115. #define UNINSTALL_NOSCRIPTS    (1 << 1)
  116.  
  117. #define VERIFY_NONE             0
  118. #define VERIFY_MD5              (1 << 0)
  119. #define VERIFY_FILESIZE         (1 << 1)
  120. #define VERIFY_LINKTO           (1 << 2)
  121. #define VERIFY_USER             (1 << 3)
  122. #define VERIFY_GROUP            (1 << 4)
  123. #define VERIFY_MTIME            (1 << 5)
  124. #define VERIFY_MODE             (1 << 6)
  125. #define VERIFY_RDEV             (1 << 7)
  126. #define VERIFY_ALL              ~(VERIFY_NONE)
  127.  
  128. #define REQUIRE_ANY             0
  129. #define REQUIRE_SERIAL          (1 << 0)
  130. #define REQUIRE_LESS            (1 << 1)
  131. #define REQUIRE_GREATER         (1 << 2)
  132. #define REQUIRE_EQUAL           (1 << 3)
  133. #define REQUIRE_PROVIDES        (1 << 4)   /* only used internally by builds */
  134. #define REQUIRE_CONFLICTS       (1 << 5)   /* only used internally by builds */
  135. #define REQUIRE_SENSEMASK       15         /* Mask to get senses */
  136.  
  137. /* Stuff for maintaining "variables" like SOURCEDIR, BUILDDIR, etc */
  138.  
  139. #define RPMVAR_SOURCEDIR             0
  140. #define RPMVAR_BUILDDIR              1
  141. /* #define RPMVAR_DOCDIR            2 -- No longer used */
  142. #define RPMVAR_OPTFLAGS              3
  143. #define RPMVAR_TOPDIR                4
  144. #define RPMVAR_SPECDIR               5
  145. #define RPMVAR_ROOT                  6
  146. #define RPMVAR_RPMDIR                7
  147. #define RPMVAR_SRPMDIR               8
  148. /* #define RPMVAR_ARCHSENSITIVE     9  -- No longer used */
  149. #define RPMVAR_REQUIREDISTRIBUTION    10
  150. /* #define RPMVAR_REQUIREGROUP        11 -- No longer used */
  151. #define RPMVAR_REQUIREVENDOR        12
  152. #define RPMVAR_DISTRIBUTION        13
  153. #define RPMVAR_VENDOR            14
  154. #define RPMVAR_MESSAGELEVEL        15
  155. #define RPMVAR_REQUIREICON        16
  156. #define RPMVAR_TIMECHECK        17
  157. #define RPMVAR_SIGTYPE                  18
  158. #define RPMVAR_PGP_PATH                 19
  159. #define RPMVAR_PGP_NAME                 20
  160. /* #define RPMVAR_PGP_SECRING           21 -- No longer used */
  161. /* #define RPMVAR_PGP_PUBRING           22 -- No longer used */
  162. #define RPMVAR_EXCLUDEDOCS              23
  163. /* #define RPMVAR_BUILDARCH             24 -- No longer used */
  164. /* #define RPMVAR_BUILDOS               25 -- No longer used */
  165. #define RPMVAR_BUILDROOT                26
  166. #define RPMVAR_DBPATH                   27
  167. #define RPMVAR_PACKAGER                 28
  168. #define RPMVAR_FTPPROXY                 29
  169. #define RPMVAR_TMPPATH                  30
  170. #define RPMVAR_LASTVAR                    31 /* IMPORTANT to keep right! */
  171.  
  172. char *getVar(int var);
  173. int getBooleanVar(int var);
  174. void setVar(int var, char *val);
  175.  
  176. /* rpmrc.c */
  177. int rpmReadConfigFiles(char * file, char * arch, char * os, int building);
  178. int getOsNum(void);
  179. int getArchNum(void);
  180. char *getOsName(void);
  181. char *getArchName(void);
  182. int rpmShowRC(FILE *f);
  183.  
  184. typedef struct rpmdb * rpmdb;
  185.  
  186. typedef void (*notifyFunction)(const unsigned long amount,
  187.                    const unsigned long total);
  188.  
  189. int rpmdbOpen (char * prefix, rpmdb * dbp, int mode, int perms);
  190.     /* 0 on error */
  191. int rpmdbInit(char * prefix, int perms);
  192.     /* nonzero on error */
  193. void rpmdbClose (rpmdb db);
  194.  
  195. unsigned int rpmdbFirstRecNum(rpmdb db);
  196. unsigned int rpmdbNextRecNum(rpmdb db, unsigned int lastOffset);  
  197.     /* 0 at end */
  198.  
  199. Header rpmdbGetRecord(rpmdb db, unsigned int offset);
  200. int rpmdbFindByFile(rpmdb db, char * filespec, dbIndexSet * matches);
  201. int rpmdbFindByGroup(rpmdb db, char * group, dbIndexSet * matches);
  202. int rpmdbFindPackage(rpmdb db, char * name, dbIndexSet * matches);
  203. int rpmdbFindByProvides(rpmdb db, char * filespec, dbIndexSet * matches);
  204. int rpmdbFindByRequiredBy(rpmdb db, char * filespec, dbIndexSet * matches);
  205.  
  206. int rpmArchScore(char * arch);
  207. int rpmOsScore(char * arch);
  208. int rpmInstallSourcePackage(char * prefix, int fd, char ** specFile,
  209.                 notifyFunction notify, char * labelFormat);
  210. int rpmInstallPackage(char * rootdir, rpmdb db, int fd, char * prefix, 
  211.              int flags, notifyFunction notify, char * labelFormat);
  212. int rpmEnsureOlder(rpmdb db, char * name, char * newVersion, 
  213.         char * newRelease, int dbOffset);
  214. int rpmRemovePackage(char * prefix, rpmdb db, unsigned int offset, int test);
  215. int rpmVerifyFile(char * prefix, Header h, int filenum, int * result);
  216. int rpmdbRebuild(char * prefix);
  217.  
  218. typedef struct rpmDependencyCheck * rpmDependencies;
  219.  
  220. struct rpmDependencyConflict {
  221.     char * byName, * byVersion, * byRelease;
  222.     char * needsName, * needsVersion;
  223.     int needsFlags;
  224.     void * suggestedPackage;
  225.     enum { RPMDEP_SENSE_REQUIRES, RPMDEP_SENSE_CONFLICTS } sense;
  226. } ;
  227.  
  228. rpmDependencies rpmdepDependencies(rpmdb db);            /* db may be NULL */
  229. void rpmdepAddPackage(rpmDependencies rpmdep, Header h);
  230. void rpmdepAvailablePackage(rpmDependencies rpmdep, Header h, void * key);
  231. void rpmdepUpgradePackage(rpmDependencies rpmdep, Header h);
  232. void rpmdepRemovePackage(rpmDependencies rpmdep, int dboffset);
  233. int rpmdepCheck(rpmDependencies rpmdep, 
  234.         struct rpmDependencyConflict ** conflicts, int * numConflicts);
  235. void rpmdepDone(rpmDependencies rpmdep);
  236. void rpmdepFreeConflicts(struct rpmDependencyConflict * conflicts, int
  237.              numConflicts);
  238.  
  239. int mdfile(char *fn, unsigned char *digest);
  240.  
  241. #endif
  242.