On Mon, 24.12.12 06:25, Matthew Monaco (dgbale...@0x01b.net) wrote: > From: Matthew Monaco <matthew.mon...@0x01b.net>
Commited with a fix to make compilation clean. Thanks! > > --- > man/pam_systemd.xml | 9 +++++++++ > src/login/pam-module.c | 12 ++++++++++-- > 2 files changed, 19 insertions(+), 2 deletions(-) > > diff --git a/man/pam_systemd.xml b/man/pam_systemd.xml > index 2d2f191..600bfd7 100644 > --- a/man/pam_systemd.xml > +++ b/man/pam_systemd.xml > @@ -194,6 +194,15 @@ > </varlistentry> > > <varlistentry> > + <term><option>class=</option></term> > + > + <listitem><para>Takes a string > + argument which sets the session class. > + The XDG_SESSION_CLASS environmental variable > + takes precedence.</para></listitem> > + </varlistentry> > + > + <varlistentry> > <term><option>debug=</option></term> > > <listitem><para>Takes a boolean > diff --git a/src/login/pam-module.c b/src/login/pam-module.c > index e6764a1..ad56551 100644 > --- a/src/login/pam-module.c > +++ b/src/login/pam-module.c > @@ -49,6 +49,7 @@ static int parse_argv(pam_handle_t *handle, > bool *kill_processes, > char ***kill_only_users, > char ***kill_exclude_users, > + char **class, > bool *debug) { > > unsigned i; > @@ -135,6 +136,11 @@ static int parse_argv(pam_handle_t *handle, > *kill_exclude_users = l; > } > > + } else if (startswith(argv[i], "class=")) { > + > + if (class) > + *class = argv[i] + 6; > + > } else if (startswith(argv[i], "debug=")) { > if ((k = parse_boolean(argv[i] + 6)) < 0) { > pam_syslog(handle, LOG_ERR, "Failed to parse > debug= argument."); > @@ -322,7 +328,7 @@ _public_ PAM_EXTERN int pam_sm_open_session( > > struct passwd *pw; > bool kill_processes = false, debug = false; > - const char *username, *id, *object_path, *runtime_path, *service = > NULL, *tty = NULL, *display = NULL, *remote_user = NULL, *remote_host = NULL, > *seat = NULL, *type = NULL, *class, *cvtnr = NULL; > + const char *username, *id, *object_path, *runtime_path, *service = > NULL, *tty = NULL, *display = NULL, *remote_user = NULL, *remote_host = NULL, > *seat = NULL, *type = NULL, *class = NULL, *class_pam = NULL, *cvtnr = NULL; > char **controllers = NULL, **reset_controllers = NULL, > **kill_only_users = NULL, **kill_exclude_users = NULL; > DBusError error; > uint32_t uid, pid; > @@ -349,7 +355,7 @@ _public_ PAM_EXTERN int pam_sm_open_session( > argc, argv, > &controllers, &reset_controllers, > &kill_processes, &kill_only_users, > &kill_exclude_users, > - &debug) < 0) { > + &class_pam, &debug) < 0) { > r = PAM_SESSION_ERR; > goto finish; > } > @@ -485,6 +491,8 @@ _public_ PAM_EXTERN int pam_sm_open_session( > if (isempty(class)) > class = getenv("XDG_SESSION_CLASS"); > if (isempty(class)) > + class = class_pam; > + if (isempty(class)) > class = "user"; > > remote = !isempty(remote_host) && Lennart -- Lennart Poettering - Red Hat, Inc. _______________________________________________ systemd-devel mailing list systemd-devel@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/systemd-devel