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