Jerome Leclanche : winepath: Add a -0 option to use null character as separator.
Alexandre Julliard
julliard at winehq.org
Tue Aug 24 11:09:26 CDT 2010
Module: wine
Branch: master
Commit: 8c50936d30d6e1a83619f8fb8a273e9ceb9ebe3c
URL: http://source.winehq.org/git/wine.git/?a=commit;h=8c50936d30d6e1a83619f8fb8a273e9ceb9ebe3c
Author: Jerome Leclanche <adys.wh at gmail.com>
Date: Mon Aug 23 15:32:29 2010 +0100
winepath: Add a -0 option to use null character as separator.
---
programs/winepath/winepath.c | 26 ++++++++++++++++++++------
1 files changed, 20 insertions(+), 6 deletions(-)
diff --git a/programs/winepath/winepath.c b/programs/winepath/winepath.c
index 1645ee9..c4a50fb 100644
--- a/programs/winepath/winepath.c
+++ b/programs/winepath/winepath.c
@@ -34,7 +34,8 @@ enum {
SHORTFORMAT = 1,
LONGFORMAT = 2,
UNIXFORMAT = 4,
- WINDOWSFORMAT = 8
+ WINDOWSFORMAT = 8,
+ PRINT0 = 16,
};
static const char progname[] = "winepath";
@@ -53,6 +54,7 @@ static int option(int shortopt, const WCHAR *longopt)
" directory to the long format\n"
" -s, --short converts the long Windows path of an existing file or\n"
" directory to the short format\n"
+ " -0 separate output with \\0 character, instead of a newline\n"
" -h, --help output this help message and exit\n"
" -v, --version output version information and exit\n"
"\n"
@@ -76,6 +78,8 @@ static int option(int shortopt, const WCHAR *longopt)
return UNIXFORMAT;
case 'w':
return WINDOWSFORMAT;
+ case '0':
+ return PRINT0;
}
fprintf(stderr, "%s: invalid option ", progname);
@@ -148,8 +152,18 @@ int wmain(int argc, WCHAR *argv[])
char path[MAX_PATH];
int outputformats;
int i;
+ int separator;
outputformats = parse_options(argv);
+
+ if (outputformats & PRINT0)
+ {
+ separator = '\0';
+ outputformats ^= PRINT0;
+ }
+ else
+ separator = '\n';
+
if (outputformats == 0)
outputformats = UNIXFORMAT;
@@ -181,12 +195,12 @@ int wmain(int argc, WCHAR *argv[])
if (outputformats & LONGFORMAT) {
if (GetLongPathNameW(argv[i], dos_pathW, MAX_PATH))
WideCharToMultiByte(CP_UNIXCP, 0, dos_pathW, -1, path, MAX_PATH, NULL, NULL);
- printf("%s\n", path);
+ printf("%s%c", path, separator);
}
if (outputformats & SHORTFORMAT) {
if (GetShortPathNameW(argv[i], dos_pathW, MAX_PATH))
WideCharToMultiByte(CP_UNIXCP, 0, dos_pathW, -1, path, MAX_PATH, NULL, NULL);
- printf("%s\n", path);
+ printf("%s%c", path, separator);
}
if (outputformats & UNIXFORMAT) {
WCHAR *ntpath, *tail;
@@ -205,11 +219,11 @@ int wmain(int argc, WCHAR *argv[])
if (tail)
{
WideCharToMultiByte(CP_UNIXCP, 0, tail+1, -1, path, MAX_PATH, NULL, NULL);
- printf("%s/%s\n", unix_name, path);
+ printf("%s/%s%c", unix_name, path, separator);
}
else
{
- printf("%s\n", unix_name);
+ printf("%s%c", unix_name, separator);
}
HeapFree( GetProcessHeap(), 0, unix_name );
break;
@@ -257,7 +271,7 @@ int wmain(int argc, WCHAR *argv[])
if ((windows_name = wine_get_dos_file_name_ptr(unix_name)))
{
WideCharToMultiByte(CP_UNIXCP, 0, windows_name, -1, path, MAX_PATH, NULL, NULL);
- printf("%s\n", path);
+ printf("%s%c", path, separator);
HeapFree( GetProcessHeap(), 0, windows_name );
}
else printf( "\n" );
More information about the wine-cvs
mailing list