66 if(s==NULL ||
strnlen(s, 2)<2 || s[0]!=
'-')
return 1;
71 cptr++;
if(
strnlen(cptr, 1)<1)
return 1;
72 if(strcasecmp(cptr,
"help")==0) {*print_usage=1;
return 0;}
73 if(strcasecmp(cptr,
"helphtml")==0) {*print_usage=2;
return 0;}
74 if(strcasecmp(cptr,
"version")==0) {*print_version=1;
return 0;}
75 if(strcasecmp(cptr,
"build")==0) {*print_version=1;
return 0;}
76 if(strcasecmp(cptr,
"debug")==0) {*verbose_level+=1;
return 0;}
77 if(strcasecmp(cptr,
"verbose")==0) {*verbose_level+=1;
return 0;}
78 if(strncasecmp(cptr,
"debug=", 6)==0) {
79 if(!isdigit(cptr[6]))
return 1;
80 n=atoi(cptr+6); *verbose_level+=n;
return 0;
82 if(strncasecmp(cptr,
"verbose=", 8)==0) {
83 if(!isdigit(cptr[8]))
return 1;
84 n=atoi(cptr+8); *verbose_level+=n;
return 0;
86 if(strcasecmp(cptr,
"quiet")==0) {*verbose_level=0;
return 0;}
87 if(strcasecmp(cptr,
"silent")==0) {*verbose_level=-1;
return 0;}
91 if(strcmp(cptr,
"h")==0) {*print_usage=1;
return 0;}
92 if(strcasecmp(cptr,
"v")==0) {*print_version=1;
return 0;}
93 if(strcmp(cptr,
"d")==0) {*verbose_level+=1;
return 0;}
94 if(strncmp(cptr,
"d", 1)==0 &&
strnlen(cptr, 2)>1) {
95 if(!isdigit(cptr[1]))
return 1;
96 n=atoi(cptr+1); *verbose_level+=n;
return 0;
98 if(strcmp(cptr,
"q")==0) {*verbose_level=0;
return 0;}
99 if(strcmp(cptr,
"s")==0) {*verbose_level=-1;
return 0;}
123 char *cptr, *bprogram;
126 if(strlen(program)>0) bprogram=
strdup(program);
127 else bprogram=
strdup(
"unknown");
129 fprintf(fp,
"\n %s - tpcclib %d.%d.%d %s\n \n", bprogram,
130 tpcclib_VERSION_MAJOR, tpcclib_VERSION_MINOR, tpcclib_VERSION_PATCH,
133 i=0;
while(text[i]!=0) {
136 if(strstr(text[i],
"stdoptions")) {
138 while(tpcstdoptions[j]!=0) fprintf(fp,
" %s\n", tpcstdoptions[j++]);
142 cptr=strstr(text[i],
" @P ");
143 if(cptr==NULL) {fprintf(fp,
" %s\n", text[i++]);
continue;}
145 char *s; s=
strdup(text[i]);
146 s[strlen(text[i])-strlen(cptr)]=(char)0;
147 fprintf(fp,
" %s %s %s\n", s, bprogram, cptr+4);
152 i=0;
while(tpclicense[i]!=0) fprintf(fp,
" %s\n", tpclicense[i++]);
177 unsigned int len, i, j;
178 char *bprogram, *fname, *cptr, *line;
181 if(program==NULL || text==NULL ||
strnlen(program, 1)<1)
return 1;
188 fname=calloc(strlen(path)+1+strlen(bprogram)+5,
sizeof(
char));
189 if(fname==NULL) {free(bprogram);
return 1;}
190 strcpy(fname, path); len=strlen(fname);
191 if(len>0 && (fname[len-1]==
'/' || fname[len-1]==
'\\')) fname[len-1]=(char)0;
192 len=strlen(fname);
if(len>0) strcat(fname,
"/");
193 strcat(fname, bprogram); strcat(fname,
".html");
201 len=fprintf(fp,
"<!DOCTYPE html>\n");
202 if(len<10) {free(bprogram); free(fname);
return 2;}
203 fprintf(fp,
"<html lang=\"en-GB\">\n");
204 fprintf(fp,
"<head>\n");
205 fprintf(fp,
" <meta charset=\"utf-8\">\n");
206 fprintf(fp,
" <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n");
207 fprintf(fp,
" <title>%s</title>\n", bprogram);
208 fprintf(fp,
" <style type=\"text/css\">\n");
209 fprintf(fp,
" body {\n");
210 fprintf(fp,
" margin-left: 2em;\n");
211 fprintf(fp,
" font-family: monospace;\n");
212 fprintf(fp,
" font-size: 1em;\n");
214 fprintf(fp,
" h1 {\n");
215 fprintf(fp,
" font-size: 1.3em;\n");
216 fprintf(fp,
" margin-top: 1em;\n");
217 fprintf(fp,
" margin-bottom: 1em;\n");
219 fprintf(fp,
" footer {\n");
220 fprintf(fp,
" border:1px solid gray;\n");
221 fprintf(fp,
" font-size: 0.8em;\n");
223 fprintf(fp,
" footer p {margin-left: 1em;}\n");
224 fprintf(fp,
" </style>\n");
225 fprintf(fp,
"</head>\n\n");
228 fprintf(fp,
"<body>\n");
232 fprintf(fp,
"<h1>%s - tpcclib %d.%d.%d ", bprogram, tpcclib_VERSION_MAJOR,
233 tpcclib_VERSION_MINOR, tpcclib_VERSION_PATCH);
234 line=tpcclib_COPYRIGHT; len=strlen(line);
235 for(j=0; j<len; j++) {
236 if(strncasecmp(line+j,
"(C)", 3)==0) {fputs(
"©", fp); j+=2;
continue;}
239 fputs(
"</h1>\n\n", fp);
242 fprintf(fp,
"<pre>\n");
243 i=0;
while(text[i]!=0) {
247 if(strstr(line,
"stdoptions")) {
249 while(tpcstdoptions[j]!=0) fprintf(fp,
"%s\n", tpcstdoptions[j++]);
254 if(strstr(line,
"See also: ")!=NULL) {
256 j=0;
while(line[j]!=
'\0') {
258 j++;
if(line[j-1]==
':')
break;
261 char *tline;
unsigned int n=0;
262 tline=
strdup(line+j); cptr=strtok(tline,
", :;\t\n\r");
264 if(n>0) fputc(
',', fp);
265 fprintf(fp,
" <a href=\"./%s.html\">%s</a>", cptr, cptr);
266 cptr=strtok(NULL,
", :;\t\n\r");
276 len=strlen(line); j=0;
280 if(strncasecmp(line+j,
"https://", 7)==0) {
282 cptr=line+j; len=strcspn(cptr,
" ),;");
283 fputs(
"<a href=\"", fp);
284 for(li=0; li<len; li++) fputc(line[j+li], fp);
286 for(li=0; li<len; li++) fputc(line[j+li], fp);
292 if(strncmp(line+j,
" @P ", 4)==0) {
293 fprintf(fp,
" %s ", bprogram);
297 if(strncasecmp(line+j,
"(C)", 3)==0) {
303 if(line[j]==
'<') {fputs(
"<", fp); j++;
continue;}
304 if(line[j]==
'>') {fputs(
">", fp); j++;
continue;}
305 if(line[j]==
'&') {fputs(
"&", fp); j++;
continue;}
308 fputc(line[j], fp); j++;
314 fprintf(fp,
"</pre>\n");
317 fprintf(fp,
"\n<footer>\n");
319 i=0;
while(tpclicense4html[i]!=0) fprintf(fp,
"%s<br>\n", tpclicense4html[i++]);
320 fprintf(fp,
"</p>\n");
321 fprintf(fp,
"</footer>\n");
324 fprintf(fp,
"</body>\n");
325 fprintf(fp,
"</html>\n");
328 free(bprogram); free(fname);