SvarDOS / bugz

SvarDOS bug tracker
http://svardos.org/
6 stars 0 forks source link

Time accepts 12-hr time format where it should be rejected #136

Closed boeckmann closed 13 hours ago

boeckmann commented 5 days ago

Willi Spiegl reported that the time command accepts a 12-hr time string like 02:00:00 PM even when the time format is set to a 24-hr, and then sets a wrong time. This only happens if the time is given as command line parameter, not when time asks the user to enter it.

Probable cause: as the time string is split into two command line parameters, time may simply ignore a AM or PM given?

From Willis original mail:

Zur aktuellen SvarDOS-Version habe ich noch bei "time" und "prompt" ein Problem. country ist gemäß Installation auf 49,858 gesetzt.

Tippe ich: "time 02:00:00 PM" ein,

erscheint bei prompt 01:59:59, d.h. die Zahl wird akzeptiert, aber nicht auf 13.59:59 umgerechnet.

tippe ich "time 02:00:00 AM" ein,

erscheint bei prompt ebenfalls 01:59:59, d.h. AM/PM wird ignoriert, aber die Zahl übernommen

Tippe ich dagegen nur "time" + ENTER ein, werde ich aufgefordert, die neue Zeit einzugeben: 02:00:00 AM

--> ungültige Zeit.

Bei "time" + ENTER - Aufforderung: 02:00:00 PM ebenfalls ---> ungültige Zeit.

Ohne AM/PM wird die Zeit akzeptiert.

D.h. die Behandlung ist unterschiedlich, je nachdem ich "time+Zahl+AM/PM" oder "time+ENTER=Bitte geben Sie die neue Zeit ein: +Zahl+AM/PM" verwende.

mateuszviste commented 5 days ago

TIME accepts both time formats (24h/12h), independently of the locale settings. The syntax is either time 14:00:00 or time 02:00:00P. Minutes and seconds are optional, so time 2p should work as well. Only the first argument is checked, anything else is ignored. Perhaps time should display an error if more than 1 argument is passed. And the help probably needs to be improved so the above rules are clear.

mateuszviste commented 13 hours ago

Improved TIME's help screen. Also failing if more than one argument is passed. Should be more user-friendly now.

image

I have translated the new string to PL only, so it is displayed in EN for all other languages.