Time: fix sci_xpause after eb22dd99
[scilab.git] / scilab / modules / time / sci_gateway / c / sci_xpause.c
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) INRIA - Allan CORNET
4  *
5  * Copyright (C) 2012 - 2016 - Scilab Enterprises
6  *
7  * This file is hereby licensed under the terms of the GNU GPL v2.0,
8  * pursuant to article 5.3.4 of the CeCILL v.2.1.
9  * This file was originally licensed under the terms of the CeCILL v2.1,
10  * and continues to be available under such terms.
11  * For more information, see the COPYING file which you should have received
12  * along with this program.
13  *
14  */
15
16 /*--------------------------------------------------------------------------*/
17 #ifdef _MSC_VER
18 #include <Windows.h>
19 #endif
20 #include "machine.h"
21 #ifdef HAVE_USLEEP
22 #include <unistd.h>
23 #endif
24 #include "gw_time.h"
25 #include "api_scilab.h"
26 #include "sciprint.h"
27 #include "Scierror.h"
28 #include "localization.h"
29 /*--------------------------------------------------------------------------*/
30 int sci_xpause(char *fname, void* pvApiCtx)
31 {
32
33     SciErr sciErr;
34     int m1 = 0, n1 = 0, sec = 0;
35     int * p1_in_address = NULL;
36     double * pDblReal = NULL;
37
38     sciprint(_("%s: Feature %s is obsolete and will be permanently removed in Scilab %s\n"), _("Warning"), fname, "6.1");
39     sciprint(_("%s: Please use %s instead.\n"), _("Warning"), "sleep()");
40
41     CheckLhs(0, 1);
42     CheckRhs(1, 1);
43
44     if (Rhs == 1)
45     {
46         sciErr = getVarAddressFromPosition(pvApiCtx, 1, &p1_in_address);
47         if (sciErr.iErr)
48         {
49             printError(&sciErr, 0);
50             return 0;
51         }
52         sciErr = getMatrixOfDouble(pvApiCtx, p1_in_address, &m1, &n1, &pDblReal);
53         if (sciErr.iErr)
54         {
55             printError(&sciErr, 0);
56             return 0;
57         }
58
59         if (isScalar(pvApiCtx, p1_in_address) == 0)
60         {
61             Scierror(999, _("%s: Wrong type for input argument #%d: A real scalar expected.\n"), fname, 1);
62             return 0;
63         }
64
65         sec = (int)  * pDblReal;
66
67         if (sec <= 0)
68         {
69             Scierror(999, _("%s: Wrong values for input argument #%d: Non-negative integers expected.\n"), fname, 1);
70             return 0;
71         }
72 #ifdef _MSC_VER
73         {
74             int ms = (sec) / 1000; /** time is specified in milliseconds in scilab**/
75             if (ms > 0)
76             {
77                 Sleep(ms);    /* Number of milliseconds to sleep. */
78             }
79         }
80 #else
81         {
82             unsigned useconds;
83             useconds = (unsigned) sec;
84             if (useconds != 0)
85 #ifdef HAVE_USLEEP
86             {
87                 usleep(useconds);
88             }
89 #else
90 #ifdef HAVE_SLEEP
91             {
92                 sleep(useconds);
93             }
94 #endif
95 #endif
96         }
97 #endif
98     }
99
100     LhsVar(1) = 0;
101     PutLhsVar();
102
103     return 0;
104 }
105 /*--------------------------------------------------------------------------*/
106