mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-09-13 02:42:09 +02:00
a0174e8666
1. `--<module>-space-before-unit` 2. `--duration-abbreviation` 3. various code refactoring and cleanups
88 lines
2.2 KiB
C
88 lines
2.2 KiB
C
#include "duration.h"
|
|
|
|
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 ? " " : "";
|
|
|
|
if(totalSeconds < 60)
|
|
{
|
|
ffStrbufAppendF(result, options->durationAbbreviation ? "%u%ssec" : "%u%ssecond", (unsigned) totalSeconds, space);
|
|
if (totalSeconds != 1)
|
|
ffStrbufAppendC(result, 's');
|
|
return;
|
|
}
|
|
|
|
uint32_t seconds = (uint32_t) (totalSeconds % 60);
|
|
totalSeconds /= 60;
|
|
if (seconds >= 30)
|
|
totalSeconds++;
|
|
|
|
uint32_t minutes = (uint32_t) (totalSeconds % 60);
|
|
totalSeconds /= 60;
|
|
uint32_t hours = (uint32_t) (totalSeconds % 24);
|
|
totalSeconds /= 24;
|
|
uint32_t days = (uint32_t) totalSeconds;
|
|
|
|
if(days > 0)
|
|
{
|
|
if(options->durationAbbreviation)
|
|
{
|
|
ffStrbufAppendF(result, "%u%sd", days, space);
|
|
|
|
if(hours > 0 || minutes > 0)
|
|
ffStrbufAppendC(result, ' ');
|
|
}
|
|
else
|
|
{
|
|
ffStrbufAppendF(result, "%u%sday", days, space);
|
|
|
|
if(days > 1)
|
|
ffStrbufAppendC(result, 's');
|
|
|
|
if(days >= 100)
|
|
ffStrbufAppendS(result, "(!)");
|
|
|
|
if(hours > 0 || minutes > 0)
|
|
ffStrbufAppendS(result, ", ");
|
|
}
|
|
}
|
|
|
|
if(hours > 0)
|
|
{
|
|
if(options->durationAbbreviation)
|
|
{
|
|
ffStrbufAppendF(result, "%u%sh", hours, space);
|
|
|
|
if (minutes > 0)
|
|
ffStrbufAppendC(result, ' ');
|
|
}
|
|
else
|
|
{
|
|
ffStrbufAppendF(result, "%u%shour", hours, space);
|
|
|
|
if(hours > 1)
|
|
ffStrbufAppendC(result, 's');
|
|
|
|
if(minutes > 0)
|
|
ffStrbufAppendS(result, ", ");
|
|
}
|
|
}
|
|
|
|
if(minutes > 0)
|
|
{
|
|
if(options->durationAbbreviation)
|
|
{
|
|
ffStrbufAppendF(result, "%u%sm", minutes, space);
|
|
}
|
|
else
|
|
{
|
|
ffStrbufAppendF(result, "%u%smin", minutes, space);
|
|
|
|
if(minutes > 1)
|
|
ffStrbufAppendC(result, 's');
|
|
}
|
|
}
|
|
}
|