ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/rxvt-unicode/src/rxvtd.C
(Generate patch)

Comparing rxvt-unicode/src/rxvtd.C (file contents):
Revision 1.55 by sf-exg, Sun Dec 12 19:30:10 2010 UTC vs.
Revision 1.62 by sf-exg, Mon Oct 6 11:14:49 2014 UTC

1/*----------------------------------------------------------------------* 1/*----------------------------------------------------------------------*
2 * File: rxvtd.C 2 * File: rxvtd.C
3 *----------------------------------------------------------------------* 3 *----------------------------------------------------------------------*
4 * 4 *
5 * All portions of code are copyright by their respective author/s. 5 * All portions of code are copyright by their respective author/s.
6 * Copyright (c) 2003-2007 Marc Lehmann <pcg@goof.com> 6 * Copyright (c) 2003-2007 Marc Lehmann <schmorp@schmorp.de>
7 * 7 *
8 * This program is free software; you can redistribute it and/or modify 8 * This program is free software; you can redistribute it and/or modify
9 * it under the terms of the GNU General Public License as published by 9 * it under the terms of the GNU General Public License as published by
10 * the Free Software Foundation; either version 2 of the License, or 10 * the Free Software Foundation; either version 3 of the License, or
11 * (at your option) any later version. 11 * (at your option) any later version.
12 * 12 *
13 * This program is distributed in the hope that it will be useful, 13 * This program is distributed in the hope that it will be useful,
14 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * but WITHOUT ANY WARRANTY; without even the implied warranty of
15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
19 * along with this program; if not, write to the Free Software 19 * along with this program; if not, write to the Free Software
20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. 20 * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
21 *----------------------------------------------------------------------*/ 21 *----------------------------------------------------------------------*/
22 22
23#include "../config.h" 23#include "../config.h"
24#include <cstdio> 24#include <stdio.h>
25#include <cstdlib> 25#include <stdlib.h>
26#include <cstdarg> 26#include <stdarg.h>
27#include <cstring> 27#include <string.h>
28 28
29#include <unistd.h> 29#include <unistd.h>
30#include <fcntl.h> 30#include <fcntl.h>
31#include <sys/types.h> 31#include <sys/types.h>
32#include <sys/stat.h> 32#include <sys/stat.h>
39 39
40#if ENABLE_MLOCK 40#if ENABLE_MLOCK
41# include <sys/mman.h> 41# include <sys/mman.h>
42#endif 42#endif
43 43
44#include <cerrno> 44#include <errno.h>
45 45
46#include "rxvt.h" 46#include "rxvt.h"
47#include "rxvtdaemon.h" 47#include "rxvtdaemon.h"
48#include "libptytty.h" 48#include "libptytty.h"
49 49
186 argv->push_back (strdup (tok)); 186 argv->push_back (strdup (tok));
187 else 187 else
188 return err ("protocol error: unexpected NEW token.\n"); 188 return err ("protocol error: unexpected NEW token.\n");
189 } 189 }
190 190
191 envv->push_back (0);
192
193 { 191 {
194 rxvt_term *term = new rxvt_term; 192 rxvt_term *term = new rxvt_term;
195 193
196 term->log_hook = &log_cb; 194 term->log_hook = &log_cb;
197 term->getfd_hook = &getfd_cb; 195 term->getfd_hook = &getfd_cb;
215 term->destroy (); 213 term->destroy ();
216 214
217 send ("END"); send (success ? 1 : 0); 215 send ("END"); send (success ? 1 : 0);
218 } 216 }
219 } 217 }
218 else if (!strcmp (tok, "QUIT"))
219 _exit (0);
220 else 220 else
221 return err ("protocol error: request '%s' unsupported.\n", (char *)tok); 221 return err ("protocol error: request '%s' unsupported.\n", (char *)tok);
222 } 222 }
223 else 223 else
224 return err (); 224 return err ();
225} 225}
226 226
227int 227int
228main (int argc, const char *const *argv) 228main (int argc, char *argv[])
229{ 229{
230 ptytty::init (); 230 ptytty::init ();
231 231
232 static char opt_fork, opt_opendisplay, opt_quiet; 232 static char opt_fork, opt_opendisplay, opt_quiet;
233#if ENABLE_PERL
234 static char *opt_eval;
235#endif
233#if ENABLE_MLOCK 236#if ENABLE_MLOCK
234 static char opt_lock; 237 static char opt_lock;
235#endif 238#endif
236 239
237 for (int i = 1; i < argc; i++) 240 for (int i = 1; i < argc; i++)
244 opt_quiet = 1; 247 opt_quiet = 1;
245#if ENABLE_MLOCK 248#if ENABLE_MLOCK
246 else if (!strcmp (argv [i], "-m") || !strcmp (argv [i], "--mlock")) 249 else if (!strcmp (argv [i], "-m") || !strcmp (argv [i], "--mlock"))
247 opt_lock = 1; 250 opt_lock = 1;
248#endif 251#endif
252#if ENABLE_PERL
253 else if (!strcmp (argv [i], "-e") || !strcmp (argv [i], "--eval"))
254 opt_eval = argv [++i];
255#endif
249 else 256 else
250 { 257 {
251 rxvt_log ("%s: unknown option '%s', aborting.\n", argv [0], argv [i]); 258 rxvt_log ("%s: unknown option '%s', aborting.\n", argv [0], argv [i]);
252 return EXIT_FAILURE; 259 return EXIT_FAILURE;
253 } 260 }
254 } 261 }
255 262
256 rxvt_init (); 263 rxvt_init ();
264
265#if ENABLE_PERL
266 if (opt_eval)
267 {
268 rxvt_perl.init ();
269 rxvt_perl.eval (opt_eval);
270 }
271#endif
257 272
258 // optionally open display and never release it. 273 // optionally open display and never release it.
259 if (opt_opendisplay) 274 if (opt_opendisplay)
260 if (const char *dpy = getenv ("DISPLAY")) 275 if (const char *dpy = getenv ("DISPLAY"))
261 displays.get (dpy ? dpy : ":0"); // move string logic into rxvt_display maybe? 276 displays.get (dpy ? dpy : ":0"); // move string logic into rxvt_display maybe?

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines