fix real cause of iso name truncation
This commit is contained in:
parent
0fda678227
commit
9310110448
3 changed files with 11 additions and 16 deletions
2
sys/lib/dist/mkfile
vendored
2
sys/lib/dist/mkfile
vendored
|
@ -4,6 +4,6 @@ cd:V: /tmp/9front.iso
|
||||||
%.iso: pc/plan9.ini.cd
|
%.iso: pc/plan9.ini.cd
|
||||||
bind /n/src9 /n/src9/dist/plan9front
|
bind /n/src9 /n/src9/dist/plan9front
|
||||||
bind pc/plan9.ini.cd /n/src9/cfg/plan9.ini
|
bind pc/plan9.ini.cd /n/src9/cfg/plan9.ini
|
||||||
disk/mk9660 -9j -B 386/9bootiso -p /n/src9/sys/lib/sysconfig/proto/cdproto -s /n/src9 -v 'Plan 9 Front' $target
|
disk/mk9660 -c9j -B 386/9bootiso -p /n/src9/sys/lib/sysconfig/proto/cdproto -s /n/src9 -v 'Plan 9 Front' $target
|
||||||
unmount /n/src9/cfg/plan9.ini
|
unmount /n/src9/cfg/plan9.ini
|
||||||
unmount /n/src9/dist/plan9front
|
unmount /n/src9/dist/plan9front
|
||||||
|
|
|
@ -569,7 +569,6 @@ rzdir(Xfs *fs, Dir *d, int fmt, Drec *dp)
|
||||||
char buf[Maxname+UTFmax+1];
|
char buf[Maxname+UTFmax+1];
|
||||||
uchar *q;
|
uchar *q;
|
||||||
Rune r;
|
Rune r;
|
||||||
enum { ONAMELEN = 28 }; /* old Plan 9 directory name length */
|
|
||||||
|
|
||||||
have = 0;
|
have = 0;
|
||||||
flags = 0;
|
flags = 0;
|
||||||
|
@ -622,23 +621,23 @@ rzdir(Xfs *fs, Dir *d, int fmt, Drec *dp)
|
||||||
* from plan9 directory extension
|
* from plan9 directory extension
|
||||||
*/
|
*/
|
||||||
nl = *s;
|
nl = *s;
|
||||||
if(nl >= ONAMELEN)
|
if(nl >= Maxname)
|
||||||
nl = ONAMELEN-1;
|
nl = Maxname-1;
|
||||||
if(nl) {
|
if(nl) {
|
||||||
memset(d->name, 0, ONAMELEN);
|
memset(d->name, 0, Maxname);
|
||||||
memmove(d->name, s+1, nl);
|
memmove(d->name, s+1, nl);
|
||||||
}
|
}
|
||||||
s += 1 + *s;
|
s += 1 + *s;
|
||||||
nl = *s;
|
nl = *s;
|
||||||
if(nl >= ONAMELEN)
|
if(nl >= Maxname)
|
||||||
nl = ONAMELEN-1;
|
nl = Maxname-1;
|
||||||
memset(d->uid, 0, ONAMELEN);
|
memset(d->uid, 0, Maxname);
|
||||||
memmove(d->uid, s+1, nl);
|
memmove(d->uid, s+1, nl);
|
||||||
s += 1 + *s;
|
s += 1 + *s;
|
||||||
nl = *s;
|
nl = *s;
|
||||||
if(nl >= ONAMELEN)
|
if(nl >= Maxname)
|
||||||
nl = ONAMELEN-1;
|
nl = Maxname-1;
|
||||||
memset(d->gid, 0, ONAMELEN);
|
memset(d->gid, 0, Maxname);
|
||||||
memmove(d->gid, s+1, nl);
|
memmove(d->gid, s+1, nl);
|
||||||
s += 1 + *s;
|
s += 1 + *s;
|
||||||
if(((uintptr)s) & 1)
|
if(((uintptr)s) & 1)
|
||||||
|
|
|
@ -195,8 +195,7 @@ Creadblock(Cdimg *cd, void *buf, ulong block, ulong len)
|
||||||
int
|
int
|
||||||
parsedir(Cdimg *cd, Direc *d, uchar *buf, int len, char *(*cvtname)(uchar*, int))
|
parsedir(Cdimg *cd, Direc *d, uchar *buf, int len, char *(*cvtname)(uchar*, int))
|
||||||
{
|
{
|
||||||
enum { NAMELEN = 28 };
|
char name[256];
|
||||||
char name[NAMELEN];
|
|
||||||
uchar *p;
|
uchar *p;
|
||||||
Cdir *c;
|
Cdir *c;
|
||||||
|
|
||||||
|
@ -230,7 +229,6 @@ parsedir(Cdimg *cd, Direc *d, uchar *buf, int len, char *(*cvtname)(uchar*, int)
|
||||||
if((p-buf)&1)
|
if((p-buf)&1)
|
||||||
p++;
|
p++;
|
||||||
assert(p < buf+c->len);
|
assert(p < buf+c->len);
|
||||||
assert(*p < NAMELEN);
|
|
||||||
if(*p != 0) {
|
if(*p != 0) {
|
||||||
memmove(name, p+1, *p);
|
memmove(name, p+1, *p);
|
||||||
name[*p] = '\0';
|
name[*p] = '\0';
|
||||||
|
@ -238,12 +236,10 @@ parsedir(Cdimg *cd, Direc *d, uchar *buf, int len, char *(*cvtname)(uchar*, int)
|
||||||
d->name = atom(name);
|
d->name = atom(name);
|
||||||
}
|
}
|
||||||
p += *p+1;
|
p += *p+1;
|
||||||
assert(*p < NAMELEN);
|
|
||||||
memmove(name, p+1, *p);
|
memmove(name, p+1, *p);
|
||||||
name[*p] = '\0';
|
name[*p] = '\0';
|
||||||
d->uid = atom(name);
|
d->uid = atom(name);
|
||||||
p += *p+1;
|
p += *p+1;
|
||||||
assert(*p < NAMELEN);
|
|
||||||
memmove(name, p+1, *p);
|
memmove(name, p+1, *p);
|
||||||
name[*p] = '\0';
|
name[*p] = '\0';
|
||||||
d->gid = atom(name);
|
d->gid = atom(name);
|
||||||
|
|
Loading…
Reference in a new issue