lesstest.c revision 1.1.1.1
1#include <setjmp.h> 2#include "lesstest.h" 3 4extern TermInfo terminfo; 5 6int verbose = 0; 7int less_quit = 0; 8int details = 0; 9int err_only = 0; 10char* lt_screen = "./lt_screen"; 11char* lt_screen_opts = NULL; 12 13static char* testfile = NULL; 14 15static int usage(void) { 16 fprintf(stderr, "usage: lesstest -o file.lt [-w#] [-h#] [-eEdv] [-S lt_screen-opts] [--] less.exe [flags] textfile\n"); 17 fprintf(stderr, " or: lesstest -t file.lt less.exe\n"); 18 return 0; 19} 20 21static int setup(int argc, char* const* argv) { 22 char* logfile = NULL; 23 int ch; 24 while ((ch = getopt(argc, argv, "deEo:s:S:t:v")) != -1) { 25 switch (ch) { 26 case 'd': 27 details = 1; 28 break; 29 case 'e': 30 err_only = 1; 31 break; 32 case 'E': 33 err_only = 2; 34 break; 35 case 'o': 36 logfile = optarg; 37 break; 38 case 's': 39 lt_screen = optarg; 40 break; 41 case 'S': 42 lt_screen_opts = optarg; 43 break; 44 case 't': 45 testfile = optarg; 46 break; 47 case 'v': 48 verbose = 1; 49 break; 50 default: 51 return usage(); 52 } 53 } 54 if (logfile != NULL && !log_open(logfile)) { 55 fprintf(stderr, "cannot create %s: %s\n", logfile, strerror(errno)); 56 return 0; 57 } 58 return 1; 59} 60 61int main(int argc, char* const* argv, char* const* envp) { 62 if (!setup(argc, argv)) 63 return RUN_ERR; 64 int ok = 0; 65 if (testfile != NULL) { // run existing test 66 if (optind+1 != argc) { 67 usage(); 68 return RUN_ERR; 69 } 70 ok = run_testfile(testfile, argv[optind]); 71 } else { // gen; create new test 72 if (optind+2 > argc) { 73 usage(); 74 return RUN_ERR; 75 } 76 log_file_header(); 77 ok = run_interactive(argv+optind, argc-optind, envp); 78 log_close(); 79 } 80 return ok ? RUN_OK : RUN_ERR; 81} 82