de9cb10e37c298ea18ac70a28e88db8a61dcd90b
[scilab.git] / scilab / modules / fileio / src / c / mputl.c
1 /*
2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) 2010 - DIGITEO - Allan CORNET
4 *
5 * This file must be used under the terms of the CeCILL.
6 * This source file is licensed as described in the file COPYING, which
7 * you should have received as part of this distribution.  The terms
8 * are also available at
9 * http://www.cecill.info/licences/Licence_CeCILL_V2.1-en.txt
10 *
11 */
12 /*--------------------------------------------------------------------------*/
13 #include <string.h>
14 #include <stdio.h>
15 #include "mputl.h"
16 #include "filesmanagement.h"
17 #include "sciprint.h"
18 /*--------------------------------------------------------------------------*/
19 #define MPUTL_FORMAT "%s\n"
20 /*--------------------------------------------------------------------------*/
21 mputlError mputl(int fileDescriptor, char **pStrings, int sizeStrings)
22 {
23     FILE *fw = NULL;
24     int i = 0;
25
26     if (pStrings == NULL)
27     {
28         return MPUTL_ERROR;
29     }
30
31     if (fileDescriptor == STDIN_ID)
32     {
33         return MPUTL_INVALID_FILE_DESCRIPTOR;
34     }
35     else if (fileDescriptor == STDOUT_ID)
36     {
37         fw = stdout;
38     }
39     else
40     {
41         fw = GetFileOpenedInScilab(fileDescriptor);
42         if (fw)
43         {
44             int mode = GetFileModeOpenedInScilab(fileDescriptor);
45
46             if ( (mode >= 100) && (mode < 200) )
47             {
48                 return MPUTL_NO_WRITE_RIGHT;
49             }
50         }
51         else
52         {
53             return MPUTL_INVALID_FILE_DESCRIPTOR;
54         }
55     }
56
57     for (i = 0; i < sizeStrings; i++)
58     {
59         if (fw == stdout)
60         {
61             sciprint(MPUTL_FORMAT, pStrings[i]);
62         }
63         else
64         {
65             fprintf(fw, MPUTL_FORMAT, pStrings[i]);
66         }
67     }
68
69     return MPUTL_NO_ERROR;
70 }
71 /*--------------------------------------------------------------------------*/
72