diff --git a/src/linyaps_box/container.cpp b/src/linyaps_box/container.cpp index c3f138b..8d8a117 100644 --- a/src/linyaps_box/container.cpp +++ b/src/linyaps_box/container.cpp @@ -1665,7 +1665,7 @@ void configure_terminal(const linyaps_box::container &container, } if (process.console_size) { - slave.set_size({ process.console_size->height, process.console_size->height, 0, 0 }); + slave.set_size({ process.console_size->height, process.console_size->width, 0, 0 }); } auto root = linyaps_box::utils::open("/", O_PATH | O_CLOEXEC | O_DIRECTORY); diff --git a/src/linyaps_box/io/forwarder.cpp b/src/linyaps_box/io/forwarder.cpp index ebc1cd1..2a254b1 100644 --- a/src/linyaps_box/io/forwarder.cpp +++ b/src/linyaps_box/io/forwarder.cpp @@ -29,7 +29,7 @@ auto Forwarder::set_src(const utils::file_descriptor &src) -> void auto Forwarder::set_dst(const utils::file_descriptor &dst) -> void { dst_.fd = &dst; - const auto ev = EPOLLET; + const uint32_t ev = EPOLLET; dst_.pollable = poller.get().add(*dst_.fd, ev); dst_.last_events = dst_.pollable ? ev : 0; diff --git a/src/linyaps_box/terminal.cpp b/src/linyaps_box/terminal.cpp index 77d7f57..c216958 100644 --- a/src/linyaps_box/terminal.cpp +++ b/src/linyaps_box/terminal.cpp @@ -33,8 +33,8 @@ auto terminal_master::resize(struct winsize size) -> void } terminal_slave::terminal_slave(terminal_slave &&other) noexcept - : termios(std::exchange(other.termios, std::nullopt)) - , slave_(std::move(other.slave_)) + : slave_(std::move(other.slave_)) + , termios(std::exchange(other.termios, std::nullopt)) { } diff --git a/tests/ll-box-st/14-console-size.json b/tests/ll-box-st/14-console-size.json new file mode 100644 index 0000000..db3519b --- /dev/null +++ b/tests/ll-box-st/14-console-size.json @@ -0,0 +1,31 @@ +{ + "name": "Change terminal size", + "process": { + "user": { + "uid": 0, + "gid": 0 + }, + "args": ["stty", "size"], + "env": [ + "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin", + "TERM=xterm", + "HOME=/root" + ], + "cwd": "/", + "terminal": true, + "consoleSize": { + "height": 24, + "width": 80 + } + }, + "linux": { + "readonlyPaths": [ + "/proc/asound", + "/proc/bus", + "/proc/fs", + "/proc/irq", + "/proc/sysrq-trigger" + ] + }, + "expected": "24 80" +} diff --git a/tests/ll-box-st/CMakeLists.txt b/tests/ll-box-st/CMakeLists.txt index c2d55b2..762683d 100644 --- a/tests/ll-box-st/CMakeLists.txt +++ b/tests/ll-box-st/CMakeLists.txt @@ -15,7 +15,8 @@ set(linyaps-box_SMOKE_TESTS ./10-check-oom.json ./11-output-to-null.json ./12-bind-host-dev.json - ./13-pid-extension.json) + ./13-pid-extension.json + ./14-console-size.json) foreach(test ${linyaps-box_SMOKE_TESTS}) add_test( diff --git a/tests/ll-box-st/ll-box-st b/tests/ll-box-st/ll-box-st index ba76061..9afe531 100755 --- a/tests/ll-box-st/ll-box-st +++ b/tests/ll-box-st/ll-box-st @@ -202,7 +202,7 @@ function run_test() { log "[INFO] ==== COMMAND OUTPUT START ====" local REAL REAL="$( - LINYAPS_BOX_LOG_FORCE_STDERR=1 "${TEST_COMMAND[@]}"