conspy: make "conspy 0" use vcsa0 but "conspy" (no param) use vcsa
authorDenys Vlasenko <vda.linux@googlemail.com>
Fri, 25 Jun 2010 12:40:25 +0000 (14:40 +0200)
committerDenys Vlasenko <vda.linux@googlemail.com>
Fri, 25 Jun 2010 12:40:25 +0000 (14:40 +0200)
Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
miscutils/conspy.c

index b5adce93004aa90338ee225c6d64f9dd65f8404b..11758c6034599a927a46ecab52f512d060a9103d 100644 (file)
@@ -222,7 +222,6 @@ static void cleanup(int code)
        fflush_all();
        tcsetattr(G.kbd_fd, TCSANOW, &G.term_orig);
        if (ENABLE_FEATURE_CLEAN_UP) {
-               free(ptr_to_globals);
                close(G.kbd_fd);
        }
        // Reset attributes
@@ -309,6 +308,7 @@ int conspy_main(int argc UNUSED_PARAM, char **argv)
        applet_long_options = getopt_longopts;
 #endif
        INIT_G();
+       strcpy(vcsa_name, "/dev/vcsa");
 
        opt_complementary = "x+:y+"; // numeric params
        opts = getopt32(argv, "vcsndfx:y:", &G.x, &G.y);
@@ -316,8 +316,8 @@ int conspy_main(int argc UNUSED_PARAM, char **argv)
        ttynum = 0;
        if (argv[0]) {
                ttynum = xatou_range(argv[0], 0, 63);
+               sprintf(vcsa_name + sizeof("/dev/vcsa")-1, "%u", ttynum);
        }
-       sprintf(vcsa_name, "/dev/vcsa%u", ttynum);
        sprintf(tty_name, "%s%u", "/dev/tty", ttynum);
        if (opts & FLAG(c)) {
                if ((opts & (FLAG(s)|FLAG(v))) != FLAG(v))
@@ -329,19 +329,16 @@ int conspy_main(int argc UNUSED_PARAM, char **argv)
        }
 
        get_initial_data(vcsa_name);
-       G.kbd_fd = xopen(CURRENT_TTY, O_RDONLY);
        if (opts & FLAG(d)) {
                screen_dump();
                bb_putchar('\n');
-               if (ENABLE_FEATURE_CLEAN_UP) {
-                       free(ptr_to_globals);
-                       close(G.kbd_fd);
-               }
                return 0;
        }
 
        bb_signals(BB_FATAL_SIGS, cleanup);
+
        // All characters must be passed through to us unaltered
+       G.kbd_fd = xopen(CURRENT_TTY, O_RDONLY);
        tcgetattr(G.kbd_fd, &G.term_orig);
        termbuf = G.term_orig;
        termbuf.c_iflag &= ~(BRKINT|INLCR|ICRNL|IXON|IXOFF|IUCLC|IXANY|IMAXBEL);