dffe031542034ac6731a85234484c8dd6f21145f
[scilab.git] / scilab / modules / atoms / macros / atomsIsInstalled.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 // End user function
11
12 // Returns TRUE if a package is installed, FALSE otherwise
13
14 // Input parameters :
15 //   name     : matrix of strings
16 //   version  : matrix of strings
17 //   allusers : boolean
18
19 // Output parameters :
20 //   res      : matrix of boolean
21
22 function res = atomsIsInstalled(name,version,allusers)
23         
24         rhs           = argn(2);
25         res           = [];
26         installed     = []; // Column vector that contain user repositories
27         
28         // Check number of input arguments
29         // =========================================================================
30         
31         if rhs < 1 | rhs > 3 then
32                 error(msprintf(gettext("%s: Wrong number of input argument: %d to %d expected.\n"),"atomsIsInstalled",1,3));
33         end
34         
35         // Check input parameters type
36         // =========================================================================
37         
38         if type(name) <> 10 then
39                 error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"),"atomsIsInstalled",1));
40         end
41         
42         if rhs>1 &  (~isempty(version)) & type(version)<>10  then
43                 error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"),"atomsIsInstalled",2));
44         end
45         
46         // name and version must have the same size
47         // =========================================================================
48         
49         if rhs>1 & version<>[] & or(size(name)<>size(version)) then
50                 error(msprintf(gettext("%s: Incompatible input arguments #%d and #%d: Same sizes expected.\n"),"atomsIsInstalled",1,2));
51         end
52         
53         // Value of version if not precised
54         // =========================================================================
55         
56         if rhs < 2 then
57                 version = [];
58         end
59         
60         // allusers management
61         // =========================================================================
62         
63         if rhs < 3 then
64                 allusers = %T;
65         end
66         
67         // Get the list of installed packages
68         // =========================================================================
69         packages = atomsGetInstalled(allusers);
70         
71         
72         // Loop on name
73         // =========================================================================
74         
75         for i=1:size(name,"*")
76                 
77                 if isempty(version) then
78                         // Just check the name
79                         res(i) = or(packages(:,1) == name(i));
80                 
81                 else
82                         // Filter on names
83                         packages_version = packages( find(packages(:,1) == name(i)) , 2 );
84                         
85                         // Check if the wnated version is present$
86                         res(i) = or(packages_version == version(i) );
87                 end
88                 
89         end
90         
91         // Reshape the matrix
92         // =========================================================================
93         res = matrix(res,size(name) );
94         
95 endfunction