]> git.ipfire.org Git - thirdparty/util-linux.git/commitdiff
setterm: remove devfs and /dev/vcsa0 support
authorSami Kerola <kerolasa@iki.fi>
Sun, 18 May 2014 10:32:04 +0000 (11:32 +0100)
committerSami Kerola <kerolasa@iki.fi>
Mon, 19 May 2014 21:45:38 +0000 (22:45 +0100)
The devfs files /dev/vcc/a* does not need to be supported, and vcsa0 has
not existed in years if ever.

Reference: http://lwn.net/Articles/65197/
Reference: http://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/tree/Documentation/devices.txt?id=14186fea0cb06bc43181ce239efe0df6f1af260a#n260
Signed-off-by: Sami Kerola <kerolasa@iki.fi>
bash-completion/setterm
term-utils/setterm.c

index 23a35b8c150848b356902b6922ce6f3b56180f8d..dc6b860325f3ff02109c11072de6ff4033eaa28b 100644 (file)
@@ -40,7 +40,7 @@ _setterm_module()
                        ;;
                '--dump'|'--append')
                        local NUM_CONS
-                       NUM_CONS=(/sys/class/tty/*)
+                       NUM_CONS=(/dev/vcsa?*)
                        COMPREPLY=( $(compgen -W "{1..${#NUM_CONS[*]}}" -- $cur) )
                        return 0
                        ;;
index 76c43675c88c383b1cc8a9f04f1ee4fc799b32cb..0858a7612306c1b89783bcc944bb5a98e830b073 100644 (file)
@@ -713,35 +713,17 @@ static void show_tabs(void)
        }
 }
 
-static void __attribute__((__noreturn__)) read_error(struct setterm_control *ctl)
-{
-       if (ctl->opt_sn_num != 0)
-               errx(EXIT_DUMPFILE, _("Couldn't read %s"), ctl->in_device);
-       else
-               errx(EXIT_DUMPFILE, _("Couldn't read neither /dev/vcsa0 nor /dev/vcsa"));
-}
-
 static int open_snapshot_device(struct setterm_control *ctl)
 {
-       char infile[MAXPATHLEN];
        int fd;
 
-       sprintf(infile, "/dev/vcsa%d", ctl->opt_sn_num);
-       fd = open(infile, O_RDONLY);
-       if (fd < 0 && ctl->opt_sn_num == 0) {
-               /* vcsa0 is often called vcsa */
-               sprintf(infile, "/dev/vcsa");
-               fd = open(infile, O_RDONLY);
-       }
-       if (fd < 0) {
-               /* try devfs name - for zero ctl->opt_sn_num just /dev/vcc/a */
-               /* some gcc's warn for %.u - add 0 */
-               sprintf(infile, "/dev/vcc/a%.0u", ctl->opt_sn_num);
-               fd = open(infile, O_RDONLY);
-       }
-       ctl->in_device = infile;
+       if (ctl->opt_sn_num)
+               xasprintf(&ctl->in_device, "/dev/vcsa%d", ctl->opt_sn_num);
+       else
+               xasprintf(&ctl->in_device, "/dev/vcsa");
+       fd = open(ctl->in_device, O_RDONLY);
        if (fd < 0)
-               read_error(ctl);
+               err(EXIT_DUMPFILE, _("Couldn't read %s"), ctl->in_device);
        return fd;
 }
 
@@ -765,18 +747,18 @@ static void screendump(struct setterm_control *ctl)
                err(EXIT_DUMPFILE, _("can not open dump file %s for output"), ctl->opt_sn_name);
        /* determine snapshot size */
        if (read(fd, header, 4) != 4)
-               read_error(ctl);
+               err(EXIT_DUMPFILE, _("Couldn't read %s"), ctl->in_device);
        rows = header[0];
        cols = header[1];
        if (rows * cols == 0)
-               read_error(ctl);
+               err(EXIT_DUMPFILE, _("Couldn't read %s"), ctl->in_device);
        /* allocate buffers */
        inbuf = xmalloc(rows * cols * 2);
        outbuf = xmalloc(rows * (cols + 1));
        /* read input */
        rc = read(fd, inbuf, rows * cols * 2);
        if (rc < 0 || (size_t)rc != rows * cols * 2)
-               read_error(ctl);
+               err(EXIT_DUMPFILE, _("Couldn't read %s"), ctl->in_device);
        p = inbuf;
        q = outbuf;
        /* copy inbuf to outbuf */
@@ -794,6 +776,7 @@ static void screendump(struct setterm_control *ctl)
        close(fd);
        free(inbuf);
        free(outbuf);
+       free(ctl->in_device);
        if (close_stream(out) != 0)
                errx(EXIT_FAILURE, _("write error"));
        return;