From 7b87ca6c5ed2871a98df953342a50588035ec102 Mon Sep 17 00:00:00 2001 From: Eric Kohl Date: Wed, 22 Mar 2017 21:59:06 +0000 Subject: [PATCH] [AT] - Confirm deleting all jobs. - Fix typos in resources and add missing usage text. svn path=/trunk/; revision=74222 --- reactos/base/applications/cmdutils/at/at.c | 56 ++++++++++++++++++- .../applications/cmdutils/at/lang/de-DE.rc | 35 ++++++++---- .../applications/cmdutils/at/lang/en-US.rc | 11 +++- .../base/applications/cmdutils/at/resource.h | 7 ++- 4 files changed, 93 insertions(+), 16 deletions(-) diff --git a/reactos/base/applications/cmdutils/at/at.c b/reactos/base/applications/cmdutils/at/at.c index 0fe78b8d2d0..ded545b2643 100644 --- a/reactos/base/applications/cmdutils/at/at.c +++ b/reactos/base/applications/cmdutils/at/at.c @@ -242,6 +242,57 @@ PrintHorizontalLine(VOID) } +static +BOOL +Confirm(VOID) +{ + HINSTANCE hInstance; + WCHAR szYesBuffer[8]; + WCHAR szNoBuffer[8]; + WCHAR szInput[80]; + DWORD dwOldMode; + DWORD dwRead = 0; + BOOL ret = FALSE; + HANDLE hFile; + + hInstance = GetModuleHandleW(NULL); + LoadStringW(hInstance, IDS_CONFIRM_YES, szYesBuffer, _countof(szYesBuffer)); + LoadStringW(hInstance, IDS_CONFIRM_NO, szNoBuffer, _countof(szNoBuffer)); + + ZeroMemory(szInput, sizeof(szInput)); + + hFile = GetStdHandle(STD_INPUT_HANDLE); + GetConsoleMode(hFile, &dwOldMode); + + SetConsoleMode(hFile, ENABLE_LINE_INPUT | ENABLE_ECHO_INPUT); + + for (;;) + { + ConResPrintf(StdOut, IDS_CONFIRM_QUESTION); + + ReadConsoleW(hFile, szInput, _countof(szInput), &dwRead, NULL); + + szInput[0] = towupper(szInput[0]); + if (szInput[0] == szYesBuffer[0]) + { + ret = TRUE; + break; + } + else if (szInput[0] == 13 || szInput[0] == szNoBuffer[0]) + { + ret = FALSE; + break; + } + + ConResPrintf(StdOut, IDS_CONFIRM_INVALID); + } + + SetConsoleMode(hFile, dwOldMode); + + return ret; +} + + static DWORD_PTR GetTimeAsJobTime(VOID) @@ -585,8 +636,9 @@ DeleteJob( if (ulJobId == (ULONG)-1 && bForceDelete == FALSE) { - ConResPrintf(StdOut, IDS_CONFIRM_DELETE); - return 0; + ConResPrintf(StdOut, IDS_DELETE_ALL); + if (!Confirm()) + return 0; } Status = NetScheduleJobDel(pszComputerName, diff --git a/reactos/base/applications/cmdutils/at/lang/de-DE.rc b/reactos/base/applications/cmdutils/at/lang/de-DE.rc index 7b476cd7438..9bf5cf773b9 100644 --- a/reactos/base/applications/cmdutils/at/lang/de-DE.rc +++ b/reactos/base/applications/cmdutils/at/lang/de-DE.rc @@ -2,27 +2,42 @@ LANGUAGE LANG_GERMAN, SUBLANG_NEUTRAL STRINGTABLE BEGIN - IDS_USAGE "Mit dem AT Befeht können Befehle und Programme zu einem vorbestimmten\n\ + IDS_USAGE "Mit dem AT Befehl können Befehle und Programme zu einem vorbestimmten\n\ Termin gestartet werden. Der Zeitplandienst muss gestartet sein, um den\n\ -Befeht AT zu verwenden.\n\n\ +Befehl AT zu verwenden.\n\n\ AT [\\\\Computername] [ [Kennung] [/DELETE] | /DELETE [/YES]]\n\ AT [\\\\Computername] Zeit [/INTERACTIVE]\n\ [ /EVERY:Datum[,...] | /NEXT:Datum[,...]] ""Befehl""\n\n\ -\\\\Computername ...\n\ -Kennung ...\n\ -/DELETE ...\n\ -/YES ...\n\ +\\\\Computername Gibt einen Remotecomputer an. Ohne diesen Parameter werden\n\ + die Befehle auf dem lokalen Computer ausgeführt.\n\ +Kennung Eine Identifikationsnummer, die dem geplanten Befehl\n\ + zugeteilt wird.\n\ +/DELETE Löscht geplante Befehle. Ohne Kennung werden alle geplanten\n\ + Befehle auf dem Computer gelöscht.\n\ +/YES In Verbindung mit /DELETE werden die geplanten Befehle ohne\n\ + weitere Bestätiging gelöscht.\n\ Zeit Gibt die Zeit an, zu der ein Befehl ausgeführt werden soll.\n\ -/INTERACTIVE ...\n\ -/EVERY:Datum[,...] ...\n\ -/NEXT:Datum[,...] ...\n\ +/INTERACTIVE Ermöglicht dem Aufrag, Eingaben von dem Benutzer\n\ + anzunehmen, der angemeldet ist, wenn der Auftrag ausgeführt\n\ + wird.\n\ +/EVERY:Datum[,...] Führt den Befehl zu jedem der angegebenen Tage der Woche\n\ + oder des Monats aus. Ohne Angabe eines Datums wird der\n\ + aktuelle Tag des Monats angenommen.\n\ +/NEXT:Datum[,...] Führt den Befehl am nächsten angegebenen Tage der Woche\n\ + oder des Monats (z.B. nächsten Montag) aus. Ohne Angabe\n\ + eines Datums wird der aktuelle Tag des Monats angenommen.\n\ ""Befehl"" Ist der auszuführende Befehl oder das Stapelprogramm.\n" - IDS_CONFIRM_DELETE "Dieser Vorgang wird alle geplanten Aufräge löschen.\nMöchten Sie diesen Vorgang fortsetzen? (J/N) [N] " + IDS_DELETE_ALL "Dieser Vorgang wird alle geplanten Aufträge löschen.\n" IDS_NEW_JOB "Neuer Auftrag hinzugefügt. Kennung = %lu\n" IDS_JOBS_LIST "Statuskenn. Tag Zeit Befehlszeile\n" IDS_NO_ENTRIES "Es sind keine Einträge in der Liste.\n" + IDS_CONFIRM_QUESTION "Möchten Sie diesen Vorgang fortsetzen? (J/N) [N]: " + IDS_CONFIRM_INVALID "\nDies ist eine ungültige Antwort.\n" + IDS_CONFIRM_YES "J" + IDS_CONFIRM_NO "N" + IDS_TODAY "Heute" IDS_TOMORROW "Morgen" IDS_EVERY "Jeden" diff --git a/reactos/base/applications/cmdutils/at/lang/en-US.rc b/reactos/base/applications/cmdutils/at/lang/en-US.rc index ceda21b9d49..daaf2a92dbf 100644 --- a/reactos/base/applications/cmdutils/at/lang/en-US.rc +++ b/reactos/base/applications/cmdutils/at/lang/en-US.rc @@ -16,8 +16,8 @@ id Is an identification number assigned to a scheduled\n\ scheduled commands on the computer are canceled.\n\ /YES Used with cancel all jobs command when no further\n\ confirmation is desired.\n\ -Zeit Specifies the time when command is to run.\n\ -/INTERACTIVE Allows the ob to interact with the desktop of the user\n\ +time Specifies the time when command is to run.\n\ +/INTERACTIVE Allows the job to interact with the desktop of the user\n\ who is logged on at the time the job runs.\n\ /EVERY:date[,...] Runs the command on each specified day(s) of the week or\n\ month. If date is omitted, the current day of the month\n\ @@ -27,11 +27,16 @@ Zeit Specifies the time when command is to run.\n\ current day of the month is assumed.\n\ ""command"" Is the command or batch program to be run.\n" - IDS_CONFIRM_DELETE "This operation will delete all seduled jobs.\nDo you want to continue this operation? (Y/N) [N] " + IDS_DELETE_ALL "This operation will delete all scheduled jobs.\n" IDS_NEW_JOB "Added a new job with job ID = %lu\n" IDS_JOBS_LIST "Status ID Day Time Command Line\n" IDS_NO_ENTRIES "There are no entries in the list.\n" + IDS_CONFIRM_QUESTION "Do you want to continue this operation? (Y/N) [N]: " + IDS_CONFIRM_INVALID "\nThis is an invalid response.\n" + IDS_CONFIRM_YES "Y" + IDS_CONFIRM_NO "N" + IDS_TODAY "Today" IDS_TOMORROW "Tomorrow" IDS_EVERY "Every" diff --git a/reactos/base/applications/cmdutils/at/resource.h b/reactos/base/applications/cmdutils/at/resource.h index a260ae863db..011e8738b0e 100644 --- a/reactos/base/applications/cmdutils/at/resource.h +++ b/reactos/base/applications/cmdutils/at/resource.h @@ -2,7 +2,7 @@ #define IDS_USAGE 100 -#define IDS_CONFIRM_DELETE 105 +#define IDS_DELETE_ALL 105 #define IDS_NEW_JOB 106 #define IDS_JOBS_LIST 107 #define IDS_NO_ENTRIES 108 @@ -24,3 +24,8 @@ #define IDS_TIME 125 #define IDS_INTERACTIVE 126 #define IDS_COMMAND 127 + +#define IDS_CONFIRM_QUESTION 130 +#define IDS_CONFIRM_INVALID 131 +#define IDS_CONFIRM_YES 132 +#define IDS_CONFIRM_NO 133 \ No newline at end of file