X-Git-Url: http://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=progs%2Fclear.c;h=2ffdf9530948194d7e6a66c562a4a9a812b480a7;hp=559d296c3f4c01816c16535a026500416b35e850;hb=eccca377f55c70b12e3e92621d94d1e1c1fcfb7d;hpb=62ca6190a9a8ddccb2c4d5ca7b2ef9f88432da65 diff --git a/progs/clear.c b/progs/clear.c index 559d296c..2ffdf953 100644 --- a/progs/clear.c +++ b/progs/clear.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2013,2016 Free Software Foundation, Inc. * + * Copyright (c) 1998-2016,2017 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -40,10 +40,28 @@ #include #include -MODULE_ID("$Id: clear.c,v 1.17 2016/12/24 19:33:39 tom Exp $") +MODULE_ID("$Id: clear.c,v 1.22 2017/10/07 21:48:32 tom Exp $") const char *_nc_progname = "clear"; +static void +usage(void) +{ +#define KEEP(s) s "\n" + static const char msg[] = + { + KEEP("") + KEEP("Options:") + KEEP(" -T TERM use this instead of $TERM") + KEEP(" -V print curses-version") + KEEP(" -x do not try to clear scrollback") + }; +#undef KEEP + (void) fprintf(stderr, "Usage: %s [options]\n", _nc_progname); + fputs(msg, stderr); + ExitProgram(EXIT_FAILURE); +} + int main( int argc GCC_UNUSED, @@ -51,14 +69,39 @@ main( { TTY tty_settings; int fd; + int c; + char *term; + bool opt_x = FALSE; /* clear scrollback if possible */ _nc_progname = _nc_rootname(argv[0]); + term = getenv("TERM"); + + while ((c = getopt(argc, argv, "T:Vx")) != -1) { + switch (c) { + case 'T': + use_env(FALSE); + use_tioctl(TRUE); + term = optarg; + break; + case 'V': + puts(curses_version()); + ExitProgram(EXIT_SUCCESS); + case 'x': /* do not try to clear scrollback */ + opt_x = TRUE; + break; + default: + usage(); + /* NOTREACHED */ + } + } + if (optind < argc) + usage(); - fd = save_tty_settings(&tty_settings); + fd = save_tty_settings(&tty_settings, FALSE); - setupterm((char *) 0, fd, (int *) 0); + setupterm(term, fd, (int *) 0); - ExitProgram((clear_cmd() == ERR) + ExitProgram((clear_cmd(opt_x) == ERR) ? EXIT_FAILURE : EXIT_SUCCESS); }