[DISKPART] Implement 'select disk system' and 'select disk next'

This commit is contained in:
Eric Kohl 2024-12-01 19:33:16 +01:00
parent 11d5cb8095
commit 1b5e679282
12 changed files with 89 additions and 27 deletions

View file

@ -115,6 +115,8 @@ BEGIN
IDS_SELECT_NO_DISK "\nThere is no disk currently selected.\nPlease select a disk and try again.\n\n"
IDS_SELECT_DISK "\nDisk %lu is now the selected disk.\n\n"
IDS_SELECT_DISK_INVALID "\nInvalid disk.\n\n"
IDS_SELECT_DISK_ENUM_NO_START "\nNo disk enumeration started yet.\n\nNo disk ist currently selected.\n\n"
IDS_SELECT_DISK_ENUM_FINISHED "\nThe last disk has been enumerated.\n\nNo disk ist currently selected.\n\n"
IDS_SELECT_NO_PARTITION "\nThere is no partition currently selected.\nPlease select a disk and try again.\n\n"
IDS_SELECT_PARTITION "\nPartition %lu is now the selected partition.\n\n"
IDS_SELECT_PARTITION_NO_DISK "\nThere is no disk for selecting a partition.\nPlease select a disk and try again.\n\n"

View file

@ -115,6 +115,8 @@ BEGIN
IDS_SELECT_NO_DISK "\nThere is no disk currently selected.\nPlease select a disk and try again.\n\n"
IDS_SELECT_DISK "\nDisk %lu is now the selected disk.\n\n"
IDS_SELECT_DISK_INVALID "\nInvalid disk.\n\n"
IDS_SELECT_DISK_ENUM_NO_START "\nNo disk enumeration started yet.\n\nNo disk ist currently selected.\n\n"
IDS_SELECT_DISK_ENUM_FINISHED "\nThe last disk has been enumerated.\n\nNo disk ist currently selected.\n\n"
IDS_SELECT_NO_PARTITION "\nThere is no partition currently selected.\nPlease select a disk and try again.\n\n"
IDS_SELECT_PARTITION "\nPartition %lu is now the selected partition.\n\n"
IDS_SELECT_PARTITION_NO_DISK "\nThere is no disk for selecting a partition.\nPlease select a disk and try again.\n\n"

View file

@ -115,6 +115,8 @@ BEGIN
IDS_SELECT_NO_DISK "\nNie wybrano dysku.\nWybierz dysk i spróbuj ponownie.\n\n"
IDS_SELECT_DISK "\nObecnie wybranym dyskiem jest dysk %lu.\n\n"
IDS_SELECT_DISK_INVALID "\nNieprawidłowy dysk.\n\n"
IDS_SELECT_DISK_ENUM_NO_START "\nNo disk enumeration started yet.\n\nNo disk ist currently selected.\n\n"
IDS_SELECT_DISK_ENUM_FINISHED "\nThe last disk has been enumerated.\n\nNo disk ist currently selected.\n\n"
IDS_SELECT_NO_PARTITION "\nNie wybrano partycji.\nWybierz partycję i spróbuj ponownie.\n\n"
IDS_SELECT_PARTITION "\nObecnie wybraną partycją jest partycja %lu.\n\n"
IDS_SELECT_PARTITION_NO_DISK "\nNie wybrano dysku do ustawienia partycji\nWybierz dysk i spróbuj ponownie.\n\n"

View file

@ -117,6 +117,8 @@ BEGIN
IDS_SELECT_NO_DISK "\nNenhum disco actualmente está seleccionado.\nPor favor seleccione um disco e tente novamente.\n\n"
IDS_SELECT_DISK "\nDisco %lu é o disco que está actualmente seleccionado.\n\n"
IDS_SELECT_DISK_INVALID "\nDisco inválido.\n\n"
IDS_SELECT_DISK_ENUM_NO_START "\nNo disk enumeration started yet.\n\nNo disk ist currently selected.\n\n"
IDS_SELECT_DISK_ENUM_FINISHED "\nThe last disk has been enumerated.\n\nNo disk ist currently selected.\n\n"
IDS_SELECT_NO_PARTITION "\nNenhuma partição seleccionada actualmente.\nPor favor seleccione um disco e tente novamente.\n\n"
IDS_SELECT_PARTITION "\nPartição %lu é agora a partição seleccionada.\n\n"
IDS_SELECT_PARTITION_NO_DISK "\nNão há disco para selectionar partições.\nPor favor seleccione um disco e tente novamente.\n\n"

View file

@ -123,6 +123,8 @@ BEGIN
IDS_SELECT_NO_DISK "\nMomentan nu există niciun disc selectat.\nSelectați un disc apoi reîncercați.\n\n"
IDS_SELECT_DISK "\nDisul %lu este selectat acum.\n\n"
IDS_SELECT_DISK_INVALID "\nDisc nevalid.\n\n"
IDS_SELECT_DISK_ENUM_NO_START "\nNo disk enumeration started yet.\n\nNo disk ist currently selected.\n\n"
IDS_SELECT_DISK_ENUM_FINISHED "\nThe last disk has been enumerated.\n\nNo disk ist currently selected.\n\n"
IDS_SELECT_NO_PARTITION "\nMomentan nu există nicio partiție selectată.\nSelectați un disc apoi reîncercați.\n\n"
IDS_SELECT_PARTITION "\nPartiția %lu este selectată acum.\n\n"
IDS_SELECT_PARTITION_NO_DISK "\nNu există niciun disc pentru partiția selectată.\nSelectați un disc apoi reîncercați.\n\n"

View file

@ -117,6 +117,8 @@ BEGIN
IDS_SELECT_NO_DISK "\nДиск для обработки не указан.\nВыберите диск и повторите.\n\n"
IDS_SELECT_DISK "\nДиск %lu выбран текущим.\n\n"
IDS_SELECT_DISK_INVALID "\nОшибка диска.\n\n"
IDS_SELECT_DISK_ENUM_NO_START "\nNo disk enumeration started yet.\n\nNo disk ist currently selected.\n\n"
IDS_SELECT_DISK_ENUM_FINISHED "\nThe last disk has been enumerated.\n\nNo disk ist currently selected.\n\n"
IDS_SELECT_NO_PARTITION "\nДиск с разметкой не выбран.\nВыберите диск и повторите.\n\n"
IDS_SELECT_PARTITION "\nВыбрана разметка диска %lu текущей разметкой.\n\n"
IDS_SELECT_PARTITION_NO_DISK "\nДиск для установки разметки не указан.\nВыберите диск и повторите.\n\n"

View file

@ -119,6 +119,8 @@ BEGIN
IDS_SELECT_NO_DISK "\nThere is no disk currently selected.\nPlease select a disk and try again.\n\n"
IDS_SELECT_DISK "\nDisk %lu is now the selected disk.\n\n"
IDS_SELECT_DISK_INVALID "\nInvalid disk.\n\n"
IDS_SELECT_DISK_ENUM_NO_START "\nNo disk enumeration started yet.\n\nNo disk ist currently selected.\n\n"
IDS_SELECT_DISK_ENUM_FINISHED "\nThe last disk has been enumerated.\n\nNo disk ist currently selected.\n\n"
IDS_SELECT_NO_PARTITION "\nThere is no partition currently selected.\nPlease select a disk and try again.\n\n"
IDS_SELECT_PARTITION "\nPartition %lu is now the selected partition.\n\n"
IDS_SELECT_PARTITION_NO_DISK "\nThere is no disk for selecting a partition.\nPlease select a disk and try again.\n\n"

View file

@ -125,6 +125,8 @@ BEGIN
IDS_SELECT_NO_DISK "\nBir disk seçilmemiş.\nLütfen bir disk seçiniz ve yeniden deneyiniz.\n\n"
IDS_SELECT_DISK "\nDisk %lu şimdi seçilen disktir.\n\n"
IDS_SELECT_DISK_INVALID "\nGeçersiz disk.\n\n"
IDS_SELECT_DISK_ENUM_NO_START "\nNo disk enumeration started yet.\n\nNo disk ist currently selected.\n\n"
IDS_SELECT_DISK_ENUM_FINISHED "\nThe last disk has been enumerated.\n\nNo disk ist currently selected.\n\n"
IDS_SELECT_NO_PARTITION "\nŞimdilik bir bölüm seçilmemiş.\nLütfen bir disk seçiniz ve yeniden deneyiniz.\n\n"
IDS_SELECT_PARTITION "\nBölüm %lu şimdi seçilen bölümdür.\n\n"
IDS_SELECT_PARTITION_NO_DISK "\nBir bölüm seçmek için bir disk yok.\nLütfen bir disk seçiniz ve yeniden deneyiniz.\n\n"

View file

@ -124,6 +124,8 @@ BEGIN
IDS_SELECT_NO_DISK "\n没有当前选择的磁盘。\nP请选择一个磁盘再试一次。\n\n"
IDS_SELECT_DISK "\n磁盘 %lu 现在是所选的磁盘。\n\n"
IDS_SELECT_DISK_INVALID "\n无效的磁盘。\n\n"
IDS_SELECT_DISK_ENUM_NO_START "\nNo disk enumeration started yet.\n\nNo disk ist currently selected.\n\n"
IDS_SELECT_DISK_ENUM_FINISHED "\nThe last disk has been enumerated.\n\nNo disk ist currently selected.\n\n"
IDS_SELECT_NO_PARTITION "\n有是没有当前选定的分区。\n请选择一个磁盘再试一次。\n\n"
IDS_SELECT_PARTITION "\n分区 %lu 现在是所选的分区。\n\n"
IDS_SELECT_PARTITION_NO_DISK "\n没有一个选择是有分区的磁盘。\n请选择一个磁盘再试一次。\n\n"

View file

@ -124,6 +124,8 @@ BEGIN
IDS_SELECT_NO_DISK "\n目前沒有選擇磁碟。\n請選擇一個磁碟然後再試一次。\n\n"
IDS_SELECT_DISK "\n磁碟 %lu 現在是所選擇的磁碟。\n\n"
IDS_SELECT_DISK_INVALID "\n無效的磁碟。\n\n"
IDS_SELECT_DISK_ENUM_NO_START "\nNo disk enumeration started yet.\n\nNo disk ist currently selected.\n\n"
IDS_SELECT_DISK_ENUM_FINISHED "\nThe last disk has been enumerated.\n\nNo disk ist currently selected.\n\n"
IDS_SELECT_NO_PARTITION "\n目前選擇的磁碟沒有磁碟分割。\n請選擇一個磁碟然後再試一次。\n\n"
IDS_SELECT_PARTITION "\n磁碟分割 %lu 現在是所選擇的磁碟分割。\n\n"
IDS_SELECT_PARTITION_NO_DISK "\n沒有選擇要設定磁碟分割的磁碟。\n請選擇一個磁碟然後再試一次。\n\n"

View file

@ -85,13 +85,15 @@
#define IDS_SELECT_NO_DISK 4400
#define IDS_SELECT_DISK 4401
#define IDS_SELECT_DISK_INVALID 4402
#define IDS_SELECT_NO_PARTITION 4403
#define IDS_SELECT_PARTITION 4404
#define IDS_SELECT_PARTITION_NO_DISK 4405
#define IDS_SELECT_PARTITION_INVALID 4406
#define IDS_SELECT_NO_VOLUME 4407
#define IDS_SELECT_VOLUME 4408
#define IDS_SELECT_VOLUME_INVALID 4409
#define IDS_SELECT_DISK_ENUM_NO_START 4403
#define IDS_SELECT_DISK_ENUM_FINISHED 4404
#define IDS_SELECT_NO_PARTITION 4405
#define IDS_SELECT_PARTITION 4406
#define IDS_SELECT_PARTITION_NO_DISK 4407
#define IDS_SELECT_PARTITION_INVALID 4408
#define IDS_SELECT_NO_VOLUME 4409
#define IDS_SELECT_VOLUME 4410
#define IDS_SELECT_VOLUME_INVALID 4411
#define IDS_SETID_FAIL 4450
#define IDS_SETID_SUCCESS 4451

View file

@ -39,35 +39,75 @@ SelectDisk(
return TRUE;
}
if (!IsDecString(argv[2]))
if (!_wcsicmp(argv[2], L"system"))
{
ConResPuts(StdErr, IDS_ERROR_INVALID_ARGS);
return TRUE;
}
CurrentDisk = NULL;
ulValue = wcstoul(argv[2], NULL, 10);
if ((ulValue == 0) && (errno == ERANGE))
{
ConResPuts(StdErr, IDS_ERROR_INVALID_ARGS);
return TRUE;
}
CurrentDisk = NULL;
Entry = DiskListHead.Flink;
while (Entry != &DiskListHead)
{
Entry = DiskListHead.Flink;
DiskEntry = CONTAINING_RECORD(Entry, DISKENTRY, ListEntry);
if (DiskEntry->DiskNumber == ulValue)
CurrentDisk = DiskEntry;
CurrentPartition = NULL;
ConResPrintf(StdOut, IDS_SELECT_DISK, CurrentDisk->DiskNumber);
return TRUE;
}
else if (!_wcsicmp(argv[2], L"next"))
{
if (CurrentDisk == NULL)
{
CurrentDisk = DiskEntry;
CurrentPartition = NULL;
ConResPrintf(StdOut, IDS_SELECT_DISK, CurrentDisk->DiskNumber);
ConResPuts(StdErr, IDS_SELECT_DISK_ENUM_NO_START);
return TRUE;
}
Entry = Entry->Flink;
if (CurrentDisk->ListEntry.Flink == &DiskListHead)
{
CurrentDisk = NULL;
CurrentPartition = NULL;
ConResPuts(StdErr, IDS_SELECT_DISK_ENUM_FINISHED);
return TRUE;
}
Entry = CurrentDisk->ListEntry.Flink;
DiskEntry = CONTAINING_RECORD(Entry, DISKENTRY, ListEntry);
CurrentDisk = DiskEntry;
CurrentPartition = NULL;
ConResPrintf(StdOut, IDS_SELECT_DISK, CurrentDisk->DiskNumber);
return TRUE;
}
else if (IsDecString(argv[2]))
{
ulValue = wcstoul(argv[2], NULL, 10);
if ((ulValue == 0) && (errno == ERANGE))
{
ConResPuts(StdErr, IDS_ERROR_INVALID_ARGS);
return TRUE;
}
CurrentDisk = NULL;
Entry = DiskListHead.Flink;
while (Entry != &DiskListHead)
{
DiskEntry = CONTAINING_RECORD(Entry, DISKENTRY, ListEntry);
if (DiskEntry->DiskNumber == ulValue)
{
CurrentDisk = DiskEntry;
CurrentPartition = NULL;
ConResPrintf(StdOut, IDS_SELECT_DISK, CurrentDisk->DiskNumber);
return TRUE;
}
Entry = Entry->Flink;
}
}
else
{
ConResPuts(StdErr, IDS_ERROR_INVALID_ARGS);
return TRUE;
}
ConResPuts(StdErr, IDS_SELECT_DISK_INVALID);