8#include "tpcclibConfig.h"
21static char *info[] = {
22 "Delete those TAC(s) inside a TAC file that have missing values.",
23 "If file contains only one TAC, then missing samples are deleted.",
25 "Usage: @P [options] file",
29 " Nothing is actually deleted, application only lists which TAC(s)",
33 "See also: taclist, tacdel, tacadd, taccut, taccuty, tacsplit, niinan",
35 "Keywords: TAC, tool",
54int main(
int argc,
char **argv)
56 int ai, help=0, version=0, verbose=1;
57 int ret, i, dryMode=0;
58 char *cptr, tacfile[FILENAME_MAX];
64 if(argc==1) {
tpcPrintUsage(argv[0], info, stderr);
return(1);}
67 for(ai=1; ai<argc; ai++)
if(*argv[ai]==
'-') {
69 cptr=argv[ai]+1;
if(*cptr==
'-') cptr++;
if(!*cptr)
continue;
70 if(strcasecmp(cptr,
"DRY")==0) {
73 fprintf(stderr,
"Error: invalid option '%s'\n", argv[ai]);
82 if(help==2) {
tpcHtmlUsage(argv[0], info,
"");
return(0);}
87 if(ai<argc) {
strlcpy(tacfile, argv[ai], FILENAME_MAX); ai++;}
88 else {fprintf(stderr,
"Error: missing filename.\n");
return(1);}
89 if(ai<argc) {fprintf(stderr,
"Error: extra command-line argument.\n");
return(1);}
93 printf(
"tacfile := %s\n", tacfile);
94 printf(
"dryMode := %d\n", dryMode);
98 if(verbose>1) printf(
"reading %s\n", tacfile);
100 ret=
tacRead(&tac, tacfile, &status);
102 fprintf(stderr,
"Error (%d): %s\n", ret,
errorMsg(status.
error));
107 printf(
"tacNr := %d\n", tac.
tacNr);
108 printf(
"sampleNr := %d\n", tac.
sampleNr);
113 if(verbose>0) fprintf(stdout,
"File does not have any missing values.\n");
120 if(verbose>1) printf(
"one TAC only; deleting missing samples...\n");
122 fprintf(stderr,
"Error: cannot delete missing samples.\n");
126 printf(
"%d sample(s) were marked to be deleted.\n", origSampleNr-tac.
sampleNr);
130 if(verbose>1) printf(
"writing %s\n", tacfile);
131 FILE *fp; fp=fopen(tacfile,
"w");
133 fprintf(stderr,
"Error: cannot open file for writing (%s)\n", tacfile);
139 fprintf(stderr,
"Error (%d): %s\n", ret,
errorMsg(status.
error));
142 if(verbose>=0) printf(
"%d missing sample(s) deleted.\n", origSampleNr-tac.
sampleNr);
149 for(
int i=0; i<tac.
tacNr; i++) {
152 if(verbose>1) printf(
"%d tac(s) with missing values found\n", n);
154 fprintf(stderr,
"Warning: all TACs were selected for removal; aborted.\n");
165 printf(
"marked for deletion: %s\n", tac.
c[i].
name); n++;
167 if(verbose>=0) printf(
"%s deleted\n", tac.
c[i].
name);
174 fprintf(stderr,
"Error: cannot delete TAC.\n");
178 printf(
"%d TAC(s) were marked to be deleted.\n", n);
185 if(verbose>1) printf(
"writing %s\n", tacfile);
186 FILE *fp; fp=fopen(tacfile,
"w");
188 fprintf(stderr,
"Error: cannot open file for writing (%s)\n", tacfile);
194 fprintf(stderr,
"Error (%d): %s\n", ret,
errorMsg(status.
error));
198 if(verbose>=0) printf(
"%d TAC(s) are deleted.\n", n);
int tpcProcessStdOptions(const char *s, int *print_usage, int *print_version, int *verbose_level)
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)
void statusInit(TPCSTATUS *s)
char * errorMsg(tpcerror e)
void statusSet(TPCSTATUS *s, const char *func, const char *srcfile, int srcline, tpcerror error)
size_t strlcpy(char *dst, const char *src, size_t dstsize)
char name[MAX_TACNAME_LEN+1]
int verbose
Verbose level, used by statusPrint() etc.
tpcerror error
Error code.
int tacRead(TAC *d, const char *fname, TPCSTATUS *status)
char * tacFormattxt(tacformat c)
int tacWrite(TAC *tac, FILE *fp, tacformat format, int extra, TPCSTATUS *status)
int tacYNaNs(TAC *tac, const int i)
int tacDeleteTACC(TAC *d, int i)
int tacDeleteMissingSamples(TAC *d)
Delete those samples (time frames) from TAC structure, which contain only missing y values,...
Header file for library libtpcextensions.
Header file for library libtpcift.
Header file for library libtpctac.
@ TAC_FORMAT_UNKNOWN
Unknown format.