Newer
Older
/*
main.c
*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*
* Part of: SExtractor
*
* Author: E.BERTIN (IAP)
*
* Contents: Command-line parsing.
*
*
*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
*/
#ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#include <ctype.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "define.h"
#include "globals.h"
#include "prefs.h"
#define SYNTAX \
EXECUTABLE " <image> [<image2>][-c <configuration_file>][-<keyword> <value>]\n" \
"> to dump a default configuration file: " EXECUTABLE " -d \n" \
"> to dump a default extended configuration file: " EXECUTABLE " -dd \n" \
"> to dump a full list of measurement parameters: " EXECUTABLE " -dp \n"
/********************************** main ************************************/
int main(int argc, char *argv[])
{
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
int a, narg, nim, opt, opt2;
char **argkey, **argval, *str;
if (argc<2)
{
fprintf(OUTPUT, "\n %s version %s (%s)\n", BANNER,MYVERSION,DATE);
fprintf(OUTPUT, "\nby %s\n", COPYRIGHT);
fprintf(OUTPUT, "visit %s\n", WEBSITE);
error(EXIT_SUCCESS, "SYNTAX: ", SYNTAX);
}
QMALLOC(argkey, char *, argc);
QMALLOC(argval, char *, argc);
/*default parameters */
prefs.command_line = argv;
prefs.ncommand_line = argc;
prefs.pipe_flag = 0;
prefs.nimage_name = 1;
prefs.image_name[0] = "image";
strcpy(prefs.prefs_name, "default.sex");
narg = nim = 0;
for (a=1; a<argc; a++)
{
if (*(argv[a]) == '-')
{
opt = (int)argv[a][1];
if (strlen(argv[a])<4 || opt == '-')
{
opt2 = (int)tolower((int)argv[a][2]);
if (opt == '-')
{
opt = opt2;
opt2 = (int)tolower((int)argv[a][3]);
}
switch(opt)
{
case 'c':
if (a<(argc-1))
strcpy(prefs.prefs_name, argv[++a]);
break;
case 'd':
if (opt2=='d')
dumpprefs(1);
else if (opt2=='p')
dumpparams();
else
dumpprefs(0);
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
exit(EXIT_SUCCESS);
break;
case 'v':
printf("%s version %s (%s)\n", BANNER,MYVERSION,DATE);
exit(0);
break;
case 'h':
default:
error(EXIT_SUCCESS,"SYNTAX: ", SYNTAX);
}
}
else
{
/*------ Config parameters */
argkey[narg] = &argv[a][1];
argval[narg++] = argv[++a];
}
}
else
{
/*---- The input image filename(s) */
for(; (a<argc) && (*argv[a]!='-'); a++)
for (str=NULL;(str=strtok(str?NULL:argv[a], notokstr)); nim++)
if (nim<MAXIMAGE)
prefs.image_name[nim] = str;
else
error(EXIT_FAILURE, "*Error*: Too many input images: ", str);
prefs.nimage_name = nim;
a--;
}
}
readprefs(prefs.prefs_name, argkey, argval, narg);
free(argkey);
free(argval);
makeit();
tdiff = prefs.time_diff>0.0? prefs.time_diff : 1.0;
lines = (double)thefield1.height/tdiff;
dets = (double)thecat.ntotal/tdiff;
NPRINTF(OUTPUT,
"> All done (in %.0f s: %.1f line%s/s , %.1f detection%s/s)\n",
prefs.time_diff, lines, lines>1.0? "s":"", dets, dets>1.0? "s":"");