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 unsigned char rpmuint8_t;
00023 typedef unsigned short rpmuint16_t;
00024 typedef unsigned int rpmuint32_t;
00025 typedef unsigned long long rpmuint64_t;
00026
00029 typedef int rpmint32_t;
00030
00033 typedef struct rpmioItem_s * rpmioItem;
00034 struct rpmioItem_s {
00035
00036 void *use;
00037
00038 void *pool;
00039 #if defined(__LCLINT__)
00040
00041 int nrefs;
00042 #endif
00043 };
00044
00047 typedef struct rpmioPool_s * rpmioPool;
00048
00051 typedef struct rpmiob_s * rpmiob;
00052
00055
00056 extern size_t _rpmiob_chunk;
00057
00060 typedef struct DIGEST_CTX_s * DIGEST_CTX;
00061
00064 typedef struct pgpPkt_s * pgpPkt;
00065
00068 typedef struct pgpDig_s * pgpDig;
00069
00072 typedef struct pgpDigParams_s * pgpDigParams;
00073
00076 typedef rpmuint8_t pgpKeyID_t[8];
00077
00080 typedef rpmuint8_t pgpTime_t[4];
00081
00085 typedef enum pgpVSFlags_e {
00086 RPMVSF_DEFAULT = 0,
00087 RPMVSF_NOHDRCHK = (1 << 0),
00088 RPMVSF_NEEDPAYLOAD = (1 << 1),
00089
00090 RPMVSF_NOSHA1HEADER = (1 << 8),
00091 RPMVSF_NOMD5HEADER = (1 << 9),
00092 RPMVSF_NODSAHEADER = (1 << 10),
00093 RPMVSF_NORSAHEADER = (1 << 11),
00094
00095 RPMVSF_NOSHA1 = (1 << 16),
00096 RPMVSF_NOMD5 = (1 << 17),
00097 RPMVSF_NODSA = (1 << 18),
00098 RPMVSF_NORSA = (1 << 19)
00099
00100 } pgpVSFlags;
00101
00102 #define _RPMVSF_NODIGESTS \
00103 ( RPMVSF_NOSHA1HEADER | \
00104 RPMVSF_NOMD5HEADER | \
00105 RPMVSF_NOSHA1 | \
00106 RPMVSF_NOMD5 )
00107
00108 #define _RPMVSF_NOSIGNATURES \
00109 ( RPMVSF_NODSAHEADER | \
00110 RPMVSF_NORSAHEADER | \
00111 RPMVSF_NODSA | \
00112 RPMVSF_NORSA )
00113
00114 #define _RPMVSF_NOHEADER \
00115 ( RPMVSF_NOSHA1HEADER | \
00116 RPMVSF_NOMD5HEADER | \
00117 RPMVSF_NODSAHEADER | \
00118 RPMVSF_NORSAHEADER )
00119
00120 #define _RPMVSF_NOPAYLOAD \
00121 ( RPMVSF_NOSHA1 | \
00122 RPMVSF_NOMD5 | \
00123 RPMVSF_NODSA | \
00124 RPMVSF_NORSA )
00125
00126
00127 typedef const void * fnpyKey;
00128
00129
00133 typedef enum rpmCallbackType_e {
00134 RPMCALLBACK_UNKNOWN = 0,
00135 RPMCALLBACK_INST_PROGRESS = (1 << 0),
00136 RPMCALLBACK_INST_START = (1 << 1),
00137 RPMCALLBACK_INST_OPEN_FILE = (1 << 2),
00138 RPMCALLBACK_INST_CLOSE_FILE = (1 << 3),
00139 RPMCALLBACK_TRANS_PROGRESS = (1 << 4),
00140 RPMCALLBACK_TRANS_START = (1 << 5),
00141 RPMCALLBACK_TRANS_STOP = (1 << 6),
00142 RPMCALLBACK_UNINST_PROGRESS = (1 << 7),
00143 RPMCALLBACK_UNINST_START = (1 << 8),
00144 RPMCALLBACK_UNINST_STOP = (1 << 9),
00145 RPMCALLBACK_REPACKAGE_PROGRESS = (1 << 10),
00146 RPMCALLBACK_REPACKAGE_START = (1 << 11),
00147 RPMCALLBACK_REPACKAGE_STOP = (1 << 12),
00148 RPMCALLBACK_UNPACK_ERROR = (1 << 13),
00149 RPMCALLBACK_CPIO_ERROR = (1 << 14),
00150 RPMCALLBACK_SCRIPT_ERROR = (1 << 15)
00151 } rpmCallbackType;
00152
00155 typedef void * rpmCallbackData;
00156
00177 typedef enum pgpHashAlgo_e {
00178 PGPHASHALGO_ERROR = -1,
00179 PGPHASHALGO_NONE = 0,
00180 PGPHASHALGO_MD5 = 1,
00181 PGPHASHALGO_SHA1 = 2,
00182 PGPHASHALGO_RIPEMD160 = 3,
00183 PGPHASHALGO_MD2 = 5,
00184 PGPHASHALGO_TIGER192 = 6,
00185 PGPHASHALGO_HAVAL_5_160 = 7,
00186 PGPHASHALGO_SHA256 = 8,
00187 PGPHASHALGO_SHA384 = 9,
00188 PGPHASHALGO_SHA512 = 10,
00189 PGPHASHALGO_SHA224 = 11,
00191 PGPHASHALGO_MD4 = 104,
00192 PGPHASHALGO_RIPEMD128 = 105,
00193 PGPHASHALGO_CRC32 = 106,
00194 PGPHASHALGO_ADLER32 = 107,
00195 PGPHASHALGO_CRC64 = 108,
00196 PGPHASHALGO_JLU32 = 109,
00198 PGPHASHALGO_RIPEMD256 = 111,
00199 PGPHASHALGO_RIPEMD320 = 112,
00200 PGPHASHALGO_SALSA10 = 113,
00201 PGPHASHALGO_SALSA20 = 114,
00203 } pgpHashAlgo;
00204
00208 typedef enum rpmDigestFlags_e {
00209 RPMDIGEST_NONE = 0
00210 } rpmDigestFlags;
00211
00212
00213 #if defined(_RPMIOB_INTERNAL)
00214
00216 struct rpmiob_s{
00217 struct rpmioItem_s _item;
00218 rpmuint8_t * b;
00219 size_t blen;
00220 size_t allocated;
00221 #if defined(__LCLINT__)
00222
00223 int nrefs;
00224 #endif
00225 };
00226 #endif
00227
00228 #ifdef __cplusplus
00229 extern "C" {
00230 #endif
00231
00237 pgpHashAlgo rpmDigestAlgo(DIGEST_CTX ctx)
00238 ;
00239
00245
00246 const char * rpmDigestName(DIGEST_CTX ctx)
00247 ;
00248
00255
00256 const char * rpmDigestASN1(DIGEST_CTX ctx)
00257 ;
00258
00264
00265 DIGEST_CTX rpmDigestDup(DIGEST_CTX octx)
00266 ;
00267
00275
00276 DIGEST_CTX rpmDigestInit(pgpHashAlgo hashalgo, rpmDigestFlags flags)
00277 ;
00278
00286 int rpmDigestUpdate( DIGEST_CTX ctx, const void * data, size_t len)
00287 ;
00288
00300 int rpmDigestFinal( DIGEST_CTX ctx,
00301 void * datap,
00302 size_t * lenp, int asAscii)
00303 ;
00304
00307 typedef void * (*rpmCallbackFunction)
00308 ( const void * h,
00309 const rpmCallbackType what,
00310 const rpmuint64_t amount,
00311 const rpmuint64_t total,
00312 fnpyKey key,
00313 rpmCallbackData data)
00314
00315 ;
00316
00317 #if !defined(SWIG)
00318
00323 #if defined(WITH_DMALLOC)
00324 #define _free(p) ((p) != NULL ? free((void *)(p)) : (void)0, NULL)
00325 #else
00326 static inline
00327 void * _free( const void * p)
00328
00329 {
00330 if (p != NULL) free((void *)p);
00331 return NULL;
00332 }
00333 #endif
00334 #endif
00335
00336 static inline int xislower(int c) {
00337 return (c >= (int)'a' && c <= (int)'z');
00338 }
00339 static inline int xisupper(int c) {
00340 return (c >= (int)'A' && c <= (int)'Z');
00341 }
00342 static inline int xisalpha(int c) {
00343 return (xislower(c) || xisupper(c));
00344 }
00345 static inline int xisdigit(int c) {
00346 return (c >= (int)'0' && c <= (int)'9');
00347 }
00348 static inline int xisalnum(int c) {
00349 return (xisalpha(c) || xisdigit(c));
00350 }
00351 static inline int xisblank(int c) {
00352 return (c == (int)' ' || c == (int)'\t');
00353 }
00354 static inline int xisspace(int c) {
00355 return (xisblank(c) || c == (int)'\n' || c == (int)'\r' || c == (int)'\f' || c == (int)'\v');
00356 }
00357 static inline int xiscntrl(int c) {
00358 return (c < (int)' ');
00359 }
00360 static inline int xisascii(int c) {
00361 return ((c & 0x80) != 0x80);
00362 }
00363 static inline int xisprint(int c) {
00364 return (c >= (int)' ' && xisascii(c));
00365 }
00366 static inline int xisgraph(int c) {
00367 return (c > (int)' ' && xisascii(c));
00368 }
00369 static inline int xispunct(int c) {
00370 return (xisgraph(c) && !xisalnum(c));
00371 }
00372
00373 static inline int xtolower(int c) {
00374 return ((xisupper(c)) ? (c | ('a' - 'A')) : c);
00375 }
00376 static inline int xtoupper(int c) {
00377 return ((xislower(c)) ? (c & ~('a' - 'A')) : c);
00378 }
00379
00383 int xstrcasecmp(const char * s1, const char * s2) ;
00384
00388 int xstrncasecmp(const char *s1, const char * s2, size_t n) ;
00389
00393
00394 const char * xstrtolocale( const char *str)
00395 ;
00396
00402
00403 rpmiob rpmiobUnlink ( rpmiob iob)
00404
00405 ;
00406 #define rpmiobUnlink(_iob) \
00407 ((rpmiob)rpmioUnlinkPoolItem((rpmioItem)(_iob), __FUNCTION__, __FILE__, __LINE__))
00408
00414
00415 rpmiob rpmiobLink ( rpmiob iob)
00416
00417 ;
00418 #define rpmiobLink(_iob) \
00419 ((rpmiob)rpmioLinkPoolItem((rpmioItem)(_iob), __FUNCTION__, __FILE__, __LINE__))
00420
00426
00427 rpmiob rpmiobFree( rpmiob iob)
00428
00429 ;
00430 #define rpmiobFree(_iob) \
00431 ((rpmiob)rpmioFreePoolItem((rpmioItem)(_iob), __FUNCTION__, __FILE__, __LINE__))
00432
00438
00439 rpmiob rpmiobNew(size_t len)
00440
00441 ;
00442
00448 rpmiob rpmiobEmpty( rpmiob iob)
00449 ;
00450
00456 rpmiob rpmiobRTrim( rpmiob iob)
00457 ;
00458
00466 rpmiob rpmiobAppend( rpmiob iob, const char * s, size_t nl)
00467 ;
00468
00474 rpmuint8_t * rpmiobBuf(rpmiob iob)
00475 ;
00476
00482 char * rpmiobStr(rpmiob iob)
00483 ;
00484
00490 size_t rpmiobLen(rpmiob iob)
00491 ;
00492
00493 #if defined(_RPMIOB_INTERNAL)
00494
00500 int rpmiobSlurp(const char * fn, rpmiob * iobp)
00501
00502 ;
00503 #endif
00504
00505 #ifdef __cplusplus
00506 }
00507 #endif
00508
00509 #endif