** This is part of the CTSim program
** Copyright (C) 1983-2000 Kevin Rosenberg
**
-** $Id: phm2sdf.c,v 1.8 2000/05/11 01:06:30 kevin Exp $
+** $Id: phm2sdf.c,v 1.9 2000/05/16 04:33:59 kevin Exp $
** $Log: phm2sdf.c,v $
+** Revision 1.9 2000/05/16 04:33:59 kevin
+** Improved option processing
+**
** Revision 1.8 2000/05/11 01:06:30 kevin
** Changed sprintf to snprintf
**
** along with this program; if not, write to the Free Software
** Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
******************************************************************************/
+
/* FILE
* phm2sdf.c Generate a SDF image from a phantom
*
};
void
-usage (const char *program)
+phm2sdf_usage (const char *program)
{
- fprintf(stdout,"usage: %s outfile nx ny [--phantom phantom-name] [--phmfile filename] [--filter filter-name] [OPTIONS]\n",kbasename(program));
+ fprintf(stdout,"phm2sdf_usage: %s outfile nx ny [--phantom phantom-name] [--phmfile filename] [--filter filter-name] [OPTIONS]\n",kbasename(program));
fprintf(stdout,"Generate phantom image from a predefined --phantom or a --phmfile\n");
fprintf(stdout,"\n");
fprintf(stdout," outfile Name of output file for image\n");
fprintf(stdout," --verbose Verbose mode\n");
fprintf(stdout," --version Print version\n");
fprintf(stdout," --help Print this help message\n");
- exit(1);
}
#ifdef MPI_CT
#endif
int
-main (const int argc, char *const argv[])
+phm2sdf_main (const int argc, char *const argv[])
{
IMAGE *im_global = NULL;
PHANTOM *phm = NULL;
if (mpi_ct.nproc > MPI_MAX_PROCESS) {
sys_error(ERR_FATAL, "Number of mpi processes (%d) exceeds max processes (%d)",
mpi_ct.nproc, MPI_MAX_PROCESS);
- exit(1);
}
#endif
switch (c) {
case O_PHANTOM:
- opt_phmnum = opt_set_phantom(optarg, argv[0]);
+ if ((opt_phmnum = opt_set_phantom(optarg)) < 0) {
+ phm2sdf_usage(argv[0]);
+ return (1);
+ }
break;
case O_PHMFILE:
strncpy(opt_phmfilename, optarg, sizeof(opt_phmfilename));
#ifdef MPI_CT
if (mpi_ct.my_rank == 0)
fprintf(stderr, "Can't use phantom from file in MPI mode\n");
- exit(1);
+ return (1);
#endif
break;
case O_VERBOSE:
opt_debug = 1;
break;
case O_TRACE:
- opt_trace = opt_set_trace(optarg, argv[0]);
+ if ((opt_trace = opt_set_trace(optarg)) < 0) {
+ phm2sdf_usage(argv[0]);
+ return (1);
+ }
break;
case O_FILTER:
- opt_filter = opt_set_filter(optarg, argv[0]);
+ if ((opt_filter = opt_set_filter(optarg)) < 0) {
+ phm2sdf_usage (argv[0]);
+ return (1);
+ }
break;
case O_FILTER_DOMAIN:
- opt_filter_domain = opt_set_filter_domain(optarg, argv[0]);
+ if ((opt_filter_domain = opt_set_filter_domain(optarg)) < 0) {
+ phm2sdf_usage (argv[0]);
+ return (1);
+ }
break;
case O_DESC:
strncpy(opt_desc, optarg, sizeof(opt_desc));
endstr = optarg + strlen(optarg);
if (endptr != endstr) {
fprintf(stderr,"Error setting --filter-bw to %s\n", optarg);
- usage(argv[0]);
- exit(1);
+ phm2sdf_usage(argv[0]);
+ return (1);
}
break;
case O_FILTER_PARAM:
endstr = optarg + strlen(optarg);
if (endptr != endstr) {
fprintf(stderr,"Error setting --filter-param to %s\n", optarg);
- usage(argv[0]);
- exit(1);
+ phm2sdf_usage(argv[0]);
+ return (1);
}
break;
case O_NSAMPLE:
endstr = optarg + strlen(optarg);
if (endptr != endstr) {
fprintf(stderr,"Error setting --nsample to %s\n", optarg);
- usage(argv[0]);
- exit(1);
+ phm2sdf_usage(argv[0]);
+ return (1);
}
break;
case O_VERSION:
#endif
case O_HELP:
case '?':
- usage(argv[0]);
- exit(0);
+ phm2sdf_usage(argv[0]);
+ return (0);
default:
- usage(argv[0]);
- exit(1);
+ phm2sdf_usage(argv[0]);
+ return (1);
}
}
if (phm == NULL && opt_phmnum == -1 && opt_filter == -1) {
fprintf(stderr, "No phantom defined\n");
- usage(argv[0]);
- exit(1);
+ phm2sdf_usage(argv[0]);
+ return (1);
}
#if HAVE_INTERACTIVE_GRAPHICS
#endif
if (optind + 3 != argc) {
- usage(argv[0]);
- exit(1);
+ phm2sdf_usage(argv[0]);
+ return (1);
}
opt_outfile = argv[optind];
opt_nx = strtol(argv[optind+1], &endptr, 10);
endstr = argv[optind+1] + strlen(argv[optind+1]);
if (endptr != endstr) {
fprintf(stderr,"Error setting nx to %s\n", argv[optind+1]);
- usage(argv[0]);
- exit(1);
+ phm2sdf_usage(argv[0]);
+ return (1);
}
opt_ny = strtol(argv[optind+2], &endptr, 10);
endstr = argv[optind+2] + strlen(argv[optind+2]);
if (endptr != endstr) {
fprintf(stderr,"Error setting ny to %s\n", argv[optind+2]);
- usage(argv[0]);
- exit(1);
+ phm2sdf_usage(argv[0]);
+ return (1);
}
snprintf(str, sizeof(str), "nx=%d, ny=%d, nsample=%d, ", opt_nx, opt_ny, opt_nsample);
#ifdef MPI_CT
time_end = MPI_Wtime();
- if (mpi_ct.my_rank == 0) {
+#else
+ time_end = td_current_sec();
+#endif
+
+#ifdef MPI_CT
+ if (mpi_ct.my_rank == 0)
+#endif
+ {
im_global->calctime = time_end - time_start;
strncpy (im_global->remark, opt_desc, sizeof(im_global->remark));
- }
-
- if (mpi_ct.my_rank == 0) {
image_save (im_global);
if (opt_verbose)
fprintf (stdout, "Time to compile image = %.2f sec\n\n", im_global->calctime);
}
-#else
- time_end = td_current_sec();
- im_global->calctime = time_end - time_start;
- strncpy (im_global->remark, opt_desc, sizeof(im_global->remark));
- image_save (im_global);
-
- if (opt_verbose)
- fprintf (stdout, "Time to compile image = %.2f sec\n\n", im_global->calctime);
-#endif
if (opt_trace >= TRACE_PHM)
{
}
+ phm_free (phm);
+
return (0);
}
}
#endif
+
+#ifndef NO_MAIN
+int
+main (const int argc, char *const argv[])
+{
+ return (phm2sdf_main(argc, argv));
+}
+#endif