version 1.250, 2017/05/17 22:27:12 |
version 1.254, 2017/08/26 12:59:17 |
Line 420 mandocdb(int argc, char *argv[]) |
|
Line 420 mandocdb(int argc, char *argv[]) |
|
|
|
exitcode = (int)MANDOCLEVEL_OK; |
exitcode = (int)MANDOCLEVEL_OK; |
mchars_alloc(); |
mchars_alloc(); |
mp = mparse_alloc(mparse_options, MANDOCLEVEL_BADARG, NULL, NULL); |
mp = mparse_alloc(mparse_options, MANDOCERR_MAX, NULL, |
|
MANDOC_OS_OTHER, NULL); |
mandoc_ohash_init(&mpages, 6, offsetof(struct mpage, inodev)); |
mandoc_ohash_init(&mpages, 6, offsetof(struct mpage, inodev)); |
mandoc_ohash_init(&mlinks, 6, offsetof(struct mlink, file)); |
mandoc_ohash_init(&mlinks, 6, offsetof(struct mlink, file)); |
|
|
Line 2118 dbprune(struct dba *dba) |
|
Line 2119 dbprune(struct dba *dba) |
|
static void |
static void |
dbwrite(struct dba *dba) |
dbwrite(struct dba *dba) |
{ |
{ |
char tfn[32]; |
char tfn[33]; |
int status; |
int status; |
pid_t child; |
pid_t child; |
|
|
Line 2129 dbwrite(struct dba *dba) |
|
Line 2130 dbwrite(struct dba *dba) |
|
|
|
dba_array_start(dba->pages); |
dba_array_start(dba->pages); |
if (dba_array_next(dba->pages) == NULL) { |
if (dba_array_next(dba->pages) == NULL) { |
if (unlink(MANDOC_DB) == -1) |
if (unlink(MANDOC_DB) == -1 && errno != ENOENT) |
say(MANDOC_DB, "&unlink"); |
say(MANDOC_DB, "&unlink"); |
return; |
return; |
} |
} |
Line 2192 dbwrite(struct dba *dba) |
|
Line 2193 dbwrite(struct dba *dba) |
|
} |
} |
|
|
out: |
out: |
|
unlink(tfn); |
*strrchr(tfn, '/') = '\0'; |
*strrchr(tfn, '/') = '\0'; |
switch (child = fork()) { |
rmdir(tfn); |
case -1: |
|
exitcode = (int)MANDOCLEVEL_SYSERR; |
|
say("", "&fork rm"); |
|
return; |
|
case 0: |
|
execlp("rm", "rm", "-rf", tfn, (char *)NULL); |
|
say("", "&exec rm"); |
|
exit((int)MANDOCLEVEL_SYSERR); |
|
default: |
|
break; |
|
} |
|
if (waitpid(child, &status, 0) == -1) { |
|
exitcode = (int)MANDOCLEVEL_SYSERR; |
|
say("", "&wait rm"); |
|
} else if (WIFSIGNALED(status) || WEXITSTATUS(status)) { |
|
exitcode = (int)MANDOCLEVEL_SYSERR; |
|
say("", "%s: Cannot remove temporary directory", tfn); |
|
} |
|
} |
} |
|
|
static int |
static int |