scummvm random work
[patches.git] / lirc-cvs-control-daemonize.patch
1 Index: configure.ac
2 ===================================================================
3 RCS file: /cvsroot/lirc/lirc/configure.ac,v
4 retrieving revision 1.2
5 diff -u -p -r1.2 configure.ac
6 --- configure.ac 22 Jul 2007 07:30:25 -0000 1.2
7 +++ configure.ac 24 Oct 2007 01:29:16 -0000
8 @@ -42,15 +42,6 @@ AC_FUNC_VPRINTF
9 AC_CHECK_FUNCS(gethostname gettimeofday mkfifo select socket strdup \
10 strerror strtoul snprintf strsep vsyslog)
11
12 -daemon=""
13 -AC_CHECK_FUNCS(daemon)
14 -if test "$ac_cv_func_daemon" != yes; then
15 - AC_CHECK_LIB(bsd,daemon,daemon="-lbsd")
16 - if test "$daemon" = ""; then
17 - AC_MSG_ERROR([*** daemon() function not available on this system])
18 - fi
19 -fi
20 -
21 forkpty=""
22 AC_CHECK_FUNCS(forkpty)
23 if test "$ac_cv_func_forkpty" != yes; then
24 @@ -1468,7 +1459,17 @@ test x${enableval} = xyes && AC_DEFINE(D
25 AC_ARG_ENABLE(daemonize,
26 [ --disable-daemonize disable daemons from daemonizing],
27 test x${enableval} = xyes && AC_DEFINE(DAEMONIZE),
28 -AC_DEFINE(DAEMONIZE))
29 +[
30 +AC_CHECK_FUNCS(daemon)
31 +if test "$ac_cv_func_daemon" != yes; then
32 + daemon=""
33 + AC_CHECK_LIB(bsd,daemon,daemon="-lbsd")
34 + if test "$daemon" = ""; then
35 + AC_MSG_ERROR([*** daemon() function not available on this system and --disable-daemonize not specified])
36 + fi
37 +fi
38 +AC_DEFINE(DAEMONIZE)
39 +])
40
41 AC_ARG_WITH(syslog,
42 [ --with-syslog=facility use syslog instead of logfile],
43 Index: tools/irexec.c
44 ===================================================================
45 RCS file: /cvsroot/lirc/lirc/tools/irexec.c,v
46 retrieving revision 5.6
47 diff -u -p -r5.6 irexec.c
48 --- tools/irexec.c 7 Jun 2003 22:12:52 -0000 5.6
49 +++ tools/irexec.c 24 Oct 2007 01:29:16 -0000
50 @@ -25,11 +25,26 @@
51 #include "lirc_client.h"
52
53 char *progname;
54 +struct lirc_config *config;
55 +
56 +void daemonize(void)
57 +{
58 +#ifdef DAEMONIZE
59 + if(daemon(0,0)==-1)
60 +#endif
61 + {
62 + fprintf(stderr,"%s: can't daemonize\n",
63 + progname);
64 + perror(progname);
65 + lirc_freeconfig(config);
66 + lirc_deinit();
67 + exit(EXIT_FAILURE);
68 + }
69 +}
70
71 int main(int argc, char *argv[])
72 {
73 - struct lirc_config *config;
74 - int daemonize=0;
75 + int do_daemon=0;
76 char* program="irexec";
77
78 progname="irexec " VERSION;
79 @@ -60,7 +75,7 @@ int main(int argc, char *argv[])
80 printf("%s\n",progname);
81 return(EXIT_SUCCESS);
82 case 'd':
83 - daemonize=1;
84 + do_daemon=1;
85 break;
86 case 'n':
87 program=optarg;
88 @@ -76,7 +91,7 @@ int main(int argc, char *argv[])
89 return(EXIT_FAILURE);
90 }
91
92 - if(lirc_init(program, daemonize ? 0:1)==-1) exit(EXIT_FAILURE);
93 + if(lirc_init(program, do_daemon ? 0:1)==-1) exit(EXIT_FAILURE);
94
95 if(lirc_readconfig(optind!=argc ? argv[optind]:NULL,&config,NULL)==0)
96 {
97 @@ -84,18 +99,7 @@ int main(int argc, char *argv[])
98 char *c;
99 int ret;
100
101 - if(daemonize)
102 - {
103 - if(daemon(0,0)==-1)
104 - {
105 - fprintf(stderr,"%s: can't daemonize\n",
106 - progname);
107 - perror(progname);
108 - lirc_freeconfig(config);
109 - lirc_deinit();
110 - exit(EXIT_FAILURE);
111 - }
112 - }
113 + if(do_daemon) daemonize();
114 while(lirc_nextcode(&code)==0)
115 {
116 if(code==NULL) continue;
117 @@ -103,7 +107,7 @@ int main(int argc, char *argv[])
118 c!=NULL)
119 {
120 #ifdef DEBUG
121 - if(!daemonize)
122 + if(!do_daemon)
123 {
124 printf("Execing command \"%s\"\n",c);
125 }
126 Index: tools/lircrcd.c
127 ===================================================================
128 RCS file: /cvsroot/lirc/lirc/tools/lircrcd.c,v
129 retrieving revision 5.3
130 diff -u -p -r5.3 lircrcd.c
131 --- tools/lircrcd.c 6 May 2006 09:40:07 -0000 5.3
132 +++ tools/lircrcd.c 24 Oct 2007 01:29:17 -0000
133 @@ -128,8 +128,6 @@ static int termsig;
134 static int clin=0;
135 static struct client_data clis[MAX_CLIENTS];
136
137 -static int daemonized=0;
138 -
139 static struct lirc_config *config;
140
141 static int send_error(int fd,char *message,char *format_str, ...);
142 @@ -313,7 +311,7 @@ static void remove_client(int i)
143 void add_client(int sock)
144 {
145 int fd;
146 - int clilen;
147 + socklen_t clilen;
148 struct sockaddr client_addr;
149 int flags;
150
151 @@ -989,6 +987,7 @@ int main(int argc, char **argv)
152
153 /* fork */
154 getcwd(dir, sizeof(dir));
155 +#ifdef DAEMONIZE
156 if(daemon(0,0)==-1)
157 {
158 fprintf(stderr, "%s: daemon() failed\n", progname);
159 @@ -998,7 +997,7 @@ int main(int argc, char **argv)
160 lirc_freeconfig(config);
161 return -1;
162 }
163 - daemonized=1;
164 +#endif
165
166 openlog(progname, LOG_CONS|LOG_PID, LOG_USER);
167 umask(0);