]> granicus.if.org Git - procps-ng/commitdiff
ps: possibility to display seat for a process
authorLukas Nykryn <lnykryn@redhat.com>
Mon, 22 Apr 2013 11:16:33 +0000 (13:16 +0200)
committerLukas Nykryn <lnykryn@redhat.com>
Wed, 24 Apr 2013 07:24:44 +0000 (09:24 +0200)
Library systemd-login offers possibility to display
name of seat for a session on multi-seat systems.

This patch adds output option "sd_seat" which will
show name of seat or "-", when name of seat can not
be determined, but "seat0" should always exist.

To maintain compatibility with non-systemd systems,
procps must be configured with --with-systemd option
to enable this option.

ps/output.c
ps/ps.1

index 4ccc6c3beedd753fb0ffe0222d63c63d982c0f3f..6b5f19c0f3e2ce9117163bf74938273287b5150e 100644 (file)
@@ -1258,6 +1258,26 @@ fail:
   return 1;
 }
 
+static int pr_sd_seat(char *restrict const outbuf, const proc_t *restrict const pp){
+  int r;
+  size_t len;
+  char *session;
+  char *seat;
+  r = sd_pid_get_session(pp->tgid, &session);
+  if(r<0) goto fail;
+  r = sd_session_get_seat(session, &seat);
+  free(session);
+  if(r<0) goto fail;
+  len = snprintf(outbuf, COLWID, "%s", seat);
+  free(seat);
+  return len;
+
+fail:
+  outbuf[0] = '-';
+  outbuf[1] = '\0';
+  return 1;
+}
+
 #endif
 /****************** FLASK & seLinux security stuff **********************/
 // move the bulk of this to libproc sometime
@@ -1588,6 +1608,7 @@ static const format_struct format_array[] = {
 #ifdef WITH_SYSTEMD
 {"sd_machine","MACHINE", pr_sd_machine, sr_nop,  31,   0,    LNX, ET|LEFT},
 {"sd_ouid",   "OWNER",   pr_sd_ouid,  sr_nop,     5,   0,    LNX, ET|LEFT},
+{"sd_seat",   "SEAT",    pr_sd_seat,  sr_nop,    11,   0,    LNX, ET|LEFT},
 {"sd_session","SESSION", pr_sd_session, sr_nop,  11,   0,    LNX, ET|LEFT},
 {"sd_unit",   "UNIT",    pr_sd_unit,  sr_nop,    31,   0,    LNX, ET|LEFT},
 {"sd_uunit",   "UUNIT",  pr_sd_uunit, sr_nop,    31,   0,    LNX, ET|LEFT},
diff --git a/ps/ps.1 b/ps/ps.1
index df2400fa15953009d764705a04a5cfccb807c4be..af249c2c82e9a299dfd4b0c4e10bae5074fad727 100644 (file)
--- a/ps/ps.1
+++ b/ps/ps.1
@@ -1497,6 +1497,10 @@ sd_ouid  OWNER   T{
 displays the Unix user identifier of the owner of the session of a process.
 T}
 
+sd_seat        SEAT    T{
+displays login session identifier of a process.
+T}
+
 sd_session     SESSION T{
 displays login session identifier of a process.
 T}