commit - 8f8b0e542a8284671f9a3ae0678bb20f6962a420
commit + 92a0a8b69faf7882459c1ac6c9186e1c47ef0a91
blob - 14d2082dafb110ea30a9dcaec957ec7b6349043d
blob + 8edfdddc232ff0611e5becba212f452d76f0da4d
--- src/cmd/mk/archive.c
+++ src/cmd/mk/archive.c
};
#define SAR_HDR (SARNAME+44)
-static int dolong;
+static int dolong = 1;
static void atimes(char *);
static char *split(char*, char**);
goto skip;
}else if(strings && h.name[0]=='/' && isdigit(h.name[1])){
i = strtol(h.name+1, &p, 10);
- if(*p != ' ' || strlen(strings) < i)
+ if(*p != ' ' || i >= strlen(strings))
goto skip;
p = strings+i;
for(; *p && *p != '/'; p++)
blob - 58529259930ab2e864e95e503d75cae7986adc83
blob + fdb028811514c503b2b6b33ebfee2ccc3e73ac5b
--- src/cmd/mk/graph.c
+++ src/cmd/mk/graph.c
char buf[1024];
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",
s, n->name, n, n->time, n->flags, n->next);
for(a = n->prereqs; a; a = a->next)
blob - 37eb35115e7a4ca29f75af3c5081b1917aa05774
blob + 9ab4c538f260cc591d4dd44d3832efaa25b6d642
--- src/cmd/mk/mk.c
+++ src/cmd/mk/mk.c
int pid;
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);
while(waitup(-3, &pid) >= 0)
;
str = 0;
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);
if(sym == 0 || eval){
if(sym == 0)
blob - 8b7e9cb860a077e58dd43e066b29fe7e3737741a
blob + 00bee01e4466c95e33ec4df70e7302e695337702
--- src/cmd/mk/unix.c
+++ src/cmd/mk/unix.c
{
int i;
char **p;
- char buf[4096];
+ static char buf[16384];
p = 0;
for(i = 0; e->name; e++, i++) {
p = (char**) Realloc(p, (i+2)*sizeof(char*));
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
- sprint(buf, "%s=", e->name);
+ snprint(buf, sizeof buf, "%s=", e->name);
p[i] = strdup(buf);
}
p[i] = 0;
kill(pid, SIGHUP);
}
+int mypid;
+
int
execsh(char *args, char *cmd, Bufblock *buf, Envy *e)
{
Exit();
}
pid = fork();
+ mypid = getpid();
if(pid < 0){
mkperror("mk fork");
Exit();
SIGFPE, "sys: fp: fptrap",
SIGPIPE, "sys: write on closed pipe",
SIGILL, "sys: trap: illegal instruction",
- SIGSEGV, "sys: segmentation violation",
+// SIGSEGV, "sys: segmentation violation",
0, 0
};