Tim Waugh 9bfad7
diff -uNrp -x '*~' coreutils-5.97-orig/src/su.c coreutils-5.97/src/su.c
Tim Waugh 9bfad7
--- coreutils-5.97-orig/src/su.c	2006-07-13 12:14:40.000000000 +0100
Tim Waugh 9bfad7
+++ coreutils-5.97/src/su.c	2006-07-13 12:24:33.000000000 +0100
Tim Waugh 9bfad7
@@ -131,11 +131,15 @@
Tim Waugh 9bfad7
 
Tim Waugh 9bfad7
 #include "error.h"
Tim Waugh 9bfad7
 
Tim Waugh 9bfad7
-/* The official name of this program (e.g., no `g' prefix).  */
Tim Waugh 9bfad7
+/* The official name of this program (e.g., no `g' prefix).
Tim Waugh 9bfad7
+ * - Add a "-l" to the name passed to PAM if this is a login simulation
Tim Waugh 9bfad7
+ */
Tim Waugh 9bfad7
 #ifndef RUNUSER
Tim Waugh 9bfad7
 #define PROGRAM_NAME "su"
Tim Waugh 9bfad7
+#define PROGRAM_NAME_L "su-l"
Tim Waugh 9bfad7
 #else
Tim Waugh 9bfad7
 #define PROGRAM_NAME "runuser"
Tim Waugh 9bfad7
+#define PROGRAM_NAME_L "runuser-l"
Tim Waugh 9bfad7
 #endif
Tim Waugh 9bfad7
 
Tim Waugh 9bfad7
 #ifndef AUTHORS
Tim Waugh 9bfad7
@@ -310,7 +314,8 @@ correct_password (const struct passwd *p
Tim Waugh 9bfad7
 #ifdef USE_PAM
Tim Waugh 9bfad7
   struct passwd *caller;
Tim Waugh 9bfad7
   char *tty_name, *ttyn;
Tim Waugh 9bfad7
-  retval = pam_start(PROGRAM_NAME, pw->pw_name, &conv, &pamh);
Tim Waugh 9bfad7
+  retval = pam_start(simulate_login ? PROGRAM_NAME_L : PROGRAM_NAME,
Tim Waugh 9bfad7
+		     pw->pw_name, &conv, &pamh);
Tim Waugh 9bfad7
   PAM_BAIL_P;
Tim Waugh 9bfad7
 
Tim Waugh 9bfad7
 #ifndef RUNUSER