rpm
4.8.1
|
00001 #ifndef H_HEADER 00002 #define H_HEADER 00003 00013 /* RPM - Copyright (C) 1995-2001 Red Hat Software */ 00014 00015 #include <rpm/rpmio.h> 00016 #include <rpm/rpmtypes.h> 00017 #include <rpm/rpmtd.h> 00018 #include <rpm/rpmutil.h> 00019 00020 #ifdef __cplusplus 00021 extern "C" { 00022 #endif 00023 00027 extern const unsigned char rpm_header_magic[8]; 00028 00032 enum hMagic { 00033 HEADER_MAGIC_NO = 0, 00034 HEADER_MAGIC_YES = 1 00035 }; 00036 00041 Header headerNew(void); 00042 00048 Header headerFree( Header h); 00049 00055 Header headerLink(Header h); 00056 00062 Header headerUnlink(Header h); 00063 00068 void headerSort(Header h); 00069 00074 void headerUnsort(Header h); 00075 00082 unsigned int headerSizeof(Header h, enum hMagic magicp); 00083 00093 int headerVerifyInfo(int il, int dl, const void * pev, void * iv, int negate); 00094 00100 void * headerUnload(Header h); 00101 00109 Header headerReload(Header h, rpmTag tag); 00110 00116 Header headerCopy(Header h); 00117 00123 Header headerLoad(void * uh); 00124 00130 Header headerCopyLoad(const void * uh); 00131 00138 Header headerRead(FD_t fd, enum hMagic magicp); 00139 00147 int headerWrite(FD_t fd, Header h, enum hMagic magicp); 00148 00155 int headerIsEntry(Header h, rpmTag tag); 00156 00166 typedef enum headerGetFlags_e { 00167 HEADERGET_DEFAULT = 0, /* legacy headerGetEntry() behavior */ 00168 HEADERGET_MINMEM = (1 << 0), /* pointers can refer to header memory */ 00169 HEADERGET_EXT = (1 << 1), /* lookup extension types too */ 00170 HEADERGET_RAW = (1 << 2), /* return raw contents (no i18n lookups) */ 00171 HEADERGET_ALLOC = (1 << 3), /* always allocate memory for all data */ 00172 HEADERGET_ARGV = (1 << 4), /* return string arrays NULL-terminated */ 00173 } headerGetFlags; 00174 00183 int headerGet(Header h, rpmTag tag, rpmtd td, headerGetFlags flags); 00184 00185 00186 typedef enum headerPutFlags_e { 00187 HEADERPUT_DEFAULT = 0, 00188 HEADERPUT_APPEND = (1 << 0), 00189 } headerPutFlags; 00190 00199 int headerPut(Header h, rpmtd td, headerPutFlags flags); 00200 00224 int headerPutString(Header h, rpmTag tag, const char *val); 00225 int headerPutStringArray(Header h, rpmTag tag, const char **val, rpm_count_t size); 00226 int headerPutBin(Header h, rpmTag tag, uint8_t *val, rpm_count_t size); 00227 int headerPutChar(Header h, rpmTag tag, char *val, rpm_count_t size); 00228 int headerPutUint8(Header h, rpmTag tag, uint8_t *val, rpm_count_t size); 00229 int headerPutUint16(Header h, rpmTag tag, uint16_t *val, rpm_count_t size); 00230 int headerPutUint32(Header h, rpmTag tag, uint32_t *val, rpm_count_t size); 00231 int headerPutUint64(Header h, rpmTag tag, uint64_t *val, rpm_count_t size); 00254 int headerAddI18NString(Header h, rpmTag tag, const char * string, 00255 const char * lang); 00256 00264 int headerMod(Header h, rpmtd td); 00265 00275 int headerDel(Header h, rpmTag tag); 00276 00286 char * headerFormat(Header h, const char * fmt, errmsg_t * errmsg); 00287 00294 void headerCopyTags(Header headerFrom, Header headerTo, 00295 const rpmTag * tagstocopy); 00296 00302 HeaderIterator headerFreeIterator(HeaderIterator hi); 00303 00309 HeaderIterator headerInitIterator(Header h); 00310 00317 int headerNext(HeaderIterator hi, rpmtd td); 00318 00324 rpmTag headerNextTag(HeaderIterator hi); 00325 00334 RPM_GNUC_DEPRECATED 00335 int headerNVR(Header h, 00336 const char ** np, 00337 const char ** vp, 00338 const char ** rp); 00339 00350 RPM_GNUC_DEPRECATED 00351 int headerNEVRA(Header h, 00352 const char ** np, 00353 uint32_t ** ep, 00354 const char ** vp, 00355 const char ** rp, 00356 const char ** ap); 00357 00364 RPM_GNUC_DEPRECATED 00365 char * headerGetNEVR(Header h, const char ** np ); 00366 00373 RPM_GNUC_DEPRECATED 00374 char * headerGetNEVRA(Header h, const char ** np ); 00375 00376 /* \ingroup header 00377 * Return (malloc'd) header (epoch:)version-release string. 00378 * @param h header 00379 * @retval np name tag value (or NULL) 00380 * @return (epoch:)version-release string 00381 */ 00382 RPM_GNUC_DEPRECATED 00383 char * headerGetEVR(Header h, const char **np); 00384 00391 char * headerGetAsString(Header h, rpmTag tag); 00392 00399 const char * headerGetString(Header h, rpmTag tag); 00400 00401 /* \ingroup header 00402 * Return a simple number tag (or extension) from header 00403 * @param h header 00404 * @param tag tag to retrieve 00405 * @return numeric tag value or 0 on failure 00406 */ 00407 uint64_t headerGetNumber(Header h, rpmTag tag); 00408 00414 RPM_GNUC_DEPRECATED 00415 rpm_color_t headerGetColor(Header h); 00416 00422 int headerIsSource(Header h); 00423 00429 unsigned int headerGetInstance(Header h); 00430 00431 typedef enum headerConvOps_e { 00432 HEADERCONV_EXPANDFILELIST = 0, 00433 HEADERCONV_COMPRESSFILELIST = 1, 00434 HEADERCONV_RETROFIT_V3 = 2, 00435 } headerConvOps; 00436 00443 int headerConvert(Header h, headerConvOps op); 00444 00445 #ifdef __cplusplus 00446 } 00447 #endif 00448 00449 #endif /* H_HEADER */