diff options
author | dcs <dcs@FreeBSD.org> | 1999-04-18 10:58:03 +0000 |
---|---|---|
committer | dcs <dcs@FreeBSD.org> | 1999-04-18 10:58:03 +0000 |
commit | 1ff58a39ac4af3d04225faf560ca091084c36a15 (patch) | |
tree | cab4e4ad15edd5adf5a3c91c2ec05b9ed8c7be23 /sys/isofs/cd9660/cd9660_rrip.c | |
parent | 9af4b2b5eaaa8eb06f4d72ff0f9e55ab9ef42eb9 (diff) | |
download | FreeBSD-src-1ff58a39ac4af3d04225faf560ca091084c36a15.zip FreeBSD-src-1ff58a39ac4af3d04225faf560ca091084c36a15.tar.gz |
Add support for Joliet extensions to the iso9660 fs. The related PR
cannot yet be closed, though.
I hope I got all credits right, and that the multiple submitted by lines
do not break anyone's scripts...
PR: kern/5038, kern/5567
Submitted by: Keith Jang <keith@email.gcn.net.tw>
Submitted by: Joachim Kuebart <joki@kuebart.stuttgart.netsurf.de>
Submitted by: Byung Yang <byung@wam.umd.edu>
Submitted by: Motomichi Matsuzaki <mzaki@e-mail.ne.jp>
Diffstat (limited to 'sys/isofs/cd9660/cd9660_rrip.c')
-rw-r--r-- | sys/isofs/cd9660/cd9660_rrip.c | 29 |
1 files changed, 16 insertions, 13 deletions
diff --git a/sys/isofs/cd9660/cd9660_rrip.c b/sys/isofs/cd9660/cd9660_rrip.c index b34553f..27a57ec 100644 --- a/sys/isofs/cd9660/cd9660_rrip.c +++ b/sys/isofs/cd9660/cd9660_rrip.c @@ -36,7 +36,7 @@ * SUCH DAMAGE. * * @(#)cd9660_rrip.c 8.6 (Berkeley) 12/5/94 - * $Id: cd9660_rrip.c,v 1.12 1997/02/22 09:38:49 peter Exp $ + * $Id: cd9660_rrip.c,v 1.13 1997/08/02 14:31:19 bde Exp $ */ #include <sys/param.h> @@ -298,18 +298,18 @@ cd9660_rrip_defname(isodir,ana) struct iso_directory_record *isodir; ISO_RRIP_ANALYZE *ana; { - strcpy(ana->outbuf,".."); - switch (*isodir->name) { + isofntrans(isodir->name,isonum_711(isodir->name_len), + ana->outbuf,ana->outlen, + 1,isonum_711(isodir->flags)&4, ana->imp->joliet_level); + switch (*ana->outbuf) { default: - isofntrans(isodir->name,isonum_711(isodir->name_len), - ana->outbuf,ana->outlen, - 1,isonum_711(isodir->flags)&4); - break; - case 0: - *ana->outlen = 1; break; case 1: *ana->outlen = 2; + /* FALL THROUGH */ + case 0: + /* outlen is 1 already */ + strcpy(ana->outbuf,".."); break; } } @@ -498,6 +498,7 @@ cd9660_rrip_loop(isodir,ana,table) register ISO_SUSP_HEADER *pend; struct buf *bp = NULL; char *pwhead; + u_char c; int result; /* @@ -507,10 +508,10 @@ cd9660_rrip_loop(isodir,ana,table) pwhead = isodir->name + isonum_711(isodir->name_len); if (!(isonum_711(isodir->name_len)&1)) pwhead++; + isochar(isodir->name, pwhead, ana->imp->joliet_level, &c); /* If it's not the '.' entry of the root dir obey SP field */ - if (*isodir->name != 0 - || isonum_733(isodir->extent) != ana->imp->root_extent) + if (c != 0 || isonum_733(isodir->extent) != ana->imp->root_extent) pwhead += ana->imp->rr_skip; else pwhead += ana->imp->rr_skip0; @@ -633,6 +634,7 @@ cd9660_rrip_getname(isodir,outbuf,outlen,inump,imp) { ISO_RRIP_ANALYZE analyze; RRIP_TABLE *tab; + u_char c; analyze.outbuf = outbuf; analyze.outlen = outlen; @@ -642,9 +644,10 @@ cd9660_rrip_getname(isodir,outbuf,outlen,inump,imp) analyze.fields = ISO_SUSP_ALTNAME|ISO_SUSP_RELDIR|ISO_SUSP_CLINK|ISO_SUSP_PLINK; *outlen = 0; + isochar(isodir->name, isodir->name + isonum_711(isodir->name_len), + imp->joliet_level, &c); tab = rrip_table_getname; - if (*isodir->name == 0 - || *isodir->name == 1) { + if (c == 0 || c == 1) { cd9660_rrip_defname(isodir,&analyze); analyze.fields &= ~ISO_SUSP_ALTNAME; |