chiark
/
gitweb
/
~ianmdlvl
/
elogind.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
__thread --> thread_local for C11 compat
[elogind.git]
/
src
/
login
/
logind-seat.c
diff --git
a/src/login/logind-seat.c
b/src/login/logind-seat.c
index 6f3299bbade725652a7bddeecdb9c5e87edae41e..c73860478d1619dd71bdfd897fd0d9880ffa2a0a 100644
(file)
--- a/
src/login/logind-seat.c
+++ b/
src/login/logind-seat.c
@@
-27,8
+27,8
@@
#include <linux/vt.h>
#include <string.h>
#include <linux/vt.h>
#include <string.h>
-#include "s
ystemd/s
d-id128.h"
-#include "s
ystemd/s
d-messages.h"
+#include "sd-id128.h"
+#include "sd-messages.h"
#include "logind-seat.h"
#include "logind-acl.h"
#include "util.h"
#include "logind-seat.h"
#include "logind-acl.h"
#include "util.h"
@@
-51,7
+51,7
@@
Seat *seat_new(Manager *m, const char *id) {
return NULL;
}
return NULL;
}
- s->id =
path_get_file_
name(s->state_file);
+ s->id =
base
name(s->state_file);
s->manager = m;
if (hashmap_put(m->seats, s->id, s) < 0) {
s->manager = m;
if (hashmap_put(m->seats, s->id, s) < 0) {
@@
-84,9
+84,9
@@
void seat_free(Seat *s) {
}
int seat_save(Seat *s) {
}
int seat_save(Seat *s) {
+ _cleanup_free_ char *temp_path = NULL;
+ _cleanup_fclose_ FILE *f = NULL;
int r;
int r;
- FILE *f;
- char *temp_path;
assert(s);
assert(s);
@@
-151,9
+151,6
@@
int seat_save(Seat *s) {
unlink(temp_path);
}
unlink(temp_path);
}
- fclose(f);
- free(temp_path);
-
finish:
if (r < 0)
log_error("Failed to save seat data for %s: %s", s->id, strerror(-r));
finish:
if (r < 0)
log_error("Failed to save seat data for %s: %s", s->id, strerror(-r));
@@
-169,24
+166,20
@@
int seat_load(Seat *s) {
return 0;
}
return 0;
}
-static int vt_allocate(int vtnr) {
-
int fd, r
;
-
char *p
;
+static int vt_allocate(
unsigned
int vtnr) {
+
_cleanup_free_ char *p = NULL
;
+
_cleanup_close_ int fd = -1
;
assert(vtnr >= 1);
assert(vtnr >= 1);
- if (asprintf(&p, "/dev/tty%
i
", vtnr) < 0)
+ if (asprintf(&p, "/dev/tty%
u
", vtnr) < 0)
return -ENOMEM;
fd = open_terminal(p, O_RDWR|O_NOCTTY|O_CLOEXEC);
return -ENOMEM;
fd = open_terminal(p, O_RDWR|O_NOCTTY|O_CLOEXEC);
- free(p);
-
- r = fd < 0 ? -errno : 0;
-
- if (fd >= 0)
- close_nointr_nofail(fd);
+ if (fd < 0)
+ return -errno;
- return
r
;
+ return
0
;
}
int seat_preallocate_vts(Seat *s) {
}
int seat_preallocate_vts(Seat *s) {
@@
-248,18
+241,18
@@
int seat_set_active(Seat *s, Session *session) {
if (old_active) {
session_device_pause_all(old_active);
if (old_active) {
session_device_pause_all(old_active);
- session_send_changed(old_active, "Active
\0"
);
+ session_send_changed(old_active, "Active
", NULL
);
}
seat_apply_acls(s, old_active);
if (session && session->started) {
}
seat_apply_acls(s, old_active);
if (session && session->started) {
- session_send_changed(session, "Active
\0"
);
+ session_send_changed(session, "Active
", NULL
);
session_device_resume_all(session);
}
if (!session || session->started)
session_device_resume_all(session);
}
if (!session || session->started)
- seat_send_changed(s, "ActiveSession
\0"
);
+ seat_send_changed(s, "ActiveSession
", NULL
);
seat_save(s);
seat_save(s);
@@
-277,7
+270,7
@@
int seat_set_active(Seat *s, Session *session) {
return 0;
}
return 0;
}
-int seat_active_vt_changed(Seat *s, int vtnr) {
+int seat_active_vt_changed(Seat *s,
unsigned
int vtnr) {
Session *i, *new_active = NULL;
int r;
Session *i, *new_active = NULL;
int r;
@@
-287,7
+280,7
@@
int seat_active_vt_changed(Seat *s, int vtnr) {
if (!seat_has_vts(s))
return -EINVAL;
if (!seat_has_vts(s))
return -EINVAL;
- log_debug("VT changed to %
i
", vtnr);
+ log_debug("VT changed to %
u
", vtnr);
LIST_FOREACH(sessions_by_seat, i, s->sessions)
if (i->vtnr == vtnr) {
LIST_FOREACH(sessions_by_seat, i, s->sessions)
if (i->vtnr == vtnr) {
@@
-304,7
+297,8
@@
int seat_active_vt_changed(Seat *s, int vtnr) {
int seat_read_active_vt(Seat *s) {
char t[64];
ssize_t k;
int seat_read_active_vt(Seat *s) {
char t[64];
ssize_t k;
- int r, vtnr;
+ unsigned int vtnr;
+ int r;
assert(s);
assert(s);
@@
-327,13
+321,13
@@
int seat_read_active_vt(Seat *s) {
return -EIO;
}
return -EIO;
}
- r = safe_ato
i
(t+3, &vtnr);
+ r = safe_ato
u
(t+3, &vtnr);
if (r < 0) {
log_error("Failed to parse VT number %s", t+3);
return r;
}
if (r < 0) {
log_error("Failed to parse VT number %s", t+3);
return r;
}
- if (
vtnr <= 0
) {
+ if (
!vtnr
) {
log_error("VT number invalid: %s", t+3);
return -EIO;
}
log_error("VT number invalid: %s", t+3);
return -EIO;
}
@@
-414,14
+408,17
@@
int seat_attach_session(Seat *s, Session *session) {
assert(session);
assert(!session->seat);
assert(session);
assert(!session->seat);
+ if (!seat_has_vts(s) != !session->vtnr)
+ return -EINVAL;
+
session->seat = s;
LIST_PREPEND(sessions_by_seat, s->sessions, session);
session->seat = s;
LIST_PREPEND(sessions_by_seat, s->sessions, session);
- seat_send_changed(s, "Sessions
\0"
);
+ seat_send_changed(s, "Sessions
", NULL
);
/* On seats with VTs, the VT logic defines which session is active. On
/* On seats with VTs, the VT logic defines which session is active. On
- * seats without VTs, we automatically activate
the first session
. */
- if (!seat_has_vts(s)
&& !s->active
)
+ * seats without VTs, we automatically activate
new sessions
. */
+ if (!seat_has_vts(s))
seat_set_active(s, session);
return 0;
seat_set_active(s, session);
return 0;
@@
-515,14
+512,14
@@
int seat_get_idle_hint(Seat *s, dual_timestamp *t) {
return idle_hint;
}
return idle_hint;
}
-
int
seat_check_gc(Seat *s, bool drop_not_started) {
+
bool
seat_check_gc(Seat *s, bool drop_not_started) {
assert(s);
if (drop_not_started && !s->started)
assert(s);
if (drop_not_started && !s->started)
- return
0
;
+ return
false
;
if (seat_is_seat0(s))
if (seat_is_seat0(s))
- return
1
;
+ return
true
;
return seat_has_master_device(s);
}
return seat_has_master_device(s);
}