feat: print elapsed time on fpack/funpack completion

This commit is contained in:
2026-09-15 12:57:04 +02:00
parent a327a7f85c
commit 1286fac03f
2 changed files with 51 additions and 8 deletions
+23 -1
View File
@@ -12,15 +12,33 @@
#include <sys/stat.h>
#ifdef _WIN32
#include <windows.h>
#define PROGRAM_NAME "fpack.exe"
#define fpack_fseek64(f, off, whence) _fseeki64((f), (off), (whence))
#define fpack_ftell64(f) _ftelli64((f))
#else
#include <time.h>
#define PROGRAM_NAME "fpack"
#define fpack_fseek64(f, off, whence) fseeko((f), (off_t)(off), (whence))
#define fpack_ftell64(f) ftello((f))
#endif
static double now_seconds(void)
{
#ifdef _WIN32
LARGE_INTEGER freq, count;
QueryPerformanceFrequency(&freq);
QueryPerformanceCounter(&count);
return (double)count.QuadPart / (double)freq.QuadPart;
#else
struct timespec ts;
clock_gettime(CLOCK_MONOTONIC, &ts);
return (double)ts.tv_sec + (double)ts.tv_nsec / 1e9;
#endif
}
#define FPACK_QUIET (1u << 0)
#define FPACK_VERBOSE (1u << 1)
#define FPACK_PROGRESS (1u << 2)
@@ -258,6 +276,7 @@ int main(int argc, char **argv)
size_t base_len;
struct fpk_writer *w;
int c;
double start_time;
while ((c = getopt_long(argc, argv, "o:pqvh", long_opts, NULL)) != -1) {
switch (c) {
@@ -287,6 +306,8 @@ int main(int argc, char **argv)
input_dir = argv[optind];
output = output_arg ? dup_str(output_arg) : derive_output_name(input_dir);
start_time = now_seconds();
base_len = strlen(input_dir);
while (base_len > 0 && IS_PATH_SEP(input_dir[base_len - 1]))
base_len--;
@@ -324,7 +345,8 @@ int main(int argc, char **argv)
printf("\n");
if (!(flags & FPACK_QUIET))
printf("wrote: %s (%lu entries)\n", output, (unsigned long)entry_count);
printf("wrote: %s (%lu entries) in %.3fs\n", output,
(unsigned long)entry_count, now_seconds() - start_time);
free(output);
return 0;