X-Git-Url: https://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flogin%2Fsd-login.c;h=887c4210098f2bae00a47ee8487d896d8820f419;hb=1c0f62e37b0e775df7cb6121bc6ae64d1d885d3b;hp=5a03d614bb602fe0e3cad3d4e764a28b58d4aed9;hpb=50b1678aaba9d3c2be5115db34a822911d791b8c;p=elogind.git diff --git a/src/login/sd-login.c b/src/login/sd-login.c index 5a03d614b..887c42100 100644 --- a/src/login/sd-login.c +++ b/src/login/sd-login.c @@ -433,18 +433,18 @@ _public_ int sd_session_get_uid(const char *session, uid_t *uid) { return r; } -_public_ int sd_session_get_seat(const char *session, char **seat) { +static int session_get_string(const char *session, const char *field, char **value) { char *p, *s = NULL; int r; - if (!seat) + if (!value) return -EINVAL; r = file_of_session(session, &p); if (r < 0) return r; - r = parse_env_file(p, NEWLINE, "SEAT", &s, NULL); + r = parse_env_file(p, NEWLINE, field, &s, NULL); free(p); if (r < 0) { @@ -455,34 +455,28 @@ _public_ int sd_session_get_seat(const char *session, char **seat) { if (isempty(s)) return -ENOENT; - *seat = s; + *value = s; return 0; } -_public_ int sd_session_get_service(const char *session, char **service) { - char *p, *s = NULL; - int r; - - if (!service) - return -EINVAL; - - r = file_of_session(session, &p); - if (r < 0) - return r; +_public_ int sd_session_get_seat(const char *session, char **seat) { + return session_get_string(session, "SEAT", seat); +} - r = parse_env_file(p, NEWLINE, "SERVICE", &s, NULL); - free(p); +_public_ int sd_session_get_service(const char *session, char **service) { + return session_get_string(session, "SERVICE", service); +} - if (r < 0) { - free(s); - return r; - } +_public_ int sd_session_get_type(const char *session, char **type) { + return session_get_string(session, "TYPE", type); +} - if (isempty(s)) - return -ENOENT; +_public_ int sd_session_get_class(const char *session, char **class) { + return session_get_string(session, "CLASS", class); +} - *service = s; - return 0; +_public_ int sd_session_get_display(const char *session, char **display) { + return session_get_string(session, "DISPLAY", display); } static int file_of_seat(const char *seat, char **_p) {