diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index 3807a344cbd64466ddd32c668d80ff4dbcdd593d..f43761d0bd50e1852e5774a50199a01f5f7f22eb 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -1,6 +1,7 @@ build-and-test-with-drm: image: alpine:3.19 script: + - set -e # Stop on first error - apk -q add git bash build-base meson linux-headers inih-dev libinput-dev libxkbcommon-dev libdrm-dev scdoc - git submodule init - git submodule update @@ -9,6 +10,7 @@ build-and-test-with-drm: build-and-test-without-drm: image: alpine:3.19 script: + - set -e # Stop on first error - apk -q add git bash build-base meson linux-headers inih-dev libinput-dev libxkbcommon-dev scdoc - git submodule init - git submodule update @@ -17,6 +19,7 @@ build-and-test-without-drm: build-iskey: image: alpine:3.19 script: + - set -e # Stop on first error - apk -q add git bash build-base meson linux-headers libevdev-dev - cd iskey - meson setup _build diff --git a/.gitmodules b/.gitmodules index fcb8f14422c09a65ca90ac8c66ab8501103f052c..83e7cf6fcad1a2d13e77d9df7e40ad71483ac5ee 100644 --- a/.gitmodules +++ b/.gitmodules @@ -1,3 +1,3 @@ [submodule "lvgl"] path = lvgl - url = https://github.com/littlevgl/lvgl.git + url = https://github.com/lvgl/lvgl.git diff --git a/CHANGELOG.md b/CHANGELOG.md index 0058f18cb142ace24aba7b7f966ad825e0d0ce7c..47f9f822b5ed2e3f944620fcc6c189e1279aee5b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -21,6 +21,7 @@ If a change only affects particular applications, they are listed in parentheses - feat(buffyboard): Add a buffyboard.service systemd service (!34, @uninsane) - fix(unl0kr): Select an available DRM device instead of a hard-coded one (!35, thanks @Sorcus) - feat(unl0kr): Enable software rotation (!32, thanks @xs5871 & @craftyguy) +- misc: do not hardcode endianess of a system (!41, thanks @vstoiakin) - misc(unl0kr): Optimize the main loop (!38, thanks @vstoiakin) ## 3.2.0 (2024-06-03) diff --git a/buffyboard/lv_conf.h b/buffyboard/lv_conf.h index 23acdb9aa48f590daa4aec44952c88df4f1d9375..f711deda8aafb24147df17681ccf3a2343f8dafa 100644 --- a/buffyboard/lv_conf.h +++ b/buffyboard/lv_conf.h @@ -313,9 +313,6 @@ e.g. "stm32f769xx.h" or "stm32f429xx.h"*/ * COMPILER SETTINGS *====================*/ -/*For big endian systems set to 1*/ -#define LV_BIG_ENDIAN_SYSTEM 0 - /*Define a custom attribute to `lv_tick_inc` function*/ #define LV_ATTRIBUTE_TICK_INC diff --git a/man/unl0kr.1.scd b/man/unl0kr.1.scd index 7aa9ed5ea9c46da56155a0bd57839f670998ee5a..523fc6193a846238c804df8eb6609fbe85bf9a89 100644 --- a/man/unl0kr.1.scd +++ b/man/unl0kr.1.scd @@ -32,7 +32,7 @@ password is printed to STDOUT. All other output happens on STDERR. *-g, --geometry=NxM[@X,Y]* Force a display size of N horizontal times M vertical pixels, offset horizontally by X pixels and vertically by Y pixels. -*-d --dpi=N* +*-d --dpi=N* Override the display's DPI value. *-r, --rotate=[0-3]* Rotate the UI to the given orientation. The @@ -42,11 +42,13 @@ password is printed to STDOUT. All other output happens on STDERR. * 1 - clockwise orientation (90 degrees) * 2 - upside down orientation (180 degrees) * 3 - counterclockwise orientation (270 degrees) -*-h, --help* +*-h, --help* Print this message and exit. -*-v, --verbose* +*-n* + Do not append a newline character to a password. +*-v, --verbose* Enable more detailed logging output on STDERR. -*-V, --version* +*-V, --version* Print the unl0kr version and exit. # EXAMPLES diff --git a/meson.build b/meson.build index 042ab15cc0ad883565fee1827f67785d90d1dcf9..3cc51f48044476661732c460926a4099b79be12d 100644 --- a/meson.build +++ b/meson.build @@ -4,7 +4,11 @@ project('buffybox', 'c', meson_version: '>= 0.59.0' ) -add_project_arguments('-DPROJECT_VERSION="@0@"'.format(meson.project_version()), language: 'c') +add_project_arguments( + '-DPROJECT_VERSION="@0@"'.format(meson.project_version()), + '-DLV_BIG_ENDIAN_SYSTEM=' + (host_machine.endian() == 'big'? '1' : '0'), + language: 'c' +) depinih = dependency('inih') deplibinput = dependency('libinput') diff --git a/test/helpers.sh b/test/helpers.sh index 027fca9f81d9ea0ca1240dfe0f16a84ec2b4f627..7e80e3b946b401a2205938f454bf96662b9226c6 100644 --- a/test/helpers.sh +++ b/test/helpers.sh @@ -58,8 +58,10 @@ function ok() { function run_script() { info "Executing $1" - "$1" + rc=0 + "$1" || rc=1 echo + return $rc } function read_version_from_meson() { diff --git a/test/test-with-drm.sh b/test/test-with-drm.sh index 82255104566640498a8502c12fb101eb738fc091..58fc1b76f96da8e2ae48d2fe02d88851c6bb2a32 100755 --- a/test/test-with-drm.sh +++ b/test/test-with-drm.sh @@ -4,8 +4,12 @@ root=$(dirname "${BASH_SOURCE[0]}") source "$root/helpers.sh" -run_script "$root/build-with-drm.sh" -run_script "$root/test-version-matches-meson-and-changelog.sh" -run_script "$root/test-uses-fb-backend-by-default.sh" -run_script "$root/test-uses-fb-backend-if-selected-via-config.sh" -run_script "$root/test-uses-drm-backend-if-selected-via-config-and-available.sh" +rc=0 + +run_script "$root/build-with-drm.sh" || rc=1 +run_script "$root/test-version-matches-meson-and-changelog.sh" || rc=1 +run_script "$root/test-uses-fb-backend-by-default.sh" || rc=1 +run_script "$root/test-uses-fb-backend-if-selected-via-config.sh" || rc=1 +run_script "$root/test-uses-drm-backend-if-selected-via-config-and-available.sh" || rc=1 + +exit $rc diff --git a/test/test-without-drm.sh b/test/test-without-drm.sh index a8e86c99008bf5820e31ba08be1aff8bf2ecbb1d..34830416f55ccfbcf30caccd808a350f50635aee 100755 --- a/test/test-without-drm.sh +++ b/test/test-without-drm.sh @@ -4,8 +4,12 @@ root=$(dirname "${BASH_SOURCE[0]}") source "$root/helpers.sh" -run_script "$root/build-without-drm.sh" -run_script "$root/test-version-matches-meson-and-changelog.sh" -run_script "$root/test-uses-fb-backend-by-default.sh" -run_script "$root/test-uses-fb-backend-if-selected-via-config.sh" -run_script "$root/test-uses-fb-backend-if-drm-selected-via-config-but-unavailable.sh" +rc=0 + +run_script "$root/build-without-drm.sh" || rc=1 +run_script "$root/test-version-matches-meson-and-changelog.sh" || rc=1 +run_script "$root/test-uses-fb-backend-by-default.sh" || rc=1 +run_script "$root/test-uses-fb-backend-if-selected-via-config.sh" || rc=1 +run_script "$root/test-uses-fb-backend-if-drm-selected-via-config-but-unavailable.sh" || rc=1 + +exit $rc diff --git a/unl0kr/command_line.c b/unl0kr/command_line.c index 9d8f4c5f08dfa5f48a556a5894b35bce43f073f0..100a82693049a539eb5726c11251c90fa5ff49cf 100644 --- a/unl0kr/command_line.c +++ b/unl0kr/command_line.c @@ -45,6 +45,7 @@ static void init_opts(ul_cli_opts *opts) { opts->y_offset = 0; opts->dpi = 0; opts->rotation = LV_DISPLAY_ROTATION_0; + opts->newline = true; opts->verbose = false; } @@ -77,6 +78,7 @@ static void print_usage() { " * 2 - upside down orientation (180 degrees)\n" " * 3 - counterclockwise orientation (270 degrees)\n" " -h, --help Print this message and exit\n" + " -n Do not append a newline character to a password\n" " -v, --verbose Enable more detailed logging output on STDERR\n" " -V, --version Print the unl0kr version and exit\n"); /*-------------------------------- 78 CHARS --------------------------------*/ @@ -103,7 +105,7 @@ void ul_cli_parse_opts(int argc, char *argv[], ul_cli_opts *opts) { int opt, index = 0; - while ((opt = getopt_long(argc, argv, "C:g:d:r:hvV", long_opts, &index)) != -1) { + while ((opt = getopt_long(argc, argv, "C:g:d:r:hnvV", long_opts, &index)) != -1) { switch (opt) { case 'C': opts->config_files = realloc(opts->config_files, (opts->num_config_files + 1) * sizeof(char *)); @@ -153,6 +155,9 @@ void ul_cli_parse_opts(int argc, char *argv[], ul_cli_opts *opts) { case 'h': print_usage(); exit(EXIT_SUCCESS); + case 'n': + opts->newline = false; + break; case 'v': opts->verbose = true; break; diff --git a/unl0kr/command_line.h b/unl0kr/command_line.h index b9cea7e354e3d2b9aa2ab79f4733a998ee955cc7..c6e075f3377143a47786177f1f914de31ecb8830 100644 --- a/unl0kr/command_line.h +++ b/unl0kr/command_line.h @@ -30,6 +30,8 @@ typedef struct { int dpi; /* Display rotation */ lv_display_rotation_t rotation; + /* If true, append a newline character to a password */ + bool newline; /* Verbose mode. If true, provide more detailed logging output on STDERR. */ bool verbose; } ul_cli_opts; diff --git a/unl0kr/lv_conf.h b/unl0kr/lv_conf.h index d2597e2b2c7a5139e2337131ba12c8928d5a76c5..de6a8e232ad1064659430c539d7182871cb5b052 100644 --- a/unl0kr/lv_conf.h +++ b/unl0kr/lv_conf.h @@ -207,9 +207,6 @@ e.g. "stm32f769xx.h" or "stm32f429xx.h"*/ * COMPILER SETTINGS *====================*/ -/*For big endian systems set to 1*/ -#define LV_BIG_ENDIAN_SYSTEM 0 - /*Define a custom attribute to `lv_tick_inc` function*/ #define LV_ATTRIBUTE_TICK_INC diff --git a/unl0kr/main.c b/unl0kr/main.c index ca26bf09e4634f3cd46ca0a4199906f64066b3b3..d2a5b84443545d5b4775d398e97a5b1d64fddbb2 100644 --- a/unl0kr/main.c +++ b/unl0kr/main.c @@ -331,7 +331,7 @@ static void textarea_ready_cb(lv_event_t *event) { static void print_password_and_exit(lv_obj_t *textarea) { /* Print the password to STDOUT */ - printf("%s\n", lv_textarea_get_text(textarea)); + printf(cli_opts.newline? "%s\n" : "%s", lv_textarea_get_text(textarea)); /* Clear the screen so that when the password field was unobscured, it cannot * leak via stale display buffers after we've exited */ diff --git a/unl0kr/unl0kr-agent.c b/unl0kr/unl0kr-agent.c index 6f0b01f05e258a7615863bab0c38ee396910aa4e..e62edb8c99dc5aef4e0e9afcff87f6633dccd64b 100644 --- a/unl0kr/unl0kr-agent.c +++ b/unl0kr/unl0kr-agent.c @@ -418,7 +418,7 @@ int exec_unl0kr(char** ret_password) exit(EXIT_FAILURE); } - execl(UNL0KR_BINARY, "unl0kr", (char*) 0); + execl(UNL0KR_BINARY, UNL0KR_BINARY, "-n", (char*) 0); perror("exec() is failed"); exit(EXIT_FAILURE);