ATOMS: Indent with spaces
[scilab.git] / scilab / modules / atoms / macros / atoms_internals / atomsGetDepParents.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 // Give the list of packages that use this package (identified by its name and version)
13
14 function packages = atomsGetDepParents(package,section)
15
16     rhs      = argn(2);
17     packages = [];
18
19     // Check number of input arguments
20     // =========================================================================
21
22     if rhs < 1 | rhs > 2 then
23         error(msprintf(gettext("%s: Wrong number of input argument: %d to %d expected.\n"),"atomsGetDepParents",1,2));
24     end
25
26     // Check input parameters type
27     // =========================================================================
28
29     if type(package) <> 10 then
30         error(msprintf(gettext("%s: Wrong type for input argument #%d: String array expected.\n"),"atomsGetDepParents",1));
31     end
32
33     if or(size(package) <> [1 2]) then
34         error(msprintf(gettext("%s: Wrong size for input argument #%d: 1x2 string matrix expected.\n"),"atomsGetDepParents",1));
35     end
36
37     // All user management
38     // =========================================================================
39
40     if rhs < 2 then
41         section = "all";
42
43     else
44
45         if type(section) <> 10 then
46             error(msprintf(gettext("%s: Wrong type for input argument #%d: Single string expected.\n"),"atomsGetDepParents",2));
47         end
48
49         if size(section,"*")<>1 then
50             error(msprintf(gettext("%s: Wrong size for input argument #%d: Single string expected.\n"),"atomsGetDepParents",2));
51         end
52
53         if and(section<>["user","allusers","all"]) then
54             error(msprintf(gettext("%s: Wrong value for input argument #%d: ''user'',''allusers'' or ''all'' expected.\n"),"atomsGetDepParents",2));
55         end
56
57     end
58
59     if section == "all" then
60         sections = ["user","allusers"];
61     else
62         sections = section;
63     end
64
65     for i=1:size(sections,"*")
66
67         // Load the installed_deps struct
68         // =========================================================================
69         [ child_deps,parent_deps ] = atomsLoadInstalleddeps(sections(i));
70
71         // If name - version is not a field of the struct, the job is done
72         // =========================================================================
73
74         if ~ isfield(parent_deps,package(1)+" - "+package(2)) then
75             return;
76         end
77
78         // Return the matrix associated with the wanted package (name - version)
79         // =========================================================================
80
81         packages_list = parent_deps(package(1)+" - "+package(2));
82
83         for j=1:size(packages_list,"*")
84             this_package_name    = part(packages_list(j),1:regexp(packages_list(j),"/\s-\s/","o")-1);
85             this_package_version = part(packages_list(j),length(this_package_name)+4:length(packages_list(j)));
86             packages = [ packages ; this_package_name this_package_version sections(i) ];
87         end
88
89     end
90
91 endfunction