static boolean createTagsForArgs (cookedArgs *const args) { boolean resize = FALSE; /* Generate tags for each argument on the command line. */ while (! cArgOff (args)) { const char *const arg = cArgItem (args); #ifdef MANUAL_GLOBBING resize |= createTagsForWildcardArg (arg); #else resize |= createTagsForEntry (arg); #endif cArgForth (args); parseCmdlineOptions (args); } return resize; }
extern void cArgForth (cookedArgs* const current) { Assert (current != NULL); Assert (! cArgOff (current)); if (cArgOptionPending (current)) parseShortOption (current); else { Assert (! argOff (current->args)); argForth (current->args); if (! argOff (current->args)) cArgRead (current); else { current->isOption = FALSE; current->longOption = FALSE; current->shortOptions = NULL; current->item = NULL; current->parameter = NULL; } } }
/* Read from an opened file a list of file names for which to generate tags. */ static boolean createTagsFromFileInput (FILE *const fp, const boolean filter) { boolean resize = FALSE; if (fp != NULL) { cookedArgs *args = cArgNewFromLineFile (fp); parseOptions (args); while (! cArgOff (args)) { resize |= createTagsForEntry (cArgItem (args)); if (filter) { if (Option.filterTerminator != NULL) fputs (Option.filterTerminator, stdout); fflush (stdout); } cArgForth (args); parseOptions (args); } cArgDelete (args); } return resize; }
extern void setMainLoop (mainLoopFunc func, void *data) { mainLoop = func; mainData = data; } static void runMainLoop (cookedArgs *args) { (* mainLoop) (args, mainData); } static void batchMakeTags (cookedArgs *args, void *user CTAGS_ATTR_UNUSED) { clock_t timeStamps [3]; bool resize = false; bool files = (bool)(! cArgOff (args) || Option.fileList != NULL || Option.filter); if (! files) { if (filesRequired ()) error (FATAL, "No files specified. Try \"%s --help\".", getExecutableName ()); else if (! Option.recurse && ! etagsInclude ()) return; } #define timeStamp(n) timeStamps[(n)]=(Option.printTotals ? clock():(clock_t)0) if ((! Option.filter) && (! Option.printLanguage)) openTagFile ();