Module: wine Branch: master Commit: e8fa5df394c70214a0c2a53b0ddd360b8dec2c2f URL: http://source.winehq.org/git/wine.git/?a=commit;h=e8fa5df394c70214a0c2a53b0d...
Author: Jason Edmeades us@edmeades.me.uk Date: Fri Feb 23 22:22:03 2007 +0000
cmd.exe: Add %random% special name support.
---
programs/cmd/wcmdmain.c | 14 ++++++++++++-- 1 files changed, 12 insertions(+), 2 deletions(-)
diff --git a/programs/cmd/wcmdmain.c b/programs/cmd/wcmdmain.c index 8380d18..2d5f805 100644 --- a/programs/cmd/wcmdmain.c +++ b/programs/cmd/wcmdmain.c @@ -318,8 +318,8 @@ void WCMD_process_command (char *command) /* Expand environment variables in a batch file %{0-9} first */ /* including support for any ~ modifiers */ /* Additionally: */ - /* Expand the DATE, TIME, CD and ERRORLEVEL special names */ - /* allowing environment variable overrides */ + /* Expand the DATE, TIME, CD, RANDOM and ERRORLEVEL special */ + /* names allowing environment variable overrides */
/* FIXME: Winnt would replace %1%fred%1 with first parm, then */ /* contents of fred, then the digit 1. Would need to remove */ @@ -399,6 +399,16 @@ void WCMD_process_command (char *command) strcpy (p, temp); strcat (p, s);
+ } else if ((CompareString (LOCALE_USER_DEFAULT, + NORM_IGNORECASE | SORT_STRINGSORT, + (p+1), 7, "RANDOM%", -1) == 2) && + (GetEnvironmentVariable("RANDOM", temp, 1) == 0) && + (GetLastError() == ERROR_ENVVAR_NOT_FOUND)) { + sprintf(temp, "%d", rand() % 32768); + s = strdup (p+8); + strcpy (p, temp); + strcat (p, s); + } else { p++; }