8#include "tpcclibConfig.h"
21static char *info[] = {
22 "Add sample times into curve data originally without times,",
23 "for example certain countrate files.",
24 "Added times are 0.5, 1.5, ... sec by default.",
26 "Usage: @P [Options] tac_file(s)",
30 " Times are written in minutes (0.00833, 0.025, ...).",
32 " Data may initially contain more than one column.",
35 "See also: tacsetx, tacframe, tacdecay, tactime, tocr, tac4frpl",
37 "Keywords: TAC, input, countrate, head-curve",
56int main(
int argc,
char *argv[])
58 int ai, help=0, version=0, verbose=1;
59 int ii, fileNr=0, ret, is_min=0, is_many_cols=0, tn, n;
60 char *cptr, iftfile[FILENAME_MAX], tmp[2*FILENAME_MAX], *vptr, *newval;
68 if(argc==1) {
tpcPrintUsage(argv[0], info, stderr);
return(1);}
72 for(ai=1; ai<argc; ai++)
if(*argv[ai]==
'-') {
73 cptr=argv[ai]+1;
if(*cptr==
'-') cptr++;
if(cptr==NULL)
continue;
76 if(strncasecmp(cptr,
"MINUTES", 1)==0) {
78 }
else if(strncasecmp(cptr,
"COLS", 1)==0) {
79 is_many_cols=1;
continue;
81 fprintf(stderr,
"Error: invalid option '%s'.\n", argv[ai]);
86 if(help==2) {
tpcHtmlUsage(argv[0], info,
"");
return(0);}
92 printf(
"is_min := %d\n", is_min);
93 printf(
"is_many_cols := %d\n", is_many_cols);
100 for(; ai<argc; ai++) {
101 strcpy(iftfile, argv[ai]);
102 if(verbose>0) fprintf(stdout,
"%s:\n", iftfile);
105 ret=
iftRead(&ift, iftfile, 0, 0);
107 fprintf(stderr,
"Error (%d): %s\n", ret, ift.
status);
113 for(ii=0, tn=0; ii<ift.
keyNr; ii++) {
118 if(strlen(ift.
item[ii].
key)>0)
continue;
123 n=0; cptr=strtok(vptr,
" \t");
124 while(cptr!=NULL) {cptr=strtok(NULL,
" \t"); n++;}
126 if(is_many_cols==0 && n>1)
continue;
128 newval=malloc((strlen(ift.
item[ii].
value)+21)*
sizeof(
char));
129 if(newval==NULL)
continue;
130 tv=0.5+(float)tn;
if(is_min) tv/=60.0;
131 sprintf(newval,
"%f %s", tv, ift.
item[ii].
value);
135 fprintf(stderr,
"Error (%d): %s\n", ret, ift.
status);
136 free(newval);
iftEmpty(&ift);
return(4);
141 fprintf(stderr,
"Note: no times added in %s\n", iftfile);
144 fprintf(stdout,
" %d time(s) added.\n", tn);
149 fprintf(stderr,
"Error: %s\n", tmp);
156 fprintf(stderr,
"Error (%d): %s\n", ret, ift.
status);
163 fprintf(stderr,
"Error: no files processed.\n");
165 }
else if(fileNr>1 && verbose>0) {
166 fprintf(stdout,
"%d files processed.\n", fileNr);
int backupExistingFile(char *filename, char *backup_ext, char *status)
int iftReplaceNthValue(IFT *ift, int item, char *value, int verbose)
int iftWriteItem(IFT *ift, int item, FILE *fp, int verbose)
int iftRead(IFT *ift, char *filename, int is_key_required, int verbose)
int iftWrite(IFT *ift, char *filename, int verbose)
Header file for libtpccurveio.
Header file for libtpcmisc.
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)