mirror of
https://github.com/fastfetch-cli/fastfetch.git
synced 2026-10-29 16:26:39 +01:00
58 lines
1.5 KiB
C
58 lines
1.5 KiB
C
#include "fastfetch.h"
|
|
|
|
void ffPrintLocale(FFinstance* instance)
|
|
{
|
|
if(ffPrintCachedValue(instance, &instance->config.localeKey, "Locale"))
|
|
return;
|
|
|
|
char localeCode[256];
|
|
|
|
/* Try to open /etc/locale.conf in read-only mode */
|
|
FILE *fp;
|
|
fp = fopen("/etc/locale.conf", "r");
|
|
|
|
/* File does not exist */
|
|
if (fp == NULL) {
|
|
/* Check if LANG exists */
|
|
if (getenv("LANG") != NULL)
|
|
strcpy(localeCode, getenv("LANG"));
|
|
/* Check if LC_ALL exists */
|
|
else if (getenv("LC_ALL") != NULL)
|
|
strcpy(localeCode, getenv("LC_ALL"));
|
|
/* Check if LC_CTYPE exists */
|
|
else if (getenv("LC_CTYPE") != NULL)
|
|
strcpy(localeCode, getenv("LC_CTYPE"));
|
|
/* Check if LC_CTYPE exists */
|
|
else if (getenv("LC_CTYPE") != NULL)
|
|
strcpy(localeCode, getenv("LC_CTYPE"));
|
|
/* Check if LC_MESSAGES exists */
|
|
else if (getenv("LC_MESSAGES") != NULL)
|
|
strcpy(localeCode, getenv("LC_MESSAGES"));
|
|
/* User has broken system */
|
|
else
|
|
ffPrintError(instance, &instance->config.localeKey, "Locale", "Locale not found!");
|
|
/* /etc/locale.conf exists */
|
|
} else {
|
|
ffParsePropFile("/etc/locale.conf", "LANG=%[^\n]", localeCode);
|
|
|
|
/* Free pointer to file */
|
|
fclose(fp);
|
|
}
|
|
|
|
FF_STRBUF_CREATE(locale);
|
|
|
|
if(instance->config.localeFormat.length == 0)
|
|
{
|
|
ffStrbufSetS(&locale, localeCode);
|
|
}
|
|
else
|
|
{
|
|
ffParseFormatString(&locale, &instance->config.localeFormat, 1,
|
|
(FFformatarg){FF_FORMAT_ARG_TYPE_STRING, localeCode}
|
|
);
|
|
}
|
|
|
|
ffPrintAndSaveCachedValue(instance, &instance->config.localeKey, "Locale", &locale);
|
|
ffStrbufDestroy(&locale);
|
|
}
|