diff options
author | Christoph Lohmann <20h@r-36.net> | 2012-10-28 06:54:08 +0100 |
---|---|---|
committer | Christoph Lohmann <20h@r-36.net> | 2012-10-28 06:54:08 +0100 |
commit | 91804d72273e18ab9f4022f3dc1cc7d90eb3fea0 (patch) | |
tree | d70f3fe9ae3602685ac31745b710bef22962cd0e | |
parent | 4abecf9ce46680bf5dd3824554eb0a506bb51524 (diff) | |
download | st-patched-91804d72273e18ab9f4022f3dc1cc7d90eb3fea0.tar.bz2 st-patched-91804d72273e18ab9f4022f3dc1cc7d90eb3fea0.tar.xz st-patched-91804d72273e18ab9f4022f3dc1cc7d90eb3fea0.zip |
Applying the patch of Roberto Caballero to set WINDOWID and all the pwuid()
variables. Thanks! xinit() and ttynew() had to be switched in their
call-appearance. Otherwise xw.win is not set.
-rw-r--r-- | st.c | 15 |
1 files changed, 14 insertions, 1 deletions
@@ -5,6 +5,7 @@ | |||
5 | #include <fcntl.h> | 5 | #include <fcntl.h> |
6 | #include <limits.h> | 6 | #include <limits.h> |
7 | #include <locale.h> | 7 | #include <locale.h> |
8 | #include <pwd.h> | ||
8 | #include <stdarg.h> | 9 | #include <stdarg.h> |
9 | #include <stdbool.h> | 10 | #include <stdbool.h> |
10 | #include <stdio.h> | 11 | #include <stdio.h> |
@@ -881,11 +882,23 @@ void | |||
881 | execsh(void) { | 882 | execsh(void) { |
882 | char **args; | 883 | char **args; |
883 | char *envshell = getenv("SHELL"); | 884 | char *envshell = getenv("SHELL"); |
885 | const struct passwd *pass = getpwuid(getuid()); | ||
886 | char buf[sizeof(long) * 8 + 1]; | ||
884 | 887 | ||
885 | unsetenv("COLUMNS"); | 888 | unsetenv("COLUMNS"); |
886 | unsetenv("LINES"); | 889 | unsetenv("LINES"); |
887 | unsetenv("TERMCAP"); | 890 | unsetenv("TERMCAP"); |
888 | 891 | ||
892 | if(pass) { | ||
893 | setenv("LOGNAME", pass->pw_name, 1); | ||
894 | setenv("USER", pass->pw_name, 1); | ||
895 | setenv("SHELL", pass->pw_shell, 0); | ||
896 | setenv("HOME", pass->pw_dir, 0); | ||
897 | } | ||
898 | |||
899 | snprintf(buf, sizeof(buf), "%lu", xw.win); | ||
900 | setenv("WINDOWID", buf, 1); | ||
901 | |||
889 | signal(SIGCHLD, SIG_DFL); | 902 | signal(SIGCHLD, SIG_DFL); |
890 | signal(SIGHUP, SIG_DFL); | 903 | signal(SIGHUP, SIG_DFL); |
891 | signal(SIGINT, SIG_DFL); | 904 | signal(SIGINT, SIG_DFL); |
@@ -2795,8 +2808,8 @@ main(int argc, char *argv[]) { | |||
2795 | run: | 2808 | run: |
2796 | setlocale(LC_CTYPE, ""); | 2809 | setlocale(LC_CTYPE, ""); |
2797 | tnew(80, 24); | 2810 | tnew(80, 24); |
2798 | ttynew(); | ||
2799 | xinit(); | 2811 | xinit(); |
2812 | ttynew(); | ||
2800 | selinit(); | 2813 | selinit(); |
2801 | run(); | 2814 | run(); |
2802 | return 0; | 2815 | return 0; |