From: Jeremy White <jwhite@codeweavers.com>
To: Alan Cox <alan@lxorguk.ukuu.org.uk>
Cc: linux-kernel@vger.kernel.org
Subject: Re: isofs unhide option: troubles with Wine
Date: Tue, 18 Jun 2002 21:36:25 -0500 [thread overview]
Message-ID: <3D0FEE29.7030509@codeweavers.com> (raw)
In-Reply-To: 1023150198.23878.93.camel@irongate.swansea.linux.org.uk
[-- Attachment #1: Type: text/plain, Size: 2174 bytes --]
Sorry for the long delay; had to take the kids to Disney World <grin>.
I'm attaching two patches, both against 2.5.20. Please be gentle,
I'm a kernel newbie.
Patch #1: bugfix.patch
Fixes a bug in the parsing of options for the isofs driver.
Behavior was on an unrecognized option to simply return success.
A mount -o blatnik,<useful-option>,<useful-option>
would silently lose all the useful options.
This should be applied, imho, regardless.
Patch #2: reversehide.patch
I've eliminated the 'unhide' option and made that behavior
the default (show files with the hidden bit on).
I've added a 'hide' option which hides files marked with the hidden bit.
I've also preserved the behavior which hid 'associated' files by
default,
and added a 'showassoc' mount option, which will cause the
driver to show files marked with the associated bit.
(The prior behavior was that unhide would show both
hidden and associated files)
Issues:
1. I have no CDs with associated files on them, and thus
this change is completely untested. Looks good to me <g>.
2. Arguably, this same change should be made to the udf
driver, but I do not have a DVD writer, nor a DVD with
either hidden or associated files, so I would be unable
to test any such patch made. I'm willing to submit a
patch that compiles, if that would be of value.
Thanks,
Jeremy
Alan Cox wrote:
>On Mon, 2002-06-03 at 18:05, Jeremy White wrote:
>
>
>>>possible rather than impossible. Question is - why was hide the default
>>>and what was that decision based upon ?
>>>
>>>
>>I agree with Alan - this is the key question.
>>
>>I would further argue that silence in response to this question
>>suggests that there was no carefully considered reason;
>>presumably a good hacker just followed the spec, without considering how
>>these CDs are actually used.
>>
>>It further suggests to me that I should prep a patch.
>>
>>
>
>Go for it. I'll give it a test in the -ac tree happily. If nobody
>screams it can then go upstream.
>
>
[-- Attachment #2: bugfix.patch --]
[-- Type: text/plain, Size: 211 bytes --]
--- orig/fs/isofs/inode.c Sun Jun 2 20:44:53 2002
+++ linux-2.5.20/fs/isofs/inode.c Tue Jun 18 21:12:29 2002
@@ -460,7 +460,7 @@
break;
}
}
- else return 1;
+ else return 0;
}
return 1;
}
[-- Attachment #3: reversehide.patch --]
[-- Type: text/plain, Size: 4433 bytes --]
diff -ur orig/Documentation/filesystems/isofs.txt linux-2.5.20/Documentation/filesystems/isofs.txt
--- orig/Documentation/filesystems/isofs.txt Sun Jun 2 20:44:42 2002
+++ linux-2.5.20/Documentation/filesystems/isofs.txt Mon Jun 17 20:58:06 2002
@@ -26,6 +26,7 @@
mode=xxx Sets the permissions on files to xxx
nojoliet Ignore Joliet extensions if they are present.
norock Ignore Rock Ridge extensions if they are present.
- unhide Show hidden files.
+ hide Completely strip hidden files from the file system.
+ showassoc Show files marked with the 'associated' bit
session=x Select number of session on multisession CD
sbsector=xxx Session begins from sector xxx
diff -ur orig/fs/isofs/dir.c linux-2.5.20/fs/isofs/dir.c
--- orig/fs/isofs/dir.c Sun Jun 2 20:44:45 2002
+++ linux-2.5.20/fs/isofs/dir.c Mon Jun 17 21:35:53 2002
@@ -194,12 +194,12 @@
/* Handle everything else. Do name translation if there
is no Rock Ridge NM field. */
- if (sbi->s_unhide == 'n') {
- /* Do not report hidden or associated files */
- if (de->flags[-sbi->s_high_sierra] & 5) {
- filp->f_pos += de_len;
- continue;
- }
+
+ /* Do not report hidden files if so instructed, or associated files unless instructed to do so */
+ if ( ( sbi->s_hide =='y' && (de->flags[-sbi->s_high_sierra] & 1) ) ||
+ ( sbi->s_showassoc =='n' && (de->flags[-sbi->s_high_sierra] & 4) ) ) {
+ filp->f_pos += de_len;
+ continue;
}
map = 1;
diff -ur orig/fs/isofs/inode.c linux-2.5.20/fs/isofs/inode.c
--- orig/fs/isofs/inode.c Sun Jun 2 20:44:53 2002
+++ linux-2.5.20/fs/isofs/inode.c Tue Jun 18 21:14:08 2002
@@ -172,7 +172,8 @@
char rock;
char joliet;
char cruft;
- char unhide;
+ char hide;
+ char showassoc;
char nocompress;
unsigned char check;
unsigned int blocksize;
@@ -341,7 +342,8 @@
popt->rock = 'y';
popt->joliet = 'y';
popt->cruft = 'n';
- popt->unhide = 'n';
+ popt->hide = 'n';
+ popt->showassoc = 'n';
popt->check = 'u'; /* unset */
popt->nocompress = 0;
popt->blocksize = 1024;
@@ -367,8 +369,12 @@
popt->joliet = 'n';
continue;
}
- if (strncmp(this_char,"unhide",6) == 0) {
- popt->unhide = 'y';
+ if (strncmp(this_char,"hide",4) == 0) {
+ popt->hide = 'y';
+ continue;
+ }
+ if (strncmp(this_char,"showassoc",9) == 0) {
+ popt->showassoc= 'y';
continue;
}
if (strncmp(this_char,"cruft",5) == 0) {
@@ -562,7 +568,8 @@
printk("joliet = %c\n", opt.joliet);
printk("check = %c\n", opt.check);
printk("cruft = %c\n", opt.cruft);
- printk("unhide = %c\n", opt.unhide);
+ printk("hide = %c\n", opt.hide);
+ printk("showassoc= %c\n", opt.showassoc);
printk("blocksize = %d\n", opt.blocksize);
printk("gid = %d\n", opt.gid);
printk("uid = %d\n", opt.uid);
@@ -806,7 +813,8 @@
sbi->s_rock = (opt.rock == 'y' ? 2 : 0);
sbi->s_rock_offset = -1; /* initial offset, will guess until SP is found*/
sbi->s_cruft = opt.cruft;
- sbi->s_unhide = opt.unhide;
+ sbi->s_hide = opt.hide;
+ sbi->s_showassoc = opt.showassoc;
sbi->s_uid = opt.uid;
sbi->s_gid = opt.gid;
sbi->s_utf8 = opt.utf8;
diff -ur orig/fs/isofs/namei.c linux-2.5.20/fs/isofs/namei.c
--- orig/fs/isofs/namei.c Sun Jun 2 20:44:52 2002
+++ linux-2.5.20/fs/isofs/namei.c Mon Jun 17 21:16:08 2002
@@ -140,12 +140,12 @@
}
/*
- * Skip hidden or associated files unless unhide is set
+ * Skip hidden or associated files unless hide or showassoc, respectively, is set
*/
match = 0;
if (dlen > 0 &&
- (!(de->flags[-sbi->s_high_sierra] & 5)
- || sbi->s_unhide == 'y'))
+ ( sbi->s_hide =='n' || (!(de->flags[-sbi->s_high_sierra] & 1)) ) &&
+ ( sbi->s_showassoc =='y' || (!(de->flags[-sbi->s_high_sierra] & 4)) ) )
{
match = (isofs_cmp(dentry,dpnt,dlen) == 0);
}
diff -ur orig/include/linux/iso_fs_sb.h linux-2.5.20/include/linux/iso_fs_sb.h
--- orig/include/linux/iso_fs_sb.h Sun Jun 2 20:44:50 2002
+++ linux-2.5.20/include/linux/iso_fs_sb.h Mon Jun 17 20:57:47 2002
@@ -20,7 +20,8 @@
unsigned char s_cruft; /* Broken disks with high
byte of length containing
junk */
- unsigned char s_unhide;
+ unsigned char s_hide;
+ unsigned char s_showassoc;
unsigned char s_nosuid;
unsigned char s_nodev;
unsigned char s_nocompress;
next prev parent reply other threads:[~2002-06-19 2:38 UTC|newest]
Thread overview: 25+ messages / expand[flat|nested] mbox.gz Atom feed top
2002-05-25 4:30 isofs unhide option: troubles with Wine Jeremy White
2002-05-25 13:46 ` Olaf Dietsche
2002-05-25 13:49 ` Jeremy White
2002-05-25 14:01 ` Joseph Mathewson
2002-05-25 14:23 ` Jeremy White
2002-06-10 3:12 ` Francois Gouget
2002-06-10 11:52 ` Thunder from the hill
2002-06-10 12:38 ` Guest section DW
2002-05-25 15:50 ` Alan Cox
2002-06-03 17:05 ` Jeremy White
2002-06-03 18:06 ` Thunder from the hill
2002-06-03 18:40 ` H. Peter Anvin
2002-06-03 19:40 ` Thunder from the hill
2002-06-03 19:43 ` H. Peter Anvin
2002-06-04 0:23 ` Alan Cox
2002-06-19 2:36 ` Jeremy White [this message]
2002-05-25 14:18 ` Ruth Ivimey-Cook
2002-05-25 14:25 ` Jeremy White
2002-05-25 19:31 ` H. Peter Anvin
2002-05-25 19:40 ` Linus Torvalds
2002-05-25 20:31 ` H. Peter Anvin
2002-05-25 21:20 ` Lionel Bouton
2002-05-25 21:51 ` H. Peter Anvin
2002-05-25 21:07 ` Lionel Bouton
-- strict thread matches above, loose matches on Subject: below --
2002-05-25 17:04 Andries.Brouwer
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=3D0FEE29.7030509@codeweavers.com \
--to=jwhite@codeweavers.com \
--cc=alan@lxorguk.ukuu.org.uk \
--cc=linux-kernel@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.