ATOMS: homogenize function's profile
[scilab.git] / scilab / modules / atoms / macros / atoms_internals / atomsGetInstalledStatus.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 // Liste des versions installĂ©e de la toolbox "name"
11
12 function res = atomsGetInstalledStatus(packages,section)
13         
14         rhs = argn(2);
15         res = [];
16         
17         // Check number of input arguments
18         // =========================================================================
19         
20         if rhs < 1 | rhs > 2 then
21                 error(msprintf(gettext("%s: Wrong number of input argument: %d to %d expected.\n"),"atomsGetInstalledStatus",1,2));
22         end
23         
24         // Check input parameters type
25         // =========================================================================
26         
27         if type(packages) <> 10 then
28                 error(msprintf(gettext("%s: Wrong type for input argument #%d: A single string expected.\n"),"atomsGetInstalledStatus",1));
29         end
30         
31         if size(packages(1,:),"*") <> 2 then
32                 error(msprintf(gettext("%s: Wrong size for input argument #%d: mx2 string matrix expected.\n"),"atomsGetInstalledStatus",1));
33         end
34         
35         // Allusers/user management
36         // =========================================================================
37         
38         if rhs < 3 then
39                 section = "all";
40         
41         else
42                 
43                 // Process the 2nd input argument : section
44                 // Allusers can be a boolean or equal to "user" or "allusers"
45                 
46                 if type(section) <> 10 then
47                         error(msprintf(gettext("%s: Wrong type for input argument #%d: A boolean or a single string expected.\n"),"atomsGetInstalledStatus",2));
48                 end
49                 
50                 if and(section<>["user","allusers","all"]) then
51                         error(msprintf(gettext("%s: Wrong value for input argument #%d: ''user'' or ''allusers'' or ''all'' expected.\n"),"atomsGetInstalledStatus",2));
52                 end
53                 
54         end
55         
56         // Get the list of installed packages
57         // =========================================================================
58         installedpackages = atomsGetInstalled(section);
59         
60         // Loop on name
61         // =========================================================================
62         
63         for i=1:size(packages(:,1),"*")
64                 
65                 // Filter on names
66                 packages_filtered = installedpackages( find(installedpackages(:,1) == packages(i,1)) , : );
67                 
68                 // Filter on versions
69                 packages_filtered = packages_filtered( find(packages_filtered(:,2) == packages(i,2)) , : );
70                 
71                 if ~ isempty(packages_filtered) then
72                         res(i) = packages_filtered(1,5);
73                 else
74                         res(i) = "";
75                 end
76                 
77         end
78         
79 endfunction