From 578b93841c661f9069659adc5b2b865f6469c4c2 Mon Sep 17 00:00:00 2001 From: George Rhoten Date: Tue, 15 Mar 2005 06:06:11 +0000 Subject: [PATCH] ICU-4439 Fix / and \ usage on Windows. X-SVN-Rev: 17342 --- icu4c/source/tools/genrb/derb.c | 42 +++++++++++++++++++++------------ 1 file changed, 27 insertions(+), 15 deletions(-) diff --git a/icu4c/source/tools/genrb/derb.c b/icu4c/source/tools/genrb/derb.c index ebba7f6fa2c..4bf033d886c 100644 --- a/icu4c/source/tools/genrb/derb.c +++ b/icu4c/source/tools/genrb/derb.c @@ -94,9 +94,9 @@ main(int argc, char* argv[]) { /* Get the name of tool. */ pname = uprv_strrchr(*argv, U_FILE_SEP_CHAR); -#ifdef U_WINDOWS +#if U_FILE_SEP_CHAR != U_FILE_ALT_SEP_CHAR if (!pname) { - pname = uprv_strrchr(*argv, '/'); + pname = uprv_strrchr(*argv, U_FILE_ALT_SEP_CHAR); } #endif if (!pname) { @@ -208,14 +208,20 @@ main(int argc, char* argv[]) { } p = uprv_strrchr(arg, U_FILE_SEP_CHAR); +#if U_FILE_SEP_CHAR != U_FILE_ALT_SEP_CHAR + if (p == NULL) { + p = uprv_strrchr(arg, U_FILE_ALT_SEP_CHAR); + } +#endif if (!p) { p = arg; } else { - p++; + p++; } q = uprv_strrchr(p, '.'); if (!q) { - for (q = p; *q; ++q); + for (q = p; *q; ++q) + ; } uprv_strncpy(locale, p, q - p); locale[q - p] = 0; @@ -225,19 +231,24 @@ main(int argc, char* argv[]) { #ifdef U_WINDOWS if (!absfilename) { absfilename = (uprv_strlen(arg) > 2 && isalpha(arg[0]) - && arg[1] == ':' && arg[2] == U_FILE_SEP_CHAR); + && arg[1] == ':' && arg[2] == U_FILE_SEP_CHAR); } #endif if (absfilename) { thename = arg; } else { - q = uprv_strrchr(arg, U_FILE_SEP_CHAR); - uprv_strcpy(infile, inputDir); - if(q != NULL) { - uprv_strcat(infile, U_FILE_SEP_STRING), - strncat(infile, arg, q-arg); - } - thename = infile; + q = uprv_strrchr(arg, U_FILE_SEP_CHAR); +#if U_FILE_SEP_CHAR != U_FILE_ALT_SEP_CHAR + if (q == NULL) { + q = uprv_strrchr(arg, U_FILE_ALT_SEP_CHAR); + } +#endif + uprv_strcpy(infile, inputDir); + if(q != NULL) { + uprv_strcat(infile, U_FILE_SEP_STRING); + strncat(infile, arg, q-arg); + } + thename = infile; } } status = U_ZERO_ERROR; @@ -255,9 +266,9 @@ main(int argc, char* argv[]) { if (!locale || !tostdout) { filename = uprv_strrchr(arg, U_FILE_SEP_CHAR); -#ifdef U_WINDOWS +#if U_FILE_SEP_CHAR != U_FILE_ALT_SEP_CHAR if (!filename) { - filename = uprv_strrchr(arg, '/'); + filename = uprv_strrchr(arg, U_FILE_ALT_SEP_CHAR); } #endif if (!filename) { @@ -336,7 +347,8 @@ main(int argc, char* argv[]) { if (out != stdout) { fclose(out); } - } else { + } + else { reportError(pname, &status, "opening resource file"); }