kernel: get rid of tmperrbuf and use syserrstr swapping instead in namec()
This commit is contained in:
parent
4088f72903
commit
0cb4115b82
1 changed files with 14 additions and 10 deletions
|
@ -1283,7 +1283,7 @@ namec(char *aname, int amode, int omode, ulong perm)
|
||||||
Elemlist e;
|
Elemlist e;
|
||||||
Rune r;
|
Rune r;
|
||||||
Mhead *m;
|
Mhead *m;
|
||||||
char *createerr, tmperrbuf[ERRMAX];
|
char *err;
|
||||||
char *name;
|
char *name;
|
||||||
|
|
||||||
if(aname[0] == '\0')
|
if(aname[0] == '\0')
|
||||||
|
@ -1360,13 +1360,15 @@ namec(char *aname, int amode, int omode, ulong perm)
|
||||||
*/
|
*/
|
||||||
if(e.nerror == 0)
|
if(e.nerror == 0)
|
||||||
nexterror();
|
nexterror();
|
||||||
strcpy(tmperrbuf, up->errstr);
|
|
||||||
if(e.off[e.nerror]==0)
|
if(e.off[e.nerror]==0)
|
||||||
print("nerror=%d but off=%d\n",
|
print("nerror=%d but off=%d\n",
|
||||||
e.nerror, e.off[e.nerror]);
|
e.nerror, e.off[e.nerror]);
|
||||||
len = e.prefix+e.off[e.nerror];
|
len = e.prefix+e.off[e.nerror];
|
||||||
free(e.off);
|
free(e.off);
|
||||||
namelenerror(aname, len, tmperrbuf);
|
err = up->errstr;
|
||||||
|
up->errstr = up->syserrstr;
|
||||||
|
up->syserrstr = err;
|
||||||
|
namelenerror(aname, len, err);
|
||||||
}
|
}
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -1584,14 +1586,16 @@ namec(char *aname, int amode, int omode, ulong perm)
|
||||||
if(omode & OEXCL)
|
if(omode & OEXCL)
|
||||||
nexterror();
|
nexterror();
|
||||||
/* save error */
|
/* save error */
|
||||||
createerr = up->errstr;
|
err = up->errstr;
|
||||||
up->errstr = tmperrbuf;
|
up->errstr = up->syserrstr;
|
||||||
|
up->syserrstr = err;
|
||||||
/* note: we depend that walk does not error */
|
/* note: we depend that walk does not error */
|
||||||
if(walk(&c, e.elems+e.nelems-1, 1, nomount, nil) < 0){
|
if(walk(&c, e.elems+e.nelems-1, 1, nomount, nil) < 0)
|
||||||
up->errstr = createerr;
|
error(err); /* report true error */
|
||||||
error(createerr); /* report true error */
|
/* restore error */
|
||||||
}
|
err = up->syserrstr;
|
||||||
up->errstr = createerr;
|
up->syserrstr = up->errstr;
|
||||||
|
up->errstr = err;
|
||||||
omode |= OTRUNC;
|
omode |= OTRUNC;
|
||||||
goto Open;
|
goto Open;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue