rpmio/rpmmacro.h

Go to the documentation of this file.
00001 #ifndef _H_MACRO_
00002 #define _H_MACRO_
00003 
00008 #include <stdio.h>
00009 #include <stdlib.h>
00010 
00012 typedef /*@abstract@*/ struct MacroEntry_s {
00013     struct MacroEntry_s *prev;
00014     const char *name;   
00015     const char *opts;   
00016     const char *body;   
00017     int used;           
00018     int level;          
00019 } * MacroEntry;
00020 
00022 typedef /*@abstract@*/ struct MacroContext_s {
00023 /*@owned@*//*@null@*/ MacroEntry *macroTable;   
00024     int macrosAllocated;
00025     int firstFree;      
00026 } * MacroContext;
00027 
00028 /*@-redecl@*/
00029 /*@checked@*/
00030 extern MacroContext rpmGlobalMacroContext;
00031 
00032 /*@checked@*/
00033 extern MacroContext rpmCLIMacroContext;
00034 /*@=redecl@*/
00035 
00041 /*@-redecl@*/
00042 /*@observer@*/ /*@checked@*/
00043 extern const char * macrofiles;
00044 /*@=redecl@*/
00045 
00049 #define RMIL_DEFAULT    -15
00050 #define RMIL_MACROFILES -13
00051 #define RMIL_RPMRC      -11
00052 
00053 #define RMIL_CMDLINE    -7
00054 #define RMIL_TARBALL    -5
00055 #define RMIL_SPEC       -3
00056 #define RMIL_OLDSPEC    -1
00057 #define RMIL_GLOBAL     0
00058 
00059 #ifdef __cplusplus
00060 extern "C" {
00061 #endif
00062 
00068 void    rpmDumpMacroTable       (/*@null@*/ MacroContext mc,
00069                                         /*@null@*/ FILE * fp)
00070         /*@globals rpmGlobalMacroContext, fileSystem @*/
00071         /*@modifies *fp, fileSystem @*/;
00072 
00080 int rpmGlob(const char * patterns, /*@out@*/ int * argcPtr,
00081                 /*@out@*/ const char *** argvPtr)
00082         /*@globals fileSystem, internalState @*/
00083         /*@modifies *argcPtr, *argvPtr, fileSystem, internalState @*/;
00084 
00095 int     expandMacros    (/*@null@*/ void * spec, /*@null@*/ MacroContext mc,
00096                                 /*@in@*/ /*@out@*/ char * sbuf,
00097                                 size_t slen)
00098         /*@globals rpmGlobalMacroContext, h_errno, fileSystem @*/
00099         /*@modifies *sbuf, rpmGlobalMacroContext, fileSystem @*/;
00100 
00110 void    addMacro        (/*@null@*/ MacroContext mc, const char * n,
00111                                 /*@null@*/ const char * o,
00112                                 /*@null@*/ const char * b, int level)
00113         /*@globals rpmGlobalMacroContext @*/
00114         /*@modifies mc, rpmGlobalMacroContext @*/;
00115 
00121 void    delMacro        (/*@null@*/ MacroContext mc, const char * n)
00122         /*@globals rpmGlobalMacroContext @*/
00123         /*@modifies mc, rpmGlobalMacroContext @*/;
00124 
00132 int     rpmDefineMacro  (/*@null@*/ MacroContext mc, const char * macro,
00133                                 int level)
00134         /*@globals rpmGlobalMacroContext, h_errno @*/
00135         /*@modifies mc, rpmGlobalMacroContext @*/;
00136 
00142 void    rpmLoadMacros   (/*@null@*/ MacroContext mc, int level)
00143         /*@globals rpmGlobalMacroContext @*/
00144         /*@modifies rpmGlobalMacroContext @*/;
00145 
00151 int     rpmLoadMacroFile(/*@null@*/ MacroContext mc, const char * fn)
00152         /*@globals rpmGlobalMacroContext,
00153                 h_errno, fileSystem, internalState @*/
00154         /*@modifies mc, rpmGlobalMacroContext, fileSystem, internalState @*/;
00155 
00161 void    rpmInitMacros   (/*@null@*/ MacroContext mc, const char * macrofiles)
00162         /*@globals rpmGlobalMacroContext, rpmCLIMacroContext,
00163                 h_errno, fileSystem, internalState @*/
00164         /*@modifies mc, rpmGlobalMacroContext, fileSystem, internalState @*/;
00165 
00170 void    rpmFreeMacros   (/*@null@*/ MacroContext mc)
00171         /*@globals rpmGlobalMacroContext @*/
00172         /*@modifies mc, rpmGlobalMacroContext @*/;
00173 
00174 typedef enum rpmCompressedMagic_e {
00175     COMPRESSED_NOT              = 0,    
00176     COMPRESSED_OTHER            = 1,    
00177     COMPRESSED_BZIP2            = 2,    
00178     COMPRESSED_ZIP              = 3,    
00179     COMPRESSED_LZMA             = 4     
00180 } rpmCompressedMagic;
00181 
00188 int     isCompressed    (const char * file,
00189                                 /*@out@*/ rpmCompressedMagic * compressed)
00190         /*@globals h_errno, fileSystem, internalState @*/
00191         /*@modifies *compressed, fileSystem, internalState @*/;
00192 
00198 char * rpmExpand        (/*@null@*/ const char * arg, ...)
00199         /*@globals rpmGlobalMacroContext, h_errno @*/
00200         /*@modifies rpmGlobalMacroContext @*/;
00201 
00207 /*@null@*/
00208 char * rpmCleanPath     (/*@returned@*/ /*@null@*/ char * path)
00209         /*@modifies *path @*/;
00210 
00216 /*@-redecl@*/ /* LCL: shrug */
00217 const char * rpmGetPath (/*@null@*/ const char * path, ...)
00218         /*@globals rpmGlobalMacroContext, h_errno @*/
00219         /*@modifies rpmGlobalMacroContext @*/;
00220 /*@=redecl@*/
00221 
00232 /*@-redecl@*/ /* LCL: shrug */
00233 const char * rpmGenPath (/*@null@*/ const char * urlroot,
00234                         /*@null@*/ const char * urlmdir,
00235                         /*@null@*/ const char * urlfile)
00236         /*@globals rpmGlobalMacroContext, h_errno @*/
00237         /*@modifies rpmGlobalMacroContext @*/;
00238 /*@=redecl@*/
00239 
00247 int     rpmExpandNumeric (const char * arg)
00248         /*@globals rpmGlobalMacroContext, h_errno @*/
00249         /*@modifies rpmGlobalMacroContext @*/;
00250 
00251 #ifdef __cplusplus
00252 }
00253 #endif
00254 
00255 #endif  /* _H_ MACRO_ */

Generated on Wed Jan 21 03:03:32 2009 for rpm by  doxygen 1.4.7