00001 #ifndef _H_SPEC_
00002 #define _H_SPEC_
00003
00009 #include <rpm/rpmstring.h>
00010 #include <rpm/rpmcli.h>
00011
00012 #ifdef __cplusplus
00013 extern "C" {
00014 #endif
00015
00018 typedef struct Package_s * Package;
00019
00022 struct TriggerFileEntry {
00023 int index;
00024 char * fileName;
00025 char * script;
00026 char * prog;
00027 struct TriggerFileEntry * next;
00028 };
00029
00030 #define RPMBUILD_ISSOURCE (1 << 0)
00031 #define RPMBUILD_ISPATCH (1 << 1)
00032 #define RPMBUILD_ISICON (1 << 2)
00033 #define RPMBUILD_ISNO (1 << 3)
00034
00035 #define RPMBUILD_DEFAULT_LANG "C"
00036
00039 struct Source {
00040 char * fullSource;
00041 char * source;
00042 int flags;
00043 uint32_t num;
00044 struct Source * next;
00045 };
00046
00049 typedef struct ReadLevelEntry {
00050 int reading;
00051 struct ReadLevelEntry * next;
00052 } RLE_t;
00053
00056 typedef struct OpenFileInfo {
00057 char * fileName;
00058 FILE *fp;
00059 int lineNum;
00060 char readBuf[BUFSIZ];
00061 char * readPtr;
00062 struct OpenFileInfo * next;
00063 } OFI_t;
00064
00067 typedef struct spectag_s {
00068 int t_tag;
00069 int t_startx;
00070 int t_nlines;
00071 char * t_lang;
00072 char * t_msgid;
00073 } * spectag;
00074
00077 typedef struct spectags_s {
00078 spectag st_t;
00079 int st_nalloc;
00080 int st_ntags;
00081 } * spectags;
00082
00085 typedef struct speclines_s {
00086 char **sl_lines;
00087 int sl_nalloc;
00088 int sl_nlines;
00089 } * speclines;
00090
00094 struct rpmSpec_s {
00095 char * specFile;
00096 char * buildRoot;
00097 char * buildSubdir;
00098 char * rootDir;
00099
00100 speclines sl;
00101 spectags st;
00102
00103 struct OpenFileInfo * fileStack;
00104 char lbuf[10*BUFSIZ];
00105 char *lbufPtr;
00106 char nextpeekc;
00107 char * nextline;
00108 char * line;
00109 int lineNum;
00110
00111 struct ReadLevelEntry * readStack;
00112
00113 Header buildRestrictions;
00114 rpmSpec * BASpecs;
00115 const char ** BANames;
00116 int BACount;
00117 int recursing;
00119 int force;
00120 int anyarch;
00121
00122 char * passPhrase;
00123 int timeCheck;
00124 char * cookie;
00125
00126 struct Source * sources;
00127 int numSources;
00128 int noSource;
00129
00130 char * sourceRpmName;
00131 unsigned char * sourcePkgId;
00132 Header sourceHeader;
00133 rpmfi sourceCpioList;
00134
00135 rpmMacroContext macros;
00136
00137 StringBuf prep;
00138 StringBuf build;
00139 StringBuf install;
00140 StringBuf check;
00141 StringBuf clean;
00143 Package packages;
00144 };
00145
00149 struct Package_s {
00150 Header header;
00151 rpmds ds;
00152 rpmfi cpioList;
00153
00154 struct Source * icon;
00155
00156 int autoReq;
00157 int autoProv;
00158
00159 char * preInFile;
00160 char * postInFile;
00161 char * preUnFile;
00162 char * postUnFile;
00163 char * preTransFile;
00164 char * postTransFile;
00165 char * verifyFile;
00167 StringBuf specialDoc;
00168 char *specialDocDir;
00169
00170 struct TriggerFileEntry * triggerFiles;
00171
00172 StringBuf fileFile;
00173 StringBuf fileList;
00174
00175 Package next;
00176 };
00177
00182 rpmSpec newSpec(void);
00183
00189 rpmSpec freeSpec(rpmSpec spec);
00190
00198 int rpmspecQuery(rpmts ts, QVA_t qva, const char * arg);
00199
00202 struct OpenFileInfo * newOpenFileInfo(void);
00203
00211 spectag stashSt(rpmSpec spec, Header h, rpmTag tag, const char * lang);
00212
00220 int addSource(rpmSpec spec, Package pkg, const char * field, rpmTag tag);
00221
00228 int parseNoSource(rpmSpec spec, const char * field, rpmTag tag);
00229
00230 #ifdef __cplusplus
00231 }
00232 #endif
00233
00234 #endif