Hello Alexandre, i hope you react on this patch somehow (either by applying it or by writing a comment on wine-devel). I don't like to send this patch a second time like the most patches i have send the last half year. :-( Bye Stefan ChangeLog ------------ let wcmd handle .cmd files like .bat files
--- ../wine/dlls/shell32/shlexec.c Wed Jan 15 23:14:15 2003 +++ dlls/shell32/shlexec.c Fri Mar 21 22:47:39 2003 @@ -264,7 +264,7 @@ /* See if it's a program - if GetProfileString fails, we skip this * section. Actually, if GetProfileString fails, we've probably * got a lot more to worry about than running a program... */ - if (GetProfileStringA("windows", "programs", "exe pif bat com", + if (GetProfileStringA("windows", "programs", "exe pif bat cmd com", buffer, sizeof(buffer)) > 0) { UINT i; --- ../wine/programs/wcmd/wcmdmain.c Wed Mar 5 18:06:36 2003 +++ programs/wcmd/wcmdmain.c Fri Mar 21 22:37:34 2003 @@ -366,9 +366,16 @@ return; } } + if ((strchr (param1, '.') == NULL) || (strstr (param1, ".cmd") != NULL)) { + if (SearchPath (NULL, param1, ".cmd", sizeof(filetorun), filetorun, NULL)) { + WCMD_batch (filetorun, command, 0); + return; + } + } } else { /* Explicit path given */ - if (strstr (param1, ".bat") != NULL) { + if ((strstr (param1, ".bat") != NULL) || + (strstr (param1, ".cmd") != NULL)) { WCMD_batch (param1, command, 0); return; } --- ../wine/programs/wcmd/batch.c Wed Jan 15 23:14:17 2003 +++ programs/wcmd/batch.c Fri Mar 21 22:37:34 2003 @@ -47,15 +47,22 @@ void WCMD_batch (char *file, char *command, int called) { -HANDLE h; +#define WCMD_BATCH_EXT_SIZE 5 + +HANDLE h = INVALID_HANDLE_VALUE; char string[MAXSTRING]; +char extension[][WCMD_BATCH_EXT_SIZE] = {".bat",".cmd"}; +int i; BATCH_CONTEXT *prev_context; + for(i=0; (i<(sizeof(extension)/WCMD_BATCH_EXT_SIZE)) && + (h == INVALID_HANDLE_VALUE); i++) { strcpy (string, file); CharLower (string); - if (strstr (string, ".bat") == NULL) strcat (string, ".bat"); + if (strstr (string, extension[i]) == NULL) strcat (string, extension[i]); h = CreateFile (string, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + } if (h == INVALID_HANDLE_VALUE) { SetLastError (ERROR_FILE_NOT_FOUND); WCMD_print_error ();