misc batch of fixes before v1.2.3 (#65)

* fix some formatter and linter issues
* make clang-tidy/clang-format fail with error status and output in github error format
* docs, add kmscon thing
* and some CI stuff
This commit is contained in:
2025-07-20 21:50:12 +02:00
committed by GitHub
parent 4a1b868b8e
commit 8f0213db74
9 changed files with 44 additions and 22 deletions

View File

@@ -30,14 +30,22 @@ jobs:
clangcheck: clangcheck:
name: Clang name: Clang
runs-on: ubuntu-24.04 runs-on: ubuntu-latest
container:
image: ubuntu:25.04
steps: steps:
- uses: actions/checkout@v4 - uses: actions/checkout@v4
- uses: awalsh128/cache-apt-pkgs-action@latest - run: apt -y update && apt install -y clang-format clang-tidy make gcc git bear libpam0g-dev
with:
packages: "clang-format clang-tidy bear libpam0g-dev"
version: 1.0
- run: bear -- make - run: bear -- make
- run: clang-format -ni src/*.c include/*.h - run: clang-format -version && clang-format -dump-config
- run: clang-tidy -p . src/*.c include/*.h - run: |
set -euo pipefail
clang-format -ni src/*.c include/*.h -Werror 2>&1 | \
sed -E 's/^([^ ]+\.[ch]):([0-9]+):([0-9]+): ([a-z]+): (.*)$/::\4 file=\1,line=\2,col=\3::\5/'
- run: clang-tidy -version && clang-tidy -dump-config
- run: |
set -euo pipefail
clang-tidy -p . src/*.c include/*.h -warnings-as-errors=\* 2>&1 1>/dev/null |
sed -E 's/^([^ ]+\.[ch]):([0-9]+):([0-9]+): ([a-z]+): (.*)$/::\4 file=\1,line=\2,col=\3::\5/'

View File

@@ -10,7 +10,18 @@ LiDM is like any [Display Manager](https://en.wikipedia.org/wiki/X_display_manag
![demo gif](assets/media/lidm.gif) ![demo gif](assets/media/lidm.gif)
> _shown as in a featured terminal emulator, actual linux console doesn't support as much color and decorations_ <blockquote><details>
<summary><i>
shown as in a featured terminal emulator, actual linux console doesn't support as much color and decorations
</i></summary>
If you want to add fancy color and font support to your TTYs you can wrap lidm in [`kmscon`](https://wiki.archlinux.org/title/KMSCON). (edit appropriate service files). e.g:
```sh
kmscon -l --vt /dev/tty7 --font-name "Cascadia Code" -- /usr/bin/lidm
```
</details></blockquote>
> _however, all colors and strings are fully customizable_ > _however, all colors and strings are fully customizable_

View File

@@ -13,8 +13,9 @@ make -j"$(nproc)" "$@" 2> /tmp/stderr || ERR=$?
BSIZE=$(stat --printf="%s" lidm) BSIZE=$(stat --printf="%s" lidm)
HSIZE=$(numfmt --to=iec-i<<<"$BSIZE")B HSIZE=$(numfmt --to=iec-i<<<"$BSIZE")B
WARNS=$( WARNS=$(
{ grep -E '^[^ ]+\.[ch]:[0-9]+:[0-9]+: [a-z]+:' /tmp/stderr || :; } \ sed -nE \
| sed -E 's/^([^ ]+\.[ch]):([0-9]+):([0-9]+): ([a-z]+): (.*)$/::\4 file=\1,line=\2,col=\3::\5/' 's/^([^ ]+\.[ch]):([0-9]+):([0-9]+): ([a-z]+): (.*)$/::\4 file=\1,line=\2,col=\3::\5/p' \
/tmp/stderr
) )
WARNS_NUM=$({ [[ "$WARNS" == "" ]] && echo 0; } || wc -l <<<"$WARNS") WARNS_NUM=$({ [[ "$WARNS" == "" ]] && echo 0; } || wc -l <<<"$WARNS")

View File

@@ -3,10 +3,12 @@
#include <stdio.h> #include <stdio.h>
void log_init(FILE* fd); #include "macros.h"
void log_puts(const char* msg);
void log_printf(const char* fmt, ...); void log_init(FILE* NNULLABLE fd);
void log_puts(const char* NNULLABLE msg);
void log_printf(const char* NNULLABLE fmt, ...);
// NOLINTNEXTLINE(readability-identifier-length) // NOLINTNEXTLINE(readability-identifier-length)
void log_perror(const char* s); void log_perror(const char* NNULLABLE s);
#endif #endif

View File

@@ -36,7 +36,7 @@ int pam_conversation(int num_msg, const struct pam_message** msg,
} }
#ifndef PAM_SERVICE_FALLBACK #ifndef PAM_SERVICE_FALLBACK
#define PAM_SERVICE_FALLBACK "login" #define PAM_SERVICE_FALLBACK "login"
#endif #endif
#define CHECK_PAM_RET(call) \ #define CHECK_PAM_RET(call) \

View File

@@ -243,7 +243,7 @@ int parse_config(struct config* NNULLABLE config, char* NNULLABLE path) {
if (fd == NULL) { if (fd == NULL) {
log_perror("fopen"); log_perror("fopen");
log_printf(" [I] No config, place one at " LIDM_CONF_PATH log_printf(" [I] No config, place one at " LIDM_CONF_PATH
" or set the LIDM_CONF env variable"); " or set the LIDM_CONF env variable\n");
return 0; // Its fine now anyways return 0; // Its fine now anyways
} }

View File

@@ -32,7 +32,7 @@ void log_perror(const char* s) {
if (!logger_out) return; if (!logger_out) return;
if (s) if (s)
(void)fprintf(logger_out, "%s: %s", s, strerror(errno)); (void)fprintf(logger_out, "%s: %s\n", s, strerror(errno));
else else
(void)fprintf(logger_out, "%s", strerror(errno)); (void)fprintf(logger_out, "%s\n", strerror(errno));
} }

View File

@@ -115,13 +115,13 @@ char* trunc_gethostname(const size_t MAXLEN, const char* const ELLIPSIS) {
char* buf = malloc(alloc_size); char* buf = malloc(alloc_size);
if (!buf) return NULL; if (!buf) return NULL;
if(gethostname(buf, alloc_size) != 0) { if (gethostname(buf, alloc_size) != 0) {
free(buf); free(buf);
return NULL; return NULL;
} }
if (utf8len(buf) > MAXLEN) { if (utf8len(buf) > MAXLEN) {
int end = utf8trunc(buf, MAXLEN - utf8len(ELLIPSIS)); size_t end = utf8trunc(buf, MAXLEN - utf8len(ELLIPSIS));
strcpy(&buf[end], ELLIPSIS); strcpy(&buf[end], ELLIPSIS);
} }
return buf; return buf;

View File

@@ -106,12 +106,12 @@ size_t utf8len_until(const char* str, const char* until) {
size_t utf8trunc(char* str, size_t n) { size_t utf8trunc(char* str, size_t n) {
size_t bytes = 0; size_t bytes = 0;
while (true) { while (true) {
if(str[bytes] == '\0') break; if (str[bytes] == '\0') break;
if (utf8_iscont(str[bytes])) { if (utf8_iscont(str[bytes])) {
bytes++; bytes++;
continue; continue;
} }
if(n == 0) { if (n == 0) {
str[bytes] = '\0'; str[bytes] = '\0';
break; break;
} }