rpm 5.3.7
|
00001 #ifndef _H_RPMIOTYPES_ 00002 #define _H_RPMIOTYPES_ 00003 00011 typedef enum rpmRC_e { 00012 RPMRC_OK = 0, 00013 RPMRC_NOTFOUND = 1, 00014 RPMRC_FAIL = 2, 00015 RPMRC_NOTTRUSTED = 3, 00016 RPMRC_NOKEY = 4 00017 } rpmRC; 00018 00022 typedef /*@unsignedintegraltype@*/ unsigned char rpmuint8_t; 00023 typedef /*@unsignedintegraltype@*/ unsigned short rpmuint16_t; 00024 typedef /*@unsignedintegraltype@*/ unsigned int rpmuint32_t; 00025 typedef /*@unsignedintegraltype@*/ unsigned long long rpmuint64_t; 00026 00029 typedef /*@signedintegraltype@*/ int rpmint32_t; 00030 00033 typedef /*@refcounted@*/ struct rpmioItem_s * rpmioItem; 00034 struct rpmioItem_s { 00035 /*@null@*/ 00036 void *use; 00037 /*@kept@*/ /*@null@*/ 00038 void *pool; 00039 #if defined(__LCLINT__) 00040 /*@refs@*/ 00041 int nrefs; 00042 #endif 00043 }; 00044 00047 typedef struct rpmioPool_s * rpmioPool; 00048 00051 typedef /*@abstract@*/ /*@refcounted@*/ struct rpmiob_s * rpmiob; 00052 00055 /*@unchecked@*/ 00056 extern size_t _rpmiob_chunk; 00057 00060 typedef struct rpmioP_s { 00061 char * str; 00062 char * next; 00063 const char ** av; 00064 int ac; 00065 } * rpmioP; 00066 00069 typedef /*@abstract@*/ struct DIGEST_CTX_s * DIGEST_CTX; 00070 00073 typedef /*@abstract@*/ struct pgpPkt_s * pgpPkt; 00074 00077 typedef /*@abstract@*/ /*@refcounted@*/ struct pgpDig_s * pgpDig; 00078 00081 typedef /*@abstract@*/ struct pgpDigParams_s * pgpDigParams; 00082 00085 typedef rpmuint8_t pgpKeyID_t[8]; 00086 00089 typedef rpmuint8_t pgpTime_t[4]; 00090 00094 typedef enum pgpVSFlags_e { 00095 RPMVSF_DEFAULT = 0, 00096 RPMVSF_NOHDRCHK = (1 << 0), 00097 RPMVSF_NEEDPAYLOAD = (1 << 1), 00098 /* bit(s) 2-7 unused */ 00099 RPMVSF_NOSHA1HEADER = (1 << 8), 00100 RPMVSF_NOMD5HEADER = (1 << 9), /* unimplemented */ 00101 RPMVSF_NODSAHEADER = (1 << 10), 00102 RPMVSF_NORSAHEADER = (1 << 11), 00103 /* bit(s) 12-15 unused */ 00104 RPMVSF_NOSHA1 = (1 << 16), /* unimplemented */ 00105 RPMVSF_NOMD5 = (1 << 17), 00106 RPMVSF_NODSA = (1 << 18), 00107 RPMVSF_NORSA = (1 << 19) 00108 /* bit(s) 20-31 unused */ 00109 } pgpVSFlags; 00110 00111 #define _RPMVSF_NODIGESTS \ 00112 ( RPMVSF_NOSHA1HEADER | \ 00113 RPMVSF_NOMD5HEADER | \ 00114 RPMVSF_NOSHA1 | \ 00115 RPMVSF_NOMD5 ) 00116 00117 #define _RPMVSF_NOSIGNATURES \ 00118 ( RPMVSF_NODSAHEADER | \ 00119 RPMVSF_NORSAHEADER | \ 00120 RPMVSF_NODSA | \ 00121 RPMVSF_NORSA ) 00122 00123 #define _RPMVSF_NOHEADER \ 00124 ( RPMVSF_NOSHA1HEADER | \ 00125 RPMVSF_NOMD5HEADER | \ 00126 RPMVSF_NODSAHEADER | \ 00127 RPMVSF_NORSAHEADER ) 00128 00129 #define _RPMVSF_NOPAYLOAD \ 00130 ( RPMVSF_NOSHA1 | \ 00131 RPMVSF_NOMD5 | \ 00132 RPMVSF_NODSA | \ 00133 RPMVSF_NORSA ) 00134 00135 /*@-redef@*/ /* LCL: ??? */ 00136 typedef /*@abstract@*/ const void * fnpyKey; 00137 /*@=redef@*/ 00138 00142 typedef enum rpmCallbackType_e { 00143 RPMCALLBACK_UNKNOWN = 0, 00144 RPMCALLBACK_INST_PROGRESS = (1 << 0), 00145 RPMCALLBACK_INST_START = (1 << 1), 00146 RPMCALLBACK_INST_OPEN_FILE = (1 << 2), 00147 RPMCALLBACK_INST_CLOSE_FILE = (1 << 3), 00148 RPMCALLBACK_TRANS_PROGRESS = (1 << 4), 00149 RPMCALLBACK_TRANS_START = (1 << 5), 00150 RPMCALLBACK_TRANS_STOP = (1 << 6), 00151 RPMCALLBACK_UNINST_PROGRESS = (1 << 7), 00152 RPMCALLBACK_UNINST_START = (1 << 8), 00153 RPMCALLBACK_UNINST_STOP = (1 << 9), 00154 RPMCALLBACK_REPACKAGE_PROGRESS = (1 << 10), 00155 RPMCALLBACK_REPACKAGE_START = (1 << 11), 00156 RPMCALLBACK_REPACKAGE_STOP = (1 << 12), 00157 RPMCALLBACK_UNPACK_ERROR = (1 << 13), 00158 RPMCALLBACK_CPIO_ERROR = (1 << 14), 00159 RPMCALLBACK_SCRIPT_ERROR = (1 << 15) 00160 } rpmCallbackType; 00161 00164 typedef void * rpmCallbackData; 00165 00186 typedef enum pgpHashAlgo_e { 00187 PGPHASHALGO_ERROR = -1, 00188 PGPHASHALGO_NONE = 0, 00189 PGPHASHALGO_MD5 = 1, 00190 PGPHASHALGO_SHA1 = 2, 00191 PGPHASHALGO_RIPEMD160 = 3, 00192 PGPHASHALGO_MD2 = 5, 00193 PGPHASHALGO_TIGER192 = 6, 00194 PGPHASHALGO_HAVAL_5_160 = 7, 00195 PGPHASHALGO_SHA256 = 8, 00196 PGPHASHALGO_SHA384 = 9, 00197 PGPHASHALGO_SHA512 = 10, 00198 PGPHASHALGO_SHA224 = 11, 00200 PGPHASHALGO_MD4 = 104, 00201 PGPHASHALGO_RIPEMD128 = 105, 00202 PGPHASHALGO_CRC32 = 106, 00203 PGPHASHALGO_ADLER32 = 107, 00204 PGPHASHALGO_CRC64 = 108, 00205 PGPHASHALGO_JLU32 = 109, 00207 PGPHASHALGO_RIPEMD256 = 111, 00208 PGPHASHALGO_RIPEMD320 = 112, 00209 PGPHASHALGO_SALSA10 = 113, 00210 PGPHASHALGO_SALSA20 = 114, 00212 PGPHASHALGO_MD6_224 = 128+0, 00213 PGPHASHALGO_MD6_256 = 128+1, 00214 PGPHASHALGO_MD6_384 = 128+2, 00215 PGPHASHALGO_MD6_512 = 128+3, 00217 PGPHASHALGO_CUBEHASH_224 = 136+0, 00218 PGPHASHALGO_CUBEHASH_256 = 136+1, 00219 PGPHASHALGO_CUBEHASH_384 = 136+2, 00220 PGPHASHALGO_CUBEHASH_512 = 136+3, 00222 PGPHASHALGO_KECCAK_224 = 144+0, 00223 PGPHASHALGO_KECCAK_256 = 144+1, 00224 PGPHASHALGO_KECCAK_384 = 144+2, 00225 PGPHASHALGO_KECCAK_512 = 144+3, 00227 PGPHASHALGO_ECHO_224 = 148+0, 00228 PGPHASHALGO_ECHO_256 = 148+1, 00229 PGPHASHALGO_ECHO_384 = 148+2, 00230 PGPHASHALGO_ECHO_512 = 148+3, 00232 PGPHASHALGO_EDONR_224 = 152+0, 00233 PGPHASHALGO_EDONR_256 = 152+1, 00234 PGPHASHALGO_EDONR_384 = 152+2, 00235 PGPHASHALGO_EDONR_512 = 152+3, 00237 PGPHASHALGO_FUGUE_224 = 156+0, 00238 PGPHASHALGO_FUGUE_256 = 156+1, 00239 PGPHASHALGO_FUGUE_384 = 156+2, 00240 PGPHASHALGO_FUGUE_512 = 156+3, 00242 PGPHASHALGO_SKEIN_224 = 160+0, 00243 PGPHASHALGO_SKEIN_256 = 160+1, 00244 PGPHASHALGO_SKEIN_384 = 160+2, 00245 PGPHASHALGO_SKEIN_512 = 160+3, 00246 PGPHASHALGO_SKEIN_1024 = 160+4, 00248 PGPHASHALGO_BMW_224 = 168+0, 00249 PGPHASHALGO_BMW_256 = 168+1, 00250 PGPHASHALGO_BMW_384 = 168+2, 00251 PGPHASHALGO_BMW_512 = 168+3, 00253 PGPHASHALGO_SHABAL_224 = 176+0, 00254 PGPHASHALGO_SHABAL_256 = 176+1, 00255 PGPHASHALGO_SHABAL_384 = 176+2, 00256 PGPHASHALGO_SHABAL_512 = 176+3, 00258 PGPHASHALGO_SHAVITE3_224 = 180+0, 00259 PGPHASHALGO_SHAVITE3_256 = 180+1, 00260 PGPHASHALGO_SHAVITE3_384 = 180+2, 00261 PGPHASHALGO_SHAVITE3_512 = 180+3, 00263 PGPHASHALGO_BLAKE_224 = 184+0, 00264 PGPHASHALGO_BLAKE_256 = 184+1, 00265 PGPHASHALGO_BLAKE_384 = 184+2, 00266 PGPHASHALGO_BLAKE_512 = 184+3, 00268 PGPHASHALGO_TIB3_224 = 192+0, 00269 PGPHASHALGO_TIB3_256 = 192+1, 00270 PGPHASHALGO_TIB3_384 = 192+2, 00271 PGPHASHALGO_TIB3_512 = 192+3, 00273 PGPHASHALGO_SIMD_224 = 200+0, 00274 PGPHASHALGO_SIMD_256 = 200+1, 00275 PGPHASHALGO_SIMD_384 = 200+2, 00276 PGPHASHALGO_SIMD_512 = 200+3, 00278 PGPHASHALGO_ARIRANG_224 = 208+0, 00279 PGPHASHALGO_ARIRANG_256 = 208+1, 00280 PGPHASHALGO_ARIRANG_384 = 208+2, 00281 PGPHASHALGO_ARIRANG_512 = 208+3, 00283 PGPHASHALGO_LANE_224 = 212+0, 00284 PGPHASHALGO_LANE_256 = 212+1, 00285 PGPHASHALGO_LANE_384 = 212+2, 00286 PGPHASHALGO_LANE_512 = 212+3, 00288 PGPHASHALGO_LUFFA_224 = 216+0, 00289 PGPHASHALGO_LUFFA_256 = 216+1, 00290 PGPHASHALGO_LUFFA_384 = 216+2, 00291 PGPHASHALGO_LUFFA_512 = 216+3, 00293 PGPHASHALGO_CHI_224 = 224+0, 00294 PGPHASHALGO_CHI_256 = 224+1, 00295 PGPHASHALGO_CHI_384 = 224+2, 00296 PGPHASHALGO_CHI_512 = 224+3, 00298 PGPHASHALGO_JH_224 = 232+0, 00299 PGPHASHALGO_JH_256 = 232+1, 00300 PGPHASHALGO_JH_384 = 232+2, 00301 PGPHASHALGO_JH_512 = 232+3, 00303 PGPHASHALGO_GROESTL_224 = 240+0, 00304 PGPHASHALGO_GROESTL_256 = 240+1, 00305 PGPHASHALGO_GROESTL_384 = 240+2, 00306 PGPHASHALGO_GROESTL_512 = 240+3, 00308 PGPHASHALGO_HAMSI_224 = 248+0, 00309 PGPHASHALGO_HAMSI_256 = 248+1, 00310 PGPHASHALGO_HAMSI_384 = 248+2, 00311 PGPHASHALGO_HAMSI_512 = 248+3, 00313 } pgpHashAlgo; 00314 00318 typedef enum rpmDigestFlags_e { 00319 RPMDIGEST_NONE = 0, 00320 } rpmDigestFlags; 00321 00322 #if defined(_RPMIOB_INTERNAL) 00323 00325 struct rpmiob_s{ 00326 struct rpmioItem_s _item; 00327 rpmuint8_t * b; 00328 size_t blen; 00329 size_t allocated; 00330 #if defined(__LCLINT__) 00331 /*@refs@*/ 00332 int nrefs; 00333 #endif 00334 }; 00335 #endif 00336 00337 #ifdef __cplusplus 00338 extern "C" { 00339 #endif 00340 00346 pgpHashAlgo rpmDigestAlgo(DIGEST_CTX ctx) 00347 /*@*/; 00348 00354 rpmDigestFlags rpmDigestF(DIGEST_CTX ctx) 00355 /*@*/; 00356 00362 /*@observer@*/ 00363 const char * rpmDigestName(DIGEST_CTX ctx) 00364 /*@*/; 00365 00372 /*@observer@*/ /*@null@*/ 00373 const char * rpmDigestASN1(DIGEST_CTX ctx) 00374 /*@*/; 00375 00381 /*@only@*/ 00382 DIGEST_CTX rpmDigestDup(DIGEST_CTX octx) 00383 /*@*/; 00384 00392 /*@only@*/ /*@null@*/ 00393 DIGEST_CTX rpmDigestInit(pgpHashAlgo hashalgo, rpmDigestFlags flags) 00394 /*@*/; 00395 00403 int rpmDigestUpdate(/*@null@*/ DIGEST_CTX ctx, const void * data, size_t len) 00404 /*@modifies ctx @*/; 00405 00415 int rpmDigestFinal(/*@only@*/ /*@null@*/ DIGEST_CTX ctx, 00416 /*@null@*/ /*@out@*/ void * datap, 00417 /*@null@*/ /*@out@*/ size_t * lenp, int asAscii) 00418 /*@modifies *datap, *lenp @*/; 00419 00428 int rpmHmacInit(DIGEST_CTX ctx, const void * key, size_t keylen) 00429 /*@*/; 00430 00433 typedef void * (*rpmCallbackFunction) 00434 (/*@null@*/ const void * h, 00435 const rpmCallbackType what, 00436 const rpmuint64_t amount, 00437 const rpmuint64_t total, 00438 /*@null@*/ fnpyKey key, 00439 /*@null@*/ rpmCallbackData data) 00440 /*@globals internalState@*/ 00441 /*@modifies internalState@*/; 00442 00443 #if !defined(SWIG) 00444 00449 #if defined(WITH_DMALLOC) 00450 #define _free(p) ((p) != NULL ? free((void *)(p)) : (void)0, NULL) 00451 #else 00452 /*@unused@*/ static inline /*@null@*/ 00453 void * _free(/*@only@*/ /*@null@*/ /*@out@*/ const void * p) 00454 /*@modifies p @*/ 00455 { 00456 if (p != NULL) free((void *)p); 00457 return NULL; 00458 } 00459 #endif 00460 #endif 00461 00462 /*@unused@*/ static inline int xislower(int c) /*@*/ { 00463 return (c >= (int)'a' && c <= (int)'z'); 00464 } 00465 /*@unused@*/ static inline int xisupper(int c) /*@*/ { 00466 return (c >= (int)'A' && c <= (int)'Z'); 00467 } 00468 /*@unused@*/ static inline int xisalpha(int c) /*@*/ { 00469 return (xislower(c) || xisupper(c)); 00470 } 00471 /*@unused@*/ static inline int xisdigit(int c) /*@*/ { 00472 return (c >= (int)'0' && c <= (int)'9'); 00473 } 00474 /*@unused@*/ static inline int xisalnum(int c) /*@*/ { 00475 return (xisalpha(c) || xisdigit(c)); 00476 } 00477 /*@unused@*/ static inline int xisblank(int c) /*@*/ { 00478 return (c == (int)' ' || c == (int)'\t'); 00479 } 00480 /*@unused@*/ static inline int xisspace(int c) /*@*/ { 00481 return (xisblank(c) || c == (int)'\n' || c == (int)'\r' || c == (int)'\f' || c == (int)'\v'); 00482 } 00483 /*@unused@*/ static inline int xiscntrl(int c) /*@*/ { 00484 return (c < (int)' '); 00485 } 00486 /*@unused@*/ static inline int xisascii(int c) /*@*/ { 00487 return ((c & 0x80) != 0x80); 00488 } 00489 /*@unused@*/ static inline int xisprint(int c) /*@*/ { 00490 return (c >= (int)' ' && xisascii(c)); 00491 } 00492 /*@unused@*/ static inline int xisgraph(int c) /*@*/ { 00493 return (c > (int)' ' && xisascii(c)); 00494 } 00495 /*@unused@*/ static inline int xispunct(int c) /*@*/ { 00496 return (xisgraph(c) && !xisalnum(c)); 00497 } 00498 00499 /*@unused@*/ static inline int xtolower(int c) /*@*/ { 00500 return ((xisupper(c)) ? (c | ('a' - 'A')) : c); 00501 } 00502 /*@unused@*/ static inline int xtoupper(int c) /*@*/ { 00503 return ((xislower(c)) ? (c & ~('a' - 'A')) : c); 00504 } 00505 00509 int xstrcasecmp(const char * s1, const char * s2) /*@*/; 00510 00514 int xstrncasecmp(const char *s1, const char * s2, size_t n) /*@*/; 00515 00519 /*@only@*/ /*@null@*/ 00520 const char * xstrtolocale(/*@only@*/ const char *str) 00521 /*@modifies *str @*/; 00522 00528 /*@unused@*/ /*@null@*/ 00529 rpmiob rpmiobUnlink (/*@killref@*/ /*@null@*/ rpmiob iob) 00530 /*@globals fileSystem @*/ 00531 /*@modifies iob, fileSystem @*/; 00532 #define rpmiobUnlink(_iob) \ 00533 ((rpmiob)rpmioUnlinkPoolItem((rpmioItem)(_iob), __FUNCTION__, __FILE__, __LINE__)) 00534 00540 /*@unused@*/ /*@newref@*/ /*@null@*/ 00541 rpmiob rpmiobLink (/*@null@*/ rpmiob iob) 00542 /*@globals fileSystem @*/ 00543 /*@modifies iob, fileSystem @*/; 00544 #define rpmiobLink(_iob) \ 00545 ((rpmiob)rpmioLinkPoolItem((rpmioItem)(_iob), __FUNCTION__, __FILE__, __LINE__)) 00546 00552 /*@null@*/ 00553 rpmiob rpmiobFree( /*@killref@*/ rpmiob iob) 00554 /*@globals fileSystem @*/ 00555 /*@modifies iob, fileSystem @*/; 00556 #define rpmiobFree(_iob) \ 00557 ((rpmiob)rpmioFreePoolItem((rpmioItem)(_iob), __FUNCTION__, __FILE__, __LINE__)) 00558 00564 /*@newref@*/ /*@null@*/ 00565 rpmiob rpmiobNew(size_t len) 00566 /*@globals fileSystem @*/ 00567 /*@modifies fileSystem @*/; 00568 00574 rpmiob rpmiobEmpty(/*@returned@*/ rpmiob iob) 00575 /*@modifies iob @*/; 00576 00582 rpmiob rpmiobRTrim(/*@returned@*/ rpmiob iob) 00583 /*@modifies iob @*/; 00584 00592 rpmiob rpmiobAppend(/*@returned@*/ rpmiob iob, const char * s, size_t nl) 00593 /*@modifies iob @*/; 00594 00600 rpmuint8_t * rpmiobBuf(rpmiob iob) 00601 /*@*/; 00602 00608 char * rpmiobStr(rpmiob iob) 00609 /*@*/; 00610 00616 size_t rpmiobLen(rpmiob iob) 00617 /*@*/; 00618 00619 #if defined(_RPMIOB_INTERNAL) 00620 00626 int rpmiobSlurp(const char * fn, rpmiob * iobp) 00627 /*@globals h_errno, fileSystem, internalState @*/ 00628 /*@modifies *iobp, fileSystem, internalState @*/; 00629 #endif 00630 00636 /*@null@*/ 00637 rpmioP rpmioPFree(/*@only@*/ /*@null@*/ rpmioP P) 00638 /*@modifies P @*/; 00639 00646 rpmRC rpmioParse(rpmioP *Pptr, const char * str) 00647 /*@modifies *Pptr @*/; 00648 00649 #ifdef __cplusplus 00650 } 00651 #endif 00652 00653 #endif /* _H_RPMIOTYPES_ */