9 extern int _rpmfc_debug;
14 typedef /*@abstract@*/ struct rpmfc_s * rpmfc;
19 int nfiles; /*!< no. of files */
20 int fknown; /*!< no. of classified files */
21 int fwhite; /*!< no. of "white" files */
22 int ix; /*!< current file index */
23 int skipProv; /*!< Don't auto-generate Provides:? */
24 int skipReq; /*!< Don't auto-generate Requires:? */
25 int tracked; /*!< Versioned Provides: tracking dependency added? */
26 size_t brlen; /*!< strlen(spec->buildRoot) */
28 ARGV_t fn; /*!< (#files) file names */
29 ARGI_t fcolor; /*!< (#files) file colors */
30 ARGI_t fcdictx; /*!< (#files) file class dictionary indices */
31 ARGI_t fddictx; /*!< (#files) file depends dictionary start */
32 ARGI_t fddictn; /*!< (#files) file depends dictionary no. entries */
33 ARGV_t cdict; /*!< (#classes) file class dictionary */
34 ARGV_t ddict; /*!< (#dependencies) file depends dictionary */
35 ARGI_t ddictx; /*!< (#dependencies) file->dependency mapping */
38 rpmds provides; /*!< (#provides) package provides */
40 rpmds requires; /*!< (#requires) package requires */
42 StringBuf sb_java; /*!< concatenated list of java colored files. */
43 StringBuf sb_perl; /*!< concatenated list of perl colored files. */
44 StringBuf sb_python;/*!< concatenated list of python colored files. */
52 RPMFC_ELF32 = (1 << 0),
53 RPMFC_ELF64 = (1 << 1),
54 #define RPMFC_ELF (RPMFC_ELF32|RPMFC_ELF64)
56 RPMFC_PKGCONFIG = (1 << 5),
57 RPMFC_LIBTOOL = (1 << 6),
58 RPMFC_MODULE = (1 << 7),
59 RPMFC_EXECUTABLE = (1 << 8),
60 RPMFC_SCRIPT = (1 << 9),
61 RPMFC_TEXT = (1 << 10),
62 RPMFC_DATA = (1 << 11), /* XXX unused */
63 RPMFC_DOCUMENT = (1 << 12),
64 RPMFC_STATIC = (1 << 13),
65 RPMFC_NOTSTRIPPED = (1 << 14),
66 RPMFC_COMPRESSED = (1 << 15),
68 RPMFC_DIRECTORY = (1 << 16),
69 RPMFC_SYMLINK = (1 << 17),
70 RPMFC_DEVICE = (1 << 18),
71 RPMFC_LIBRARY = (1 << 19),
72 RPMFC_ARCHIVE = (1 << 20),
73 RPMFC_FONT = (1 << 21),
74 RPMFC_IMAGE = (1 << 22),
75 RPMFC_MANPAGE = (1 << 23),
77 RPMFC_PERL = (1 << 24),
78 RPMFC_JAVA = (1 << 25),
79 RPMFC_PYTHON = (1 << 26),
80 RPMFC_PHP = (1 << 27),
81 RPMFC_TCL = (1 << 28),
82 RPMFC_MONO = (1 << 6),
84 RPMFC_WHITE = (1 << 29),
85 RPMFC_INCLUDE = (1 << 30),
86 RPMFC_ERROR = (1 << 31)
88 typedef enum FCOLOR_e FCOLOR_t;
92 struct rpmfcTokens_s {
100 typedef struct rpmfcTokens_s * rpmfcToken;
107 * Return helper output.
108 * @param av helper argv (with possible macros)
109 * @param sb_stdin helper input
110 * @retval *sb_stdoutp helper output
111 * @param failnonzero IS non-zero helper exit status a failure?
113 int rpmfcExec(ARGV_t av, StringBuf sb_stdin, /*@out@*/ StringBuf * sb_stdoutp,
115 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
116 /*@modifies *sb_stdoutp, rpmGlobalMacroContext,
117 fileSystem, internalState @*/
118 /*@requires maxSet(sb_stdoutp) >= 0 @*/;
121 * Return file color given file(1) string.
122 * @param fmstr file(1) string
126 int rpmfcColoring(const char * fmstr)
131 * Print results of file classification.
132 * @todo Remove debugging routine.
133 * @param msg message prefix (NULL for none)
134 * @param fc file classifier
135 * @param fp output file handle (NULL for stderr)
138 void rpmfcPrint(/*@null@*/ const char * msg, rpmfc fc, /*@null@*/ FILE * fp)
139 /*@globals fileSystem @*/
140 /*@modifies *fp, fc, fileSystem @*/;
144 * Destroy a file classifier.
145 * @param fc file classifier
146 * @return NULL always
150 rpmfc rpmfcFree(/*@only@*/ /*@null@*/ rpmfc fc)
155 * Create a file classifier.
156 * @return new file classifier
164 * Build file class dictionary and mappings.
165 * @param fc file classifier
166 * @param argv files to classify
167 * @param fmode files mode_t array (or NULL)
168 * @return 0 on success
171 int rpmfcClassify(rpmfc fc, ARGV_t argv, /*@null@*/ int16_t * fmode)
172 /*@globals fileSystem, internalState @*/
173 /*@modifies fc, fileSystem, internalState @*/;
177 * Build file/package dependency dictionary and mappings.
178 * @param fc file classifier
179 * @return 0 on success
182 int rpmfcApply(rpmfc fc)
187 * Generate package dependencies.
188 * @param spec spec file control
189 * @param pkg package control
190 * @return 0 on success
192 int rpmfcGenerateDepends(const Spec spec, Package pkg)
193 /*@globals rpmGlobalMacroContext, h_errno, fileSystem, internalState @*/
194 /*@modifies pkg->cpioList, pkg->header,
195 rpmGlobalMacroContext, fileSystem, internalState @*/;
201 #endif /* _H_RPMFC_ */