public software.sextractor

[/] [trunk/] [src/] [main.c] - Blame information for rev 2

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 2 bertin
 /*
2
                                main.c
3
 
4
*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
5
*
6
*       Part of:        SExtractor
7
*
8
*       Author:         E.BERTIN (IAP)
9
*
10
*       Contents:       Command-line parsing.
11
*
12
*       Last modify:    18/07/2005
13
*
14
*%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
15
*/
16
 
17
#ifdef HAVE_CONFIG_H
18
#include        "config.h"
19
#endif
20
 
21
#include        <ctype.h>
22
#include        <stdio.h>
23
#include        <stdlib.h>
24
#include        <string.h>
25
 
26
#include        "define.h"
27
#include        "globals.h"
28
#include        "prefs.h"
29
 
30
#define         SYNTAX \
31
EXECUTABLE " <image> [<image2>][-c <configuration_file>][-<keyword> <value>]\n" \
32
"> to dump a default configuration file: " EXECUTABLE " -d \n" \
33
"> to dump a default extended configuration file: " EXECUTABLE " -dd \n"
34
 
35
extern const char       notokstr[];
36
 
37
/********************************** main ************************************/
38
int     main(int argc, char *argv[])
39
 
40
  {
41
   int          a, narg, nim, opt, opt2;
42
   char         **argkey, **argval, *str;
43
 
44
  if (argc<2)
45
    {
46
    fprintf(OUTPUT, "\n         %s  version %s (%s)\n", BANNER,MYVERSION,DATE);
47
    fprintf(OUTPUT, "\nby %s\n", COPYRIGHT);
48
    fprintf(OUTPUT, "visit %s\n", WEBSITE);
49
    error(EXIT_SUCCESS, "SYNTAX: ", SYNTAX);
50
    }
51
  QMALLOC(argkey, char *, argc);
52
  QMALLOC(argval, char *, argc);
53
 
54
/*default parameters */
55
  prefs.pipe_flag = 0;
56
  prefs.nimage_name = 1;
57
  prefs.image_name[0] = "image";
58
  strcpy(prefs.prefs_name, "default.sex");
59
  narg = nim = 0;
60
 
61
  for (a=1; a<argc; a++)
62
    {
63
    if (*(argv[a]) == '-')
64
      {
65
      opt = (int)argv[a][1];
66
      if (strlen(argv[a])<4 || opt == '-')
67
        {
68
        opt2 = (int)tolower((int)argv[a][2]);
69
        if (opt == '-')
70
          {
71
          opt = opt2;
72
          opt2 = (int)tolower((int)argv[a][3]);
73
          }
74
        switch(opt)
75
          {
76
          case 'c':
77
            if (a<(argc-1))
78
              strcpy(prefs.prefs_name, argv[++a]);
79
            break;
80
          case 'd':
81
            dumpprefs(opt2=='d' ? 1 : 0);
82
            exit(EXIT_SUCCESS);
83
            break;
84
          case 'v':
85
            printf("%s version %s (%s)\n", BANNER,MYVERSION,DATE);
86
            exit(0);
87
            break;
88
          case 'h':
89
          default:
90
            error(EXIT_SUCCESS,"SYNTAX: ", SYNTAX);
91
          }
92
        }
93
      else
94
        {
95
/*------ Config parameters */
96
        argkey[narg] = &argv[a][1];
97
        argval[narg++] = argv[++a];
98
        }
99
      }
100
    else
101
      {
102
/*---- The input image filename(s) */
103
      for(; (a<argc) && (*argv[a]!='-'); a++)
104
        for (str=NULL;(str=strtok(str?NULL:argv[a], notokstr)); nim++)
105
          if (nim<MAXIMAGE)
106
            prefs.image_name[nim] = str;
107
          else
108
            error(EXIT_FAILURE, "*Error*: Too many input images: ", str);
109
      prefs.nimage_name = nim;
110
      a--;
111
      }
112
    }
113
 
114
  readprefs(prefs.prefs_name, argkey, argval, narg);
115
 
116
  free(argkey);
117
  free(argval);
118
 
119
  makeit();
120
 
121
  NFPRINTF(OUTPUT, "All done");
122
  NPRINTF(OUTPUT, "\n");
123
 
124
  return EXIT_SUCCESS;
125
  }
126