home *** CD-ROM | disk | FTP | other *** search
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
-
- #include "hippo.h"
-
- #ifdef sun
- #define EXIT_FAILURE 1
- #define EXIT_SUCCESS 0
- #endif
-
- #ifndef vms
- extern int getopt(int, char **, char *);
- #endif
-
- static void cleanup(ntuple *nt_list, display *d_list);
-
- int main(int argc, char **argv)
- {
- #ifndef vms
- extern char *optarg;
- extern int optind;
- #else
- int optind = 1;
- #endif
-
- int c;
- int i;
- int i_ntout=0;
-
- int verbose = 0;
-
- char filenm[80]; /* files and filenames */
- FILE *ifile = stdin;
- FILE *ofile = stdout;
- #ifndef __STDC__
- static
- #endif
- char outfilenm[80] = "";
-
- ntuple *nt_list = NULL; /* hippo objects */
- display *d_list = NULL;
-
- #ifndef vms
- while ((c = getopt( argc, argv, "vn:o:f:i:")) != -1)
- {
-
- switch (c)
- {
- case 'n':
- sscanf(optarg,"%d",&i_ntout);
- break;
-
- case 'i':
- case 'f':
- sscanf(optarg,"%s",filenm);
- if (verbose) fprintf(stderr,"Input text file = %s\n",filenm);
- if ( (ifile = fopen(filenm,"r")) == NULL )
- {
- fprintf(stderr,"Error opening text input file %s\n",
- filenm);
- exit(EXIT_FAILURE);
- }
- break;
-
- case 'o':
- sscanf(optarg,"%s",outfilenm);
- if (verbose) fprintf(stderr,"outfile = %s\n",outfilenm);
- if ( (ofile = fopen(outfilenm,"w")) == NULL )
- {
- fprintf(stderr,"Error opening hippo output file %s\n",
- outfilenm);
- exit(EXIT_FAILURE);
- }
- break;
-
- case 'v':
- verbose = 1;
- break;
-
- default:
- case '?':
- fprintf(stderr,"Usage: [-v] [-a <appendfile>] [-f <inputfile>]\n");
- fprintf(stderr,"[-o <outputfile>] [<inputfile> | stdin] [<outputfile> | stdout\n");
- exit(EXIT_FAILURE);
- }
- }
- #endif /* ifndef vms */
-
- /*
- * input file not in option form.
- */
- if (optind < argc)
- {
- sscanf(argv[optind],"%s",filenm);
- if (verbose) fprintf(stderr,"Input text file = %s\n",filenm);
- if ( (ifile = fopen(filenm,"r")) == NULL )
- {
- fprintf(stderr,"Error opening text input file %s\n",
- filenm);
- exit(EXIT_FAILURE);
- }
- optind++;
- }
-
- /*
- * output file not in option form.
- */
- if (optind < argc)
- {
- sscanf(argv[optind],"%s",outfilenm);
- if (verbose) fprintf(stderr,"outfile = %s\n",outfilenm);
- if ( (ofile = fopen(outfilenm,"w")) == NULL )
- {
- fprintf(stderr,"Error opening hippo output file %s\n",
- outfilenm);
- exit(EXIT_FAILURE);
- }
- optind++;
- }
-
- /*
- * handle appending ntuple to existing file.
- */
- if (h_readStream(ifile,&d_list,&nt_list) != 0)
- {
- fprintf(stderr,"Could not read file\n");
- cleanup(nt_list, d_list);
- exit(EXIT_FAILURE);
- }
-
- i = 0;
- while (nt_list[i] != NULL) i++;
- if (i_ntout >= i)
- {
- fprintf(stderr,"There are only %d ntuple in the input file\n",i);
- fprintf(stderr,"Remember: ntuples are numbered from 0\n");
- cleanup(nt_list, d_list);
- exit(EXIT_FAILURE);
- }
-
- /*
- * all set. Do it!
- */
- h_nt2text( ofile, nt_list[i_ntout] );
-
- cleanup(nt_list, d_list);
- exit(EXIT_SUCCESS);
- }
-
- static void cleanup(ntuple *nt_list, display *d_list)
- {
- int i;
-
- if (nt_list != NULL)
- {
- i = 0;
- while (nt_list[i] != NULL) h_freeNt(nt_list[i++]);
- free(nt_list);
- }
-
- if (d_list != NULL)
- {
- i = 0;
- while (d_list[i] != NULL) h_freeDisp(d_list[i++]);
- free(d_list);
- }
- }
-
-