-const char jcc_rcs[] = "$Id: jcc.c,v 1.92.2.10 2003/05/08 15:13:46 oes Exp $";
+const char jcc_rcs[] = "$Id: jcc.c,v 1.92.2.13 2003/11/27 19:20:27 oes Exp $";
/*********************************************************************
*
* File : $Source: /cvsroot/ijbswa/current/Attic/jcc.c,v $
*
* Revisions :
* $Log: jcc.c,v $
+ * Revision 1.92.2.13 2003/11/27 19:20:27 oes
+ * Diagnostics: Now preserve the returncode of pthread_create
+ * in errno. Closes BR #775721. Thanks to Geoffrey Hausheer.
+ *
+ * Revision 1.92.2.12 2003/07/11 11:34:19 oes
+ * No longer ignore SIGCHLD. Fixes bug #769381
+ *
+ * Revision 1.92.2.11 2003/05/14 12:32:02 oes
+ * Close jarfile on graceful exit, remove stray line
+ *
* Revision 1.92.2.10 2003/05/08 15:13:46 oes
* Cosmetics: Killed a warning, a typo and an allocation left at exit
*
void usage(const char *myname)
{
printf("Privoxy version " VERSION " (" HOME_PAGE_URL ")\n"
+#if !defined(unix)
+ "Usage: %s [--help] [--version] [configfile]\n"
+#else
"Usage: %s [--help] [--version] [--no-daemon] [--pidfile pidfile] [--user user[.group]] [configfile]\n"
+#endif
"Aborting.\n", myname);
exit(2);
*/
while (++argc_pos < argc)
{
-#if !defined(_WIN32) || defined(_WIN_CONSOLE)
-
if (strcmp(argv[argc_pos], "--help") == 0)
{
usage(argv[0]);
exit(0);
}
- else if (strcmp(argv[argc_pos], "--no-daemon" ) == 0)
+#if defined(unix)
+
+ else if (strcmp(argv[argc_pos], "--no-daemon" ) == 0)
{
no_daemon = 1;
}
-#if defined(unix)
+
else if (strcmp(argv[argc_pos], "--pidfile" ) == 0)
{
if (++argc_pos == argc) usage(argv[0]);
{
do_chroot = 1;
}
+
#endif /* defined(unix) */
+
else
-#endif /* defined(_WIN32) && !defined(_WIN_CONSOLE) */
{
configfile = argv[argc_pos];
}
*
* Catch the abort, interrupt and terminate signals for a graceful exit
* Catch the hangup signal so the errlog can be reopened.
- * Ignore the broken pipe and child signals
- * FIXME: Isn't ignoring the default for SIGCHLD anyway and why ignore SIGPIPE?
+ * Ignore the broken pipe signals (FIXME: Why?)
*/
#if !defined(_WIN32) && !defined(__OS2__) && !defined(AMIGA)
{
int idx;
const int catched_signals[] = { SIGABRT, SIGTERM, SIGINT, SIGHUP, 0 };
- const int ignored_signals[] = { SIGPIPE, SIGCHLD, 0 };
+ const int ignored_signals[] = { SIGPIPE, 0 };
for (idx = 0; catched_signals[idx] != 0; idx++)
{
pthread_attr_init(&attrs);
pthread_attr_setdetachstate(&attrs, PTHREAD_CREATE_DETACHED);
- child_id = (pthread_create(&the_thread, &attrs,
- (void*)serve, csp) ? -1 : 0);
+ errno = pthread_create(&the_thread, &attrs,
+ (void*)serve, csp);
+ child_id = errno ? -1 : 0;
pthread_attr_destroy(&attrs);
}
#endif