From fe89021458c470c24e795a3a297ff04f2288432b Mon Sep 17 00:00:00 2001 From: Jason Edmeades Date: Thu, 29 Mar 2007 22:21:04 +0100 Subject: [PATCH] xcopy: Add support for /N (shortname copy). --- programs/xcopy/xcopy.c | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/programs/xcopy/xcopy.c b/programs/xcopy/xcopy.c index 0342d39d5d0..281f812f2c5 100644 --- a/programs/xcopy/xcopy.c +++ b/programs/xcopy/xcopy.c @@ -49,6 +49,7 @@ #define OPT_PAUSE 0x00000040 #define OPT_NOCOPY 0x00000080 #define OPT_NOPROMPT 0x00000100 +#define OPT_SHORTNAME 0x00000200 #define MAXSTRING 8192 @@ -151,6 +152,7 @@ int main (int argc, char *argv[]) case 'W': flags |= OPT_PAUSE; break; case 'T': flags |= OPT_NOCOPY | OPT_RECURSIVE; break; case 'Y': flags |= OPT_NOPROMPT; break; + case 'N': flags |= OPT_SHORTNAME; break; case '-': if (toupper(argvW[0][2])=='Y') flags &= ~OPT_NOPROMPT; break; default: @@ -412,11 +414,19 @@ static int XCOPY_DoCopy(WCHAR *srcstem, WCHAR *srcspec, /* Get the filename information */ lstrcpyW(copyFrom, srcstem); - lstrcatW(copyFrom, finddata->cFileName); + if (flags & OPT_SHORTNAME) { + lstrcatW(copyFrom, finddata->cAlternateFileName); + } else { + lstrcatW(copyFrom, finddata->cFileName); + } lstrcpyW(copyTo, deststem); if (*destspec == 0x00) { - lstrcatW(copyTo, finddata->cFileName); + if (flags & OPT_SHORTNAME) { + lstrcatW(copyTo, finddata->cAlternateFileName); + } else { + lstrcatW(copyTo, finddata->cFileName); + } } else { lstrcatW(copyTo, destspec); }