chiark / gitweb /
util: loop_write - accept 0-length message
[elogind.git] / src / shared / pty.c
index 52a426c0e15fd8314571570bcb94f8291cc3ae85..0f80f4863b0e1f4bde990f777bd1290331ebe91c 100644 (file)
 
 #include <errno.h>
 #include <fcntl.h>
-#include <limits.h>
-#include <linux/ioctl.h>
 #include <signal.h>
 #include <stdbool.h>
 #include <stdint.h>
-#include <stdio.h>
 #include <stdlib.h>
-#include <string.h>
 #include <sys/epoll.h>
-#include <sys/eventfd.h>
 #include <sys/ioctl.h>
-#include <sys/types.h>
 #include <sys/uio.h>
 #include <sys/wait.h>
 #include <termios.h>
@@ -194,13 +188,13 @@ int pty_get_fd(Pty *pty) {
 }
 
 int pty_make_child(Pty *pty) {
-        char slave_name[1024];
+        _cleanup_free_ char *slave_name = NULL;
         int r, fd;
 
         assert_return(pty, -EINVAL);
         assert_return(pty_is_unknown(pty), -EALREADY);
 
-        r = ptsname_r(pty->fd, slave_name, sizeof(slave_name));
+        r = ptsname_malloc(pty->fd, &slave_name);
         if (r < 0)
                 return -errno;
 
@@ -550,16 +544,15 @@ int pty_signal(Pty *pty, int sig) {
 }
 
 int pty_resize(Pty *pty, unsigned short term_width, unsigned short term_height) {
-        struct winsize ws;
+        struct winsize ws = {
+                .ws_col = term_width,
+                .ws_row = term_height,
+        };
 
         assert_return(pty, -EINVAL);
         assert_return(pty_is_open(pty), -ENODEV);
         assert_return(pty_is_parent(pty), -ENODEV);
 
-        zero(ws);
-        ws.ws_col = term_width;
-        ws.ws_row = term_height;
-
         /*
          * This will send SIGWINCH to the pty slave foreground process group.
          * We will also get one, but we don't need it.