Merge remote-tracking branch 'origin/master' into windows
[scilab.git] / scilab / modules / core / sci_gateway / cpp / sci_sciargs.cpp
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2006 - INRIA Allan CORNET
4  * Copyright (C) 2011 - DIGITEO - Antoine ELIAS
5  *
6  * Copyright (C) 2012 - 2016 - Scilab Enterprises
7  *
8  * This file is hereby licensed under the terms of the GNU GPL v2.0,
9  * pursuant to article 5.3.4 of the CeCILL v.2.1.
10  * This file was originally licensed under the terms of the CeCILL v2.1,
11  * and continues to be available under such terms.
12  * For more information, see the COPYING file which you should have received
13  * along with this program.
14  *
15  */
16
17 #include "core_gw.hxx"
18 #include "function.hxx"
19 #include "string.hxx"
20 #include "configvariable.hxx"
21
22 extern "C"
23 {
24 #include "sci_malloc.h"
25 #include "localization.h"
26 #include "Scierror.h"
27 #include "freeArrayOfString.h"
28 }
29 /*--------------------------------------------------------------------------*/
30 types::Function::ReturnValue sci_sciargs(types::typed_list &in, int _iRetCount, types::typed_list &out)
31 {
32     int iCount = 0;
33     if (in.size() != 0)
34     {
35         Scierror(77, _("%s: Wrong number of input argument(s): %d expected.\n"), "sciargs", 0);
36         return types::Function::Error;
37     }
38
39     char** pstCmdLineArgs = ConfigVariable::getCommandLineArgs(&iCount);
40
41     if (iCount == 0)
42     {
43         // call_scilab
44         out.push_back(new types::String(""));
45         freeArrayOfString(pstCmdLineArgs, iCount);
46         return types::Function::OK;
47     }
48
49     types::String* pS = new types::String(iCount, 1);
50     pS->set(pstCmdLineArgs);
51     out.push_back(pS);
52     freeArrayOfString(pstCmdLineArgs, iCount);
53     return types::Function::OK;
54 }
55 /*--------------------------------------------------------------------------*/