main/client: simplify code for printing --version string

This commit is contained in:
Craig Barnes 2025-03-14 20:15:11 +00:00
parent d48a1c53f5
commit eb9357709b
5 changed files with 42 additions and 68 deletions

View file

@ -22,7 +22,6 @@
#include "foot-features.h"
#include "macros.h"
#include "util.h"
#include "version.h"
#include "xmalloc.h"
extern char **environ;
@ -62,20 +61,6 @@ sendall(int sock, const void *_buf, size_t len)
return len;
}
static const char *
version_and_features(void)
{
static char buf[256];
snprintf(buf, sizeof(buf),
"version: %s %cpgo %cime %cgraphemes %cassertions",
FOOT_VERSION,
feature_pgo() ? '+' : '-',
feature_ime() ? '+' : '-',
feature_graphemes() ? '+' : '-',
feature_assertions() ? '+' : '-');
return buf;
}
static void
print_usage(const char *prog_name)
{
@ -328,7 +313,7 @@ main(int argc, char *const *argv)
break;
case 'v':
printf("footclient %s\n", version_and_features());
print_version_and_features("footclient ");
ret = EXIT_SUCCESS;
goto err;

30
foot-features.c Normal file
View file

@ -0,0 +1,30 @@
#include "foot-features.h"
#include "version.h"
const char version_and_features[] =
"version: " FOOT_VERSION
#if defined(FOOT_PGO_ENABLED) && FOOT_PGO_ENABLED
" +pgo"
#else
" -pgo"
#endif
#if defined(FOOT_IME_ENABLED) && FOOT_IME_ENABLED
" +ime"
#else
" -ime"
#endif
#if defined(FOOT_GRAPHEME_CLUSTERING) && FOOT_GRAPHEME_CLUSTERING
" +graphemes"
#else
" -graphemes"
#endif
#if !defined(NDEBUG)
" +assertions"
#else
" -assertions"
#endif
;

View file

@ -1,39 +1,13 @@
#pragma once
#include <stdbool.h>
#include <stdio.h>
static inline bool feature_assertions(void)
{
#if defined(NDEBUG)
return false;
#else
return true;
#endif
}
extern const char version_and_features[];
static inline bool feature_ime(void)
static inline void
print_version_and_features(const char *prefix)
{
#if defined(FOOT_IME_ENABLED) && FOOT_IME_ENABLED
return true;
#else
return false;
#endif
}
static inline bool feature_pgo(void)
{
#if defined(FOOT_PGO_ENABLED) && FOOT_PGO_ENABLED
return true;
#else
return false;
#endif
}
static inline bool feature_graphemes(void)
{
#if defined(FOOT_GRAPHEME_CLUSTERING) && FOOT_GRAPHEME_CLUSTERING
return true;
#else
return false;
#endif
fputs(prefix, stdout);
fputs(version_and_features, stdout);
fputc('\n', stdout);
}

19
main.c
View file

@ -31,7 +31,6 @@
#include "shm.h"
#include "terminal.h"
#include "util.h"
#include "version.h"
#include "xmalloc.h"
#include "xsnprintf.h"
@ -46,20 +45,6 @@ fdm_sigint(struct fdm *fdm, int signo, void *data)
return true;
}
static const char *
version_and_features(void)
{
static char buf[256];
snprintf(buf, sizeof(buf),
"version: %s %cpgo %cime %cgraphemes %cassertions",
FOOT_VERSION,
feature_pgo() ? '+' : '-',
feature_ime() ? '+' : '-',
feature_graphemes() ? '+' : '-',
feature_assertions() ? '+' : '-');
return buf;
}
static void
print_usage(const char *prog_name)
{
@ -377,7 +362,7 @@ main(int argc, char *const *argv)
break;
case 'v':
printf("foot %s\n", version_and_features());
print_version_and_features("foot ");
return EXIT_SUCCESS;
case 'h':
@ -405,7 +390,7 @@ main(int argc, char *const *argv)
argv += optind;
}
LOG_INFO("%s", version_and_features());
LOG_INFO("%s", version_and_features);
{
struct utsname name;

View file

@ -295,7 +295,7 @@ executable(
'commands.c', 'commands.h',
'extract.c', 'extract.h',
'fdm.c', 'fdm.h',
'foot-features.h',
'foot-features.c', 'foot-features.h',
'ime.c', 'ime.h',
'input.c', 'input.h',
'key-binding.c', 'key-binding.h',
@ -323,7 +323,7 @@ executable(
executable(
'footclient',
'client.c', 'client-protocol.h',
'foot-features.h',
'foot-features.c', 'foot-features.h',
'macros.h',
'util.h',
version,