/* * $Id: main.c,v 1.1 2006-12-17 12:33:31 bacon Exp $ */ #include #include #include #include #include #include #include #if defined(ASE_CHAR_IS_WCHAR) && defined(__unix) int main (int argc, char* argv[]/*, char** envp*/) { int i, ret; ase_char_t** v; setlocale (LC_ALL, ""); v = (ase_char_t**) malloc (argc * ASE_SIZEOF(ase_char_t*)); if (v == NULL) return -1; for (i = 0; i < argc; i++) v[i] = NULL; for (i = 0; i < argc; i++) { ase_size_t n, len, rem; char* p = argv[i]; len = 0; rem = strlen (p); while (*p != '\0') { int x = mblen (p, rem); if (x == -1) { ret = -1; goto exit_main; } if (x == 0) break; p += x; rem -= x; len++; } v[i] = (ase_char_t*) malloc ( (len + 1) * ASE_SIZEOF(ase_char_t)); if (v[i] == NULL) { ret = -1; goto exit_main; } n = mbstowcs (v[i], argv[i], len); if (n == (size_t)-1) { /* error */ return -1; } if (n == len) v[i][len] = ASE_T('\0'); } for (i = 0; i < argc; i++) { printf ("[%ls]\n", v[i]); } /* TODO: envp... */ //ret = _tmain (argc, v, NULL); exit_main: for (i = 0; i < argc; i++) { if (v[i] != NULL) free (v[i]); } free (v); return ret; } #endif