From f88bda19ded8d3ed7238f7b2144f18c8a2cee399 Mon Sep 17 00:00:00 2001 From: Peter Veenstra Date: Sat, 19 Dec 2009 15:35:15 +0000 Subject: [PATCH] Enhance commandline support for long filenames with images. Add support for ISO/CUE. (dank je ronald) Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@3517 --- src/shell/shell.cpp | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/src/shell/shell.cpp b/src/shell/shell.cpp index dd5108eb..d25edeac 100644 --- a/src/shell/shell.cpp +++ b/src/shell/shell.cpp @@ -373,6 +373,7 @@ public: /* Check for first command being a directory or file */ char buffer[CROSS_LEN]; + char orig[CROSS_LEN]; char cross_filesplit[2] = {CROSS_FILESPLIT , 0}; /* Combining -securemode and no parameter leaves you with a lovely Z:\. */ if ( !control->cmdline->FindCommand(1,line) ) { @@ -405,21 +406,29 @@ public: if (access(buffer,F_OK)) goto nomount; autoexec[12].Install(std::string("MOUNT C \"") + buffer + "\""); autoexec[13].Install("C:"); + /* Save the non modified filename (so boot and imgmount can use it (long filenames, case sensivitive)*/ + strcpy(orig,name); upcase(name); if(strstr(name,".BAT") != 0) { if(secure) autoexec[14].Install("z:\\config.com -securemode"); /* BATch files are called else exit will not work */ autoexec[15].Install(std::string("CALL ") + name); - } else if((strstr(name,".IMG") != 0) || (strstr(name,".IMA") !=0)) { + if(addexit) autoexec[16].Install("exit"); + } else if((strstr(name,".IMG") != 0) || (strstr(name,".IMA") !=0 )) { //No secure mode here as boot is destructive and enabling securemode disables boot /* Boot image files */ - autoexec[15].Install(std::string("BOOT ") + name); + autoexec[15].Install(std::string("BOOT ") + orig); + } else if((strstr(name,".ISO") != 0) || (strstr(name,".CUE") !=0 )) { + if(secure) autoexec[14].Install("z:\\config.com -securemode"); + /* imgmount CD image files */ + autoexec[15].Install(std::string("IMGMOUNT D \"") + orig + std::string("\" -t iso")); + //autoexec[16].Install("D:"); + /* Makes no sense to exit here */ } else { if(secure) autoexec[14].Install("z:\\config.com -securemode"); autoexec[15].Install(name); + if(addexit) autoexec[16].Install("exit"); } - - if(addexit) autoexec[16].Install("exit"); } } nomount: