TPCCLIB
Loading...
Searching...
No Matches
dft2res.c
Go to the documentation of this file.
1
8/*****************************************************************************/
9#include "tpcclibConfig.h"
10/*****************************************************************************/
11#include <stdio.h>
12#include <stdlib.h>
13#include <math.h>
14#include <string.h>
15/*****************************************************************************/
16#include "libtpcmisc.h"
17#include "libtpccurveio.h"
18/*****************************************************************************/
19
20/*****************************************************************************/
21static char *info[] = {
22 "Converts TAC files into result file format (*.res).",
23 "This may be of use when regional values from parametric images need to",
24 "be processed further.",
25 " ",
26 "Usage: @P [Options] tacfile(s)",
27 " ",
28 "Options:",
29 " -stdoptions", // List standard options like --help, -v, etc
30 " ",
31 "See also: rescoll, tacformat, dft2html, img2dft",
32 " ",
33 "Keywords: results, TAC, modelling, conversion, tool",
34 0};
35/*****************************************************************************/
36
37/*****************************************************************************/
38/* Turn on the globbing of the command line, since it is disabled by default in
39 mingw-w64 (_dowildcard=0); in MinGW32 define _CRT_glob instead, if necessary;
40 In Unix&Linux wildcard command line processing is enabled by default. */
41/*
42#undef _CRT_glob
43#define _CRT_glob -1
44*/
45int _dowildcard = -1;
46/*****************************************************************************/
47
48/*****************************************************************************/
52int main(int argc, char **argv)
53{
54 int ai, help=0, version=0, verbose=1;
55 int ret, fileNr=0, ffi=0;
56 char *cptr, tmp[FILENAME_MAX];
57 char dftfile[FILENAME_MAX], resfile[FILENAME_MAX];
58 DFT dft;
59 RES res;
60
61
62 /*
63 * Get arguments
64 */
65 if(argc==1) {tpcPrintUsage(argv[0], info, stderr); return(1);}
66 dftfile[0]=resfile[0]=(char)0;
67 dftInit(&dft); resInit(&res);
68 /* Options */
69 for(ai=1; ai<argc; ai++) if(*argv[ai]=='-') {
70 cptr=argv[ai]+1; if(*cptr=='-') cptr++; if(cptr==NULL) continue;
71 if(tpcProcessStdOptions(argv[ai], &help, &version, &verbose)==0) continue;
72 fprintf(stderr, "Error: invalid option '%s'.\n", argv[ai]);
73 return(1);
74 } else break;
75
76 /* Print help or version? */
77 if(help==2) {tpcHtmlUsage(argv[0], info, ""); return(0);}
78 if(help) {tpcPrintUsage(argv[0], info, stdout); return(0);}
79 if(version) {tpcPrintBuild(argv[0], stdout); return(0);}
80
81 /* Process other arguments, starting from the first non-option */
82 for(; ai<argc; ai++) {
83 if(ffi<1) ffi=ai;
84 fileNr++;
85 }
86
87 /* Is something missing? */
88 if(fileNr<1) {
89 fprintf(stderr, "Error: missing command-line argument; use option --help\n");
90 return(1);
91 }
92
93
94 /* In verbose mode print arguments and options */
95 if(verbose>1) {
96 printf("fileNr := %d\n", fileNr);
97 }
98 if(verbose>3) RESULT_TEST=verbose-3; else RESULT_TEST=0;
99
100
101 /*
102 * Process one file at a time
103 */
104 for(ai=ffi; ai<argc; ai++) {
105
106 strcpy(dftfile, argv[ai]);
107 if(verbose>0 && fileNr>1) fprintf(stdout, "%s :\n", dftfile);
108
109 /*
110 * Read DFT data
111 */
112 if(verbose>2) printf("reading '%s'\n", dftfile);
113 if(dftRead(dftfile, &dft)) {
114 fprintf(stderr, "Error in reading '%s': %s\n", dftfile, dfterrmsg);
115 return(2);
116 }
117
118 /*
119 * Copy DFT data into RES structure
120 */
121 if(verbose>2) printf("converting\n");
122 ret=dftToResult(&dft, &res, tmp);
123 if(ret>0) {
124 fprintf(stderr, "Error: %s.\n", tmp);
125 dftEmpty(&dft); resEmpty(&res); return(3);
126 } else if(ret<0) {
127 fprintf(stderr, "Warning: %s.\n", tmp);
128 }
129 /* Set more header information */
130 tpcProgramName("result", 1, 1, res.program, 256);
131 cptr=strrchr(dftfile, '/'); if(cptr==NULL) cptr=strrchr(dftfile, '\\');
132 if(cptr==NULL) cptr=dftfile; else cptr++; strcpy(res.datafile, cptr);
133
134 /*
135 * Construct result filename
136 */
137 strcpy(resfile, dftfile); cptr=strrchr(resfile, '.');
138 if(cptr!=NULL) *cptr=(char)0;
139 strcat(resfile, ".res");
140
141 /*
142 * Write result file
143 */
144 if(verbose>0) fprintf(stdout, " writing %s\n", resfile);
145 ret=resWrite(&res, resfile, verbose-3);
146 if(ret) {
147 fprintf(stderr, " Error (%d) in writing file %s\n", ret, resfile);
148 dftEmpty(&dft); resEmpty(&res); return(11);
149 }
150
151 /* close file and clear TAC from memory */
152 dftEmpty(&dft); resEmpty(&res);
153
154 } /* next file */
155
156 return(0);
157}
158/*****************************************************************************/
159
160/*****************************************************************************/
void dftInit(DFT *data)
Definition dft.c:38
char dfterrmsg[64]
Definition dft.c:6
void dftEmpty(DFT *data)
Definition dft.c:20
int dftRead(char *filename, DFT *data)
Definition dftio.c:22
int dftToResult(DFT *dft, RES *res, char *status)
Definition dftres.c:60
Header file for libtpccurveio.
void resInit(RES *res)
Definition result.c:52
int resWrite(RES *res, char *filename, int verbose)
Definition result.c:565
void resEmpty(RES *res)
Definition result.c:22
int RESULT_TEST
Definition result.c:5
Header file for libtpcmisc.
int tpcProcessStdOptions(const char *s, int *print_usage, int *print_version, int *verbose_level)
Definition proginfo.c:40
void tpcProgramName(const char *program, int version, int copyright, char *prname, int n)
Definition proginfo.c:101
int tpcHtmlUsage(const char *program, char *text[], const char *path)
Definition proginfo.c:213
void tpcPrintBuild(const char *program, FILE *fp)
Definition proginfo.c:383
void tpcPrintUsage(const char *program, char *text[], FILE *fp)
Definition proginfo.c:158
char program[1024]
char datafile[FILENAME_MAX]