comparison main.c @ 142:26ee741196d1

Allow complain(NULL, format, ...)
author David A. Holland
date Sat, 13 Jul 2013 12:38:54 -0400
parents 63414cddf09c
children ed45f2d8d3bc
comparison
equal deleted inserted replaced
141:63414cddf09c 142:26ee741196d1
933 return false; 933 return false;
934 } 934 }
935 935
936 DEAD static 936 DEAD static
937 void 937 void
938 usage(const char *argv0, const char *fmt, ...) 938 usage(const char *progname, const char *fmt, ...)
939 { 939 {
940 const char *progname;
941 va_list ap; 940 va_list ap;
942
943 progname = strrchr(argv0, '/');
944 progname = progname == NULL ? argv0 : progname + 1;
945 941
946 fprintf(stderr, "%s: ", progname); 942 fprintf(stderr, "%s: ", progname);
947 va_start(ap, fmt); 943 va_start(ap, fmt);
948 vfprintf(stderr, fmt, ap); 944 vfprintf(stderr, fmt, ap);
949 va_end(ap); 945 va_end(ap);
1028 // main 1024 // main
1029 1025
1030 int 1026 int
1031 main(int argc, char *argv[]) 1027 main(int argc, char *argv[])
1032 { 1028 {
1029 const char *progname;
1033 const char *inputfile = NULL; 1030 const char *inputfile = NULL;
1034 const char *outputfile = NULL; 1031 const char *outputfile = NULL;
1035 struct place cmdplace; 1032 struct place cmdplace;
1036 int i; 1033 int i;
1037 1034
1035 progname = strrchr(argv[0], '/');
1036 progname = progname == NULL ? argv[0] : progname + 1;
1037 complain_init(progname);
1038
1038 init(); 1039 init();
1039 1040
1040 for (i=1; i<argc; i++) { 1041 for (i=1; i<argc; i++) {
1041 if (argv[i][0] != '-') { 1042 if (argv[i][0] != '-') {
1042 break; 1043 break;
1057 place_setcommandline(&cmdplace, i+1, 1); 1058 place_setcommandline(&cmdplace, i+1, 1);
1058 if (check_arg_option(argv[i]+1, &cmdplace, argv[i+1])) { 1059 if (check_arg_option(argv[i]+1, &cmdplace, argv[i+1])) {
1059 i++; 1060 i++;
1060 continue; 1061 continue;
1061 } 1062 }
1062 usage(argv[0], "Invalid option %s", argv[i]); 1063 usage(progname, "Invalid option %s", argv[i]);
1063 } 1064 }
1064 if (i < argc) { 1065 if (i < argc) {
1065 inputfile = argv[i++]; 1066 inputfile = argv[i++];
1066 } 1067 }
1067 if (i < argc) { 1068 if (i < argc) {
1068 outputfile = argv[i++]; 1069 outputfile = argv[i++];
1069 } 1070 }
1070 if (i < argc) { 1071 if (i < argc) {
1071 usage(argv[0], "Extra non-option argument %s", argv[i]); 1072 usage(progname, "Extra non-option argument %s", argv[i]);
1072 } 1073 }
1073 1074
1074 mode.output_file = outputfile; 1075 mode.output_file = outputfile;
1075 1076
1076 loadincludepath(); 1077 loadincludepath();