All the useless #include of machine.h have been removed ... some warnings of scicos too
[scilab.git] / scilab / modules / fileio / sci_gateway / c / sci_mfprintf.c
1 /*--------------------------------------------------------------------------*/ 
2 /* INRIA 2006 */
3 /*--------------------------------------------------------------------------*/ 
4 #include "Scierror.h"
5 #include "stack-c.h"
6 #include "do_xxprintf.h"
7 #include "gw_fileio.h"
8 #include "filesmanagement.h"
9 #include "localization.h"
10 /*--------------------------------------------------------------------------*/ 
11 int int_objfprintf(char *fname,unsigned long fname_len)
12 {
13         FILE *f;
14         static int l1, m1, n1,l2,m2,n2,lcount,rval, mx, mk, nk, k;
15         char *ptrFormat=NULL;
16         int i=0;
17         int NumberPercent=0;
18         int param1=0;
19
20         Nbvars = 0;
21         CheckRhs(1,1000);
22         CheckLhs(0,1);
23         if ( Rhs < 2 ) 
24         { 
25                 Scierror(999,_("%s: Wrong number of input arguments: At least %d expected.\n"),fname,2);
26                 return 0;
27         }
28         for (k=3;k<=Rhs;k++) 
29         {
30                 if (VarType(k) !=sci_matrix && VarType(k) !=sci_strings) {OverLoad(k);return 0;}
31         }
32         GetRhsVar(1,MATRIX_OF_INTEGER_DATATYPE,&m1,&n1,&l1); /* file id */
33         GetRhsVar(2,STRING_DATATYPE,&m2,&n2,&l2); /* format */
34         ptrFormat=cstk(l2);
35
36         param1=*istk(l1);
37
38         if ((f= GetFileOpenedInScilab(param1)) == (FILE *)0)
39         {
40                 Scierror(999,_("%s: Wrong file descriptor: %d.\n"),fname,*istk(l1));
41                 return 0;
42         }
43
44         for(i=0;i<(int)strlen(ptrFormat);i++)
45         {
46                 if (ptrFormat[i]=='%') 
47                 {
48                         NumberPercent++;
49                         if (ptrFormat[i+1]=='%') {NumberPercent--;i++;}
50                 }
51         }
52
53         if (NumberPercent<Rhs-2)
54         {
55                 Scierror(999,_("%s: Wrong number of input arguments: %d expected.\n"),fname,NumberPercent+2);
56                 return 0;
57         }
58
59         mx=0;
60         if (Rhs>=3) 
61         {
62                 GetMatrixdims(3,&mx,&nk);
63                 for (k=4;k<=Rhs;k++) 
64                 {
65                         GetMatrixdims(k,&mk,&nk);
66                         mx = Min(mx,mk);
67                 }
68         }
69         lcount=1;
70         if (Rhs == 2) 
71                 rval=do_xxprintf("fprintf",f,cstk(l2),Rhs,2,lcount,(char **)0);
72         else while (1) 
73         {
74                 if ((rval=do_xxprintf("fprintf",f,cstk(l2),Rhs,2,lcount,(char **)0)) < 0) break;
75                 lcount++;
76                 if (lcount>mx) break;
77         }
78         if (rval == RET_BUG) return 0;
79         LhsVar(1)=0; /** No return value **/
80         PutLhsVar();
81         return 0;
82
83 /*--------------------------------------------------------------------------*/