X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Flogin%2Flogind-seat.c;h=813ab153e62b94e303ea0d70540560cefa49b45e;hb=48a439f2dac67302f3e7d1ccb21bd93e919efd02;hp=495ec50be06d21e1da86505f5c394b01c78b53af;hpb=8af9597bdb2f17e0220c90299a322cfff3c4195f;p=elogind.git diff --git a/src/login/logind-seat.c b/src/login/logind-seat.c index 495ec50be..813ab153e 100644 --- a/src/login/logind-seat.c +++ b/src/login/logind-seat.c @@ -20,17 +20,23 @@ ***/ #include -#include #include #include +#include #include "sd-messages.h" -#include "logind-seat.h" + +#include "alloc-util.h" +#include "fd-util.h" +#include "fileio.h" +#include "formats-util.h" #include "logind-acl.h" -#include "util.h" +#include "logind-seat.h" #include "mkdir.h" -#include "formats-util.h" +#include "parse-util.h" +#include "string-util.h" #include "terminal-util.h" +#include "util.h" Seat *seat_new(Manager *m, const char *id) { Seat *s; @@ -93,11 +99,11 @@ int seat_save(Seat *s) { r = mkdir_safe_label("/run/systemd/seats", 0755, 0, 0); if (r < 0) - goto finish; + goto fail; r = fopen_temporary(s->state_file, &f, &temp_path); if (r < 0) - goto finish; + goto fail; fchmod(fileno(f), 0644); @@ -141,19 +147,24 @@ int seat_save(Seat *s) { i->sessions_by_seat_next ? ' ' : '\n'); } - fflush(f); + r = fflush_and_check(f); + if (r < 0) + goto fail; - if (ferror(f) || rename(temp_path, s->state_file) < 0) { + if (rename(temp_path, s->state_file) < 0) { r = -errno; - unlink(s->state_file); - unlink(temp_path); + goto fail; } -finish: - if (r < 0) - log_error_errno(r, "Failed to save seat data %s: %m", s->state_file); + return 0; - return r; +fail: + (void) unlink(s->state_file); + + if (temp_path) + (void) unlink(temp_path); + + return log_error_errno(r, "Failed to save seat data %s: %m", s->state_file); } int seat_load(Seat *s) { @@ -164,6 +175,7 @@ int seat_load(Seat *s) { return 0; } +#if 0 /// UNNEEDED by elogind static int vt_allocate(unsigned int vtnr) { char p[sizeof("/dev/tty") + DECIMAL_STR_MAX(unsigned int)]; _cleanup_close_ int fd = -1; @@ -205,6 +217,7 @@ int seat_preallocate_vts(Seat *s) { return r; } +#endif // 0 int seat_apply_acls(Seat *s, Session *old_active) { int r; @@ -356,7 +369,10 @@ int seat_active_vt_changed(Seat *s, unsigned int vtnr) { } r = seat_set_active(s, new_active); + +#if 0 /// elogind does not spawn autovt manager_spawn_autovt(s->manager, vtnr); +#endif // 0 return r; } @@ -415,7 +431,9 @@ int seat_start(Seat *s) { NULL); /* Initialize VT magic stuff */ +#if 0 /// elogind does not support autospawning vts seat_preallocate_vts(s); +#endif // 0 /* Read current VT */ seat_read_active_vt(s);