summaryrefslogtreecommitdiffstats
path: root/sys/isofs/cd9660/cd9660_rrip.c
diff options
context:
space:
mode:
authordcs <dcs@FreeBSD.org>1999-04-18 10:58:03 +0000
committerdcs <dcs@FreeBSD.org>1999-04-18 10:58:03 +0000
commit1ff58a39ac4af3d04225faf560ca091084c36a15 (patch)
treecab4e4ad15edd5adf5a3c91c2ec05b9ed8c7be23 /sys/isofs/cd9660/cd9660_rrip.c
parent9af4b2b5eaaa8eb06f4d72ff0f9e55ab9ef42eb9 (diff)
downloadFreeBSD-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.c29
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;
OpenPOWER on IntegriCloud