| @@ -1,53 +1,47 @@ | | | @@ -1,53 +1,47 @@ |
1 | $NetBSD: patch-mate-session_gsm-systemd.c,v 1.2 2019/03/06 08:12:36 gutteridge Exp $ | | 1 | $NetBSD: patch-mate-session_gsm-systemd.c,v 1.3 2019/03/07 01:26:46 gutteridge Exp $ |
2 | | | 2 | |
3 | Deal with systemd-only function calls. | | 3 | Deal with systemd-only function calls. |
4 | | | 4 | |
5 | --- mate-session/gsm-systemd.c.orig 2019-02-10 13:54:15.000000000 +0000 | | 5 | --- mate-session/gsm-systemd.c.orig 2019-02-10 13:54:15.000000000 +0000 |
6 | +++ mate-session/gsm-systemd.c | | 6 | +++ mate-session/gsm-systemd.c |
7 | @@ -427,15 +427,25 @@ gsm_systemd_is_last_session_for_user (Gs | | 7 | @@ -427,15 +427,19 @@ gsm_systemd_is_last_session_for_user (Gs |
8 | char **sessions = NULL; | | 8 | char **sessions = NULL; |
9 | char *session = NULL; | | 9 | char *session = NULL; |
10 | gboolean is_last_session; | | 10 | gboolean is_last_session; |
11 | - int ret, i; | | 11 | - int ret, i; |
12 | + int ret = 0, i; | | 12 | + int ret = 1, i; |
13 | | | 13 | |
14 | +#ifdef HAVE_SYSTEMD | | 14 | +#ifdef HAVE_SYSTEMD |
15 | ret = sd_pid_get_session (getpid (), &session); | | 15 | ret = sd_pid_get_session (getpid (), &session); |
16 | +#endif | | 16 | +#endif |
17 | + | | | |
18 | + if (session == NULL) | | | |
19 | + return FALSE; | | | |
20 | | | 17 | |
21 | if (ret != 0) { | | 18 | if (ret != 0) { |
22 | return FALSE; | | 19 | return FALSE; |
23 | } | | 20 | } |
24 | | | 21 | |
25 | +#ifdef HAVE_SYSTEMD | | 22 | +#ifdef HAVE_SYSTEMD |
26 | ret = sd_uid_get_sessions (getuid (), FALSE, &sessions); | | 23 | ret = sd_uid_get_sessions (getuid (), FALSE, &sessions); |
27 | +#endif | | 24 | +#endif |
28 | + | | | |
29 | + if (sessions == NULL) | | | |
30 | + return FALSE; | | | |
31 | | | 25 | |
32 | if (ret <= 0) { | | 26 | if (ret <= 0) { |
33 | free (session); | | 27 | free (session); |
34 | @@ -450,7 +460,9 @@ gsm_systemd_is_last_session_for_user (Gs | | 28 | @@ -450,7 +454,9 @@ gsm_systemd_is_last_session_for_user (Gs |
35 | if (g_strcmp0 (sessions[i], session) == 0) | | 29 | if (g_strcmp0 (sessions[i], session) == 0) |
36 | continue; | | 30 | continue; |
37 | | | 31 | |
38 | +#ifdef HAVE_SYSTEMD | | 32 | +#ifdef HAVE_SYSTEMD |
39 | ret = sd_session_get_state (sessions[i], &state); | | 33 | ret = sd_session_get_state (sessions[i], &state); |
40 | +#endif | | 34 | +#endif |
41 | | | 35 | |
42 | if (ret != 0) | | 36 | if (ret != 0) |
43 | continue; | | 37 | continue; |
44 | @@ -461,7 +473,9 @@ gsm_systemd_is_last_session_for_user (Gs | | 38 | @@ -461,7 +467,9 @@ gsm_systemd_is_last_session_for_user (Gs |
45 | } | | 39 | } |
46 | free (state); | | 40 | free (state); |
47 | | | 41 | |
48 | +#ifdef HAVE_SYSTEMD | | 42 | +#ifdef HAVE_SYSTEMD |
49 | ret = sd_session_get_type (sessions[i], &type); | | 43 | ret = sd_session_get_type (sessions[i], &type); |
50 | +#endif | | 44 | +#endif |
51 | | | 45 | |
52 | if (ret != 0) | | 46 | if (ret != 0) |
53 | continue; | | 47 | continue; |