Lines Matching defs:fi
98 struct files *fi;
146 fi = ecalloc(1, sizeof *fi);
147 if (ht_insert(pathtab, path, fi)) {
148 free(fi);
149 if ((fi = ht_lookup(pathtab, path)) == NULL)
161 yyfile != fi->fi_where.w_srcfile) {
162 fi->fi_mkrule = rule;
166 cfgxerror(fi->fi_where.w_srcfile, fi->fi_where.w_srcline,
172 fi->fi_where.w_srcfile = yyfile;
173 fi->fi_where.w_srcline = currentline();
174 fi->fi_flags = flags;
175 fi->fi_path = path;
176 fi->fi_tail = tail;
177 fi->fi_base = intern(base);
178 fi->fi_dir = intern(dir);
179 fi->fi_prefix = SLIST_EMPTY(&prefixes) ? NULL :
181 fi->fi_buildprefix = SLIST_EMPTY(&buildprefixes) ? NULL :
183 fi->fi_len = strlen(path);
184 fi->fi_suffix = path[fi->fi_len - 1];
185 fi->fi_optx = optx;
186 fi->fi_optf = NULL;
187 fi->fi_mkrule = rule;
188 fi->fi_attr = NULL;
189 fi->fi_order = (int)nallfiles + (includedepth << 16);
190 switch (fi->fi_suffix) {
192 TAILQ_INSERT_TAIL(&allcfiles, fi, fi_snext);
193 TAILQ_INSERT_TAIL(&allfiles, fi, fi_next);
196 fi->fi_suffix = 's';
199 TAILQ_INSERT_TAIL(&allsfiles, fi, fi_snext);
200 TAILQ_INSERT_TAIL(&allfiles, fi, fi_next);
203 TAILQ_INSERT_TAIL(&allofiles, fi, fi_snext);
204 TAILQ_INSERT_TAIL(&allfiles, fi, fi_next);
207 cfgxerror(fi->fi_where.w_srcfile, fi->fi_where.w_srcline,
211 CFGDBG(3, "file added `%s' at order score %d", fi->fi_path, fi->fi_order);
221 addfiletoattr(const char *name, struct files *fi)
229 fi->fi_attr = a;
230 TAILQ_INSERT_TAIL(&a->a_files, fi, fi_anext);
243 struct files *fi, *last;
246 for (fi = *unchecked; fi != NULL;
247 last = fi, fi = TAILQ_NEXT(fi, fi_next)) {
248 if ((fi->fi_flags & FI_NEEDSCOUNT) != 0)
249 (void)expr_eval(fi->fi_optx, checkaux, fi);
262 struct files *fi = context;
265 cfgxerror(fi->fi_where.w_srcfile, fi->fi_where.w_srcline,
269 fi->fi_flags |= FI_HIDDEN;
297 struct files *fi, *ofi;
317 TAILQ_FOREACH(fi, &allfiles, fi_next) {
320 if (fi->fi_flags & FI_HIDDEN)
323 if (fi->fi_optx != NULL) {
324 if (fi->fi_optx->cx_type == CX_ATOM) {
325 addfiletoattr(fi->fi_optx->cx_u.atom, fi);
329 sel = expr_eval(fi->fi_optx,
330 fi->fi_flags & FI_NEEDSCOUNT ? fixcount :
331 fi->fi_flags & FI_NEEDSFLAG ? fixfsel :
334 fi->fi_optf = flathead;
338 if (fi->fi_attr && fi->fi_attr->a_deselected) {
340 fi->fi_path, fi->fi_attr->a_name);
345 if (ht_insert(basetab, fi->fi_base, fi)) {
346 if ((ofi = ht_lookup(basetab, fi->fi_base)) == NULL)
347 panic("fixfiles ht_lookup(%s)", fi->fi_base);
352 if (fi->fi_path != ofi->fi_path) {
353 if (ht_replace(basetab, fi->fi_base, fi) != 1)
355 fi->fi_base);
359 cfgxerror(fi->fi_where.w_srcfile, fi->fi_where.w_srcline,
361 fi->fi_base, fi->fi_path);
368 fi->fi_flags |= FI_SEL;
370 CFGDBG(3, "file selected `%s'", fi->fi_path);
373 if (fi->fi_attr == NULL) {
374 addfiletoattr(allattr.a_name, fi);
376 CFGDBG(3, "file `%s' belongs to attr `%s'", fi->fi_path,
377 fi->fi_attr->a_name);
381 selfiles = malloc(nselfiles * sizeof(fi));
383 TAILQ_FOREACH(fi, &allfiles, fi_next) {
384 if ((fi->fi_flags & FI_SEL) == 0)
386 selfiles[i++] = fi;
390 qsort(selfiles, nselfiles, (unsigned)sizeof(fi), cmpfiles);