the lastbug fix?
This commit is contained in:
parent
8f8b0e542a
commit
92a0a8b69f
4 changed files with 12 additions and 9 deletions
|
|
@ -17,7 +17,7 @@ struct ar_hdr
|
||||||
};
|
};
|
||||||
#define SAR_HDR (SARNAME+44)
|
#define SAR_HDR (SARNAME+44)
|
||||||
|
|
||||||
static int dolong;
|
static int dolong = 1;
|
||||||
|
|
||||||
static void atimes(char *);
|
static void atimes(char *);
|
||||||
static char *split(char*, char**);
|
static char *split(char*, char**);
|
||||||
|
|
@ -154,7 +154,7 @@ atimes(char *ar)
|
||||||
goto skip;
|
goto skip;
|
||||||
}else if(strings && h.name[0]=='/' && isdigit(h.name[1])){
|
}else if(strings && h.name[0]=='/' && isdigit(h.name[1])){
|
||||||
i = strtol(h.name+1, &p, 10);
|
i = strtol(h.name+1, &p, 10);
|
||||||
if(*p != ' ' || strlen(strings) < i)
|
if(*p != ' ' || i >= strlen(strings))
|
||||||
goto skip;
|
goto skip;
|
||||||
p = strings+i;
|
p = strings+i;
|
||||||
for(; *p && *p != '/'; p++)
|
for(; *p && *p != '/'; p++)
|
||||||
|
|
|
||||||
|
|
@ -180,7 +180,7 @@ dumpn(char *s, Node *n)
|
||||||
char buf[1024];
|
char buf[1024];
|
||||||
Arc *a;
|
Arc *a;
|
||||||
|
|
||||||
sprint(buf, "%s ", (*s == ' ')? s:"");
|
snprint(buf, sizeof buf, "%s ", (*s == ' ')? s:"");
|
||||||
Bprint(&bout, "%s%s@%ld: time=%ld flags=0x%x next=%ld\n",
|
Bprint(&bout, "%s%s@%ld: time=%ld flags=0x%x next=%ld\n",
|
||||||
s, n->name, n, n->time, n->flags, n->next);
|
s, n->name, n, n->time, n->flags, n->next);
|
||||||
for(a = n->prereqs; a; a = a->next)
|
for(a = n->prereqs; a; a = a->next)
|
||||||
|
|
|
||||||
|
|
@ -198,7 +198,7 @@ pcmp(char *prog, char *p, char *q)
|
||||||
int pid;
|
int pid;
|
||||||
|
|
||||||
Bflush(&bout);
|
Bflush(&bout);
|
||||||
sprint(buf, "%s '%s' '%s'\n", prog, p, q);
|
snprint(buf, sizeof buf, "%s '%s' '%s'\n", prog, p, q);
|
||||||
pid = pipecmd(buf, 0, 0);
|
pid = pipecmd(buf, 0, 0);
|
||||||
while(waitup(-3, &pid) >= 0)
|
while(waitup(-3, &pid) >= 0)
|
||||||
;
|
;
|
||||||
|
|
@ -214,7 +214,7 @@ outofdate(Node *node, Arc *arc, int eval)
|
||||||
|
|
||||||
str = 0;
|
str = 0;
|
||||||
if(arc->prog){
|
if(arc->prog){
|
||||||
sprint(buf, "%s%c%s", node->name, 0377, arc->n->name);
|
snprint(buf, sizeof buf, "%s%c%s", node->name, 0377, arc->n->name);
|
||||||
sym = symlook(buf, S_OUTOFDATE, 0);
|
sym = symlook(buf, S_OUTOFDATE, 0);
|
||||||
if(sym == 0 || eval){
|
if(sym == 0 || eval){
|
||||||
if(sym == 0)
|
if(sym == 0)
|
||||||
|
|
|
||||||
|
|
@ -47,15 +47,15 @@ exportenv(Envy *e)
|
||||||
{
|
{
|
||||||
int i;
|
int i;
|
||||||
char **p;
|
char **p;
|
||||||
char buf[4096];
|
static char buf[16384];
|
||||||
|
|
||||||
p = 0;
|
p = 0;
|
||||||
for(i = 0; e->name; e++, i++) {
|
for(i = 0; e->name; e++, i++) {
|
||||||
p = (char**) Realloc(p, (i+2)*sizeof(char*));
|
p = (char**) Realloc(p, (i+2)*sizeof(char*));
|
||||||
if(e->values)
|
if(e->values)
|
||||||
sprint(buf, "%s=%s", e->name, wtos(e->values, IWS));
|
snprint(buf, sizeof buf, "%s=%s", e->name, wtos(e->values, IWS));
|
||||||
else
|
else
|
||||||
sprint(buf, "%s=", e->name);
|
snprint(buf, sizeof buf, "%s=", e->name);
|
||||||
p[i] = strdup(buf);
|
p[i] = strdup(buf);
|
||||||
}
|
}
|
||||||
p[i] = 0;
|
p[i] = 0;
|
||||||
|
|
@ -91,6 +91,8 @@ expunge(int pid, char *msg)
|
||||||
kill(pid, SIGHUP);
|
kill(pid, SIGHUP);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int mypid;
|
||||||
|
|
||||||
int
|
int
|
||||||
execsh(char *args, char *cmd, Bufblock *buf, Envy *e)
|
execsh(char *args, char *cmd, Bufblock *buf, Envy *e)
|
||||||
{
|
{
|
||||||
|
|
@ -102,6 +104,7 @@ execsh(char *args, char *cmd, Bufblock *buf, Envy *e)
|
||||||
Exit();
|
Exit();
|
||||||
}
|
}
|
||||||
pid = fork();
|
pid = fork();
|
||||||
|
mypid = getpid();
|
||||||
if(pid < 0){
|
if(pid < 0){
|
||||||
mkperror("mk fork");
|
mkperror("mk fork");
|
||||||
Exit();
|
Exit();
|
||||||
|
|
@ -225,7 +228,7 @@ static struct
|
||||||
SIGFPE, "sys: fp: fptrap",
|
SIGFPE, "sys: fp: fptrap",
|
||||||
SIGPIPE, "sys: write on closed pipe",
|
SIGPIPE, "sys: write on closed pipe",
|
||||||
SIGILL, "sys: trap: illegal instruction",
|
SIGILL, "sys: trap: illegal instruction",
|
||||||
SIGSEGV, "sys: segmentation violation",
|
// SIGSEGV, "sys: segmentation violation",
|
||||||
0, 0
|
0, 0
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
||||||
Loading…
Add table
Add a link
Reference in a new issue