Bug 438

Summary: Options for isofs does not recognized after \'iocharset\'
Product: Sisyphus Reporter: Vitaly A. Ostanin <vyt>
Component: kernel24-upAssignee: Peter 'Nidd' Novodvorsky <nidd>
Status: CLOSED FIXED QA Contact:
Severity: minor    
Priority: P4    
Version: unstable   
Hardware: all   
OS: Linux   

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-&gt;sbsector=-1;                                                                                                   
        if (!options) return 1;                                                                                              
        for (this_char = strtok(options,\&quot;,\&quot;); this_char; this_char = strtok(NULL,\&quot;,\&quot;)) {                                     
+               if (!this_char)                                                                                              
+                   return 1;                                                                                                
                if (strncmp(this_char,\&quot;norock\&quot;,6) == 0) {                                                                    
                  popt-&gt;rock = \'n\';                                                                                          
                  continue;                                                                                                  
@@ -340,13 +342,13 @@                                                                                                        
                        else if (!strcmp(value,\&quot;acorn\&quot;)) popt-&gt;map = \'a\';                                                    
                        else return 0;                                                                                       
                }                                                                                                            
-               if (!strcmp(this_char,\&quot;session\&quot;) &amp;&amp; value) {                                                                 
+               else if (!strcmp(this_char,\&quot;session\&quot;) &amp;&amp; value) {                                                            
                        char * vpnt = value;                                                                                 
                        unsigned int ivalue = simple_strtoul(vpnt, &amp;vpnt, 0);                                                
                        if(ivalue &lt; 0 || ivalue &gt;99) return 0;                                                               
                        popt-&gt;session=ivalue+1;                                                                              
                }                                                                                                            
-               if (!strcmp(this_char,\&quot;sbsector\&quot;) &amp;&amp; value) {                                                                
+               else if (!strcmp(this_char,\&quot;sbsector\&quot;) &amp;&amp; value) {                                                           
                        char * vpnt = value;                                                                                 
                        unsigned int ivalue = simple_strtoul(vpnt, &amp;vpnt, 0);                                                
                        if(ivalue &lt; 0 || ivalue &gt;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-&gt;sbsector=-1;                                                                                                   
        if (!options) return 1;                                                                                              
        for (this_char = strtok(options,\&quot;,\&quot;); this_char; this_char = strtok(NULL,\&quot;,\&quot;)) {                                     
+               if (!this_char)                                                                                              
+                   return 1;                                                                                                
                if (strncmp(this_char,\&quot;norock\&quot;,6) == 0) {                                                                    
                  popt-&gt;rock = \'n\';                                                                                          
                  continue;                                                                                                  
@@ -340,13 +342,13 @@                                                                                                        
                        else if (!strcmp(value,\&quot;acorn\&quot;)) popt-&gt;map = \'a\';                                                    
                        else return 0;                                                                                       
                }                                                                                                            
-               if (!strcmp(this_char,\&quot;session\&quot;) &amp;&amp; value) {                                                                 
+               else if (!strcmp(this_char,\&quot;session\&quot;) &amp;&amp; value) {                                                            
                        char * vpnt = value;                                                                                 
                        unsigned int ivalue = simple_strtoul(vpnt, &amp;vpnt, 0);                                                
                        if(ivalue &lt; 0 || ivalue &gt;99) return 0;                                                               
                        popt-&gt;session=ivalue+1;                                                                              
                }                                                                                                            
-               if (!strcmp(this_char,\&quot;sbsector\&quot;) &amp;&amp; value) {                                                                
+               else if (!strcmp(this_char,\&quot;sbsector\&quot;) &amp;&amp; value) {                                                           
                        char * vpnt = value;                                                                                 
                        unsigned int ivalue = simple_strtoul(vpnt, &amp;vpnt, 0);                                                
                        if(ivalue &lt; 0 || ivalue &gt;660*512) return 0;                                                          
@@ -396,7 +398,7 @@                                                                                                          
                    break;                                                                                                   
                  }                                                                                                          
                }                                                                                                            
-               else return 1;                                                                                               
+               else continue;                                                                                               
        }                                                                                                                    
        return 1;                                                                                                            
 }
---