Messages in this thread Patch in this message |  | | Subject | -o uid=<> on rock ridge cdroms | Date | Tue, 28 May 1996 09:17:39 PDT | From | "Marty Leisner" <> |
| |
I wanted to set uid on improperly mastered rockridge cdroms (files with r------- are a problem when their owned by some arbitrary user).
Its against pre2.07
Thanks to Eric Youngdale for pointing out how to do this...
It works if you specify uid=!0 in the mount options
(seems reasonable, otherwise I need to have a means to determine if uid isn't initialized to 0).
--- fs/isofs/inode.c 1996/05/26 20:23:01 1.1 +++ fs/isofs/inode.c 1996/05/28 13:08:43 @@ -455,6 +455,17 @@ return (inode->u.isofs_i.i_first_extent >> ISOFS_BUFFER_BITS(inode)) + block; } + +static void test_and_set_uid(uid_t *p, uid_t value) +{ + if(value) { + *p = value; +#if 0 + printk("Resetting to %d\n", value); +#endif + } +} + void isofs_read_inode(struct inode * inode) { unsigned long bufsize = ISOFS_BUFFER_SIZE(inode); @@ -593,8 +604,11 @@ /* Now test for possible Rock Ridge extensions which will override some of these numbers in the inode structure. */ - if (!high_sierra) + if (!high_sierra) { parse_rock_ridge_inode(raw_inode, inode); + /* hmm..if we want uid or gid set, override the rock ridge setting */ + test_and_set_uid(&inode->i_uid, inode->i_sb->u.isofs_sb.s_uid); + } #ifdef DEBUG printk("Inode: %x extent: %x\n",inode->i_ino, inode->u.isofs_i.i_first_extent); marty leisner@sdsp.mc.xerox.com Member of the League for Programming Freedom (http://www.lpf.org) Any sufficiently advanced technology is indistinguishable from magic Arthur C. Clarke, The Lost Worlds of 2001
|  |