Bug #9798 fixed - .quit script of atoms modules were not evaluated when leaving Scilab.
[scilab.git] / scilab / modules / atoms / macros / atomsQuit.sci
1 // Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
2 // Copyright (C) 2012 - DIGITEO - Allan CORNET
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 // Call .quit file of loaded modules
11
12 function result = atomsQuit()
13
14   result = %T;
15
16   // Load Atoms Internals lib if it's not already loaded
17   // =========================================================================
18   if ~ exists("atomsinternalslib") then
19     load("SCI/modules/atoms/macros/atoms_internals/lib");
20   end
21
22   // If the autoload system is disabled, no need to continue
23   // =========================================================================
24   if atomsGetConfig("autoload") == "False" then
25     return;
26   end
27
28   atomsModulesLoaded = atomsGetLoaded();
29   sizeLoaded = size(atomsModulesLoaded);
30   for i = 1:sizeLoaded(1)
31
32     this_package_name = atomsModulesLoaded(i, 1);
33     this_package_path = atomsModulesLoaded(i, 4);
34     this_package_version = atomsModulesLoaded(i, 2);
35
36     if ~isempty(this_package_path) then
37       if isdir(this_package_path) then
38         moduleLoadedFullFilename = fullfile(this_package_path, "unloader.sce");
39         if isfile(moduleLoadedFullFilename) then
40           if exec(moduleLoadedFullFilename, "errcatch") <> 0 then
41             txt = msprintf(gettext("%s: An error occurred while unloading ''%s-%s'':\n"), "atomsQuit", this_package_name, this_package_version);
42             warning(txt);
43             result = %F;
44           end
45         end
46       end
47     end
48   end
49 endfunction