mirror of
https://github.com/javalsai/lidm.git
synced 2026-02-27 03:50:44 +01:00
* chore(organization): allow nested header and c files * feat: add shell login "middleware" & etc: * lidm now calls `bash` (or other shells, depends on PACKAGE cfg) in login mode as a session wrapper to source most env (can be disabled) * this fixes a lot of env problems with all `/etc/profile` and more Extra: * implemented a musl compatible version of `execvpe` and now lidm should search for PATH everywhere it needs to * `search_path` now also checks if the found binary is properly executable * lidm now uses `confstr` for a decent PATH default if none is found * logs are unbuffered for cases where debug logs appear empty (exit without handlers moment) * chore: one-time evaluate certain makefile vars --------- Co-authored-by: grialion <48643945+grialion@users.noreply.github.com>
40 lines
752 B
C
40 lines
752 B
C
#include <errno.h>
|
|
#include <stdarg.h>
|
|
#include <string.h>
|
|
|
|
#include "log.h"
|
|
|
|
static FILE* logger_out = NULL;
|
|
|
|
void log_init(FILE* fd) {
|
|
if (logger_out) (void)fclose(logger_out);
|
|
(void)setvbuf(fd, NULL, _IONBF, 0);
|
|
logger_out = fd;
|
|
}
|
|
|
|
void log_puts(const char* msg) {
|
|
if (!logger_out) return;
|
|
(void)fputs(msg, logger_out);
|
|
}
|
|
|
|
void log_printf(const char* fmt, ...) {
|
|
if (!logger_out) return;
|
|
|
|
va_list args;
|
|
va_start(args, fmt);
|
|
|
|
(void)vfprintf(logger_out, fmt, args);
|
|
|
|
va_end(args);
|
|
}
|
|
|
|
// NOLINTNEXTLINE(readability-identifier-length)
|
|
void log_perror(const char* s) {
|
|
if (!logger_out) return;
|
|
|
|
if (s)
|
|
(void)fprintf(logger_out, "%s: %s\n", s, strerror(errno));
|
|
else
|
|
(void)fprintf(logger_out, "%s\n", strerror(errno));
|
|
}
|