summaryrefslogtreecommitdiff
path: root/sbin/disklabel/disklabel.c
diff options
context:
space:
mode:
authorTheo de Raadt <deraadt@cvs.openbsd.org>2004-09-18 23:23:18 +0000
committerTheo de Raadt <deraadt@cvs.openbsd.org>2004-09-18 23:23:18 +0000
commit3d83897449336517ba2d1418c7faab18c41cc11a (patch)
treedc12f519ccb7f3771d44ae6281bfcbd72995647e /sbin/disklabel/disklabel.c
parentdbc8b505ca36c9716dc2301c81b830100f415ccd (diff)
remove unused var, and then fix the code to watch for waitpid() errors
ok otto millert
Diffstat (limited to 'sbin/disklabel/disklabel.c')
-rw-r--r--sbin/disklabel/disklabel.c16
1 files changed, 11 insertions, 5 deletions
diff --git a/sbin/disklabel/disklabel.c b/sbin/disklabel/disklabel.c
index 24ec70ee215..b3b050f180d 100644
--- a/sbin/disklabel/disklabel.c
+++ b/sbin/disklabel/disklabel.c
@@ -1,4 +1,4 @@
-/* $OpenBSD: disklabel.c,v 1.90 2004/08/08 19:04:25 deraadt Exp $ */
+/* $OpenBSD: disklabel.c,v 1.91 2004/09/18 23:23:17 deraadt Exp $ */
/*
* Copyright (c) 1987, 1993
@@ -39,7 +39,7 @@ static const char copyright[] =
#endif /* not lint */
#ifndef lint
-static const char rcsid[] = "$OpenBSD: disklabel.c,v 1.90 2004/08/08 19:04:25 deraadt Exp $";
+static const char rcsid[] = "$OpenBSD: disklabel.c,v 1.91 2004/09/18 23:23:17 deraadt Exp $";
#endif /* not lint */
#include <sys/param.h>
@@ -1189,8 +1189,8 @@ edit(struct disklabel *lp, int f)
int
editit(void)
{
- pid_t pid, xpid;
- int stat, len;
+ pid_t pid;
+ int stat = 0, len;
char *argp[] = {"sh", "-c", NULL, NULL};
char *ed, *p;
@@ -1224,7 +1224,13 @@ editit(void)
}
free(p);
for (;;) {
- xpid = waitpid(pid, (int *)&stat, WUNTRACED);
+ if (waitpid(pid, (int *)&stat, WUNTRACED) == -1) {
+ if (errno == EINTR)
+ continue;
+ if (errno == ECHILD)
+ stat = 1;
+ break;
+ }
if (WIFSTOPPED(stat))
raise(WSTOPSIG(stat));
else if (WIFEXITED(stat))