Bug 438 - Options for isofs does not recognized after \'iocharset\'
Summary: Options for isofs does not recognized after \'iocharset\'
Status: CLOSED FIXED
Alias: None
Product: Sisyphus
Classification: Development
Component: kernel24-up (show other bugs)
Version: unstable
Hardware: all Linux
: P4 minor
Assignee: Peter 'Nidd' Novodvorsky
QA Contact:
URL:
Keywords:
Depends on:
Blocks:
 
Reported: 2002-01-23 16:17 MSK by Vitaly A. Ostanin
Modified: 2003-08-25 15:18 MSD (History)
0 users

See Also:


Attachments

Note You need to log in before you can comment on or make changes to this bug.
Description Vitaly A. Ostanin 2002-01-23 16:17:49 MSK
Строка
mount -t auto /dev/cdrom /mnt/tmp -o session=0,iocharset=koi8-r,ro,showexec
работает, а строка
mount -t auto /dev/cdrom /mnt/tmp -o iocharset=koi8-r,ro,showexec,session=0
не работает.

---

---

Comment 1 Bug Reporter 2002-03-07 19:21:01 MSK
Will be fixed in 2.4.18-alt2, here is the patch (replace with it linux-2.4.6-iso9660opt.patch
---
--- inode.c.orig        Thu Mar  7 18:41:45 2002                                                                             
+++ inode.c     Thu Mar  7 19:35:03 2002                                                                                     
@@ -295,6 +295,8 @@                                                                                                          
        popt->sbsector=-1;                                                                                                   
        if (!options) return 1;                                                                                              
        for (this_char = strtok(options,\",\"); this_char; this_char = strtok(NULL,\",\")) {                                     
+               if (!this_char)                                                                                              
+                   return 1;                                                                                                
                if (strncmp(this_char,\"norock\",6) == 0) {                                                                    
                  popt->rock = \'n\';                                                                                          
                  continue;                                                                                                  
@@ -340,13 +342,13 @@                                                                                                        
                        else if (!strcmp(value,\"acorn\")) popt->map = \'a\';                                                    
                        else return 0;                                                                                       
                }                                                                                                            
-               if (!strcmp(this_char,\"session\") && value) {                                                                 
+               else if (!strcmp(this_char,\"session\") && value) {                                                            
                        char * vpnt = value;                                                                                 
                        unsigned int ivalue = simple_strtoul(vpnt, &vpnt, 0);                                                
                        if(ivalue < 0 || ivalue >99) return 0;                                                               
                        popt->session=ivalue+1;                                                                              
                }                                                                                                            
-               if (!strcmp(this_char,\"sbsector\") && value) {                                                                
+               else if (!strcmp(this_char,\"sbsector\") && value) {                                                           
                        char * vpnt = value;                                                                                 
                        unsigned int ivalue = simple_strtoul(vpnt, &vpnt, 0);                                                
                        if(ivalue < 0 || ivalue >660*512) return 0;                                                          
@@ -396,7 +398,7 @@                                                                                                          
                    break;                                                                                                   
                  }                                                                                                          
                }                                                                                                            
-               else return 1;                                                                                               
+               else continue;                                                                                               
        }                                                                                                                    
        return 1;                                                                                                            
 }
---
Comment 2 Bug Reporter 2002-03-07 19:21:01 MSK
Will be fixed in 2.4.18-alt2, here is the patch (replace with it linux-2.4.6-iso9660opt.patch
---
--- inode.c.orig        Thu Mar  7 18:41:45 2002                                                                             
+++ inode.c     Thu Mar  7 19:35:03 2002                                                                                     
@@ -295,6 +295,8 @@                                                                                                          
        popt->sbsector=-1;                                                                                                   
        if (!options) return 1;                                                                                              
        for (this_char = strtok(options,\",\"); this_char; this_char = strtok(NULL,\",\")) {                                     
+               if (!this_char)                                                                                              
+                   return 1;                                                                                                
                if (strncmp(this_char,\"norock\",6) == 0) {                                                                    
                  popt->rock = \'n\';                                                                                          
                  continue;                                                                                                  
@@ -340,13 +342,13 @@                                                                                                        
                        else if (!strcmp(value,\"acorn\")) popt->map = \'a\';                                                    
                        else return 0;                                                                                       
                }                                                                                                            
-               if (!strcmp(this_char,\"session\") && value) {                                                                 
+               else if (!strcmp(this_char,\"session\") && value) {                                                            
                        char * vpnt = value;                                                                                 
                        unsigned int ivalue = simple_strtoul(vpnt, &vpnt, 0);                                                
                        if(ivalue < 0 || ivalue >99) return 0;                                                               
                        popt->session=ivalue+1;                                                                              
                }                                                                                                            
-               if (!strcmp(this_char,\"sbsector\") && value) {                                                                
+               else if (!strcmp(this_char,\"sbsector\") && value) {                                                           
                        char * vpnt = value;                                                                                 
                        unsigned int ivalue = simple_strtoul(vpnt, &vpnt, 0);                                                
                        if(ivalue < 0 || ivalue >660*512) return 0;                                                          
@@ -396,7 +398,7 @@                                                                                                          
                    break;                                                                                                   
                  }                                                                                                          
                }                                                                                                            
-               else return 1;                                                                                               
+               else continue;                                                                                               
        }                                                                                                                    
        return 1;                                                                                                            
 }
---