svn commit: trunk/busybox/runit

vda at busybox.net vda at busybox.net
Sat Jan 27 22:21:53 UTC 2007


Author: vda
Date: 2007-01-27 14:21:52 -0800 (Sat, 27 Jan 2007)
New Revision: 17558

Log:
runit cleanup part 1


Modified:
   trunk/busybox/runit/runit_lib.c
   trunk/busybox/runit/runit_lib.h
   trunk/busybox/runit/runsv.c
   trunk/busybox/runit/runsvdir.c
   trunk/busybox/runit/sv.c
   trunk/busybox/runit/svlogd.c


Changeset:
Modified: trunk/busybox/runit/runit_lib.c
===================================================================
--- trunk/busybox/runit/runit_lib.c	2007-01-27 22:21:12 UTC (rev 17557)
+++ trunk/busybox/runit/runit_lib.c	2007-01-27 22:21:52 UTC (rev 17558)
@@ -54,7 +54,8 @@
 
 	for (;;) {
 		r = op(fd,buf,len);
-		if (r == -1) if (errno == EINTR) continue;
+		if (r == -1 && errno == EINTR)
+			continue;
 		return r;
 	}
 }
@@ -72,12 +73,15 @@
 {
 	int r;
 
-	if (s->p) return s->p;
+	if (s->p)
+		return s->p;
 	r = oneread(s->op,s->fd,s->x,s->n);
-	if (r <= 0) return r;
+	if (r <= 0)
+		return r;
 	s->p = r;
 	s->n -= r;
-	if (s->n > 0) memmove(s->x + s->n,s->x,r);
+	if (s->n > 0)
+		memmove(s->x + s->n,s->x,r);
 	return r;
 }
 
@@ -85,9 +89,13 @@
 {
 	int r;
 
-	if (s->p > 0) return getthis(s,buf,len);
-	if (s->n <= len) return oneread(s->op,s->fd,buf,s->n);
-	r = buffer_feed(s); if (r <= 0) return r;
+	if (s->p > 0)
+		return getthis(s,buf,len);
+	if (s->n <= len)
+		return oneread(s->op,s->fd,buf,s->n);
+	r = buffer_feed(s);
+	if (r <= 0)
+		return r;
 	return getthis(s,buf,len);
 }
 
@@ -95,9 +103,13 @@
 {
 	int r;
 
-	if (s->p > 0) return getthis(s,buf,len);
-	if (s->n <= len) return oneread(s->op,s->fd,buf,len);
-	r = buffer_feed(s); if (r <= 0) return r;
+	if (s->p > 0)
+		return getthis(s,buf,len);
+	if (s->n <= len)
+		return oneread(s->op,s->fd,buf,len);
+	r = buffer_feed(s);
+	if (r <= 0)
+		return r;
 	return getthis(s,buf,len);
 }
 
@@ -122,10 +134,11 @@
 	while (len) {
 		w = op(fd,(char*)buf,len);
 		if (w == -1) {
-			if (errno == EINTR) continue;
+			if (errno == EINTR)
+				continue;
 			return -1; /* note that some data may have been written */
 		}
-		if (w == 0) ; /* luser's fault */
+		/* if (w == 0) ;  luser's fault */
 		buf += w;
 		len -= w;
 	}
@@ -183,7 +196,8 @@
 
 int buffer_putflush(buffer *s,const char *buf,unsigned len)
 {
-	if (buffer_flush(s) == -1) return -1;
+	if (buffer_flush(s) == -1)
+		return -1;
 	return allwrite(s->op,s->fd,buf,len);
 }
 
@@ -229,10 +243,10 @@
 	ch = c;
 	t = s;
 	for (;;) {
-		if (!n) break; if (*t == ch) break; ++t; --n;
-		if (!n) break; if (*t == ch) break; ++t; --n;
-		if (!n) break; if (*t == ch) break; ++t; --n;
-		if (!n) break; if (*t == ch) break; ++t; --n;
+		if (!n) break;
+		if (*t == ch) break;
+		++t;
+		--n;
 	}
 	return t - s;
 }
@@ -250,10 +264,13 @@
 
 int fd_copy(int to,int from)
 {
-	if (to == from) return 0;
-	if (fcntl(from,F_GETFL,0) == -1) return -1;
+	if (to == from)
+		return 0;
+	if (fcntl(from,F_GETFL,0) == -1)
+		return -1;
 	close(to);
-	if (fcntl(from,F_DUPFD,to) == -1) return -1;
+	if (fcntl(from,F_DUPFD,to) == -1)
+		return -1;
 	return 0;
 }
 
@@ -262,8 +279,10 @@
 
 int fd_move(int to,int from)
 {
-	if (to == from) return 0;
-	if (fd_copy(to,from) == -1) return -1;
+	if (to == from)
+		return 0;
+	if (fd_copy(to,from) == -1)
+		return -1;
 	close(from);
 	return 0;
 }
@@ -271,29 +290,47 @@
 
 /*** fifo.c ***/
 
-int fifo_make(const char *fn,int mode) { return mkfifo(fn,mode); }
+int fifo_make(const char *fn,int mode)
+{
+	return mkfifo(fn,mode);
+}
 
 
 /*** fmt_ptime.c ***/
 
-unsigned fmt_ptime(char *s, struct taia *ta) {
+void fmt_ptime30nul(char *s, struct taia *ta) {
 	struct tm *t;
 	unsigned long u;
 
-	if (ta->sec.x < 4611686018427387914ULL) return 0; /* impossible? */
+	if (ta->sec.x < 4611686018427387914ULL)
+		return; /* impossible? */
 	u = ta->sec.x -4611686018427387914ULL;
-	if (!(t = gmtime((time_t*)&u))) return 0;
-	fmt_ulong(s, 1900 + t->tm_year);
-	s[4] = '-'; fmt_uint0(&s[5], t->tm_mon+1, 2);
-	s[7] = '-'; fmt_uint0(&s[8], t->tm_mday, 2);
-	s[10] = '_'; fmt_uint0(&s[11], t->tm_hour, 2);
-	s[13] = ':'; fmt_uint0(&s[14], t->tm_min, 2);
-	s[16] = ':'; fmt_uint0(&s[17], t->tm_sec, 2);
-	s[19] = '.'; fmt_uint0(&s[20], ta->nano, 9);
-	return 25;
+	t = gmtime((time_t*)&u);
+	if (!t)
+		return; /* huh? */
+	//fmt_ulong(s, 1900 + t->tm_year);
+	//s[4] = '-'; fmt_uint0(&s[5], t->tm_mon+1, 2);
+	//s[7] = '-'; fmt_uint0(&s[8], t->tm_mday, 2);
+	//s[10] = '_'; fmt_uint0(&s[11], t->tm_hour, 2);
+	//s[13] = ':'; fmt_uint0(&s[14], t->tm_min, 2);
+	//s[16] = ':'; fmt_uint0(&s[17], t->tm_sec, 2);
+	//s[19] = '.'; fmt_uint0(&s[20], ta->nano, 9);
+	sprintf(s, "%04u-%02u-%02u_%02u:%02u:%02u.%09u",
+		(unsigned)(1900 + t->tm_year),
+		(unsigned)(t->tm_mon+1),
+		(unsigned)(t->tm_mday),
+		(unsigned)(t->tm_hour),
+		(unsigned)(t->tm_min),
+		(unsigned)(t->tm_sec),
+		(unsigned)(ta->nano)
+	);
+	/* 4+1 + 2+1 + 2+1 + 2+1 + 2+1 + 2+1 + 9 = */
+	/* 5   + 3   + 3   + 3   + 3   + 3   + 9 = */
+	/* 20 (up to '.' inclusive) + 9 (not including '\0') */
+	return;
 }
 
-unsigned fmt_taia(char *s, struct taia *t) {
+unsigned fmt_taia25(char *s, struct taia *t) {
 	static char pack[TAIA_PACK];
 
 	taia_pack(pack, t);
@@ -303,6 +340,7 @@
 }
 
 
+#ifdef UNUSED
 /*** fmt_uint.c ***/
 
 unsigned fmt_uint(char *s,unsigned u)
@@ -316,13 +354,20 @@
 unsigned fmt_uint0(char *s,unsigned u,unsigned n)
 {
 	unsigned len;
-	len = fmt_uint(FMT_LEN,u);
-	while (len < n) { if (s) *s++ = '0'; ++len; }
-	if (s) fmt_uint(s,u);
+	len = fmt_uint(FMT_LEN, u);
+	while (len < n) {
+		if (s)
+			*s++ = '0';
+		++len;
+	}
+	if (s)
+		fmt_uint(s, u);
 	return len;
 }
+#endif
 
 
+#ifdef UNUSED
 /*** fmt_ulong.c ***/
 
 unsigned fmt_ulong(char *s,unsigned long u)
@@ -336,18 +381,22 @@
 	}
 	return len;
 }
+#endif
 
 
+#ifdef UNUSED
 /*** tai_now.c ***/
 
 void tai_now(struct tai *t)
 {
-	tai_unix(t,time((time_t *) 0));
+	tai_unix(t, time(NULL));
 }
+#endif
 
 
 /*** tai_pack.c ***/
 
+static /* as it isn't used anywhere else */
 void tai_pack(char *s,const struct tai *t)
 {
 	uint64_t x;
@@ -364,12 +413,14 @@
 }
 
 
+#ifdef UNUSED
 /*** tai_sub.c ***/
 
-void tai_sub(struct tai *t,const struct tai *u,const struct tai *v)
+void tai_sub(struct tai *t, const struct tai *u, const struct tai *v)
 {
 	t->x = u->x - v->x;
 }
+#endif
 
 
 /*** tai_unpack.c ***/
@@ -410,22 +461,30 @@
 }
 
 
-/*** taia_approx.c ***/
+#ifdef UNUSED
+/*** taia_frac.c ***/
 
-double taia_approx(const struct taia *t)
+double taia_frac(const struct taia *t)
 {
-	return tai_approx(&t->sec) + taia_frac(t);
+	return (t->atto * 0.000000001 + t->nano) * 0.000000001;
 }
 
 
-/*** taia_frac.c ***/
+/*** taia_approx.c ***/
 
-double taia_frac(const struct taia *t)
+double taia_approx(const struct taia *t)
 {
-	return (t->atto * 0.000000001 + t->nano) * 0.000000001;
+	return t->sec->x + taia_frac(t);
 }
+#endif
 
+static
+uint64_t taia2millisec(const struct taia *t)
+{
+	return (t->sec.x * 1000) + (t->nano / 1000000);
+}
 
+
 /*** taia_less.c ***/
 
 /* XXX: breaks tai encapsulation */
@@ -445,8 +504,8 @@
 void taia_now(struct taia *t)
 {
 	struct timeval now;
-	gettimeofday(&now,(struct timezone *) 0);
-	tai_unix(&t->sec,now.tv_sec);
+	gettimeofday(&now, NULL);
+	tai_unix(&t->sec, now.tv_sec);
 	t->nano = 1000 * now.tv_usec + 500;
 	t->atto = 0;
 }
@@ -454,11 +513,11 @@
 
 /*** taia_pack.c ***/
 
-void taia_pack(char *s,const struct taia *t)
+void taia_pack(char *s, const struct taia *t)
 {
 	unsigned long x;
 
-	tai_pack(s,&t->sec);
+	tai_pack(s, &t->sec);
 	s += 8;
 
 	x = t->atto;
@@ -575,25 +634,25 @@
 
 void iopause(iopause_fd *x,unsigned len,struct taia *deadline,struct taia *stamp)
 {
-	struct taia t;
 	int millisecs;
-	double d;
 	int i;
 
 	if (taia_less(deadline,stamp))
 		millisecs = 0;
 	else {
+		uint64_t m;
+		struct taia t;
 		t = *stamp;
-		taia_sub(&t,deadline,&t);
-		d = taia_approx(&t);
-		if (d > 1000.0) d = 1000.0;
-		millisecs = d * 1000.0 + 20.0;
+		taia_sub(&t, deadline, &t);
+		millisecs = m = taia2millisec(&t);
+		if (m > 1000) millisecs = 1000;
+		millisecs += 20;
 	}
 
-	for (i = 0;i < len;++i)
+	for (i = 0; i < len; ++i)
 		x[i].revents = 0;
 
-	poll(x,len,millisecs);
+	poll(x, len, millisecs);
 	/* XXX: some kernels apparently need x[0] even if len is 0 */
 	/* XXX: how to handle EAGAIN? are kernels really this dumb? */
 	/* XXX: how to handle EINVAL? when exactly can this happen? */
@@ -867,26 +926,28 @@
 }
 
 
+#ifdef UNUSED
 /*** seek_set.c ***/
 
 int seek_set(int fd,seek_pos pos)
 {
 	if (lseek(fd,(off_t) pos,SEEK_SET) == -1) return -1; return 0;
 }
+#endif
 
 
 /*** sig.c ***/
 
-int sig_alarm = SIGALRM;
-int sig_child = SIGCHLD;
-int sig_cont = SIGCONT;
-int sig_hangup = SIGHUP;
-int sig_int = SIGINT;
-int sig_pipe = SIGPIPE;
-int sig_term = SIGTERM;
+//int sig_alarm = SIGALRM;
+//int sig_child = SIGCHLD;
+//int sig_cont = SIGCONT;
+//int sig_hangup = SIGHUP;
+//int sig_int = SIGINT;
+//int sig_pipe = SIGPIPE;
+//int sig_term = SIGTERM;
 
-void (*sig_defaulthandler)(int) = SIG_DFL;
-void (*sig_ignorehandler)(int) = SIG_IGN;
+//void (*sig_defaulthandler)(int) = SIG_DFL;
+//void (*sig_ignorehandler)(int) = SIG_IGN;
 
 
 /*** sig_block.c ***/
@@ -947,10 +1008,9 @@
 	ch = c;
 	t = s;
 	for (;;) {
-		if (!*t) break; if (*t == ch) break; ++t;
-		if (!*t) break; if (*t == ch) break; ++t;
-		if (!*t) break; if (*t == ch) break; ++t;
-		if (!*t) break; if (*t == ch) break; ++t;
+		if (!*t) break;
+		if (*t == ch) break;
+		++t;
 	}
 	return t - s;
 }
@@ -960,7 +1020,7 @@
 
 int wait_nohang(int *wstat)
 {
-	return waitpid(-1,wstat,WNOHANG);
+	return waitpid(-1, wstat, WNOHANG);
 }
 
 
@@ -971,7 +1031,7 @@
 	int r;
 
 	do
-		r = waitpid(pid,wstat,0);
+		r = waitpid(pid, wstat, 0);
 	while ((r == -1) && (errno == EINTR));
 	return r;
 }

Modified: trunk/busybox/runit/runit_lib.h
===================================================================
--- trunk/busybox/runit/runit_lib.h	2007-01-27 22:21:12 UTC (rev 17557)
+++ trunk/busybox/runit/runit_lib.h	2007-01-27 22:21:52 UTC (rev 17558)
@@ -107,46 +107,46 @@
 
 /*** fmt.h ***/
 
-#define FMT_ULONG 40 /* enough space to hold 2^128 - 1 in decimal, plus \0 */
-#define FMT_LEN ((char *) 0) /* convenient abbreviation */
+//#define FMT_ULONG 40 /* enough space to hold 2^128 - 1 in decimal, plus \0 */
+//#define FMT_LEN ((char *) 0) /* convenient abbreviation */
 
-extern unsigned fmt_uint(char *,unsigned);
-extern unsigned fmt_uint0(char *,unsigned,unsigned);
-extern unsigned fmt_xint(char *,unsigned);
-extern unsigned fmt_nbbint(char *,unsigned,unsigned,unsigned,unsigned);
-extern unsigned fmt_ushort(char *,unsigned short);
-extern unsigned fmt_xshort(char *,unsigned short);
-extern unsigned fmt_nbbshort(char *,unsigned,unsigned,unsigned,unsigned short);
-extern unsigned fmt_ulong(char *,unsigned long);
-extern unsigned fmt_xlong(char *,unsigned long);
-extern unsigned fmt_nbblong(char *,unsigned,unsigned,unsigned,unsigned long);
+//extern unsigned fmt_uint(char *,unsigned);
+//extern unsigned fmt_uint0(char *,unsigned,unsigned);
+//extern unsigned fmt_xint(char *,unsigned);
+//extern unsigned fmt_nbbint(char *,unsigned,unsigned,unsigned,unsigned);
+//extern unsigned fmt_ushort(char *,unsigned short);
+//extern unsigned fmt_xshort(char *,unsigned short);
+//extern unsigned fmt_nbbshort(char *,unsigned,unsigned,unsigned,unsigned short);
+//extern unsigned fmt_ulong(char *,unsigned long);
+//extern unsigned fmt_xlong(char *,unsigned long);
+//extern unsigned fmt_nbblong(char *,unsigned,unsigned,unsigned,unsigned long);
 
-extern unsigned fmt_plusminus(char *,int);
-extern unsigned fmt_minus(char *,int);
-extern unsigned fmt_0x(char *,int);
+//extern unsigned fmt_plusminus(char *,int);
+//extern unsigned fmt_minus(char *,int);
+//extern unsigned fmt_0x(char *,int);
 
-extern unsigned fmt_str(char *,const char *);
-extern unsigned fmt_strn(char *,const char *,unsigned);
+//extern unsigned fmt_str(char *,const char *);
+//extern unsigned fmt_strn(char *,const char *,unsigned);
 
 
 /*** tai.h ***/
 
 struct tai {
 	uint64_t x;
-} ;
+};
 
 #define tai_unix(t,u) ((void) ((t)->x = 4611686018427387914ULL + (uint64_t) (u)))
 
-extern void tai_now(struct tai *);
+//extern void tai_now(struct tai *);
 
-#define tai_approx(t) ((double) ((t)->x))
+//#define tai_approx(t) ((double) ((t)->x))
 
-extern void tai_add(struct tai *,const struct tai *,const struct tai *);
-extern void tai_sub(struct tai *,const struct tai *,const struct tai *);
-#define tai_less(t,u) ((t)->x < (u)->x)
+//extern void tai_add(struct tai *,const struct tai *,const struct tai *);
+//extern void tai_sub(struct tai *,const struct tai *,const struct tai *);
+//#define tai_less(t,u) ((t)->x < (u)->x)
 
 #define TAI_PACK 8
-extern void tai_pack(char *,const struct tai *);
+//extern void tai_pack(char *,const struct tai *);
 extern void tai_unpack(const char *,struct tai *);
 
 extern void tai_uint(struct tai *,unsigned);
@@ -158,14 +158,14 @@
 	struct tai sec;
 	unsigned long nano; /* 0...999999999 */
 	unsigned long atto; /* 0...999999999 */
-} ;
+};
 
-extern void taia_tai(const struct taia *,struct tai *);
+//extern void taia_tai(const struct taia *,struct tai *);
 
 extern void taia_now(struct taia *);
 
-extern double taia_approx(const struct taia *);
-extern double taia_frac(const struct taia *);
+//extern double taia_approx(const struct taia *);
+//extern double taia_frac(const struct taia *);
 
 extern void taia_add(struct taia *,const struct taia *,const struct taia *);
 extern void taia_addsec(struct taia *,const struct taia *,int);
@@ -175,10 +175,10 @@
 
 #define TAIA_PACK 16
 extern void taia_pack(char *,const struct taia *);
-extern void taia_unpack(const char *,struct taia *);
+//extern void taia_unpack(const char *,struct taia *);
 
-#define TAIA_FMTFRAC 19
-extern unsigned taia_fmtfrac(char *,const struct taia *);
+//#define TAIA_FMTFRAC 19
+//extern unsigned taia_fmtfrac(char *,const struct taia *);
 
 extern void taia_uint(struct taia *,unsigned);
 
@@ -187,10 +187,13 @@
 
 #define FMT_PTIME 30
 
-extern unsigned fmt_ptime(char *, struct taia *);
-extern unsigned fmt_taia(char *, struct taia *);
+/* NUL terminated */
+extern void fmt_ptime30nul(char *, struct taia *);
+/* NOT terminated! */
+extern unsigned fmt_taia25(char *, struct taia *);
 
 
+#ifdef UNUSED
 /*** gen_alloc.h ***/
 
 #define GEN_ALLOC_typedef(ta,type,field,len,a) \
@@ -233,7 +236,6 @@
 
 
 /*** stralloc.h ***/
-#if 0
 GEN_ALLOC_typedef(stralloc,char,s,len,a)
 
 extern int stralloc_ready(stralloc *,unsigned);
@@ -314,6 +316,7 @@
 
 /*** scan.h ***/
 
+#if 0
 extern unsigned scan_uint(const char *,unsigned *);
 extern unsigned scan_xint(const char *,unsigned *);
 extern unsigned scan_nbbint(const char *,unsigned,unsigned,unsigned,unsigned *);
@@ -337,6 +340,7 @@
 
 extern unsigned scan_long(const char *,long *);
 extern unsigned scan_8long(const char *,unsigned long *);
+#endif
 
 
 /*** seek.h ***/
@@ -345,30 +349,27 @@
 
 extern seek_pos seek_cur(int);
 
-extern int seek_set(int,seek_pos);
+//extern int seek_set(int,seek_pos);
 extern int seek_end(int);
 
 extern int seek_trunc(int,seek_pos);
 
-#define seek_begin(fd) (seek_set((fd),(seek_pos) 0))
+//#define seek_begin(fd) (seek_set((fd),(seek_pos) 0))
 
 
 /*** sig.h ***/
 
-extern int sig_alarm;
-extern int sig_child;
-extern int sig_cont;
-extern int sig_hangup;
-extern int sig_int;
-extern int sig_pipe;
-extern int sig_term;
+//extern int sig_alarm;
+//extern int sig_child;
+//extern int sig_cont;
+//extern int sig_hangup;
+//extern int sig_int;
+//extern int sig_pipe;
+//extern int sig_term;
 
-extern void (*sig_defaulthandler)(int);
-extern void (*sig_ignorehandler)(int);
-
 extern void sig_catch(int,void (*)(int));
-#define sig_ignore(s) (sig_catch((s),sig_ignorehandler))
-#define sig_uncatch(s) (sig_catch((s),sig_defaulthandler))
+#define sig_ignore(s) (sig_catch((s),SIG_IGN))
+#define sig_uncatch(s) (sig_catch((s),SIG_DFL))
 
 extern void sig_block(int);
 extern void sig_unblock(int);

Modified: trunk/busybox/runit/runsv.c
===================================================================
--- trunk/busybox/runit/runsv.c	2007-01-27 22:21:12 UTC (rev 17557)
+++ trunk/busybox/runit/runsv.c	2007-01-27 22:21:52 UTC (rev 17558)
@@ -307,10 +307,10 @@
 				close(logpipe[0]);
 			}
 		}
-		sig_uncatch(sig_child);
-		sig_unblock(sig_child);
-		sig_uncatch(sig_term);
-		sig_unblock(sig_term);
+		sig_uncatch(SIGCHLD);
+		sig_unblock(SIGCHLD);
+		sig_uncatch(SIGTERM);
+		sig_unblock(SIGTERM);
 		execve(*run, run, environ);
 		if (s->islog)
 			fatal2_cannot("start log/", *run);
@@ -406,10 +406,10 @@
 	ndelay_on(selfpipe[0]);
 	ndelay_on(selfpipe[1]);
 
-	sig_block(sig_child);
-	sig_catch(sig_child, s_child);
-	sig_block(sig_term);
-	sig_catch(sig_term, s_term);
+	sig_block(SIGCHLD);
+	sig_catch(SIGCHLD, s_child);
+	sig_block(SIGTERM);
+	sig_catch(SIGTERM, s_term);
 
 	xchdir(dir);
 	svd[0].pid = 0;
@@ -533,11 +533,11 @@
 		taia_uint(&deadline, 3600);
 		taia_add(&deadline, &now, &deadline);
 
-		sig_unblock(sig_term);
-		sig_unblock(sig_child);
+		sig_unblock(SIGTERM);
+		sig_unblock(SIGCHLD);
 		iopause(x, 2+haslog, &deadline, &now);
-		sig_block(sig_term);
-		sig_block(sig_child);
+		sig_block(SIGTERM);
+		sig_block(SIGCHLD);
 
 		while (read(selfpipe[0], &ch, 1) == 1)
 			;

Modified: trunk/busybox/runit/runsvdir.c
===================================================================
--- trunk/busybox/runit/runsvdir.c	2007-01-27 22:21:12 UTC (rev 17557)
+++ trunk/busybox/runit/runsvdir.c	2007-01-27 22:21:52 UTC (rev 17558)
@@ -70,8 +70,8 @@
 		prog[0] = "runsv";
 		prog[1] = name;
 		prog[2] = 0;
-		sig_uncatch(sig_hangup);
-		sig_uncatch(sig_term);
+		sig_uncatch(SIGHUP);
+		sig_uncatch(SIGTERM);
 		if (pgrp) setsid();
 		execvp(prog[0], prog);
 		//pathexec_run(*prog, prog, (char* const*)environ);
@@ -197,8 +197,8 @@
 		if (!argv || !*argv) usage();
 	}
 
-	sig_catch(sig_term, s_term);
-	sig_catch(sig_hangup, s_hangup);
+	sig_catch(SIGTERM, s_term);
+	sig_catch(SIGHUP, s_hangup);
 	svdir = *argv++;
 	if (argv && *argv) {
 		rplog = *argv;
@@ -276,12 +276,12 @@
 		taia_uint(&deadline, check ? 1 : 5);
 		taia_add(&deadline, &now, &deadline);
 
-		sig_block(sig_child);
+		sig_block(SIGCHLD);
 		if (rplog)
 			iopause(io, 1, &deadline, &now);
 		else
 			iopause(0, 0, &deadline, &now);
-		sig_unblock(sig_child);
+		sig_unblock(SIGCHLD);
 
 		if (rplog && (io[0].revents | IOPAUSE_READ))
 			while (read(logpipe[0], &ch, 1) > 0)

Modified: trunk/busybox/runit/sv.c
===================================================================
--- trunk/busybox/runit/sv.c	2007-01-27 22:21:12 UTC (rev 17557)
+++ trunk/busybox/runit/sv.c	2007-01-27 22:21:52 UTC (rev 17558)
@@ -326,28 +326,38 @@
 		service++;
 	}
 
-	if (*cbk)
+	if (*cbk) {
 		for (;;) {
+//TODO: tdiff resolution is way too high. seconds will be enough
 			taia_sub(&tdiff, &tnow, &tstart);
 			service = servicex; want_exit = 1;
 			for (i = 0; i < services; ++i, ++service) {
-				if (!*service) continue;
+				if (!*service)
+					continue;
 				if ((**service != '/') && (**service != '.')) {
-					if ((chdir(varservice) == -1) || (chdir(*service) == -1)) {
-						fail("cannot change to service directory");
-						*service = 0;
-					}
-				} else if (chdir(*service) == -1) {
+					if (chdir(varservice) == -1)
+						goto chdir_failed;
+				}
+				if (chdir(*service) == -1) {
+ chdir_failed:
 					fail("cannot change to service directory");
-					*service = 0;
+					goto nullify_service;
 				}
-				if (*service) { if (cbk(acts) != 0) *service = 0; else want_exit = 0; }
-				if (*service && taia_approx(&tdiff) > waitsec) {
+				if (cbk(acts) != 0)
+					goto nullify_service;
+				want_exit = 0;
+				//if (taia_approx(&tdiff) > waitsec)
+				if (tdiff.sec.x >= waitsec) {
 					kll ? printf(KILL) : printf(TIMEOUT);
-					if (svstatus_get() > 0) { svstatus_print(*service); ++rc; }
+					if (svstatus_get() > 0) {
+						svstatus_print(*service);
+						++rc;
+					}
 					puts(""); /* will also flush the output */
-					if (kll) control("k");
-					*service = 0;
+					if (kll)
+						control("k");
+ nullify_service:
+					*service = NULL;
 				}
 				if (fchdir(curdir) == -1)
 					fatal_cannot("change to original directory");
@@ -356,5 +366,6 @@
 			usleep(420000);
 			taia_now(&tnow);
 		}
+	}
 	return rc > 99 ? 99 : rc;
 }

Modified: trunk/busybox/runit/svlogd.c
===================================================================
--- trunk/busybox/runit/svlogd.c	2007-01-27 22:21:12 UTC (rev 17557)
+++ trunk/busybox/runit/svlogd.c	2007-01-27 22:21:52 UTC (rev 17558)
@@ -100,11 +100,13 @@
 }
 static void pause_nomem(void)
 {
-	bb_error_msg(PAUSE"out of memory"); sleep(3);
+	bb_error_msg(PAUSE"out of memory");
+	sleep(3);
 }
 static void pause1cannot(char *m0)
 {
-	bb_perror_msg(PAUSE"cannot %s", m0); sleep(3);
+	bb_perror_msg(PAUSE"cannot %s", m0);
+	sleep(3);
 }
 static void pause2cannot(char *m0, char *m1)
 {
@@ -115,7 +117,8 @@
 static char* wstrdup(const char *str)
 {
 	char *s;
-	while (!(s = strdup(str))) pause_nomem();
+	while (!(s = strdup(str)))
+		pause_nomem();
 	return s;
 }
 
@@ -135,12 +138,12 @@
 		int fd;
 
 		/* child */
-		sig_uncatch(sig_term);
-		sig_uncatch(sig_alarm);
-		sig_uncatch(sig_hangup);
-		sig_unblock(sig_term);
-		sig_unblock(sig_alarm);
-		sig_unblock(sig_hangup);
+		sig_uncatch(SIGTERM);
+		sig_uncatch(SIGALRM);
+		sig_uncatch(SIGHUP);
+		sig_unblock(SIGTERM);
+		sig_unblock(SIGALRM);
+		sig_unblock(SIGHUP);
 
 		if (verbose)
 			bb_error_msg(INFO"processing: %s/%s", ld->name, ld->fnsave);
@@ -164,6 +167,7 @@
 		if (fd_move(5, fd) == -1)
 			bb_perror_msg_and_die(FATAL"cannot %s processor %s", "move filedescriptor for", ld->name);
 
+// getenv("SHELL")?
 		prog[0] = "sh";
 		prog[1] = "-c";
 		prog[2] = ld->processor;
@@ -180,10 +184,10 @@
 	char f[28];
 
 	if (ld->ppid) {
-		sig_unblock(sig_hangup);
+		sig_unblock(SIGHUP);
 		while (wait_pid(&wstat, ld->ppid) == -1)
 			pause2cannot("wait for processor", ld->name);
-		sig_block(sig_hangup);
+		sig_block(SIGHUP);
 		ld->ppid = 0;
 	}
 	if (ld->fddir == -1) return 1;
@@ -212,7 +216,8 @@
 		bb_error_msg(WARNING"cannot unlink: %s/%s", ld->name, ld->fnsave);
 	while (rename("newstate", "state") == -1)
 		pause2cannot("rename state", ld->name);
-	if (verbose) bb_error_msg(INFO"processed: %s/%s", ld->name, f);
+	if (verbose)
+		bb_error_msg(INFO"processed: %s/%s", ld->name, f);
 	while (fchdir(fdwdir) == -1)
 		pause1cannot("change to initial working directory");
 	return 1;
@@ -242,11 +247,13 @@
 			errno = 0;
 		}
 	}
-	if (errno) warn2("cannot read directory", ld->name);
+	if (errno)
+		warn2("cannot read directory", ld->name);
 	closedir(d);
 
 	if (ld->nmax && (n > ld->nmax)) {
-		if (verbose) bb_error_msg(INFO"delete: %s/%s", ld->name, oldest);
+		if (verbose)
+			bb_error_msg(INFO"delete: %s/%s", ld->name, oldest);
 		if ((*oldest == '@') && (unlink(oldest) == -1))
 			warn2("cannot unlink oldest logfile", ld->name);
 	}
@@ -276,9 +283,10 @@
 	ld->fnsave[27] = '\0';
 	do {
 		taia_now(&now);
-		fmt_taia(ld->fnsave, &now);
+		fmt_taia25(ld->fnsave, &now);
 		errno = 0;
-	} while ((stat(ld->fnsave, &st) != -1) || (errno != ENOENT));
+		stat(ld->fnsave, &st);
+	} while (errno != ENOENT);
 
 	if (ld->tmax && taia_less(&ld->trotate, &now)) {
 		taia_uint(&ld->trotate, ld->tmax);
@@ -523,9 +531,10 @@
 			ld->fnsave[27] = '\0';
 			do {
 				taia_now(&now);
-				fmt_taia(ld->fnsave, &now);
+				fmt_taia25(ld->fnsave, &now);
 				errno = 0;
-			} while ((stat(ld->fnsave, &st) != -1) || (errno != ENOENT));
+				stat(ld->fnsave, &st);
+			} while (errno != ENOENT);
 			while (rename("current", ld->fnsave) == -1)
 				pause2cannot("rename current", ld->name);
 			rmoldest(ld);
@@ -608,15 +617,15 @@
 
 	while (1) {
 		/* Comment? */
-		sig_unblock(sig_term);
-		sig_unblock(sig_child);
-		sig_unblock(sig_alarm);
-		sig_unblock(sig_hangup);
+		sig_unblock(SIGTERM);
+		sig_unblock(SIGCHLD);
+		sig_unblock(SIGALRM);
+		sig_unblock(SIGHUP);
 		iopause(&in, 1, &trotate, &now);
-		sig_block(sig_term);
-		sig_block(sig_child);
-		sig_block(sig_alarm);
-		sig_block(sig_hangup);
+		sig_block(SIGTERM);
+		sig_block(SIGCHLD);
+		sig_block(SIGALRM);
+		sig_block(SIGHUP);
 		i = safe_read(fd, s, len);
 		if (i >= 0) break;
 		if (errno != EAGAIN) {
@@ -764,14 +773,14 @@
 	in.events = IOPAUSE_READ;
 	ndelay_on(in.fd);
 
-	sig_block(sig_term);
-	sig_block(sig_child);
-	sig_block(sig_alarm);
-	sig_block(sig_hangup);
-	sig_catch(sig_term, sig_term_handler);
-	sig_catch(sig_child, sig_child_handler);
-	sig_catch(sig_alarm, sig_alarm_handler);
-	sig_catch(sig_hangup, sig_hangup_handler);
+	sig_block(SIGTERM);
+	sig_block(SIGCHLD);
+	sig_block(SIGALRM);
+	sig_block(SIGHUP);
+	sig_catch(SIGTERM, sig_term_handler);
+	sig_catch(SIGCHLD, sig_child_handler);
+	sig_catch(SIGALRM, sig_alarm_handler);
+	sig_catch(SIGHUP, sig_hangup_handler);
 
 	logdirs_reopen();
 
@@ -788,10 +797,10 @@
 			taia_now(&now);
 			switch (timestamp) {
 			case 1:
-				fmt_taia(stamp, &now);
+				fmt_taia25(stamp, &now);
 				break;
 			default: /* case 2: */
-				fmt_ptime(stamp, &now);
+				fmt_ptime30nul(stamp, &now);
 				break;
 			}
 			memcpy(line, stamp, 25);




More information about the busybox-cvs mailing list