cosmetic, rename functions
[scilab.git] / scilab / modules / jvm / sci_gateway / c / sci_javaclasspath.c
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) INRIA - Allan CORNET
4  * Copyright (C) DIGITEO - 2011 - Bruno JOFRET
5  *
6  * This file must be used under the terms of the CeCILL.
7  * This source file is licensed as described in the file COPYING, which
8  * you should have received as part of this distribution.  The terms
9  * are also available at
10  * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
11  *
12  */
13
14 /*--------------------------------------------------------------------------*/
15 #include "gw_jvm.h"
16 #include "MALLOC.h"
17 #include "Scierror.h"
18 #include "addToClasspath.h"
19 #include "getClasspath.h"
20 #include "localization.h"
21 #include "freeArrayOfString.h"
22 #include "api_scilab.h"
23 /*--------------------------------------------------------------------------*/
24 int sci_javaclasspath(char *fname, void* pvApiCtx)
25 {
26     int *piAddressVarOne = NULL;
27     int iType = 0;
28     SciErr sciErr;
29
30     //Rhs = Max(Rhs,0);
31     CheckRhs(0,1);
32     CheckLhs(0,1);
33
34     if (Rhs == 0)
35     {
36         int nbRow=0;
37         int nbCol=1;
38         char **Strings=NULL;
39
40         Strings = getClasspath(&nbRow);
41         createMatrixOfString(pvApiCtx, Rhs+1, nbRow, nbCol, Strings);
42
43         LhsVar(1) = Rhs+1;
44         PutLhsVar();
45         freeArrayOfString(Strings, nbRow * nbCol);
46     }
47     else
48     {
49         sciErr = getVarAddressFromPosition(pvApiCtx, 1, &piAddressVarOne);
50         if(sciErr.iErr)
51         {
52             printError(&sciErr, 0);
53             Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
54             return 0;
55         }
56
57         sciErr = getVarType(pvApiCtx, piAddressVarOne, &iType);
58         if(sciErr.iErr)
59         {
60             printError(&sciErr, 0);
61             Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
62             return 0;
63         }
64
65         if ( iType == sci_strings )
66         {
67             char **pStVarOne = NULL;
68             int *lenStVarOne = NULL;
69             static int n1 = 0,m1 = 0;
70             int i = 0;
71
72             /* get dimensions */
73             sciErr = getMatrixOfString(pvApiCtx, piAddressVarOne, &m1, &n1, lenStVarOne, pStVarOne);
74             if(sciErr.iErr)
75             {
76                 printError(&sciErr, 0);
77                 Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
78                 return 0;
79             }
80
81             lenStVarOne = (int*)MALLOC(sizeof(int)*(m1 * n1));
82             if (lenStVarOne == NULL)
83             {
84                 Scierror(999,_("%s: No more memory.\n"), fname);
85                 return 0;
86             }
87
88             /* get lengths */
89             sciErr = getMatrixOfString(pvApiCtx, piAddressVarOne, &m1, &n1, lenStVarOne, pStVarOne);
90             if(sciErr.iErr)
91             {
92                 if (lenStVarOne) { FREE(lenStVarOne); lenStVarOne = NULL;}
93                 printError(&sciErr, 0);
94                 Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
95                 return 0;
96             }
97
98             pStVarOne = (char **)MALLOC(sizeof(char*)*(m1*n1));
99             if (pStVarOne == NULL)
100             {
101                 if (lenStVarOne) { FREE(lenStVarOne); lenStVarOne = NULL;}
102                 Scierror(999,_("%s: No more memory.\n"), fname);
103                 return 0;
104             }
105             for(i = 0; i < m1 * n1; i++)
106             {
107                 pStVarOne[i] = (char*)MALLOC(sizeof(char*) * (lenStVarOne[i] + 1));
108             }
109
110             /* get strings */
111             sciErr = getMatrixOfString(pvApiCtx, piAddressVarOne, &m1, &n1, lenStVarOne, pStVarOne);
112             if(sciErr.iErr)
113             {
114                 freeArrayOfString(pStVarOne, m1 * n1);
115                 if (lenStVarOne) { FREE(lenStVarOne); lenStVarOne = NULL;}
116                 printError(&sciErr, 0);
117                 Scierror(999, _("%s: Can not read input argument #%d.\n"), fname, 1);
118                 return 0;
119             }
120
121             for (i = 0; i<m1*n1 ;i++)
122             {
123                 if (!addToClasspath(pStVarOne[i],STARTUP))
124                 {
125                     Scierror(999,_("%s: Could not add URL to system classloader : %s.\n"),fname,pStVarOne[i]);
126                     freeArrayOfString(pStVarOne, m1 * n1);
127                     return 0;
128                 }
129             }
130             LhsVar(1) = 0;
131             PutLhsVar();
132             freeArrayOfString(pStVarOne, m1 * n1);
133         }
134         else
135         {
136             Scierror(999,_("%s: Wrong type for input argument #%d: String expected.\n"),fname,1);
137         }
138     }
139
140     return 0;
141 }
142 /*--------------------------------------------------------------------------*/