rdate: make it do something remotely sane, facing 32-bit time overflow
[oweals/busybox.git] / miscutils / ttysize.c
index 292cfb87678399cd9eb198ee5ce97591471b32a7..135ce853524389f6cbc63c9e886071f66002e50a 100644 (file)
@@ -7,14 +7,32 @@
  *
  * Copyright (C) 2007 by Denys Vlasenko <vda.linux@googlemail.com>
  *
- * Licensed under the GPL v2, see the file LICENSE in this tarball.
+ * Licensed under GPLv2, see file LICENSE in this source tree.
  */
+//config:config TTYSIZE
+//config:      bool "ttysize"
+//config:      default y
+//config:      help
+//config:        A replacement for "stty size". Unlike stty, can report only width,
+//config:        only height, or both, in any order. It also does not complain on
+//config:        error, but returns default 80x24.
+//config:        Usage in shell scripts: width=`ttysize w`.
+
+//applet:IF_TTYSIZE(APPLET(ttysize, BB_DIR_USR_BIN, BB_SUID_DROP))
+
+//kbuild:lib-$(CONFIG_TTYSIZE) += ttysize.o
+
+//usage:#define ttysize_trivial_usage
+//usage:       "[w] [h]"
+//usage:#define ttysize_full_usage "\n\n"
+//usage:       "Print dimension(s) of stdin's terminal, on error return 80x25"
+
 #include "libbb.h"
 
-int ttysize_main(int argc, char **argv);
-int ttysize_main(int argc, char **argv)
+int ttysize_main(int argc, char **argv) MAIN_EXTERNALLY_VISIBLE;
+int ttysize_main(int argc UNUSED_PARAM, char **argv)
 {
-       unsigned w,h;
+       unsigned w, h;
        struct winsize wsz;
 
        w = 80;
@@ -24,7 +42,7 @@ int ttysize_main(int argc, char **argv)
                h = wsz.ws_row;
        }
 
-       if (argc == 1) {
+       if (!argv[1]) {
                printf("%u %u", w, h);
        } else {
                const char *fmt, *arg;