* external.cc (cygwin_internal): Implement CW_ALLOC_DRIVE_MAP,
CW_MAP_DRIVE_MAP, CW_FREE_DRIVE_MAP. * fhandler_process.cc: Include mount.h. (get_volume_path_names_for_volume_name): Move to mount.cc. (struct dos_drive_mappings): Ditto. * mount.cc (get_volume_path_names_for_volume_name): Move here. (dos_drive_mappings::dos_drive_mappings): Ditto. (dos_drive_mappings::fixup_if_match): Ditto. (dos_drive_mappings::~dos_drive_mappings): Ditto. * mount.h (class dos_drive_mappings): Declare her. * include/sys/cygwin.h (cygwin_getinfo_types): Add CW_ALLOC_DRIVE_MAP, CW_MAP_DRIVE_MAP, CW_FREE_DRIVE_MAP. * include/cygwin/version.h: Bump API minor number.
This commit is contained in:
@ -528,6 +528,31 @@ cygwin_internal (cygwin_getinfo_types t, ...)
|
||||
}
|
||||
break;
|
||||
|
||||
case CW_ALLOC_DRIVE_MAP:
|
||||
{
|
||||
dos_drive_mappings *ddm = new dos_drive_mappings ();
|
||||
res = (uintptr_t) ddm;
|
||||
}
|
||||
break;
|
||||
|
||||
case CW_MAP_DRIVE_MAP:
|
||||
{
|
||||
dos_drive_mappings *ddm = va_arg (arg, dos_drive_mappings *);
|
||||
wchar_t *pathbuf = va_arg (arg, wchar_t *);
|
||||
if (ddm && pathbuf)
|
||||
res = (uintptr_t) ddm->fixup_if_match (pathbuf);
|
||||
}
|
||||
break;
|
||||
|
||||
case CW_FREE_DRIVE_MAP:
|
||||
{
|
||||
dos_drive_mappings *ddm = va_arg (arg, dos_drive_mappings *);
|
||||
if (ddm)
|
||||
delete ddm;
|
||||
res = 0;
|
||||
}
|
||||
break;
|
||||
|
||||
default:
|
||||
set_errno (ENOSYS);
|
||||
}
|
||||
|
Reference in New Issue
Block a user