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     COMPRESSED_XZ               = 5,    
00181 } rpmCompressedMagic;
00182 
00189 int     isCompressed    (const char * file,
00190                                 /*@out@*/ rpmCompressedMagic * compressed)
00191         /*@globals h_errno, fileSystem, internalState @*/
00192         /*@modifies *compressed, fileSystem, internalState @*/;
00193 
00199 char * rpmExpand        (/*@null@*/ const char * arg, ...)
00200         /*@globals rpmGlobalMacroContext, h_errno @*/
00201         /*@modifies rpmGlobalMacroContext @*/;
00202 
00208 /*@null@*/
00209 char * rpmCleanPath     (/*@returned@*/ /*@null@*/ char * path)
00210         /*@modifies *path @*/;
00211 
00217 /*@-redecl@*/ /* LCL: shrug */
00218 const char * rpmGetPath (/*@null@*/ const char * path, ...)
00219         /*@globals rpmGlobalMacroContext, h_errno @*/
00220         /*@modifies rpmGlobalMacroContext @*/;
00221 /*@=redecl@*/
00222 
00233 /*@-redecl@*/ /* LCL: shrug */
00234 const char * rpmGenPath (/*@null@*/ const char * urlroot,
00235                         /*@null@*/ const char * urlmdir,
00236                         /*@null@*/ const char * urlfile)
00237         /*@globals rpmGlobalMacroContext, h_errno @*/
00238         /*@modifies rpmGlobalMacroContext @*/;
00239 /*@=redecl@*/
00240 
00248 int     rpmExpandNumeric (const char * arg)
00249         /*@globals rpmGlobalMacroContext, h_errno @*/
00250         /*@modifies rpmGlobalMacroContext @*/;
00251 
00252 #ifdef __cplusplus
00253 }
00254 #endif
00255 
00256 #endif  /* _H_ MACRO_ */

Generated on Tue Apr 3 12:43:37 2012 for rpm by  doxygen 1.4.7