galeb

Једноставна статичка дистрибуција заснована на musl-у
Дневник | Датотеке | Референце | ПРОЧИТАЈМЕ | ЛИЦЕНЦА

чување 088433df6a144bf4b414e8f92bbeda4a16575479
родитељ edf832256c22b9ae053c13eda45775c8532a29db
Аутор: Страхиња Радић <contact@strahinja.org>
Датум:   Tue, 26 Jul 2022 23:28:32 +0200

Make ubase login behave properly ("-mksh"); tmux fixes

Signed-off-by: Страхиња Радић <contact@strahinja.org>

Diffstat:
M03-packages.sh | 4+++-
M04-finale.sh | 3+++
Mfil/rc.d/rc.init | 14+++++++-------
Apat/ubase-galeb/login-proper-login-shell-minus.patch | 45+++++++++++++++++++++++++++++++++++++++++++++
измењених датотека: 4, додавања: 58(+), брисања: 8(-)

diff --git a/03-packages.sh b/03-packages.sh @@ -5432,7 +5432,9 @@ mkpk_install() DESTDIR=/build export CFLAGS LDFLAGS DESTDIR - ./configure --prefix=/ || exit 1 + ./configure --prefix=/ \\ + --enable-static \\ + --datarootdir=/share || exit 1 make ${JN} || exit 1 make install-strip diff --git a/04-finale.sh b/04-finale.sh @@ -174,6 +174,9 @@ else apply_patch finale -Np1 -i \ ${G_PAT}/ubase-galeb/getty_show_issue.patch apply_patch finale -Np1 -i \ + ${G_PAT}/ubase-galeb/login-proper-login-shell-\ +minus.patch + apply_patch finale -Np1 -i \ ${G_PAT}/ubase-galeb/watch-react-to-ctrlc.patch cat <<! >MKPK mkpk_name() diff --git a/fil/rc.d/rc.init b/fil/rc.d/rc.init @@ -15,14 +15,14 @@ printf "${green}===( ${bold}${white}%s${norm}${green} )=== booting${norm}\n" \ ctrlaltdel -s msg info "Mounting essential filesystems" -mount -n -t proc -o nosuid,noexec,nodev proc /proc -mount -n -t sysfs -o nosuid,noexec,nodev sysfs /sys -mount -n -t tmpfs -o nosuid,nodev,noatime,mode=1777 tmp /tmp +mount -n -t proc -o nosuid,noexec,nodev proc /proc +mount -n -t sysfs -o nosuid,noexec,nodev sysfs /sys +mount -n -t tmpfs -o nosuid,nodev,noatime,mode=1777 tmp /tmp mkdir -p /dev/shm -mount -n -t tmpfs -o nosuid,nodev,noatime,mode=1777 shm /dev/shm +mount -n -t tmpfs -o nosuid,nodev,noatime,mode=1777 shm /dev/shm mkdir -p /dev/pts -mount -n -t devpts -o gid=5,mode=0020 devpts /dev/pts -mount -n -t tmpfs -o nosuid,nodev,noatime,mode=0755 run /var/run +mount -n -t devpts -o nosuid,noexec,noatime,gid=5,mode=0620 devpts /dev/pts +mount -n -t tmpfs -o nosuid,nodev,noatime,mode=0755 run /var/run printf "%s: /tmp/boot.log created on %s\n" $0 "$(date)" >/tmp/boot.log G_LOGFILE=/tmp/boot.log @@ -181,7 +181,7 @@ if [ -x /bin/rc.local ]; then fi :>/var/run/utmp -chmod 0600 /var/run/utmp 2>>${G_LOGFILE} +chmod 0664 /var/run/utmp 2>>${G_LOGFILE} chown root:utmp /var/run/utmp 2>>${G_LOGFILE} unset PATH G_LOGFILE diff --git a/pat/ubase-galeb/login-proper-login-shell-minus.patch b/pat/ubase-galeb/login-proper-login-shell-minus.patch @@ -0,0 +1,45 @@ +diff --git a/login.c b/login.c +index 25a59e4..7c671db 100644 +--- a/login.c ++++ b/login.c +@@ -4,6 +4,7 @@ + + #include <errno.h> + #include <grp.h> ++#include <limits.h> + #include <pwd.h> + #include <stdio.h> + #include <stdlib.h> +@@ -45,18 +46,29 @@ writeutmp(const char *user, const char *tty) + static int + dologin(struct passwd *pw, int preserve) + { +- char *shell = pw->pw_shell[0] == '\0' ? "/bin/sh" : pw->pw_shell; ++ char shell[2][4096]; ++ char* slash = NULL; ++ ++ if (!pw->pw_shell[0]) { ++ strcpy(shell[0], "/bin/sh"); ++ strcpy(shell[1], "-sh"); ++ } else { ++ strcpy(shell[0], pw->pw_shell); ++ *shell[1] = '-'; ++ slash = strrchr(shell[0], '/'); ++ strcpy(shell[1]+1, slash ? slash+1 : shell[0]); ++ } + + if (preserve == 0) + clearenv(); + setenv("HOME", pw->pw_dir, 1); +- setenv("SHELL", shell, 1); ++ setenv("SHELL", shell[0], 1); + setenv("USER", pw->pw_name, 1); + setenv("LOGNAME", pw->pw_name, 1); + setenv("PATH", ENV_PATH, 1); + if (chdir(pw->pw_dir) < 0) + eprintf("chdir %s:", pw->pw_dir); +- execlp(shell, shell, "-l", NULL); ++ execlp(shell[0], shell[1], NULL); + weprintf("execlp %s:", shell); + return (errno == ENOENT) ? 127 : 126; + }