diff options
author | kwaclaw <kwaclaw> | 2007-04-30 00:50:22 +0000 |
---|---|---|
committer | kwaclaw <kwaclaw> | 2007-04-30 00:50:22 +0000 |
commit | 6263f06deffd877d6431da7f04c742f5f5d38bac (patch) | |
tree | f5041c3fe2768dd23f519509bccef5bba2c9ada7 | |
parent | f7e44ac3a0fa73d4dd18acc018084efeb1d47a75 (diff) | |
download | libexpat-6263f06deffd877d6431da7f04c742f5f5d38bac.tar.gz |
No more search for (back)slashes in the string "STDIN".
Optimized code with regards to use of path delimters on different platforms.
-rwxr-xr-x | xmlwf/xmlwf.c | 21 |
1 files changed, 16 insertions, 5 deletions
diff --git a/xmlwf/xmlwf.c b/xmlwf/xmlwf.c index 4b455d1..82082a7 100755 --- a/xmlwf/xmlwf.c +++ b/xmlwf/xmlwf.c @@ -777,17 +777,28 @@ tmain(int argc, XML_Char **argv) XML_SetProcessingInstructionHandler(parser, nopProcessingInstruction); } else if (outputDir) { + const XML_Char * delim = T("/"); const XML_Char *file = useStdin ? T("STDIN") : argv[i]; - if (tcsrchr(file, T('/'))) - file = tcsrchr(file, T('/')) + 1; + if (!useStdin) { + /* Jump after last (back)slash */ + const XML_Char * lastDelim = tcsrchr(file, delim[0]); + if (lastDelim) + file = lastDelim + 1; #if (defined(WIN32) || defined(__WATCOMC__)) - if (tcsrchr(file, T('\\'))) - file = tcsrchr(file, T('\\')) + 1; + else { + const XML_Char * winDelim = T("\\"); + lastDelim = tcsrchr(file, winDelim[0]); + if (lastDelim) { + file = lastDelim + 1; + delim = winDelim; + } + } #endif + } outName = (XML_Char *)malloc((tcslen(outputDir) + tcslen(file) + 2) * sizeof(XML_Char)); tcscpy(outName, outputDir); - tcscat(outName, T("/")); + tcscat(outName, delim); tcscat(outName, file); fp = tfopen(outName, T("wb")); if (!fp) { |