split sci_fileio.c and remove C2F
[scilab.git] / scilab / modules / fileio / sci_gateway / c / sci_mseek.c
1 /*
2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) 2006 - INRIA - Allan CORNET
4 * Copyright (C) 2009 - DIGITEO - Allan CORNET
5 * ...
6
7 * This file must be used under the terms of the CeCILL.
8 * This source file is licensed as described in the file COPYING, which
9 * you should have received as part of this distribution.  The terms
10 * are also available at    
11 * http://www.cecill.info/licences/Licence_CeCILL_V2-en.txt
12 *
13 */
14 /*--------------------------------------------------------------------------*/
15 #include "stack-c.h"
16 #include "gw_fileio.h"
17 #include "mseek.h"
18 #include "MALLOC.h"
19 /*--------------------------------------------------------------------------*/
20 #define ALL_FILES_DESCRIPTOR -1
21 /*--------------------------------------------------------------------------*/
22 int sci_mseek(char *fname,unsigned long fname_len)
23 {
24         int m1 = 0, n1 = 0, l1 = 0;
25         int m2 = 0, n2 = 0, l2 = 0;
26         int m3 = 0, n3 = 0, l3 = 0;
27         int err = 0;
28         int fd = ALL_FILES_DESCRIPTOR;
29         char *flag = NULL;
30
31         Nbvars=0;
32         CheckRhs(1,3);
33         CheckLhs(1,1);
34
35         /* @TODO Add check about input type */
36
37         GetRhsVar(1,MATRIX_OF_INTEGER_DATATYPE,&m1,&n1,&l1);
38
39         if ( Rhs >= 2)
40         {
41                 GetRhsVar(2,MATRIX_OF_INTEGER_DATATYPE,&m2,&n2,&l2);
42                 fd = *istk(l2);
43         }
44
45         if ( Rhs >= 3)
46         {
47                 GetRhsVar(3,STRING_DATATYPE,&m3,&n3,&l3);
48                 flag = cstk(l3);
49         }
50         else
51         {
52                 flag = "set";
53         }
54
55         C2F(mseek)(&fd,istk(l1),flag,&err);
56
57         if (err >  0)
58         {
59                 Error(10000);
60                 return 0;
61         }
62
63         LhsVar(1) = 0;
64         PutLhsVar();
65
66         return 0;
67 }
68 /*--------------------------------------------------------------------------*/