VVFAT: Fixed short name genaration in case base name length is > 8.
This commit is contained in:
parent
2990c09fdc
commit
1307853e13
@ -139,9 +139,10 @@ Detailed change log :
|
|||||||
- Bug fix which now closes the cdrom image file when using win32 configuration
|
- Bug fix which now closes the cdrom image file when using win32 configuration
|
||||||
|
|
||||||
- Hard drive / HD image
|
- Hard drive / HD image
|
||||||
- Allows large VHD image files.
|
- Allow large VHD image files.
|
||||||
The size in question doesn't necessarily mean the size of the VHD file on disk. The size is the total
|
The size in question doesn't necessarily mean the size of the VHD file on disk. The size is the total
|
||||||
size of the image emulated. The total size increased from roughly 32gig to a limit of 2TB.
|
size of the image emulated. The total size increased from roughly 32gig to a limit of 2TB.
|
||||||
|
- VVFAT: Fixed short name generation in case base name length is > 8
|
||||||
|
|
||||||
- Floppy drive
|
- Floppy drive
|
||||||
- Allows a choice of multiple FDC Controllers to emulate.
|
- Allows a choice of multiple FDC Controllers to emulate.
|
||||||
|
@ -6,7 +6,7 @@
|
|||||||
// ported from QEMU block driver with some additions (see below)
|
// ported from QEMU block driver with some additions (see below)
|
||||||
//
|
//
|
||||||
// Copyright (c) 2004,2005 Johannes E. Schindelin
|
// Copyright (c) 2004,2005 Johannes E. Schindelin
|
||||||
// Copyright (C) 2010-2023 The Bochs Project
|
// Copyright (C) 2010-2024 The Bochs Project
|
||||||
//
|
//
|
||||||
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
// Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||||
// of this software and associated documentation files (the "Software"), to deal
|
// of this software and associated documentation files (the "Software"), to deal
|
||||||
@ -559,6 +559,7 @@ direntry_t* vvfat_image_t::create_short_and_long_name(
|
|||||||
direntry_t* entry = NULL;
|
direntry_t* entry = NULL;
|
||||||
direntry_t* entry_long = NULL;
|
direntry_t* entry_long = NULL;
|
||||||
char tempfn[BX_PATHNAME_LEN];
|
char tempfn[BX_PATHNAME_LEN];
|
||||||
|
bool shorten = false;
|
||||||
|
|
||||||
if (is_dot) {
|
if (is_dot) {
|
||||||
entry = (direntry_t*)array_get_next(&directory);
|
entry = (direntry_t*)array_get_next(&directory);
|
||||||
@ -579,10 +580,17 @@ direntry_t* vvfat_image_t::create_short_and_long_name(
|
|||||||
|
|
||||||
i = strlen(tempfn);
|
i = strlen(tempfn);
|
||||||
for (j = i - 1; j > 0 && tempfn[j] != '.'; j--);
|
for (j = i - 1; j > 0 && tempfn[j] != '.'; j--);
|
||||||
if (j > 0)
|
if (j > 0) {
|
||||||
i = (j > 8 ? 8 : j);
|
if (j > 8) {
|
||||||
else if (i > 8)
|
|
||||||
i = 8;
|
i = 8;
|
||||||
|
shorten = true;
|
||||||
|
} else {
|
||||||
|
i = j;
|
||||||
|
}
|
||||||
|
} else if (i > 8) {
|
||||||
|
i = 8;
|
||||||
|
shorten = true;
|
||||||
|
}
|
||||||
|
|
||||||
entry = (direntry_t*)array_get_next(&directory);
|
entry = (direntry_t*)array_get_next(&directory);
|
||||||
memset(entry->name, 0x20, 11);
|
memset(entry->name, 0x20, 11);
|
||||||
@ -602,6 +610,10 @@ direntry_t* vvfat_image_t::create_short_and_long_name(
|
|||||||
entry->name[i]+='A'-'a';
|
entry->name[i]+='A'-'a';
|
||||||
}
|
}
|
||||||
if (entry->name[0] == 0xe5) entry->name[0] = 0x05;
|
if (entry->name[0] == 0xe5) entry->name[0] = 0x05;
|
||||||
|
if (shorten) {
|
||||||
|
entry->name[6] = '~';
|
||||||
|
entry->name[7] = '0';
|
||||||
|
}
|
||||||
|
|
||||||
// mangle duplicates
|
// mangle duplicates
|
||||||
while (1) {
|
while (1) {
|
||||||
|
Loading…
Reference in New Issue
Block a user