Win32: show volume names in drive list
This commit is contained in:
parent
5623c67be1
commit
67020cd146
@ -691,23 +691,23 @@ void Read_list_of_drives(T_Fileselector *list, byte name_length)
|
||||
}
|
||||
#elif defined (WIN32)
|
||||
{
|
||||
char drive_name[]="A:\\";
|
||||
char drive_name[32];
|
||||
int drive_bits = GetLogicalDrives();
|
||||
int drive_index;
|
||||
int bit_index;
|
||||
byte icon;
|
||||
enum ICON_TYPES icon;
|
||||
|
||||
// Sous Windows, on a la totale, presque aussi bien que sous DOS:
|
||||
drive_index = 0;
|
||||
for (bit_index=0; bit_index<26 && drive_index<23; bit_index++)
|
||||
for (bit_index=0; bit_index < 26; bit_index++)
|
||||
{
|
||||
if ( (1 << bit_index) & drive_bits )
|
||||
{
|
||||
// On a ce lecteur, il faut maintenant déterminer son type "physique".
|
||||
// pour profiter des jolies icones de X-man.
|
||||
char drive_path[]="A:\\";
|
||||
// Cette API Windows est étrange, je dois m'y faire...
|
||||
drive_path[0]='A'+bit_index;
|
||||
char drive_path[] = "A:\\";
|
||||
char volume_name[32];
|
||||
char file_system[32];
|
||||
|
||||
drive_path[0] = 'A'+bit_index;
|
||||
switch (GetDriveTypeA(drive_path))
|
||||
{
|
||||
case DRIVE_CDROM:
|
||||
@ -722,14 +722,19 @@ void Read_list_of_drives(T_Fileselector *list, byte name_length)
|
||||
case DRIVE_FIXED:
|
||||
icon=ICON_HDD;
|
||||
break;
|
||||
case DRIVE_RAMDISK:
|
||||
default:
|
||||
icon=ICON_NETWORK;
|
||||
break;
|
||||
}
|
||||
drive_name[0]='A'+bit_index;
|
||||
Add_element_to_list(list, drive_name, Format_filename(drive_name,name_length-1,2), FSOBJECT_DRIVE, icon);
|
||||
if (GetVolumeInformationA(drive_path, volume_name, sizeof(volume_name), NULL, NULL, NULL, file_system, sizeof(file_system)))
|
||||
snprintf(drive_name, sizeof(drive_name), "%s %s", drive_path, volume_name);
|
||||
else
|
||||
snprintf(drive_name, sizeof(drive_name), "%s - empty -", drive_path);
|
||||
Add_element_to_list(list, drive_path,
|
||||
Format_filename(drive_name, name_length-1, FSOBJECT_DRIVE),
|
||||
FSOBJECT_DRIVE, icon);
|
||||
list->Nb_directories++;
|
||||
drive_index++;
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -770,7 +775,7 @@ void Read_list_of_drives(T_Fileselector *list, byte name_length)
|
||||
|
||||
while(mount_points_list != NULL)
|
||||
{
|
||||
byte icon = ICON_NONE;
|
||||
enum ICON_TYPES icon = ICON_NONE;
|
||||
if (mount_points_list->me_remote)
|
||||
icon = ICON_NETWORK;
|
||||
else if (strcmp(mount_points_list->me_type, "cd9660") == 0)
|
||||
|
||||
@ -31,6 +31,7 @@
|
||||
|
||||
#ifdef _MSC_VER
|
||||
#include <stdio.h>
|
||||
#define strdup _strdup
|
||||
#if _MSC_VER < 1900
|
||||
#define snprintf _snprintf
|
||||
#endif
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user