ATOMS: cosmetic
[scilab.git] / scilab / modules / atoms / macros / atoms_internals / atomsToremoveProcess.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2009 - DIGITEO - Pierre MARECHAL <pierre.marechal@scilab.org>
3 //
4 // This file must be used under the terms of the CeCILL.
5 // This source file is licensed as described in the file COPYING, which
6 // you should have received as part of this distribution.  The terms
7 // are also available at
8 // http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
9
10 // Internal function
11
12 // Add toolboxes to the list of packages to remove
13 // This function has an impact on the following files :
14 //  -> ATOMSDIR/toremove.bin
15
16 function atomsToremoveProcess(section)
17         
18         rhs = argn(2);
19         
20         // Check number of input arguments
21         // =========================================================================
22         
23         if rhs > 1 then
24                 error(msprintf(gettext("%s: Wrong number of input argument: at most %d expected.\n"),"atomsToremoveProcess",1));
25         end
26         
27         // Allusers/user management
28         //   - If section is equal to "all" or to True, packages located in both 
29         //     "allusers" and "user" sections will removed.
30         //   - If section is equal to "allusers", only packages located in the
31         //     "allusers" section will be removed.
32         //   - If section is equal to "user" or to False, only packages located in 
33         //     the "user" will be removed
34         // =========================================================================
35         
36         if rhs <= 1 then
37                 
38                 // By default: 
39                 //  → Remove packages located in both "allusers" and "user" sections if
40                 //    we have the write access to SCI directory
41                 //  → Remove only package located in the "user" sections otherwise
42                 
43                 if atomsAUWriteAccess() then
44                         section = "all"; 
45                 else
46                         section = "user";
47                 end
48                 
49         else
50                 
51                 // Process the 2nd input argument : section
52                 // Allusers can be a boolean or equal to "user" or "allusers"
53                 
54                 if type(section) <> 10 then
55                         error(msprintf(gettext("%s: Wrong type for input argument #%d: A boolean or a single string expected.\n"),"atomsToremoveProcess",1));
56                 end
57                 
58                 if and(section<>["user","allusers","all"]) then
59                         error(msprintf(gettext("%s: Wrong value for input argument #%d: ''user'' or ''allusers'' or ''all'' expected.\n"),"atomsToremoveProcess",1));
60                 end
61                 
62                 // Check if we have the write access
63                 if or(section==["all","allusers"]) & ~ atomsAUWriteAccess() then
64                         error(msprintf(gettext("%s: You haven''t write access on this directory : %s.\n"),"atomsToremoveProcess",1,atomsPath("system","allusers")));
65                 end
66         end
67         
68         // Get the toremove matrix
69         // =========================================================================
70         toremove = atomsToremoveList(section)
71         
72         // And now action
73         // =========================================================================
74         for i=1:size(toremove,:)
75                 if atomsIsInstalled([toremove(i,1) toremove(i,2)]) then
76                         atomsRemove([toremove(i,1) toremove(i,2)],section);
77                 end
78         end
79         
80 endfunction