2525#include " portable.h"
2626#include " language.h"
2727#include " message.h"
28- #include " growbuf.h"
2928
3029std::tm getCurrentDateTime ()
3130{
@@ -179,7 +178,13 @@ QCString formatDateTime(const QCString &format,const std::tm &dt,int &formatUsed
179178 auto getMonth = [](const std::tm &dat) { return dat.tm_mon +1 ; };
180179 auto getDay = [](const std::tm &dat) { return dat.tm_mday ; };
181180 auto getDayOfWeek = [](const std::tm &dat) { return (dat.tm_wday +6 )%7 +1 ; };
182- GrowBuf growBuf;
181+ QCString result;
182+ result.reserve (256 );
183+ auto addInt = [&result](const char *fmt,int value) {
184+ char tmp[50 ];
185+ qsnprintf (tmp,50 ,fmt,value);
186+ result+=tmp;
187+ };
183188 char c = 0 ;
184189 const char *p = format.data ();
185190 const char *fmt_zero = " %02d" ;
@@ -196,36 +201,35 @@ QCString formatDateTime(const QCString &format,const std::tm &dt,int &formatUsed
196201 if (nc==' -' ) nc=*++p; // skip over -
197202 switch (nc)
198203 {
199- case ' %' : growBuf. addChar ( ' %' ); break ;
200- case ' y' : growBuf. addInt (fmt_selected,getYear (dt)%100 ); formatUsed|=SF_Date; break ;
201- case ' Y' : growBuf. addInt (" %d" ,getYear (dt)); formatUsed|=SF_Date; break ;
202- case ' m' : growBuf. addInt (fmt_selected,getMonth (dt)); formatUsed|=SF_Date; break ;
203- case ' b' : growBuf. addStr ( theTranslator->trMonth (getMonth (dt),false ,false ) ); formatUsed|=SF_Date; break ;
204- case ' B' : growBuf. addStr ( theTranslator->trMonth (getMonth (dt),false ,true ) ); formatUsed|=SF_Date; break ;
205- case ' d' : growBuf. addInt (fmt_selected,getDay (dt)); formatUsed|=SF_Date; break ;
206- case ' u' : growBuf. addInt (" %d" ,getDayOfWeek (dt)); /* Monday = 1 ... Sunday = 7 */ formatUsed|=SF_Date; break ;
207- case ' w' : growBuf. addInt (" %d" ,getDayOfWeek (dt)%7 ); /* Sunday = 0 ... Saturday = 6 */ formatUsed|=SF_Date; break ;
208- case ' a' : growBuf. addStr ( theTranslator->trDayOfWeek (getDayOfWeek (dt),false ,false ) ); formatUsed|=SF_Date; break ;
209- case ' A' : growBuf. addStr ( theTranslator->trDayOfWeek (getDayOfWeek (dt),false ,true ) ); formatUsed|=SF_Date; break ;
210- case ' H' : growBuf. addInt (fmt_selected,dt.tm_hour ); formatUsed|=SF_Time; break ;
211- case ' I' : growBuf. addInt (fmt_selected,dt.tm_hour %12 ); formatUsed|=SF_Time; break ;
212- case ' p' : growBuf. addStr ( theTranslator->trDayPeriod (dt.tm_hour >=12 ) ); formatUsed|=SF_Time; break ;
213- case ' M' : growBuf. addInt (fmt_selected,dt.tm_min ); formatUsed|=SF_Time; break ;
214- case ' S' : growBuf. addInt (fmt_selected,dt.tm_sec ); formatUsed|=SF_Seconds; break ;
204+ case ' %' : result+= ' %' ; break ;
205+ case ' y' : addInt (fmt_selected,getYear (dt)%100 ); formatUsed|=SF_Date; break ;
206+ case ' Y' : addInt (" %d" ,getYear (dt)); formatUsed|=SF_Date; break ;
207+ case ' m' : addInt (fmt_selected,getMonth (dt)); formatUsed|=SF_Date; break ;
208+ case ' b' : result+= theTranslator->trMonth (getMonth (dt),false ,false ); formatUsed|=SF_Date; break ;
209+ case ' B' : result+= theTranslator->trMonth (getMonth (dt),false ,true ); formatUsed|=SF_Date; break ;
210+ case ' d' : addInt (fmt_selected,getDay (dt)); formatUsed|=SF_Date; break ;
211+ case ' u' : addInt (" %d" ,getDayOfWeek (dt)); /* Monday = 1 ... Sunday = 7 */ formatUsed|=SF_Date; break ;
212+ case ' w' : addInt (" %d" ,getDayOfWeek (dt)%7 ); /* Sunday = 0 ... Saturday = 6 */ formatUsed|=SF_Date; break ;
213+ case ' a' : result+= theTranslator->trDayOfWeek (getDayOfWeek (dt),false ,false ); formatUsed|=SF_Date; break ;
214+ case ' A' : result+= theTranslator->trDayOfWeek (getDayOfWeek (dt),false ,true ); formatUsed|=SF_Date; break ;
215+ case ' H' : addInt (fmt_selected,dt.tm_hour ); formatUsed|=SF_Time; break ;
216+ case ' I' : addInt (fmt_selected,dt.tm_hour %12 ); formatUsed|=SF_Time; break ;
217+ case ' p' : result+= theTranslator->trDayPeriod (dt.tm_hour >=12 ); formatUsed|=SF_Time; break ;
218+ case ' M' : addInt (fmt_selected,dt.tm_min ); formatUsed|=SF_Time; break ;
219+ case ' S' : addInt (fmt_selected,dt.tm_sec ); formatUsed|=SF_Seconds; break ;
215220 default :
216- growBuf. addChar (c) ;
217- if (*(p-1 )==' -' ) growBuf. addChar ( ' -' ) ;
218- growBuf. addChar (nc) ;
221+ result+=c ;
222+ if (*(p-1 )==' -' ) result+= ' -' ;
223+ result+=nc ;
219224 break ;
220225 }
221226 p++;
222227 break ;
223228 default :
224- growBuf. addChar (c) ;
229+ result+=c ;
225230 break ;
226231 }
227232 }
228- growBuf.addChar (0 );
229- return growBuf.get ();
233+ return result;
230234}
231235
0 commit comments