[PATCH 09/17] setterm: remove devfs and /dev/vcsa0 support

Sami Kerola
2014-05-18T14:06:13Z

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 | 2 +-
term-utils/setterm.c | 26 +++++++-------------------
2 files changed, 8 insertions(+), 20 deletions(-)

diff --git a/bash-completion/setterm b/bash-completion/setterm
index a7ef6eb..f47debf 100644
--- a/bash-completion/setterm
+++ b/bash-completion/setterm
@@ -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
;;
diff --git a/term-utils/setterm.c b/term-utils/setterm.c
index d889db4..3a02347 100644
--- a/term-utils/setterm.c
+++ b/term-utils/setterm.c
@@ -724,31 +724,18 @@ 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"));
+ err(EXIT_DUMPFILE, _("Couldn't read %s"), ctl->in_device);
}

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);
return fd;
@@ -803,6 +790,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;
--
1.9.2