8#include "tpcclibConfig.h"
21static char *info[] = {
22 "Inspect TAC file for multiple samples with the same sample time.",
24 "Usage: @P [options] file",
28 " Replace multiple samples with their mean.",
31 "Example 1. Check all TAC files for multiple samples in bash shell:",
32 " for file in ./*.tac; do @P $file; done",
34 "Example 2. Combine multiple samples inside TAC files in Windows command",
36 " for %g in (*.tac) do @P -mean %g",
38 "See also: interpol, tacblend, taccut, taccat, tacsetx, tacframe",
40 "Keywords: TAC, tool, time",
59int main(
int argc,
char **argv)
61 int ai, help=0, version=0, verbose=1;
63 char tacfile[FILENAME_MAX];
69 if(argc==1) {
tpcPrintUsage(argv[0], info, stderr);
return(1);}
72 for(ai=1; ai<argc; ai++)
if(*argv[ai]==
'-') {
74 char *cptr=argv[ai]+1;
if(*cptr==
'-') cptr++;
if(!*cptr)
continue;
75 if(strcasecmp(cptr,
"MEAN")==0) {
78 fprintf(stderr,
"Error: invalid option '%s'\n", argv[ai]);
87 if(help==2) {
tpcHtmlUsage(argv[0], info,
"");
return(0);}
92 if(ai<argc) {
strlcpy(tacfile, argv[ai], FILENAME_MAX); ai++;}
93 else {fprintf(stderr,
"Error: missing filename.\n");
return(1);}
94 if(ai<argc) {fprintf(stderr,
"Error: extra command-line argument.\n");
return(1);}
98 printf(
"tacfile := %s\n", tacfile);
99 printf(
"fixMode := %d\n", fixMode);
106 if(verbose>1) printf(
"reading %s\n", tacfile);
114 printf(
"tacNr := %d\n", tac.
tacNr);
115 printf(
"sampleNr := %d\n", tac.
sampleNr);
122 if(fixMode==0 || verbose>0) {
123 printf(
"%s : ", tacfile);
124 if(isMultiple) printf(
"multiple samples found\n");
else printf(
"no multiple samples\n");
127 if(fixMode==0 || !isMultiple) {
tacFree(&tac);
return(0);}
134 fprintf(stderr,
"Error: cannot fix multiple samples.\n");
139 printf(
"%s : no multiple samples fixed\n", tacfile);
142 if(verbose>0) printf(
"%d samples reduced to %d\n", tac.
sampleNr, tac2.
sampleNr);
150 if(verbose>1) printf(
"writing %s\n", tacfile);
151 FILE *fp; fp=fopen(tacfile,
"w");
153 fprintf(stderr,
"Error: cannot open file for writing (%s)\n", tacfile);
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)
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 tacMultipleSamples(TAC *d1, const int fixMode, TAC *d2, const int verbose)
Check TAC data for multiple samples with the same sample time. Optionally replace the multiple sample...
Header file for library libtpcextensions.
Header file for library libtpcift.
Header file for library libtpctac.
@ TAC_FORMAT_UNKNOWN
Unknown format.