1
0
Fork 0

Some more OS/2 changes.

Imported-from: https://svn.code.sf.net/p/dosbox/code-0/dosbox/trunk@2394
This commit is contained in:
Peter Veenstra 2005-11-28 16:12:31 +00:00
parent 2c3ae52a79
commit 6c03551b38
2 changed files with 35 additions and 4 deletions

View file

@ -16,7 +16,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/* $Id: dos_programs.cpp,v 1.46 2005-11-24 18:09:47 qbix79 Exp $ */
/* $Id: dos_programs.cpp,v 1.47 2005-11-28 16:12:30 qbix79 Exp $ */
#include <stdlib.h>
#include <string.h>
@ -168,6 +168,7 @@ public:
APIRET rc = DosOpen((unsigned char*)temp_line.c_str(), &cdrom_fd, &ulAction, 0L, FILE_NORMAL, OPEN_ACTION_OPEN_IF_EXISTS,
OPEN_FLAGS_DASD | OPEN_SHARE_DENYNONE | OPEN_ACCESS_READONLY, 0L);
DosClose(cdrom_fd);
if (rc != NO_ERROR && rc != ERROR_NOT_READY)
{
failed = true;
@ -193,9 +194,23 @@ public:
}
/* Not a switch so a normal directory/file */
if (!(test.st_mode & S_IFDIR)) {
#ifdef OS2
HFILE cdrom_fd = 0;
ULONG ulAction = 0;
APIRET rc = DosOpen((unsigned char*)temp_line.c_str(), &cdrom_fd, &ulAction, 0L, FILE_NORMAL, OPEN_ACTION_OPEN_IF_EXISTS,
OPEN_FLAGS_DASD | OPEN_SHARE_DENYNONE | OPEN_ACCESS_READONLY, 0L);
DosClose(cdrom_fd);
if (rc != NO_ERROR && rc != ERROR_NOT_READY) {
WriteOut(MSG_Get("PROGRAM_MOUNT_ERROR_2"),temp_line.c_str());
return;
}
#else
WriteOut(MSG_Get("PROGRAM_MOUNT_ERROR_2"),temp_line.c_str());
return;
#endif
}
if (temp_line[temp_line.size()-1]!=CROSS_FILESPLIT) temp_line+=CROSS_FILESPLIT;
Bit8u bit8size=(Bit8u) sizes[1];
if (type=="cdrom") {
@ -914,7 +929,7 @@ void DOS_SetupPrograms(void) {
"They can be changed in the \033[33mkeymapper\033[0m.\n"
"\n"
"\033[33;1mALT-ENTER\033[0m : Go full screen and back.\n"
"\033[33;1mPAUSE\033[0m : Pause DOSBox.\n"
"\033[33;1mCTRL-PAUSE\033[0m : Pause DOSBox.\n"
"\033[33;1mCTRL-F1\033[0m : Start the \033[33mkeymapper\033[0m.\n"
"\033[33;1mCTRL-F4\033[0m : Update directory cache for all drives! Swap mounted disk-image.\n"
"\033[33;1mCTRL-F5\033[0m : Save a screenshot.\n"

View file

@ -17,7 +17,7 @@
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*/
/* $Id: drive_cache.cpp,v 1.44 2005-07-19 19:45:31 qbix79 Exp $ */
/* $Id: drive_cache.cpp,v 1.45 2005-11-28 16:12:31 qbix79 Exp $ */
#include "drives.h"
#include "dos_inc.h"
@ -34,6 +34,12 @@
#include <windows.h>
#endif
#if defined (OS2)
#define INCL_DOSERRORS
#define INCL_DOSFILEMGR
#include <os2.h>
#endif
int fileInfoCounter = 0;
bool SortByName(DOS_Drive_Cache::CFileInfo* const &a, DOS_Drive_Cache::CFileInfo* const &b)
@ -155,11 +161,21 @@ void DOS_Drive_Cache::SetBaseDir(const char* baseDir)
ReadDir(id,result);
};
// Get Volume Label
#if defined (WIN32)
#if defined (WIN32) || defined (OS2)
char labellocal[256]={ 0 };
char drive[4] = "C:\\";
drive[0] = basePath[0];
#if defined (WIN32)
if (GetVolumeInformation(drive,labellocal,256,NULL,NULL,NULL,NULL,0)) {
#else // OS2
FSINFO fsinfo;
ULONG drivenumber = drive[0];
if (drivenumber > 26) { // drive letter was lowercase
drivenumber = drive[0] - 'a' + 1;
}
APIRET rc = DosQueryFSInfo(drivenumber, FSIL_VOLSER, &fsinfo, sizeof(FSINFO));
if (rc == NO_ERROR) {
#endif
/* Set label and allow being updated */
SetLabel(labellocal,true);
}