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.
This commit is contained in:
		
							
								
								
									
										15
									
								
								st.c
									
									
									
									
									
								
							
							
						
						
									
										15
									
								
								st.c
									
									
									
									
									
								
							| @@ -5,6 +5,7 @@ | |||||||
| #include <fcntl.h> | #include <fcntl.h> | ||||||
| #include <limits.h> | #include <limits.h> | ||||||
| #include <locale.h> | #include <locale.h> | ||||||
|  | #include <pwd.h> | ||||||
| #include <stdarg.h> | #include <stdarg.h> | ||||||
| #include <stdbool.h> | #include <stdbool.h> | ||||||
| #include <stdio.h> | #include <stdio.h> | ||||||
| @@ -881,11 +882,23 @@ void | |||||||
| execsh(void) { | execsh(void) { | ||||||
| 	char **args; | 	char **args; | ||||||
| 	char *envshell = getenv("SHELL"); | 	char *envshell = getenv("SHELL"); | ||||||
|  | 	const struct passwd *pass = getpwuid(getuid()); | ||||||
|  | 	char buf[sizeof(long) * 8 + 1]; | ||||||
|  |  | ||||||
| 	unsetenv("COLUMNS"); | 	unsetenv("COLUMNS"); | ||||||
| 	unsetenv("LINES"); | 	unsetenv("LINES"); | ||||||
| 	unsetenv("TERMCAP"); | 	unsetenv("TERMCAP"); | ||||||
|  |  | ||||||
|  | 	if(pass) { | ||||||
|  | 		setenv("LOGNAME", pass->pw_name, 1); | ||||||
|  | 		setenv("USER", pass->pw_name, 1); | ||||||
|  | 		setenv("SHELL", pass->pw_shell, 0); | ||||||
|  | 		setenv("HOME", pass->pw_dir, 0); | ||||||
|  | 	} | ||||||
|  |  | ||||||
|  | 	snprintf(buf, sizeof(buf), "%lu", xw.win); | ||||||
|  | 	setenv("WINDOWID", buf, 1); | ||||||
|  |  | ||||||
| 	signal(SIGCHLD, SIG_DFL); | 	signal(SIGCHLD, SIG_DFL); | ||||||
| 	signal(SIGHUP, SIG_DFL); | 	signal(SIGHUP, SIG_DFL); | ||||||
| 	signal(SIGINT, SIG_DFL); | 	signal(SIGINT, SIG_DFL); | ||||||
| @@ -2795,8 +2808,8 @@ main(int argc, char *argv[]) { | |||||||
| run: | run: | ||||||
| 	setlocale(LC_CTYPE, ""); | 	setlocale(LC_CTYPE, ""); | ||||||
| 	tnew(80, 24); | 	tnew(80, 24); | ||||||
| 	ttynew(); |  | ||||||
| 	xinit(); | 	xinit(); | ||||||
|  | 	ttynew(); | ||||||
| 	selinit(); | 	selinit(); | ||||||
| 	run(); | 	run(); | ||||||
| 	return 0; | 	return 0; | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user