Andrew's git
/
gitweb.git
/ diff
summary
|
log
|
commit
| diff |
tree
commit
grep
author
committer
pickaxe
?
re
daemon: new option --detach to run git-daemon in background
author
Matthias Lederhofer
<matled@gmx.net>
Thu, 13 Jul 2006 16:47:13 +0000
(18:47 +0200)
committer
Junio C Hamano
<junkio@cox.net>
Fri, 14 Jul 2006 04:50:46 +0000
(21:50 -0700)
Signed-off-by: Matthias Lederhofer <matled@gmx.net>
Signed-off-by: Junio C Hamano <junkio@cox.net>
daemon.c
patch
|
blob
|
history
raw
|
patch
|
inline
| side by side (parent:
45ed5d7
)
diff --git
a/daemon.c
b/daemon.c
index cdc42668633ec5a7b93544cca3fc92298d8556f4..e4ec676301c965e0b0ec81995f4e1fb77363c373 100644
(file)
--- a/
daemon.c
+++ b/
daemon.c
@@
-674,6
+674,24
@@
static void sanitize_stdfds(void)
close(fd);
}
close(fd);
}
+static void daemonize(void)
+{
+ switch (fork()) {
+ case 0:
+ break;
+ case -1:
+ die("fork failed: %s", strerror(errno));
+ default:
+ exit(0);
+ }
+ if (setsid() == -1)
+ die("setsid failed: %s", strerror(errno));
+ close(0);
+ close(1);
+ close(2);
+ sanitize_stdfds();
+}
+
static void store_pid(const char *path)
{
FILE *f = fopen(path, "w");
static void store_pid(const char *path)
{
FILE *f = fopen(path, "w");
@@
-699,6
+717,7
@@
int main(int argc, char **argv)
int port = DEFAULT_GIT_PORT;
int inetd_mode = 0;
const char *pid_file = NULL;
int port = DEFAULT_GIT_PORT;
int inetd_mode = 0;
const char *pid_file = NULL;
+ int detach = 0;
int i;
/* Without this we cannot rely on waitpid() to tell
int i;
/* Without this we cannot rely on waitpid() to tell
@@
-767,6
+786,11
@@
int main(int argc, char **argv)
pid_file = arg + 11;
continue;
}
pid_file = arg + 11;
continue;
}
+ if (!strcmp(arg, "--detach")) {
+ detach = 1;
+ log_syslog = 1;
+ continue;
+ }
if (!strcmp(arg, "--")) {
ok_paths = &argv[i+1];
break;
if (!strcmp(arg, "--")) {
ok_paths = &argv[i+1];
break;
@@
-799,7
+823,10
@@
int main(int argc, char **argv)
return execute(peer);
}
return execute(peer);
}
- sanitize_stdfds();
+ if (detach)
+ daemonize();
+ else
+ sanitize_stdfds();
if (pid_file)
store_pid(pid_file);
if (pid_file)
store_pid(pid_file);