int main (int argc, const char *const *argv) try { rxvt_init (); rxvt_term *t = new rxvt_term; #if ENABLE_PERL stringvec *args = new stringvec; stringvec *envv = new stringvec; for (int i = 0; i < argc; i++) args->push_back (strdup (argv [i])); for (char **var = environ; *var; var++) envv->push_back (strdup (*var)); envv->push_back (0); t->init (args, envv); #else t->init (argc, argv, 0); #endif ev_loop (0); return EXIT_SUCCESS; } catch (const class rxvt_failure_exception &e) { return EXIT_FAILURE; }
int main (int argc, char *argv[]) { ptytty::init (); static char opt_fork, opt_opendisplay, opt_quiet; #if ENABLE_PERL static char *opt_eval; #endif #if ENABLE_MLOCK static char opt_lock; #endif for (int i = 1; i < argc; i++) { if (!strcmp (argv [i], "-f") || !strcmp (argv [i], "--fork")) opt_fork = 1; else if (!strcmp (argv [i], "-o") || !strcmp (argv [i], "--opendisplay")) opt_opendisplay = 1; else if (!strcmp (argv [i], "-q") || !strcmp (argv [i], "--quiet")) opt_quiet = 1; #if ENABLE_MLOCK else if (!strcmp (argv [i], "-m") || !strcmp (argv [i], "--mlock")) opt_lock = 1; #endif #if ENABLE_PERL else if (!strcmp (argv [i], "-e") || !strcmp (argv [i], "--eval")) opt_eval = argv [++i]; #endif else { rxvt_log ("%s: unknown option '%s', aborting.\n", argv [0], argv [i]); return EXIT_FAILURE; } } rxvt_init (); #if ENABLE_PERL if (opt_eval) { rxvt_perl.init (); rxvt_perl.eval (opt_eval); } #endif // optionally open display and never release it. if (opt_opendisplay) if (const char *dpy = getenv ("DISPLAY")) displays.get (dpy ? dpy : ":0"); // move string logic into rxvt_display maybe? char *sockname = rxvt_connection::unix_sockname (); unix_listener l (sockname); chdir ("/"); if (!opt_quiet) { printf ("rxvt-unicode daemon listening on %s.\n", sockname); fflush (stdout); } free (sockname); pid_t pid = 0; if (opt_fork) { pid = fork (); } #if ENABLE_MLOCK // Optionally perform an mlockall so this process does not get swapped out. if (opt_lock && !pid) if (mlockall (MCL_CURRENT | MCL_FUTURE) < 0) perror ("unable to lock into ram"); #endif if (opt_fork) { if (pid < 0) { rxvt_log ("unable to fork daemon, aborting.\n"); return EXIT_FAILURE; } else if (pid > 0) _exit (EXIT_SUCCESS); ev_loop_fork (EV_DEFAULT_UC); } ev_run (); return EXIT_SUCCESS; }