GPL + CeCILL Header change
[scilab.git] / scilab / modules / windows_tools / src / c / scilab_windows / ConvertSlash.c
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) 2008 - 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  * === LICENSE_END ===
14  *
15  */
16 /*--------------------------------------------------------------------------*/
17 #include <string.h>
18 #include "BOOL.h"
19 #include "dynlib_scilab_windows.h"
20 /*--------------------------------------------------------------------------*/
21 #define UNIX_SEPATATOR '/'
22 #define WINDOWS_SEPATATOR '\\'
23 /*--------------------------------------------------------------------------*/
24 static BOOL convertSlash(char *path_in, char *path_out, BOOL slashToAntislash);
25 /*--------------------------------------------------------------------------*/
26 SCILAB_WINDOWS_IMPEXP BOOL slashToAntislash(char *pathunix, char *pathwindows)
27 {
28     return convertSlash(pathunix, pathwindows, TRUE);
29 }
30 /*--------------------------------------------------------------------------*/
31 SCILAB_WINDOWS_IMPEXP BOOL AntislashToSlash(char *pathwindows, char *pathunix)
32 {
33     return convertSlash(pathwindows, pathunix, FALSE);
34 }
35 /*--------------------------------------------------------------------------*/
36 static BOOL convertSlash(char *path_in, char *path_out, BOOL slashToAntislash)
37 {
38     BOOL bOK = FALSE;
39     if ( (path_in) && (path_out) )
40     {
41         int i = 0;
42         int len_path_out = 0;
43         strcpy(path_out, path_in);
44         len_path_out = (int)strlen(path_out);
45
46         for (i = 0; i < len_path_out; i++)
47         {
48             if ( slashToAntislash )
49             {
50                 if (path_in[i] == UNIX_SEPATATOR)
51                 {
52                     path_out[i] = WINDOWS_SEPATATOR;
53                     bOK = TRUE;
54                 }
55             }
56             else
57             {
58                 if (path_in[i] == WINDOWS_SEPATATOR)
59                 {
60                     path_out[i] = UNIX_SEPATATOR;
61                     bOK = TRUE;
62                 }
63             }
64         }
65     }
66     else
67     {
68         return FALSE;
69     }
70
71     return bOK;
72 }
73 /*--------------------------------------------------------------------------*/