8037014dcc5f8162b500516a0a2fa3acfd13a434
[scilab.git] / scilab / modules / string / src / c / StringConvert.c
1 /*
2 * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3 * Copyright (C) DIGITEO - 2009
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 "StringConvert.h"
14 /*--------------------------------------------------------------------------*/
15 int StringConvert(char *str)
16 /* changes `\``n` --> `\n` idem for \t and \r */
17 {
18     char *str1;
19     int count = 0;
20     str1 = str;
21
22     while ( *str != 0)
23     {
24         if ( *str == '\\' )
25         {
26             switch ( *(str + 1))
27             {
28                 case 'n' :
29                     *str1 = '\n' ;
30                     str1++;
31                     str += 2;
32                     count++;
33                     break;
34                 case 't' :
35                     *str1 = '\t' ;
36                     str1++;
37                     str += 2;
38                     break;
39                 case 'r' :
40                     *str1 = '\r' ;
41                     str1++;
42                     str += 2;
43                     break;
44                 default :
45                     *str1 = *str;
46                     str1++;
47                     str++;
48                     break;
49             }
50         }
51         else
52         {
53             *str1 = *str;
54             str1++;
55             str++;
56         }
57     }
58     *str1 = '\0';
59     return count;
60 }
61 /*--------------------------------------------------------------------------*/
62 int StringConvertW(wchar_t *str)
63 /* changes `\``n` --> `\n` idem for \t and \r */
64 {
65     wchar_t *str1;
66     int count = 0;
67     str1 = str;
68
69     while ( *str != 0)
70     {
71         if ( *str == L'\\' )
72         {
73             switch ( *(str + 1))
74             {
75                 case L'n' :
76                     *str1 = L'\n' ;
77                     str1++;
78                     str += 2;
79                     count++;
80                     break;
81                 case L't' :
82                     *str1 = L'\t' ;
83                     str1++;
84                     str += 2;
85                     break;
86                 case L'r' :
87                     *str1 = L'\r' ;
88                     str1++;
89                     str += 2;
90                     break;
91                 default :
92                     *str1 = *str;
93                     str1++;
94                     str++;
95                     break;
96             }
97         }
98         else
99         {
100             *str1 = *str;
101             str1++;
102             str++;
103         }
104     }
105     *str1 = L'\0';
106     return count;
107 }
108 /*--------------------------------------------------------------------------*/