Duration: use ffStrbufAppendUInt

This commit is contained in:
李通洲
2025-08-19 15:19:12 +08:00
parent dcbf76b233
commit 8e282a3865
+27 -32
View File
@@ -4,11 +4,13 @@ void ffDurationAppendNum(uint64_t totalSeconds, FFstrbuf* result)
{
const FFOptionsDisplay* options = &instance.config.display;
const char* space = instance.config.display.durationSpaceBeforeUnit != FF_SPACE_BEFORE_UNIT_NEVER ? " " : "";
bool spaceBeforeUnit = options->durationSpaceBeforeUnit != FF_SPACE_BEFORE_UNIT_NEVER;
if(totalSeconds < 60)
if (totalSeconds < 60)
{
ffStrbufAppendF(result, options->durationAbbreviation ? "%u%ssec" : "%u%ssecond", (unsigned) totalSeconds, space);
ffStrbufAppendUInt(result, totalSeconds);
if (spaceBeforeUnit) ffStrbufAppendC(result, ' ');
ffStrbufAppendS(result, options->durationAbbreviation ? "sec" : "second");
if (totalSeconds != 1)
ffStrbufAppendC(result, 's');
return;
@@ -25,63 +27,56 @@ void ffDurationAppendNum(uint64_t totalSeconds, FFstrbuf* result)
totalSeconds /= 24;
uint32_t days = (uint32_t) totalSeconds;
if(days > 0)
if (days > 0)
{
if(options->durationAbbreviation)
ffStrbufAppendUInt(result, days);
if (spaceBeforeUnit) ffStrbufAppendC(result, ' ');
if (options->durationAbbreviation)
{
ffStrbufAppendF(result, "%u%sd", days, space);
ffStrbufAppendC(result, 'd');
if(hours > 0 || minutes > 0)
if (hours > 0 || minutes > 0)
ffStrbufAppendC(result, ' ');
}
else
{
ffStrbufAppendF(result, "%u%sday", days, space);
ffStrbufAppendS(result, days == 1 ? "day" : "days");
if(days > 1)
ffStrbufAppendC(result, 's');
if(days >= 100)
if (days >= 100)
ffStrbufAppendS(result, "(!)");
if(hours > 0 || minutes > 0)
if (hours > 0 || minutes > 0)
ffStrbufAppendS(result, ", ");
}
}
if(hours > 0)
if (hours > 0)
{
if(options->durationAbbreviation)
ffStrbufAppendUInt(result, hours);
if (spaceBeforeUnit) ffStrbufAppendC(result, ' ');
if (options->durationAbbreviation)
{
ffStrbufAppendF(result, "%u%sh", hours, space);
ffStrbufAppendC(result, 'h');
if (minutes > 0)
ffStrbufAppendC(result, ' ');
}
else
{
ffStrbufAppendF(result, "%u%shour", hours, space);
ffStrbufAppendS(result, hours == 1 ? "hour" : "hours");
if(hours > 1)
ffStrbufAppendC(result, 's');
if(minutes > 0)
if (minutes > 0)
ffStrbufAppendS(result, ", ");
}
}
if(minutes > 0)
if (minutes > 0)
{
if(options->durationAbbreviation)
{
ffStrbufAppendF(result, "%u%sm", minutes, space);
}
ffStrbufAppendUInt(result, minutes);
if (spaceBeforeUnit) ffStrbufAppendC(result, ' ');
if (options->durationAbbreviation)
ffStrbufAppendC(result, 'm');
else
{
ffStrbufAppendF(result, "%u%smin", minutes, space);
if(minutes > 1)
ffStrbufAppendC(result, 's');
}
ffStrbufAppendS(result, minutes == 1 ? "min" : "mins");
}
}