gboolean tm_source_file_init(TMSourceFile *source_file, const char *file_name , gboolean update, const char* name) { if (0 == source_file_class_id) source_file_class_id = tm_work_object_register(tm_source_file_free , tm_source_file_update, NULL); #ifdef TM_DEBUG g_message("Source File init: %s", file_name); #endif if (FALSE == tm_work_object_init(&(source_file->work_object), source_file_class_id, file_name, FALSE)) return FALSE; source_file->inactive = FALSE; if (NULL == LanguageTable) { initializeParsing(); installLanguageMapDefaults(); if (NULL == TagEntryFunction) TagEntryFunction = tm_source_file_tags; if (NULL == TagEntrySetArglistFunction) TagEntrySetArglistFunction = tm_source_file_set_tag_arglist; } if (name == NULL) source_file->lang = LANG_AUTO; else source_file->lang = getNamedLanguage(name); if (update) tm_source_file_update(TM_WORK_OBJECT(source_file), TRUE, FALSE, FALSE); return TRUE; }
extern int main (int __unused__ argc, char **argv) { cookedArgs *args; #ifdef VMS extern int getredirection (int *ac, char ***av); /* do wildcard expansion and I/O redirection */ getredirection (&argc, &argv); #endif #ifdef AMIGA /* This program doesn't work when started from the Workbench */ if (argc == 0) exit (1); #endif #ifdef __EMX__ _wildcard (&argc, &argv); /* expand wildcards in argument list */ #endif #if defined (macintosh) && BUILD_MPW_TOOL == 0 argc = ccommand (&argv); #endif setCurrentDirectory (); setExecutableName (*argv++); sanitizeEnviron (); checkRegex (); args = cArgNewFromArgv (argv); previewFirstOption (args); testEtagsInvocation (); initializeParsing (); initOptions (); readOptionConfiguration (); verbose ("Reading initial options from command line\n"); parseOptions (args); checkOptions (); unifyLanguageMaps (); makeTags (args); /* Clean up. */ cArgDelete (args); freeKeywordTable (); freeRoutineResources (); freeSourceFileResources (); freeTagFileResources (); freeOptionResources (); freeParserResources (); freeRegexResources (); freeXcmdResources (); if (Option.guessParser) return (Option.guessParser == TRUE)? 0: 1; exit (0); return 0; }
gboolean tm_source_file_parse(TMSourceFile *source_file) { const char *file_name; gboolean status = TRUE; int passCount = 0; if ((NULL == source_file) || (NULL == source_file->work_object.file_name)) { g_warning("Attempt to parse NULL file"); return FALSE; } file_name = source_file->work_object.file_name; if (NULL == LanguageTable) { initializeParsing(); installLanguageMapDefaults(); if (NULL == TagEntryFunction) TagEntryFunction = tm_source_file_tags; if (NULL == TagEntrySetArglistFunction) TagEntrySetArglistFunction = tm_source_file_set_tag_arglist; } current_source_file = source_file; if (LANG_AUTO == source_file->lang) source_file->lang = getFileLanguage (file_name); if (source_file->lang < 0 || ! LanguageTable [source_file->lang]->enabled) return status; while ((TRUE == status) && (passCount < 3)) { if (source_file->work_object.tags_array) tm_tags_array_free(source_file->work_object.tags_array, FALSE); if (fileOpen (file_name, source_file->lang)) { if (LanguageTable [source_file->lang]->parser != NULL) { LanguageTable [source_file->lang]->parser (); fileClose (); break; } else if (LanguageTable [source_file->lang]->parser2 != NULL) status = LanguageTable [source_file->lang]->parser2 (passCount); fileClose (); } else { g_warning("%s: Unable to open %s", G_STRFUNC, file_name); return FALSE; } ++ passCount; } return status; }
gint tm_source_file_get_named_lang(const gchar *name) { if (NULL == LanguageTable) { initializeParsing(); installLanguageMapDefaults(); if (NULL == TagEntryFunction) TagEntryFunction = tm_source_file_tags; if (NULL == TagEntrySetArglistFunction) TagEntrySetArglistFunction = tm_source_file_set_tag_arglist; } return getNamedLanguage(name); }
extern int main (int __unused__ argc, char **argv) { cookedArgs *args; setCurrentDirectory (); setExecutableName (*argv++); sanitizeEnviron (); checkRegex (); args = cArgNewFromArgv (argv); previewFirstOption (args); testEtagsInvocation (); initializeParsing (); initOptions (); readOptionConfiguration (); verbose ("Reading initial options from command line\n"); parseOptions (args); checkOptions (); unifyLanguageMaps (); makeTags (args); /* Clean up. */ cArgDelete (args); freeKeywordTable (); freeRoutineResources (); freeSourceFileResources (); freeTagFileResources (); freeOptionResources (); freeParserResources (); freeRegexResources (); freeXcmdResources (); #ifdef HAVE_ICONV freeEncodingResources (); #endif if (Option.printLanguage) return (Option.printLanguage == TRUE)? 0: 1; exit (0); return 0; }
gboolean tm_source_file_buffer_parse(TMSourceFile *source_file, guchar* text_buf, gint buf_size) { const char *file_name; gboolean status = TRUE; if ((NULL == source_file) || (NULL == source_file->work_object.file_name)) { g_warning("Attempt to parse NULL file"); return FALSE; } if ((NULL == text_buf) || (0 == buf_size)) { g_warning("Attempt to parse a NULL text buffer"); } file_name = source_file->work_object.file_name; if (NULL == LanguageTable) { initializeParsing(); installLanguageMapDefaults(); if (NULL == TagEntryFunction) TagEntryFunction = tm_source_file_tags; if (NULL == TagEntrySetArglistFunction) TagEntrySetArglistFunction = tm_source_file_set_tag_arglist; } current_source_file = source_file; if (LANG_AUTO == source_file->lang) source_file->lang = getFileLanguage (file_name); if (source_file->lang == LANG_IGNORE) { #ifdef TM_DEBUG g_warning("ignoring %s (unknown language)\n", file_name); #endif } else if (! LanguageTable [source_file->lang]->enabled) { #ifdef TM_DEBUG g_warning("ignoring %s (language disabled)\n", file_name); #endif } else { int passCount = 0; while ((TRUE == status) && (passCount < 3)) { if (source_file->work_object.tags_array) tm_tags_array_free(source_file->work_object.tags_array, FALSE); if (bufferOpen (text_buf, buf_size, file_name, source_file->lang)) { if (LanguageTable [source_file->lang]->parser != NULL) { LanguageTable [source_file->lang]->parser (); bufferClose (); break; } else if (LanguageTable [source_file->lang]->parser2 != NULL) status = LanguageTable [source_file->lang]->parser2 (passCount); bufferClose (); } else { g_warning("Unable to open %s", file_name); return FALSE; } ++ passCount; } return TRUE; } return status; }