a836276fafca3b65ac8500b1f200260b46fbcfb8
[scilab.git] / scilab / modules / jvm / sci_gateway / cpp / sci_system_getproperty.cpp
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) INRIA - Allan CORNET
4  * Copyright (C) 2010 - DIGITEO - Antoine ELIAS
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 #include "funcmanager.hxx"
15 #include "jvm_gw.hxx"
16 #include "function.hxx"
17 #include "string.hxx"
18
19 extern "C"
20 {
21 #include <string.h>
22 #include "system_getproperty.h"
23 #include "Scierror.h"
24 #include "localization.h"
25 #include "sci_mode.h"
26 }
27 /*--------------------------------------------------------------------------*/
28
29 using namespace types;
30
31 Function::ReturnValue sci_system_getproperty(typed_list &in, int _piRetCount, typed_list &out)
32 {
33     if (in.size() != 1)
34     {
35         Scierror(999, _("%s: Wrong number of input arguments: at least %d expected.\n"), "system_getproperty", 1);
36         return Function::Error;
37     }
38
39     if (in[0]->isString() == false || in[0]->getAs<types::String>()->getSize() != 1)
40     {
41         Scierror(999, _("%s: Wrong type for input argument #%d: A string expected.\n"), "system_getproperty" , 1);
42         return Function::Error;
43     }
44
45     if (getScilabMode() == SCILAB_NWNI)
46     {
47         Scierror(999, _("JVM interface disabled in -nogui or -nwni modes.\n"));
48         return Function::Error;
49     }
50
51     char* pstProperty   = wide_string_to_UTF8(in[0]->getAs<types::String>()->get(0));
52     char* pstValue      = system_getproperty(pstProperty, "unknown");
53     String* pS          = new String(pstValue);
54     out.push_back(pS);
55
56     return Function::OK;
57     //Rhs = Max(Rhs,0);
58     //CheckRhs(1,1);
59     //CheckLhs(0,1);
60
61     //if ( GetType(1) == sci_strings )
62     //{
63     //  static int m1,n1=0,l1=0;
64     //  char *propertyName = NULL;
65     //  char *propertyValue = NULL;
66
67     //  GetRhsVar(1,STRING_DATATYPE,&m1,&n1,&l1);
68     //  propertyName=cstk(l1);
69     //  propertyValue=system_getproperty(propertyName,"unknown");
70
71     //  n1=1;
72     //  CreateVarFromPtr(Rhs+1,STRING_DATATYPE,(m1=(int)strlen(propertyValue), &m1),&n1,&propertyValue);
73     //  LhsVar(1)=Rhs+1;
74     //  C2F(putlhsvar)();
75     //  if (propertyValue) {FREE(propertyValue);propertyValue=NULL;}
76     //}
77     //else
78     //{
79     //  Scierror(999,_("%s: Wrong type for input argument #%d: String expected.\n"),fname, 1);
80     //  return 0;
81     //}
82     //return 0;
83 }
84
85 /*--------------------------------------------------------------------------*/
86