1 #include "SUMA_suma.h"
2 
usage_SurfDsetInfo(SUMA_GENERIC_ARGV_PARSE * ps)3 void usage_SurfDsetInfo (SUMA_GENERIC_ARGV_PARSE *ps)
4 {
5       static char FuncName[]={"usage_SurfDsetInfo"};
6       char * s = NULL, *sio=NULL, *st = NULL, *sts = NULL, *sd = NULL;
7       int i;
8 
9       SUMA_ENTRY;
10 
11       s = SUMA_help_basics();
12       sd = SUMA_help_dset();
13       printf ( "\n"
14                "Usage: SurfDsetInfo [options] -input DSET1 -input DSET2 ...\n"
15                "   or: SurfDsetInfo [options] DSET1 DSET2 ... \n"
16                "   Optional Params:\n"
17                "      -debug DBG: if DBG = 2, show dset->ngr in its entirety in NIML form.\n"
18                "\n"
19                "%s"
20                "\n"
21                "%s"
22                "\n",  sd, s);
23       if (s) SUMA_free(s); s = NULL; if (st) SUMA_free(st); st = NULL; if (sio) SUMA_free(sio); sio = NULL; if (sd) SUMA_free(sd);
24       s = SUMA_New_Additions(0, 1); printf("%s\n", s);SUMA_free(s); s = NULL;
25       printf("       Ziad S. Saad SSCC/NIMH/NIH saadz@mail.nih.gov     \n");
26       exit(0);
27 }
28 
29 SUMA_GENERIC_PROG_OPTIONS_STRUCT *
SUMA_SurfDsetInfo_ParseInput(char * argv[],int argc,SUMA_GENERIC_ARGV_PARSE * ps)30    SUMA_SurfDsetInfo_ParseInput(char *argv[], int argc,
31                                 SUMA_GENERIC_ARGV_PARSE *ps)
32 {
33    static char FuncName[]={"SUMA_SurfDsetInfo_ParseInput"};
34    SUMA_GENERIC_PROG_OPTIONS_STRUCT *Opt=NULL;
35    int kar;
36    SUMA_Boolean brk;
37    SUMA_Boolean LocalHead = NOPE;
38 
39    SUMA_ENTRY;
40 
41    Opt = SUMA_Alloc_Generic_Prog_Options_Struct();
42    Opt->ps = ps;
43    kar = 1;
44    brk = NOPE;
45    while (kar < argc) { /* loop accross command ine options */
46       /*fprintf(stdout, "%s verbose: Parsing command line...\n", FuncName);*/
47       if (strcmp(argv[kar], "-h") == 0 || strcmp(argv[kar], "-help") == 0) {
48           usage_SurfDsetInfo(ps);
49           exit (0);
50       }
51 
52       SUMA_SKIP_COMMON_OPTIONS(brk, kar);
53 
54       if (!brk && (strcmp(argv[kar], "-debug") == 0))
55       {
56          if (kar+1 >= argc)
57          {
58             fprintf (SUMA_STDERR, "need a number after -debug \n");
59             exit (1);
60          }
61 
62          Opt->debug = atoi(argv[++kar]);
63          brk = YUP;
64       }
65 
66       if (!brk && !ps->arg_checked[kar]) {
67          /* Assume the rest is input data */
68          while (kar < argc) {
69             if (Opt->ps->N_dsetname < SUMA_MAX_DSET_ON_COMMAND) {
70                Opt->ps->dsetname[Opt->ps->N_dsetname] =
71                                        SUMA_copy_string(argv[kar]);
72                ++Opt->ps->N_dsetname; ++kar;
73             } else {
74                SUMA_S_Err("Too many input dsets on command line");
75             }
76          }
77       } else {
78          brk = NOPE;
79          kar ++;
80       }
81    }
82 
83    SUMA_RETURN(Opt);
84 }
85 
main(int argc,char * argv[])86 int main (int argc,char *argv[])
87 {/* Main */
88    static char FuncName[]={"SurfDsetInfo"};
89    SUMA_GENERIC_PROG_OPTIONS_STRUCT *Opt;
90    SUMA_GENERIC_ARGV_PARSE *ps=NULL;
91    SUMA_DSET *dset=NULL;
92    SUMA_DSET_FORMAT iform = SUMA_NO_DSET_FORMAT;
93    int i;
94    SUMA_Boolean LocalHead = NOPE;
95 
96    SUMA_STANDALONE_INIT;
97    SUMA_mainENTRY;
98 
99    /* Allocate space for DO structure */
100    SUMAg_DOv = SUMA_Alloc_DisplayObject_Struct (SUMA_MAX_DISPLAYABLE_OBJECTS);
101    ps = SUMA_Parse_IO_Args(argc, argv, "-dset;");
102 
103    if (argc < 2) {
104       usage_SurfDsetInfo(ps);
105       exit (1);
106    }
107 
108    Opt = SUMA_SurfDsetInfo_ParseInput (argv, argc, ps);
109 
110    if (Opt->debug > 2) LocalHead = YUP;
111 
112    for (i=0; i<Opt->ps->N_dsetname; ++i) {
113       fprintf(SUMA_STDOUT, "\n"
114                            "Info for dset (%2d/%2d): %s\n"
115                            "------------------------\n",
116                             i+1, Opt->ps->N_dsetname, Opt->ps->dsetname[i]);
117 
118       if (!(dset = SUMA_LoadDset_s (Opt->ps->dsetname[i], &iform, 0))) {
119          SUMA_S_Err("Failed reading dset");
120          exit(1);
121       }
122 
123       if (Opt->debug < 2) SUMA_ShowDset(dset, 0, SUMA_STDOUT);
124       else {
125          SUMA_ShowNel((void*)dset->ngr);
126       }
127       if (dset) SUMA_FreeDset(dset); dset = NULL;
128    }
129    if (ps) SUMA_FreeGenericArgParse(ps); ps = NULL;
130    if (Opt) Opt = SUMA_Free_Generic_Prog_Options_Struct(Opt);
131    if (!SUMA_Free_CommonFields(SUMAg_CF)) SUMA_error_message(FuncName,"SUMAg_CF Cleanup Failed!",1);
132    exit(0);
133 
134 }
135