string gs_system () { #ifdef OS_MINGW url gs= url_system ("C:\\") * url_wildcard ("Program Files*") * url_system ("gs") * url_wildcard ("gs*")* url_system ("bin") * url_wildcard ("gswin*c.exe"); return materialize (gs); #else return "gs"; #endif }
void dictionary_rep::load (string fname) { fname= fname * ".scm"; if (DEBUG_VERBOSE) debug_convert << "Loading " << fname << "\n"; url u= url ("$TEXMACS_DIC_PATH") * url_wildcard ("*" * fname); load (expand (complete (u))); }
int main (int argc, char** argv) { boot_hacks (); windows_delayed_refresh (1000000000); immediate_options (argc, argv); set_env ("LC_NUMERIC", "POSIX"); #ifdef MACOSX_EXTENSIONS // Reset TeXmacs if Alt is pressed during startup if (mac_alternate_startup()) { cout << "TeXmacs] Performing setup (Alt on startup)" << LF; remove (url ("$TEXMACS_HOME_PATH/system/settings.scm")); remove (url ("$TEXMACS_HOME_PATH/system/setup.scm")); remove (url ("$TEXMACS_HOME_PATH/system/cache") * url_wildcard ("*")); remove (url ("$TEXMACS_HOME_PATH/fonts/error") * url_wildcard ("*")); } #endif #ifdef QTTEXMACS // initialize the Qt application infrastructure new QTMApplication (argc, argv); #endif TeXmacs_init_paths (argc, argv); //cout << "Bench ] Started TeXmacs\n"; the_et = tuple (); the_et->obs= ip_observer (path ()); cache_initialize (); bench_start ("initialize texmacs"); init_texmacs (); bench_cumul ("initialize texmacs"); #ifdef ENABLE_TESTS test_routines (); #endif //#ifdef EXPERIMENTAL // test_environments (); //#endif start_scheme (argc, argv, TeXmacs_main); return 0; }
static url url_get_atom (string s, int type) { if (type < URL_STANDARD) { if (s == "~") return url_system (get_env ("HOME")); if (starts (s, "$")) { string val= get_env (s (1, N(s))); if (val == "") return url_none (); return unblank (url_system (val)); } } if (occurs ("*", s)) return url_wildcard (s); #ifdef WINPATHS if(N(s)==2 && ends (s, ":")) s->resize(1); // remove the ':' after unit letter #endif return as_url (tree (s)); }
static url get_kpsepath (string s) { // FIXME: adapt to WIN32 if (get_setting ("KPSEPATH") != "true") return url_none (); string r= var_eval_system ("kpsepath " * s); if (N(r)==0) return url_none (); int i, start, end; url p= url_none (); for (i=0; i<N(r); i++) { while ((i<N(r)) && (r[i]=='!')) i++; start=i; while ((i<N(r)) && (r[i]!=':')) i++; end=i; while ((end>start) && (r[end-1]=='/')) end--; string dir= r (start, end); if (dir == ".") continue; p= expand (complete (dir * url_wildcard (), "dr")) | p; } return p; }
void cache_initialize () { texmacs_path= url_system ("$TEXMACS_PATH"); if (get_env ("TEXMACS_HOME_PATH") == "") texmacs_home_path= url_system ("$HOME/.TeXmacs"); else texmacs_home_path= url_system ("$TEXMACS_HOME_PATH"); if (get_env ("TEXMACS_DOC_PATH") == "") texmacs_doc_path= url_system ("$TEXMACS_PATH/doc"); else texmacs_doc_path= url_system ("$TEXMACS_DOC_PATH"); texmacs_path_string = concretize (texmacs_path); texmacs_home_path_string = concretize (texmacs_home_path); texmacs_doc_path_string = concretize (texmacs_doc_path); texmacs_font_path_string = concretize (texmacs_home_path * "fonts/"); cache_refresh (); if (is_recursively_up_to_date (texmacs_path * "fonts/type1") && is_recursively_up_to_date (texmacs_path * "fonts/truetype") && is_recursively_up_to_date (texmacs_home_path * "fonts/type1") && is_recursively_up_to_date (texmacs_home_path * "fonts/truetype")); else remove (texmacs_home_path * "fonts/error" * url_wildcard ("*")); }
static url plugin_path (string which) { url base= "$TEXMACS_HOME_PATH:/etc/TeXmacs:$TEXMACS_PATH:/usr/share/TeXmacs"; url search= base * "plugins" * url_wildcard ("*") * which; return expand (complete (search, "r")); }
static url search_sub_dirs (url root) { url dirs= complete (root * url_wildcard (), "dr"); return expand (dirs); }
static url descendance_sub (url u) { if (is_or (u)) return descendance_sub (u[1]) | descendance_sub (u[2]); return complete (u, url_wildcard (), "r", false); }
void immediate_options (int argc, char** argv) { if (get_env ("TEXMACS_HOME_PATH") == "") #ifdef __MINGW32__ if (get_env ("HOME") == "") set_env ("HOME", get_env("USERPROFILE")); set_env ("TEXMACS_HOME_PATH", get_env ("APPDATA") * "\\TeXmacs"); #else set_env ("TEXMACS_HOME_PATH", get_env ("HOME") * "/.TeXmacs"); #endif if (get_env ("TEXMACS_HOME_PATH") == "") return; for (int i=1; i<argc; i++) { string s= argv[i]; if ((N(s)>=2) && (s(0,2)=="--")) s= s (1, N(s)); if ((s == "-S") || (s == "-setup")) { remove (url ("$TEXMACS_HOME_PATH/system/settings.scm")); remove (url ("$TEXMACS_HOME_PATH/system/setup.scm")); remove (url ("$TEXMACS_HOME_PATH/system/cache") * url_wildcard ("*")); remove (url ("$TEXMACS_HOME_PATH/fonts/font-database.scm")); remove (url ("$TEXMACS_HOME_PATH/fonts/font-features.scm")); remove (url ("$TEXMACS_HOME_PATH/fonts/font-characteristics.scm")); remove (url ("$TEXMACS_HOME_PATH/fonts/error") * url_wildcard ("*")); } else if (s == "-delete-cache") remove (url ("$TEXMACS_HOME_PATH/system/cache") * url_wildcard ("*")); else if (s == "-delete-style-cache") remove (url ("$TEXMACS_HOME_PATH/system/cache") * url_wildcard ("__*")); else if (s == "-delete-font-cache") { remove (url ("$TEXMACS_HOME_PATH/system/cache/font_cache.scm")); remove (url ("$TEXMACS_HOME_PATH/fonts/font-database.scm")); remove (url ("$TEXMACS_HOME_PATH/fonts/font-features.scm")); remove (url ("$TEXMACS_HOME_PATH/fonts/font-characteristics.scm")); remove (url ("$TEXMACS_HOME_PATH/fonts/error") * url_wildcard ("*")); } else if (s == "-delete-doc-cache") { remove (url ("$TEXMACS_HOME_PATH/system/cache/doc_cache")); remove (url ("$TEXMACS_HOME_PATH/system/cache/dir_cache.scm")); remove (url ("$TEXMACS_HOME_PATH/system/cache/stat_cache.scm")); } else if (s == "-delete-file-cache") { remove (url ("$TEXMACS_HOME_PATH/system/cache/doc_cache")); remove (url ("$TEXMACS_HOME_PATH/system/cache/file_cache")); remove (url ("$TEXMACS_HOME_PATH/system/cache/dir_cache.scm")); remove (url ("$TEXMACS_HOME_PATH/system/cache/stat_cache.scm")); } else if (s == "-delete-plugin-cache") remove (url ("$TEXMACS_HOME_PATH/system/cache/plugin_cache.scm")); else if (s == "-delete-server-data") system ("rm -rf", url ("$TEXMACS_HOME_PATH/server")); else if (s == "-delete-databases") { system ("rm -rf", url ("$TEXMACS_HOME_PATH/system/database")); system ("rm -rf", url ("$TEXMACS_HOME_PATH/users")); } else if (s == "-log-file" && i + 1 < argc) { i++; char* log_file = argv[i]; tm_ostream logf (log_file); if (!logf->is_writable ()) cerr << "TeXmacs] Error: could not open " << log_file << "\n"; cout.redirect (logf); cerr.redirect (logf); } } }