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.48 by root, Fri May 8 23:52:55 2009 UTC vs.
Revision 1.61 by root, Thu May 22 18:54:33 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
100 fcntl (fd, F_SETFL, O_NONBLOCK); 100 fcntl (fd, F_SETFL, O_NONBLOCK);
101 101
102 sa.sun_family = AF_UNIX; 102 sa.sun_family = AF_UNIX;
103 strcpy (sa.sun_path, sockname); 103 strcpy (sa.sun_path, sockname);
104 104
105 unlink (rxvt_connection::unix_sockname ()); 105 unlink (sockname);
106 106
107 mode_t omask = umask (0077); 107 mode_t omask = umask (0077);
108 108
109 if (bind (fd, (sockaddr *)&sa, sizeof (sa))) 109 if (bind (fd, (sockaddr *)&sa, sizeof (sa)))
110 { 110 {
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;
222 } 220 }
223 else 221 else
224 return err (); 222 return err ();
225} 223}
226 224
225int
226main (int argc, char *argv[])
227{
228 ptytty::init ();
229
227int opt_fork, opt_opendisplay, opt_quiet; 230 static char opt_fork, opt_opendisplay, opt_quiet;
231#if ENABLE_PERL
232 static char *opt_eval;
233#endif
228#if ENABLE_MLOCK 234#if ENABLE_MLOCK
229int opt_lock; 235 static char opt_lock;
230#endif 236#endif
231
232int
233main (int argc, const char *const *argv)
234{
235 rxvt_init ();
236 237
237 for (int i = 1; i < argc; i++) 238 for (int i = 1; i < argc; i++)
238 { 239 {
239 if (!strcmp (argv [i], "-f") || !strcmp (argv [i], "--fork")) 240 if (!strcmp (argv [i], "-f") || !strcmp (argv [i], "--fork"))
240 opt_fork = 1; 241 opt_fork = 1;
244 opt_quiet = 1; 245 opt_quiet = 1;
245#if ENABLE_MLOCK 246#if ENABLE_MLOCK
246 else if (!strcmp (argv [i], "-m") || !strcmp (argv [i], "--mlock")) 247 else if (!strcmp (argv [i], "-m") || !strcmp (argv [i], "--mlock"))
247 opt_lock = 1; 248 opt_lock = 1;
248#endif 249#endif
250#if ENABLE_PERL
251 else if (!strcmp (argv [i], "-e") || !strcmp (argv [i], "--eval"))
252 opt_eval = argv [++i];
253#endif
249 else 254 else
250 { 255 {
251 rxvt_log ("%s: unknown option '%s', aborting.\n", argv [0], argv [i]); 256 rxvt_log ("%s: unknown option '%s', aborting.\n", argv [0], argv [i]);
252 return EXIT_FAILURE; 257 return EXIT_FAILURE;
253 } 258 }
254 } 259 }
260
261 rxvt_init ();
262
263#if ENABLE_PERL
264 if (opt_eval)
265 {
266 rxvt_perl.init ();
267 rxvt_perl.eval (opt_eval);
268 }
269#endif
255 270
256 // optionally open display and never release it. 271 // optionally open display and never release it.
257 if (opt_opendisplay) 272 if (opt_opendisplay)
258 if (const char *dpy = getenv ("DISPLAY")) 273 if (const char *dpy = getenv ("DISPLAY"))
259 displays.get (dpy ? dpy : ":0"); // move string logic into rxvt_display maybe? 274 displays.get (dpy ? dpy : ":0"); // move string logic into rxvt_display maybe?
292 return EXIT_FAILURE; 307 return EXIT_FAILURE;
293 } 308 }
294 else if (pid > 0) 309 else if (pid > 0)
295 _exit (EXIT_SUCCESS); 310 _exit (EXIT_SUCCESS);
296 311
297 ev_default_fork (); 312 ev_loop_fork (EV_DEFAULT_UC);
298 } 313 }
299 314
300 ev_loop (0); 315 ev_run ();
301 316
302 return EXIT_SUCCESS; 317 return EXIT_SUCCESS;
303} 318}
304 319

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines