wcstod no more convert d and D characters
[scilab.git] / scilab / modules / string / src / c / stringsstrrev.c
1 /*
2  * Scilab ( http://www.scilab.org/ ) - This file is part of Scilab
3  * Copyright (C) INRIA - Allan CORNET
4  * Copyright (C) DIGITEO - 2009 - Allan CORNET
5  *
6  * Copyright (C) 2012 - 2016 - Scilab Enterprises
7  *
8  * This file is hereby licensed under the terms of the GNU GPL v2.0,
9  * pursuant to article 5.3.4 of the CeCILL v.2.1.
10  * This file was originally licensed under the terms of the CeCILL v2.1,
11  * and continues to be available under such terms.
12  * For more information, see the COPYING file which you should have received
13  * along with this program.
14  *
15  */
16
17 /*----------------------------------------------------------------------------*/
18 #include <string.h>
19 #include <stdio.h>
20 #include "stringsstrrev.h"
21 #include "freeArrayOfString.h"
22 #include "sci_malloc.h"
23 #include "os_string.h"
24 /*----------------------------------------------------------------------------*/
25 wchar_t **strings_strrev(wchar_t **Input_strings, int Dim_Input_strings)
26 {
27     wchar_t **Output_strings = NULL;
28     if (Input_strings)
29     {
30         Output_strings = (wchar_t **)MALLOC(sizeof(wchar_t*) * Dim_Input_strings);
31         if (Output_strings)
32         {
33             int i = 0;
34             for (i = 0; i < Dim_Input_strings; i++)
35             {
36                 Output_strings[i] = scistrrev(Input_strings[i]);
37                 if (Output_strings[i] == NULL)
38                 {
39                     freeArrayOfWideString(Output_strings, i);
40                     return NULL;
41                 }
42             }
43         }
44     }
45     return Output_strings;
46 }
47 /*----------------------------------------------------------------------------*/
48 wchar_t* scistrrev(wchar_t* str)
49 {
50     wchar_t *revstr = NULL;
51     if (str)
52     {
53 #ifdef _MSC_VER
54         revstr = _wcsrev(os_wcsdup(str));
55 #else
56         int iLen = 0;
57         int j = 0;
58
59         iLen = (int)wcslen(str);
60         revstr = (wchar_t*)MALLOC((iLen + 1) * sizeof(wchar_t));
61         /* copy character by character to reverse string */
62         for (j = 0 ; j < iLen ; j++)
63         {
64             revstr[iLen - j - 1] = str[j];
65         }
66         revstr[iLen] = '\0';
67 #endif
68     }
69     return revstr;
70 }
71 /*----------------------------------------------------------------------------*/