--- rxvt-unicode/src/rxvtd.C 2010/07/25 00:47:58 1.49 +++ rxvt-unicode/src/rxvtd.C 2012/06/12 10:45:53 1.60 @@ -3,7 +3,7 @@ *----------------------------------------------------------------------* * * All portions of code are copyright by their respective author/s. - * Copyright (c) 2003-2007 Marc Lehmann + * Copyright (c) 2003-2007 Marc Lehmann * * This program is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by @@ -21,10 +21,10 @@ *----------------------------------------------------------------------*/ #include "../config.h" -#include -#include -#include -#include +#include +#include +#include +#include #include #include @@ -41,7 +41,7 @@ # include #endif -#include +#include #include "rxvt.h" #include "rxvtdaemon.h" @@ -102,7 +102,7 @@ sa.sun_family = AF_UNIX; strcpy (sa.sun_path, sockname); - unlink (rxvt_connection::unix_sockname ()); + unlink (sockname); mode_t omask = umask (0077); @@ -188,8 +188,6 @@ return err ("protocol error: unexpected NEW token.\n"); } - envv->push_back (0); - { rxvt_term *term = new rxvt_term; @@ -225,15 +223,18 @@ } int -main (int argc, const char *const *argv) +main (int argc, char *argv[]) { - int opt_fork, opt_opendisplay, opt_quiet; + ptytty::init (); + + static char opt_fork, opt_opendisplay, opt_quiet; +#if ENABLE_PERL + static char *opt_eval; +#endif #if ENABLE_MLOCK - int opt_lock; + static char opt_lock; #endif - rxvt_init (); - for (int i = 1; i < argc; i++) { if (!strcmp (argv [i], "-f") || !strcmp (argv [i], "--fork")) @@ -246,6 +247,10 @@ 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]); @@ -253,6 +258,16 @@ } } + 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")) @@ -294,10 +309,10 @@ else if (pid > 0) _exit (EXIT_SUCCESS); - ev_default_fork (); + ev_loop_fork (EV_DEFAULT_UC); } - ev_loop (0); + ev_run (); return EXIT_SUCCESS; }