int main(int argc, char **argv) { char *font, *type, *termmode; const char *opts; int dumpmod, dumpopt, opt; vt4_mode = is_vt4(); init(); dumpmod = 0; dumpopt = DUMP_FBF; termmode = NULL; if (vt4_mode) opts = "b:Cc:fg:h:Hi:M:m:pPr:S:s:T:t:x"; else opts = "b:Cc:deE:fg:h:Hi:l:LM:m:pPr:S:s:T:t:x"; while ((opt = getopt(argc, argv, opts)) != -1) switch(opt) { case 'b': set_border_color(optarg); break; case 'C': clear_history(); break; case 'c': set_cursor_type(optarg); break; case 'd': if (vt4_mode) break; print_scrnmap(); break; case 'E': if (vt4_mode) break; set_terminal_emulator(optarg); break; case 'e': if (vt4_mode) break; get_terminal_emulators(); break; case 'f': optarg = nextarg(argc, argv, &optind, 'f', 0); if (optarg != NULL) { font = nextarg(argc, argv, &optind, 'f', 0); if (font == NULL) { type = NULL; font = optarg; } else type = optarg; load_font(type, font); } else { if (!vt4_mode) usage(); /* Switch syscons to ROM? */ load_default_vt4font(); } break; case 'g': if (sscanf(optarg, "%dx%d", &vesa_cols, &vesa_rows) != 2) { revert(); warnx("incorrect geometry: %s", optarg); usage(); } break; case 'h': set_history(optarg); break; case 'H': dumpopt = DUMP_ALL; break; case 'i': show_info(optarg); break; case 'l': if (vt4_mode) break; load_scrnmap(optarg); break; case 'L': if (vt4_mode) break; load_default_scrnmap(); break; case 'M': set_mouse_char(optarg); break; case 'm': set_mouse(optarg); break; case 'p': dumpmod = DUMP_FMT_RAW; break; case 'P': dumpmod = DUMP_FMT_TXT; break; case 'r': set_reverse_colors(argc, argv, &optind); break; case 'S': set_lockswitch(optarg); break; case 's': set_console(optarg); break; case 'T': if (strcmp(optarg, "xterm") != 0 && strcmp(optarg, "cons25") != 0) usage(); termmode = optarg; break; case 't': set_screensaver_timeout(optarg); break; case 'x': hex = 1; break; default: usage(); } if (dumpmod != 0) dump_screen(dumpmod, dumpopt); video_mode(argc, argv, &optind); set_normal_colors(argc, argv, &optind); if (optind < argc && !strcmp(argv[optind], "show")) { test_frame(); optind++; } if (termmode != NULL) set_terminal_mode(termmode); if ((optind != argc) || (argc == 1)) usage(); return (0); }
void TeXmacs_main (int argc, char** argv) { int i; bool flag= true; string the_default_font; for (i=1; i<argc; i++) if (argv[i][0] == '\0') argc= i; else if (((argv[i][0] == '-') || (argv[i][0] == '+')) && (argv[i][1] != '\0')) { string s= argv[i]; if ((N(s)>=2) && (s(0,2)=="--")) s= s (1, N(s)); if ((s == "-s") || (s == "-silent")) flag= false; else if ((s == "-V") || (s == "-verbose")) debug (DEBUG_FLAG_VERBOSE, true); else if ((s == "-d") || (s == "-debug")) debug (DEBUG_FLAG_STD, true); else if (s == "-debug-events") debug (DEBUG_FLAG_EVENTS, true); else if (s == "-debug-io") debug (DEBUG_FLAG_IO, true); else if (s == "-debug-bench") debug (DEBUG_FLAG_BENCH, true); else if (s == "-debug-history") debug (DEBUG_FLAG_HISTORY, true); else if (s == "-debug-qt") debug (DEBUG_FLAG_QT, true); else if (s == "-debug-qt-widgets") debug (DEBUG_FLAG_QT_WIDGETS, true); else if (s == "-debug-keyboard") debug (DEBUG_FLAG_KEYBOARD, true); else if (s == "-debug-packrat") debug (DEBUG_FLAG_PACKRAT, true); else if (s == "-debug-flatten") debug (DEBUG_FLAG_FLATTEN, true); else if (s == "-debug-correct") debug (DEBUG_FLAG_CORRECT, true); else if (s == "-debug-convert") debug (DEBUG_FLAG_CONVERT, true); else if (s == "-debug-all") { debug (DEBUG_FLAG_EVENTS, true); debug (DEBUG_FLAG_STD, true); debug (DEBUG_FLAG_IO, true); debug (DEBUG_FLAG_HISTORY, true); debug (DEBUG_FLAG_BENCH, true); debug (DEBUG_FLAG_QT, true); debug (DEBUG_FLAG_QT_WIDGETS, true); } else if (s == "-disable-error-recovery") disable_error_recovery= true; else if ((s == "-fn") || (s == "-font")) { i++; if (i<argc) the_default_font= argv[i]; } else if ((s == "-g") || (s == "-geometry")) { i++; if (i<argc) { string g= argv[i]; int j=0, j1, j2, j3; for (j=0; j<N(g); j++) if (g[j] == 'x') break; j1=j; if (j<N(g)) j++; for (; j<N(g); j++) if ((g[j] == '+') || (g[j] == '-')) break; j2=j; if (j<N(g)) j++; for (; j<N(g); j++) if ((g[j] == '+') || (g[j] == '-')) break; j3=j; if (j1<N(g)) { geometry_w= max (as_int (g (0, j1)), 320); geometry_h= max (as_int (g (j1+1, j2)), 200); } if (j3<N(g)) { if (g[j2] == '-') geometry_x= as_int (g (j2, j3)) - 1; else geometry_x= as_int (g (j2+1, j3)); if (g[j3] == '-') geometry_y= as_int (g (j3, N(g))) - 1; else geometry_y= as_int (g (j3+1, N(g))); } } } else if ((s == "-b") || (s == "-initialize-buffer")) { i++; if (i<argc) tm_init_buffer_file= url_system (argv[i]); } else if ((s == "-i") || (s == "-initialize")) { i++; if (i<argc) tm_init_file= url_system (argv[i]); } else if ((s == "-v") || (s == "-version")) { cout << "\n"; cout << "TeXmacs version " << TEXMACS_VERSION << "\n"; cout << TEXMACS_COPYRIGHT << "\n"; cout << "\n"; exit (0); } else if ((s == "-p") || (s == "-path")) { cout << get_env ("TEXMACS_PATH") << "\n"; exit (0); } else if ((s == "-bp") || (s == "-binpath")) { cout << get_env ("TEXMACS_BIN_PATH") << "\n"; exit (0); } else if ((s == "-q") || (s == "-quit")) my_init_cmds= my_init_cmds * " (quit-TeXmacs)"; else if ((s == "-r") || (s == "-reverse")) set_reverse_colors (true); else if (s == "-no-retina") { retina_manual= true; retina_factor= 1; retina_icons = 1; retina_scale = 1.0; } else if ((s == "-R") || (s == "-retina")) { retina_manual= true; retina_factor= 2; retina_icons = 2; retina_scale = 1.4; } else if (s == "-no-retina-icons") { retina_iman = true; retina_icons = 1; } else if (s == "-retina-icons") { retina_iman = true; retina_icons = 2; } else if ((s == "-c") || (s == "-convert")) { i+=2; if (i<argc) { url in ("$PWD", argv[i-1]); url out ("$PWD", argv[ i ]); my_init_cmds= my_init_cmds * " " * "(load-buffer " * scm_quote (as_string (in)) * " :strict) " * "(export-buffer " * scm_quote (as_string (out)) * ")"; } } else if ((s == "-x") || (s == "-execute")) { i++; if (i<argc) my_init_cmds= (my_init_cmds * " ") * argv[i]; } else if (s == "-server") start_server_flag= true; else if (s == "-log-file") i++; else if ((s == "-Oc") || (s == "-no-char-clipping")) char_clip= false; else if ((s == "+Oc") || (s == "-char-clipping")) char_clip= true; else if ((s == "-S") || (s == "-setup") || (s == "-delete-cache") || (s == "-delete-font-cache") || (s == "-delete-style-cache") || (s == "-delete-file-cache") || (s == "-delete-doc-cache") || (s == "-delete-plugin-cache") || (s == "-delete-server-data") || (s == "-delete-databases")); else if (starts (s, "-psn")); else { cout << "\n"; cout << "Options for TeXmacs:\n\n"; cout << " -b [file] Specify scheme buffers initialization file\n"; cout << " -c [i] [o] Convert file 'i' into file 'o'\n"; cout << " -d For debugging purposes\n"; cout << " -fn [font] Set the default TeX font\n"; cout << " -g [geom] Set geometry of window in pixels\n"; cout << " -h Display this help message\n"; cout << " -i [file] Specify scheme initialization file\n"; cout << " -p Get the TeXmacs path\n"; cout << " -q Shortcut for -x \"(quit-TeXmacs)\"\n"; cout << " -r Reverse video mode\n"; cout << " -s Suppress information messages\n"; cout << " -S Rerun TeXmacs setup program before starting\n"; cout << " -v Display current TeXmacs version\n"; cout << " -V Show some informative messages\n"; cout << " -x [cmd] Execute scheme command\n"; cout << " -Oc TeX characters bitmap clipping off\n"; cout << " +Oc TeX characters bitmap clipping on (default)\n"; cout << "\nPlease report bugs to <*****@*****.**>\n"; cout << "\n"; exit (0); } } if (flag) debug (DEBUG_FLAG_AUTO, true); // Further options via environment variables if (get_env ("TEXMACS_RETINA") == "off") { retina_manual= true; retina_factor= 1; retina_icons = 1; retina_scale = 1.0; } if (get_env ("TEXMACS_RETINA") == "on") { retina_manual= true; retina_factor= 2; retina_icons = 2; retina_scale = 1.4; } if (get_env ("TEXMACS_RETINA_ICONS") == "off") { retina_iman = true; retina_icons = 1; } if (get_env ("TEXMACS_RETINA_ICONS") == "on") { retina_iman = true; retina_icons = 2; } // End options via environment variables if (DEBUG_STD) debug_boot << "Installing internal plug-ins...\n"; bench_start ("initialize plugins"); init_plugins (); bench_cumul ("initialize plugins"); if (DEBUG_STD) debug_boot << "Opening display...\n"; #if defined(X11TEXMACS) && defined(MACOSX_EXTENSIONS) init_mac_application (); #endif gui_open (argc, argv); set_default_font (the_default_font); if (DEBUG_STD) debug_boot << "Starting server...\n"; { // opening scope for server sv server sv; // HACK: // Qt and Guile want to change the locale. // We need to force it to C to parse correctly the configuration files // (see as_double() in string.cpp) setlocale(LC_NUMERIC, "C"); string where= ""; for (i=1; i<argc; i++) { if (argv[i] == NULL) break; string s= argv[i]; if ((N(s)>=2) && (s(0,2)=="--")) s= s (1, N(s)); if ((s[0] != '-') && (s[0] != '+')) { if (DEBUG_STD) debug_boot << "Loading " << s << "...\n"; url u= url_system (s); if (!is_rooted (u)) u= resolve (url_pwd (), "") * u; string b= scm_quote (as_string (u)); string cmd= "(load-buffer " * b * " " * where * ")"; where= " :new-window"; exec_delayed (scheme_cmd (cmd)); } if ((s == "-c") || (s == "-convert")) i+=2; else if ((s == "-b") || (s == "-initialize-buffer") || (s == "-fn") || (s == "-font") || (s == "-i") || (s == "-initialize") || (s == "-g") || (s == "-geometry") || (s == "-x") || (s == "-execute") || (s == "-log-file")) i++; } if (install_status == 1) { if (DEBUG_STD) debug_boot << "Loading welcome message...\n"; url u= "tmfs://help/plain/tm/doc/about/welcome/first.en.tm"; string b= scm_quote (as_string (u)); string cmd= "(load-buffer " * b * " " * where * ")"; where= " :new-window"; exec_delayed (scheme_cmd (cmd)); } else if (install_status == 2) { if (DEBUG_STD) debug_boot << "Loading upgrade message...\n"; url u= "tmfs://help/plain/tm/doc/about/changes/changes-recent.en.tm"; string b= scm_quote (as_string (u)); string cmd= "(load-buffer " * b * " " * where * ")"; where= " :new-window"; exec_delayed (scheme_cmd (cmd)); } if (number_buffers () == 0) { if (DEBUG_STD) debug_boot << "Creating 'no name' buffer...\n"; open_window (); } bench_print (); bench_reset ("initialize texmacs"); bench_reset ("initialize plugins"); bench_reset ("initialize scheme"); if (DEBUG_STD) debug_boot << "Starting event loop...\n"; texmacs_started= true; if (!disable_error_recovery) signal (SIGSEGV, clean_exit_on_segfault); if (start_server_flag) server_start (); gui_start_loop (); if (DEBUG_STD) debug_boot << "Stopping server...\n"; } // ending scope for server sv if (DEBUG_STD) debug_boot << "Closing display...\n"; gui_close (); #if defined(X11TEXMACS) && defined(MACOSX_EXTENSIONS) finalize_mac_application (); #endif if (DEBUG_STD) debug_boot << "Good bye...\n"; }