* Bug #10546 fixed - Help of fileinfo had to be updated. 04/11004/4
Charlotte HECQUET [Tue, 26 Mar 2013 08:43:40 +0000 (09:43 +0100)]
Change-Id: Ie3a4a7310779ec465b4a95f4ba03dcde151d4c0a

scilab/CHANGES_5.4.X
scilab/modules/fileio/help/en_US/fileinfo.xml

index b184155..b74dc75 100644 (file)
@@ -293,6 +293,8 @@ Bug fixes
 * Bug #10415 fixed - Removing a session line in history caused the removal
                      of the session node in the history browser.
 
+* Bug #10546 fixed - Help of fileinfo had to be updated.
+
 * Bug #10606 fixed - unix_g did not return stdout in somes cases.
 
 * Bug #10661 fixed - xmltopdf & xmltopdf were failing in the binary version.
index e935a07..dc58fbe 100644 (file)
             permissions for the user who owns the file: read (4), write (2), and
             execute (1); the third selects permissions for other users in the file's
             group, with the same values; and the fourth for other users not in the
-            file's group, with the same values.
+            file's group, with the same values. 
+        </para>
+        <para>
+            So, to check permissions, it is necessary to use masks. Let us take an example:
+            In octal, x(2)=1664, so first digit corresponds to sticky attributes. The second
+            indicates that file owner has permission of writing and reading. It is the same
+            for other users in the file's group. Finally, others users has just right to read.
+            To apply a mask, it is simpler to look at this octal in binary. 
+            So: <varname>x</varname>(2)= 1 110 110 100.
+            To check if the owner has write permission, we must take a look at the second triplet: 110 
+            and compare it with write permission 010. So, the operation is: 110 000 000 &amp; 010 000 000.
+            If result is not null (it is the case here), owner has write permission.
         </para>
     </refsection>
     <refsection>
@@ -168,19 +179,24 @@ dec2oct(w(2))
 // file date
 getdate(w(6))
 
-// Checks write permission on a file
-w = fileinfo(SCI+'/etc/scilab.start')
-
+// Permissions
 S_IWRITE = 128; // mask write permission
 S_IEXEC = 64; // mask exec permission
 S_IREAD = 256; // mask read permission
 S_IFCHR = 8192; // mask directory permission
 
+// Checks write permission
 if ( bitand( w(2), S_IWRITE ) <> 0) then
  disp('WRITE PERMISSION on this file.');
 else
  disp('NO WRITE PERMISSION on this file.');
 end
+// Checks read permission
+if ( bitand( w(2), S_IREAD ) <> 0) then
+ disp('READ PERMISSION on this file.');
+else
+ disp('NO READ PERMISSION on this file.');
+end
 
 FILES = [SCI;SCIHOME;'not_exist_file';TMPDIR]
 [X,ERRS] = fileinfo(FILES)