Behandlung von Puffergrößenfehlern in strftime: ERANGE vs. EOVERFLOWLinux

Linux verstehen
Anonymous
 Behandlung von Puffergrößenfehlern in strftime: ERANGE vs. EOVERFLOW

Post by Anonymous »

Ich habe eine Anwendung, in der ich Datum und Uhrzeit basierend auf dem Gebietsschema mithilfe von generieren muss 

Code: Select all

strftime
 Funktion, bereitgestellt von Cs 

Code: Select all

time.h
:

Code: Select all

rtnValue = strftime(storeIn, len - 1, "%x %X", &timevar);
Der Rückgabewert von 

Code: Select all

strftime
 wird in gespeichert 

Code: Select all

rtnValue
. Wenn alles gut geht, 

Code: Select all

storeIn
 enthält das formatierte Datum und die formatierte Uhrzeit.
Unterschiedliche Gebietsschemas erfordern unterschiedliche Puffergrößen. Es gibt jedoch Fälle, in denen Datum und Uhrzeit für ein bestimmtes Gebietsschema die von angegebene Größe überschreiten können 

Code: Select all

len
. Dies kann durch die Bereitstellung eines größeren Puffers abgemildert werden, es ist jedoch auch eine ordnungsgemäße Fehlerbehandlung erforderlich.

Code: Select all

strftime
 legt keinen spezifischen Fehlercode fest 

Code: Select all

ERANGE
 oder 

Code: Select all

EOVERFLOW
. Stattdessen kehrt es zurück 

Code: Select all

0
 wenn der bereitgestellte Puffer zu klein ist, was bedeutet, dass keine Bytes geschrieben wurden. Aufgrund der Anforderungen muss ich einen Fehlercode festlegen 

Code: Select all

errno.h
. Ich bin verwirrt 

Code: Select all

ERANGE
 und 

Code: Select all

EOVERFLOW
.

Code: Select all

EOVERFLOW
 klingt angemessen, und ich habe einige Implementierungen gesehen, die es verwenden, wenn ein Pufferüberlauf auftritt. Allerdings heißt es in der Beschreibung eindeutig: „Wert zu groß für definierten Datentyp“, was darauf hindeutet, dass sich der „zu große“ Teil auf die Überschreitung des Grenzwerts eines Datentyps und nicht auf eine manuell festgelegte Puffergröße bezieht. Ist mein Verständnis richtig? Wenn ja, würde dies auf meinen Fall nicht zutreffen.

Code: Select all

ERANGE
 erwähnt „Mathematisches Ergebnis nicht darstellbar“, obwohl es hauptsächlich für mathematische Funktionen verwendet wird, geben bestimmte Websites an, dass die Eingabe außerhalb des Bereichs liegt, was richtig klingt.
Frage:

Was wäre der am besten geeignete Fehlercode für eine Situation wie diese?
Vielen Dank im Voraus.

Quick Reply

Change Text Case: 
   
  • Similar Topics
    Replies
    Views
    Last post