8#include "tpcclibConfig.h"
21static char *info[] = {
22 "Removes region(s) from result file.",
23 "Optionally, modified results are written in a new file.",
25 "Usage: @P filename tacid",
29 " Remaining results are written in specified file;",
30 " by default, input file is modified.",
32 " Dry run: nothing is actually written on disk.",
36 " @P ug2345ki.res cereb",
38 "See also: reslist, resrmdpl, rescoll, parcoll, pardiff, paradd, tacdel",
40 "Keywords: results, tool",
59int main(
int argc,
char **argv)
61 int ai, help=0, version=0, verbose=1;
62 int ri, n=0, dry_run=0;
64 char *cptr, resfile1[FILENAME_MAX], resfile2[FILENAME_MAX], tmp[128];
70 if(argc==1) {
tpcPrintUsage(argv[0], info, stderr);
return(1);}
71 resfile1[0]=resfile2[0]=(char)0;
74 for(ai=1; ai<argc; ai++)
if(*argv[ai]==
'-') {
76 cptr=argv[ai]+1;
if(*cptr==
'-') cptr++;
if(!cptr[0])
continue;
77 if(strncasecmp(cptr,
"O=", 2)==0) {
78 strlcpy(resfile2, cptr+2, FILENAME_MAX);
if(strlen(resfile2)>0)
continue;
79 }
else if(strcasecmp(cptr,
"DRY")==0) {
82 fprintf(stderr,
"Error: invalid option '%s'.\n", argv[ai]);
87 if(help==2) {
tpcHtmlUsage(argv[0], info,
"");
return(0);}
92 for(; ai<argc; ai++) {
93 if(!resfile1[0]) {
strlcpy(resfile1, argv[ai], FILENAME_MAX);
continue;}
98 if(!resfile1[0] || ai>=argc) {
99 fprintf(stderr,
"Error: missing command-line argument; use option --help\n");
102 if(!resfile2[0]) strcpy(resfile2, resfile1);
107 printf(
"dry_run := %d\n", dry_run);
108 printf(
"resfile1 := %s\n", resfile1);
109 printf(
"resfile2 := %s\n", resfile2);
117 if(verbose>1) printf(
"reading %s\n", resfile1);
118 if(
resRead(resfile1, &res, verbose-2)) {
119 fprintf(stderr,
"Error in reading '%s': %s\n", resfile1,
reserrmsg);
128 for(; ai<argc; ai++) {
129 if(verbose>1) printf(
"searching for region %s\n", argv[ai]);
130 n=0; ri=atoi(argv[ai])-1;
131 if(ri<res.voiNr && ri>=0) {
138 fprintf(stderr,
"Error: %s did not match with any of the regions.\n",
148 if(verbose>0 || dry_run==1) {
149 if(dry_run==0) strcpy(tmp,
"deleted");
else strcpy(tmp,
"would be deleted");
150 for(ri=n=0; ri<res.
voiNr; ri++) {
151 printf(
" %3d: %s ", ri+1, res.
voi[ri].
name);
152 if(res.
voi[ri].
sw2) {n++; printf(
"%s\n", tmp);}
else printf(
"\n");
157 fprintf(stderr,
"Warning: datafile does not contain specified regions.\n");
162 fprintf(stderr,
"Warning: all regions were selected for removal; aborted.\n");
177 if(verbose>2) printf(
"writing %s\n", resfile2);
178 if(
resWrite(&res, resfile2, verbose-3)) {
179 fprintf(stderr,
"Error in writing '%s': %s\n", resfile2,
reserrmsg);
182 if(verbose>0) printf(
" %s written.\n", resfile2);
184 printf(
" would write %s\n", resfile2);
Header file for libtpccurveio.
int resSelectRegions(RES *res, char *region_name, int reset)
int resWrite(RES *res, char *filename, int verbose)
int resDelete(RES *res, int voi)
int resRead(char *filename, RES *res, int verbose)
Header file for libtpcmisc.
int tpcProcessStdOptions(const char *s, int *print_usage, int *print_version, int *verbose_level)
size_t strlcpy(char *dst, const char *src, size_t dstsize)
int tpcHtmlUsage(const char *program, char *text[], const char *path)
void tpcPrintBuild(const char *program, FILE *fp)
void tpcPrintUsage(const char *program, char *text[], FILE *fp)
char name[MAX_REGIONNAME_LEN+1]