Changes in benchmark/io/http/parseargs.cfa [3f1d9b5:53e4562]
- File:
-
- 1 edited
-
benchmark/io/http/parseargs.cfa (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
benchmark/io/http/parseargs.cfa
r3f1d9b5 r53e4562 3 3 // #include <stdio.h> 4 4 // #include <stdlib.h> 5 #include <errno.h>6 5 #include <string.h> 7 #include <unistd.h>8 6 extern "C" { 9 7 #include <getopt.h> 10 #include <sys/ioctl.h>11 8 12 9 struct FILE; … … 14 11 extern FILE * stdout; 15 12 16 extern int fileno(FILE *stream);17 18 13 extern int fprintf ( FILE * stream, const char * format, ... ); 19 14 20 15 extern long long int strtoll (const char* str, char** endptr, int base); 21 16 extern unsigned long long int strtoull(const char* str, char** endptr, int base); 22 }23 24 #include <common.hfa>25 #include <limits.hfa>26 27 void printopt(FILE * out, int width, int max, char sn, const char * ln, const char * help) {28 int hwidth = max - (11 + width);29 if(hwidth <= 0) hwidth = max;30 31 fprintf(out, " -%c, --%-*s %.*s\n", sn, width, ln, hwidth, help);32 for() {33 help += min(strlen(help), hwidth);34 if('\0' == *help) break;35 fprintf(out, "%*s%.*s\n", width + 11, "", hwidth, help);36 }37 17 } 38 18 … … 47 27 struct option optarr[opt_count + 2]; 48 28 int width = 0; 49 int max_width = 1_000_000;50 29 { 51 30 int idx = 0; … … 116 95 } 117 96 118 USAGE:; 119 int outfd = fileno(out); 120 if(isatty(outfd)) { 121 struct winsize size; 122 int ret = ioctl(outfd, TIOCGWINSZ, &size); 123 if(ret < 0) abort( "ioctl error: (%d) %s\n", (int)errno, strerror(errno) ); 124 max_width = size.ws_col; 125 } 126 97 USAGE: 127 98 fprintf(out, "Usage:\n %s %s\n", argv[0], usage); 128 99 129 100 for(i; opt_count) { 130 printopt(out, width, max_width, options[i].short_name, options[i].long_name, options[i].help);101 fprintf(out, " -%c, --%-*s %s\n", options[i].short_name, width, options[i].long_name, options[i].help); 131 102 } 132 103 fprintf(out, " -%c, --%-*s %s\n", 'h', width, "help", "print this help message"); … … 167 138 unsigned long long int r = strtoull(arg, &end, 10); 168 139 if(*end != '\0') return false; 169 if(r > (unsigned)MAX) return false; 140 #warning not checking max 170 141 171 142 value = r; … … 177 148 unsigned long long int r = strtoull(arg, &end, 10); 178 149 if(*end != '\0') return false; 179 if(r > (size_t)MAX) return false; 150 #warning not checking max 180 151 181 152 value = r;
Note:
See TracChangeset
for help on using the changeset viewer.