00001 #ifndef H_RPMDS
00002 #define H_RPMDS
00003
00009 #include "rpmevr.h"
00010 #define _RPMNS_INTERNAL
00011 #include "rpmns.h"
00012 #include "rpmps.h"
00013
00016
00017
00018 extern int _rpmds_debug;
00019
00020
00023
00024 extern const char *_sysinfo_path;
00025
00028
00029
00030 extern int _rpmds_nopromote;
00031
00032
00033 #if defined(_RPMDS_INTERNAL)
00034 #include "mire.h"
00035
00039 struct rpmds_s {
00040 struct rpmioItem_s _item;
00041
00042 const char * Type;
00043
00044 const char * DNEVR;
00045
00046 Header h;
00047
00048 const char ** N;
00049
00050 const char ** EVR;
00051
00052 evrFlags * Flags;
00053
00054 rpmuint32_t * Color;
00055
00056 rpmuint32_t * Refs;
00057
00058 rpmint32_t * Result;
00059
00060 int (*EVRparse) (const char *evrstr, EVR_t evr);
00061 int (*EVRcmp) (const char *a, const char *b);
00062 struct rpmns_s ns;
00063
00064 miRE exclude;
00065 int nexclude;
00066
00067 miRE include;
00068 int ninclude;
00069
00070 const char * A;
00071 rpmuint32_t BT;
00072 rpmTag tagN;
00073 rpmuint32_t Count;
00074 int i;
00075 unsigned l;
00076 unsigned u;
00077 int nopromote;
00078 #if defined(__LCLINT__)
00079
00080 int nrefs;
00081 #endif
00082 };
00083 #endif
00084
00085 #if defined(_RPMPRCO_INTERNAL)
00086
00089 struct rpmPRCO_s {
00090 struct rpmioItem_s _item;
00091
00092 rpmds * Pdsp;
00093
00094 rpmds * Rdsp;
00095
00096 rpmds * Cdsp;
00097
00098 rpmds * Odsp;
00099
00100 rpmds * Tdsp;
00101
00102 rpmds * Ddsp;
00103
00104 rpmds * Ldsp;
00105
00106 rpmds this;
00107
00108 rpmds P;
00109
00110 rpmds R;
00111
00112 rpmds C;
00113
00114 rpmds O;
00115
00116 rpmds T;
00117
00118 rpmds D;
00119
00120 rpmds L;
00121 #if defined(__LCLINT__)
00122
00123 int nrefs;
00124 #endif
00125 };
00126 #endif
00127
00128 #ifdef __cplusplus
00129 extern "C" {
00130 #endif
00131
00134
00141
00142 rpmds rpmdsUnlink ( rpmds ds,
00143 const char * msg)
00144 ;
00145 #define rpmdsUnlink(_ds, _msg) \
00146 ((rpmds)rpmioUnlinkPoolItem((rpmioItem)(_ds), _msg, __FILE__, __LINE__))
00147
00154
00155 rpmds rpmdsLink ( rpmds ds, const char * msg)
00156 ;
00157 #define rpmdsLink(_ds, _msg) \
00158 ((rpmds)rpmioLinkPoolItem((rpmioItem)(_ds), _msg, __FILE__, __LINE__))
00159
00165
00166 rpmds rpmdsFree( rpmds ds)
00167 ;
00168 #define rpmdsFree(_ds) \
00169 ((rpmds)rpmioFreePoolItem((rpmioItem)(_ds), __FUNCTION__, __FILE__, __LINE__))
00170
00178
00179 rpmds rpmdsNew(Header h, rpmTag tagN, int flags)
00180
00181 ;
00182
00188
00189 const char * rpmdsNewN(rpmds ds)
00190
00191 ;
00192
00199 char * rpmdsNewDNEVR(const char * dspfx, rpmds ds)
00200
00201 ;
00202
00210
00211 rpmds rpmdsThis(Header h, rpmTag tagN, evrFlags Flags)
00212
00213 ;
00214
00223
00224 rpmds rpmdsSingle(rpmTag tagN, const char * N, const char * EVR, evrFlags Flags)
00225 ;
00226
00232 int rpmdsCount( const rpmds ds)
00233 ;
00234
00240 int rpmdsIx( const rpmds ds)
00241 ;
00242
00249 int rpmdsSetIx( rpmds ds, int ix)
00250 ;
00251
00257
00258 extern const char * rpmdsDNEVR( const rpmds ds)
00259 ;
00260
00266
00267 extern const char * rpmdsN( rpmds ds)
00268
00269 ;
00270
00276
00277 extern const char * rpmdsEVR( const rpmds ds)
00278 ;
00279
00285 evrFlags rpmdsFlags( const rpmds ds)
00286 ;
00287
00293 rpmTag rpmdsTagN( const rpmds ds)
00294 ;
00295
00301
00302 extern const char * rpmdsA( const rpmds ds)
00303 ;
00304
00310 time_t rpmdsBT( const rpmds ds)
00311 ;
00312
00319 time_t rpmdsSetBT( const rpmds ds, time_t BT)
00320 ;
00321
00327 nsType rpmdsNSType( const rpmds ds)
00328 ;
00329
00343 int rpmdsNoPromote( const rpmds ds)
00344 ;
00345
00352 int rpmdsSetNoPromote( rpmds ds, int nopromote)
00353 ;
00354
00361
00362 void * rpmdsSetEVRparse( rpmds ds,
00363 int (*EVRparse)(const char *everstr, EVR_t evr))
00364 ;
00365
00372
00373 void * rpmdsSetEVRcmp( rpmds ds,
00374 int (*EVRcmp)(const char *a, const char *b))
00375 ;
00376
00382 rpmuint32_t rpmdsColor( const rpmds ds)
00383 ;
00384
00391 rpmuint32_t rpmdsSetColor( const rpmds ds, rpmuint32_t color)
00392 ;
00393
00399
00400 void * rpmdsExclude( const rpmds ds)
00401 ;
00402
00408 int rpmdsNExclude( const rpmds ds)
00409 ;
00410
00416
00417 void * rpmdsInclude( const rpmds ds)
00418 ;
00419
00425 int rpmdsNInclude( const rpmds ds)
00426 ;
00427
00433 rpmuint32_t rpmdsRefs( const rpmds ds)
00434 ;
00435
00442 rpmuint32_t rpmdsSetRefs( const rpmds ds, rpmuint32_t refs)
00443 ;
00444
00450 rpmint32_t rpmdsResult( const rpmds ds)
00451 ;
00452
00459 rpmint32_t rpmdsSetResult( const rpmds ds, rpmint32_t result)
00460 ;
00461
00468
00469 void rpmdsNotify( rpmds ds, const char * where, int rc)
00470
00471 ;
00472
00473
00479 int rpmdsNext( rpmds ds)
00480 ;
00481
00487
00488 rpmds rpmdsInit( rpmds ds)
00489 ;
00490
00497 int rpmdsFind(rpmds ds, const rpmds ods)
00498 ;
00499
00506 int rpmdsMerge( rpmds * dsp, rpmds ods)
00507 ;
00508
00517 int rpmdsSearch( rpmds ds, rpmds ods)
00518 ;
00519
00522
00523 extern const char * _cpuinfo_path;
00524
00531 int rpmdsCpuinfo( rpmds * dsp, const char * fn)
00532
00533 ;
00534
00541 int rpmdsRpmlib(rpmds * dsp, void * tblp)
00542 ;
00543
00550 int rpmdsSysinfo(rpmPRCO PRCO, const char * fn)
00551
00552
00553 ;
00554
00561 int rpmdsGetconf(rpmds * dsp, const char * path)
00562
00563
00564 ;
00565
00572 int rpmdsMergePRCO(void * context, rpmds ds)
00573 ;
00574
00580
00581 rpmPRCO rpmdsFreePRCO( rpmPRCO PRCO)
00582 ;
00583
00589 rpmPRCO rpmdsNewPRCO( Header h)
00590
00591 ;
00592
00599
00600 rpmds rpmdsFromPRCO( rpmPRCO PRCO, rpmTag tagN)
00601 ;
00602
00611 int rpmdsELF(const char * fn, int flags,
00612 int (*add) (void * context, rpmds ds), void * context)
00613
00614 ;
00615 #define RPMELF_FLAG_SKIPPROVIDES 0x1
00616 #define RPMELF_FLAG_SKIPREQUIRES 0x2
00617
00625 int rpmdsLdconfig(rpmPRCO PRCO, const char * fn)
00626
00627 ;
00628
00629 #if defined(__sun)
00630
00639 int rpmdsRldpath(rpmPRCO PRCO, const char * rldp)
00640
00641 ;
00642
00651 int rpmdsCrle(rpmPRCO PRCO, const char * fn)
00652
00653 ;
00654 #endif
00655
00662 struct utsname;
00663 int rpmdsUname(rpmds * dsp, const struct utsname * un)
00664
00665 ;
00666
00674 int rpmdsPipe(rpmds * dsp, rpmTag tagN, const char * cmd)
00675
00676
00677 ;
00678
00685 int rpmdsCompare(const rpmds A, const rpmds B)
00686 ;
00687
00694 int rpmdsMatch(const rpmds A, rpmds B)
00695 ;
00696
00705 void rpmdsProblem( rpmps ps, const char * pkgNEVR, const rpmds ds,
00706 const fnpyKey * suggestedKeys,
00707 int adding)
00708
00709 ;
00710
00718 int rpmdsAnyMatchesDep (const Header h, const rpmds req, int nopromote)
00719
00720 ;
00721
00729 int rpmdsNVRMatchesDep(const Header h, const rpmds req, int nopromote)
00730
00731 ;
00732
00739 int rpmdsNegateRC(const rpmds ds, int rc)
00740 ;
00741
00747
00748 const char * rpmdsType( const rpmds ds)
00749 ;
00750
00751 #if !defined(SWIG)
00752
00758 static inline
00759 int rpmdsPrint( rpmds ds, FILE * fp)
00760
00761
00762 {
00763 if (fp == NULL)
00764 fp = stderr;
00765 ds = rpmdsInit(ds);
00766 while (rpmdsNext(ds) >= 0)
00767 fprintf(fp, "%6d\t%s: %s\n", rpmdsIx(ds), rpmdsType(ds), rpmdsDNEVR(ds)+2);
00768 return 0;
00769 }
00770
00777 static inline
00778 int rpmdsPrintResults( rpmds ds, FILE * fp)
00779
00780
00781 {
00782 if (fp == NULL)
00783 fp = stderr;
00784 ds = rpmdsInit(ds);
00785 while (rpmdsNext(ds) >= 0) {
00786 rpmint32_t rc = rpmdsResult(ds);
00787 if (rc > 0)
00788 continue;
00789 fprintf(fp, "%6d\t%s: %s\n", rpmdsIx(ds), rpmdsType(ds), rpmdsDNEVR(ds)+2);
00790 }
00791 return 0;
00792 }
00793
00801
00802 static inline
00803 int rpmdsPrintClosure( rpmds P, rpmds R,
00804 FILE * fp)
00805
00806
00807 {
00808 int rc;
00809
00810
00811 (void) rpmdsSetResult(R, 0);
00812
00813
00814 R = rpmdsInit(R);
00815 while (rpmdsNext(R) >= 0)
00816 rc = rpmdsSearch(P, R);
00817
00818 return rpmdsPrintResults(R, fp);
00819 }
00820
00821 #endif
00822
00824 #ifdef __cplusplus
00825 }
00826 #endif
00827
00828 #endif