101 #ifdef HAVE_CRT_EXTERNS_H
105 #include <crt_externs.h>
112 static int GetOptarg(
char **,
int *,
char ***,
int * );
113 static void Help(
void );
114 static void Syntax(
void );
245 "Turns on invisible options"
254 "Print out this message"
263 "Print out the PLplot library version number"
272 "Be more verbose than usual"
281 "Print debugging info (implies -verbose)"
290 "Enable driver-specific hack(s)"
317 "X server to contact"
326 "Plots per page in x"
335 "Plots per page in y"
344 "Window size/position specified as in X, e.g., 400x300, 400x300-100+200, +100-200, etc."
353 "Window size/position specified as in X, e.g., 400x300, 400x300-100+200, +100-200, etc."
362 "Relative coordinates [0-1] of window into plot"
371 "Margin space in relative coordinates (0 to 0.5, def 0)"
380 "Page aspect ratio (def: same as output device)"
389 "Page justification in x (-0.5 to 0.5, def 0)"
398 "Page justification in y (-0.5 to 0.5, def 0)"
407 "Plot orientation (0,1,2,3=landscape,portrait,seascape,upside-down)"
416 "Allow aspect ratio to adjust to orientation swaps"
425 "Sets portrait mode (both orientation and aspect ratio)"
434 "Sets pen width (0 <= width)"
443 "Background color (FF0000=opaque red, 0000FF_0.1=blue with alpha of 0.1)"
452 "Number of colors to allocate in cmap 0 (upper bound)"
461 "Number of colors to allocate in cmap 1 (upper bound)"
470 "Create a family of output files"
478 "-fsiz size[kKmMgG]",
479 "Output family file size (e.g. -fsiz 0.5G, def MB)"
488 "First family member number on output"
497 "Increment between family members"
506 "Family member number minimum field width"
515 "Don't use pixmaps in X-based drivers"
524 "Double buffer X window output"
533 "No pause between pages"
542 "bytes sent before flushing output"
551 "Main window name of PLplot server (tk driver)"
560 "Invoked name of PLplot server (tk driver)"
569 "Name of PLplot container window (tk driver)"
578 "Additional directory(s) to autoload (tk driver)"
587 "file for plserver (tk driver)"
596 "Resolution, in dots per inch (e.g. -dpi 360x360)"
605 "Sets compression level in supporting devices"
614 "Initializes color table 0 from a cmap0.pal format file in one of standard PLplot paths."
623 "Initializes color table 1 from a cmap1.pal format file in one of standard PLplot paths."
632 "Use locale environment (e.g., LC_ALL, LC_NUMERIC, or LANG) to set LC_NUMERIC locale (which affects decimal point separator)."
641 "For the case where the boundary of the filled region is self-intersecting, use the even-odd fill rule rather than the default nonzero fill rule."
649 "-drvopt option[=value][,option[=value]]*",
650 "Driver specific options"
658 "-mfo PLplot metafile name",
659 "Write the plot to the specified PLplot metafile"
667 "-mfi PLplot metafile name",
668 "Read the specified PLplot metafile"
682 "All parameters must be white-space delimited. Some options are driver",
683 "dependent. Please see the PLplot reference document for more detail.",
716 #define PL_MAX_OPT_TABLES 10
758 #endif //#ifdef PL_DEPRECATED
763 int mode = 0,
argc = 2, status;
766 argv[0] = (
char *) opt;
767 argv[1] = (
char *) opt_arg;
778 fprintf( stderr,
"plSetOpt: Unrecognized option %s\n", opt );
808 if ( ( tab->
handler != NULL ) ||
810 ( tab->
var != NULL ) ||
811 ( tab->
mode != 0 ) ||
812 ( tab->
syntax != NULL ) ||
813 ( tab->
desc != NULL ) )
815 plabort(
"plMergeOpts: input table improperly terminated" );
823 plabort(
"plMergeOpts: max tables limit exceeded, table not merged" );
879 char **argsave, **argend;
880 int i, myargc, myargcsave, status = 0;
893 myargc = ( *p_argc );
894 argend = argv + myargc;
900 plsc->program =
plstrdup( argv[0] );
913 for (; myargc > 0; --myargc, ++
argv )
916 if ( *argv == NULL || *argv[0] ==
'\0' )
923 for ( i =
tables - 1; i >= 0; i-- )
927 status =
ParseOpt( &myargc, &argv, p_argc, &argsave,
945 for (; myargc > 0; --myargc, ++
argv )
948 if ( *argv == NULL || *argv[0] ==
'\0' )
952 for ( i =
tables - 1; i >= 0; i-- )
956 status =
ParseOpt( &myargc, &argv, p_argc, &argsave,
980 fprintf( stderr,
"\nBad command line option \"%s\"\n", argv[0] );
988 else if ( status == 1 )
994 fprintf( stderr,
"\nBad command line option \"%s\"\n", argv[0] );
1002 else if ( status == 2 )
1014 for ( i = 0; i < myargc; i++ )
1015 *argsave++ = *argv++;
1017 if ( argsave < argend )
1020 #ifdef HAVE_NSGETARGC
1028 *_NSGetArgc() = *p_argc;
1052 ParseOpt(
int *p_myargc,
char ***p_argv,
int *p_argc,
char ***p_argsave,
1062 opt = ( *p_argv )[0];
1066 for ( tab = option_table; tab->
opt; tab++ )
1075 if ( *opt == *tab->
opt && !strcmp( opt, tab->
opt ) )
1082 ( *( *p_argsave )++ ) = ( **p_argv );
1089 return (
ProcessOpt( opt, tab, p_myargc, p_argv, p_argc ) );
1116 char *opt_arg = NULL;
1122 if ( tab->
mode & need_arg )
1124 if (
GetOptarg( &opt_arg, p_myargc, p_argv, p_argc ) )
1130 switch ( tab->
mode & 0xFF00 )
1139 "ProcessOpt: no handler specified for option %s\n",
1148 (
char *) malloc( (
size_t) ( 1 + strlen( opt_arg ) ) *
sizeof (
char ) );
1151 plabort(
"ProcessOpt: out of memory" );
1154 strcpy( copy, opt_arg );
1156 free( (
void *) copy );
1168 if ( tab->
var == NULL )
1171 "ProcessOpt: no variable specified for option %s\n",
1175 *(
int *) tab->
var = 1;
1182 if ( tab->
var == NULL )
1185 "ProcessOpt: no variable specified for option %s\n",
1189 *(
int *) tab->
var = atoi( opt_arg );
1196 if ( tab->
var == NULL )
1199 "ProcessOpt: no variable specified for option %s\n",
1203 *(
PLFLT *) tab->
var = atof( opt_arg );
1210 *(
char **) tab->
var = opt_arg;
1218 "ProcessOpt: invalid processing mode for option %s\n",
1241 GetOptarg(
char **popt_arg,
int *p_myargc,
char ***p_argv,
int *p_argc )
1247 if ( ( *p_myargc ) <= 0 )
1253 if ( ( *p_argv )[0][0] ==
'-' && isalpha( ( *p_argv )[0][1] ) )
1263 *popt_arg = ( *p_argv )[0];
1269 fprintf( stderr,
"Argument missing for %s option.\n", ( *p_argv )[0] );
1289 if ( program_string != NULL )
1292 if ( usage_string != NULL )
1293 usage = usage_string;
1306 if (
usage == NULL )
1307 fprintf( stderr,
"\nUsage:\n %s [options]\n",
program );
1309 fputs(
usage, stderr );
1313 fprintf( stderr,
"\n\nType %s -h for a full description.\n\n",
1332 for ( i =
tables - 1; i >= 0; i-- )
1336 if ( ploption_info[i].
name )
1337 fprintf( stderr,
"\n%s:", ploption_info[i].name );
1339 fputs(
"\nUser options:", stderr );
1344 for ( tab = ploption_info[i].
options; tab->
opt; tab++ )
1352 if ( tab->
syntax == NULL )
1355 len = 3 + (int) strlen( tab->
syntax );
1356 if ( col + len > 79 )
1358 fprintf( stderr,
"\n " );
1361 fprintf( stderr,
" [%s]", tab->
syntax );
1364 fprintf( stderr,
"\n" );
1381 FILE *outfile = stderr;
1385 if ( getenv(
"PAGER" ) != NULL )
1386 pager = (FILE *) popen(
"$PAGER",
"w" );
1387 if ( pager == NULL )
1388 pager = (FILE *) popen(
"more",
"w" );
1389 if ( pager != NULL )
1395 if (
usage == NULL )
1396 fprintf( outfile,
"\nUsage:\n %s [options]\n",
program );
1398 fputs(
usage, outfile );
1402 for ( i =
tables - 1; i >= 0; i-- )
1406 if ( ploption_info[i].
name )
1407 fprintf( outfile,
"\n%s:\n", ploption_info[i].name );
1409 fputs(
"\nUser options:\n", outfile );
1413 for ( tab = ploption_info[i].
options; tab->
opt; tab++ )
1421 if ( tab->
desc == NULL )
1425 fprintf( outfile,
" * %-20s %s\n", tab->
syntax, tab->
desc );
1427 fprintf( outfile,
" %-20s %s\n", tab->
syntax, tab->
desc );
1432 if ( ploption_info[i].notes )
1434 putc(
'\n', outfile );
1435 for ( note = ploption_info[i].notes; *note; note++ )
1437 fputs( *note, outfile );
1438 putc(
'\n', outfile );
1444 if ( pager != NULL )
1467 memset( msg,
'\0',
sizeof ( msg ) );
1475 t = acc_opt; fl = 0;
1478 if ( strcmp( drvp->
option, t->
opt ) == 0 )
1486 fprintf( stderr,
"plParseDrvOpts: %s %s\n", t->
opt, *(
char **) t->
var_ptr );
1491 if ( sscanf( drvp->
value,
"%d", (
int *) t->
var_ptr ) != 1 )
1493 snprintf( msg,
sizeof ( msg ) - 1,
"Incorrect argument to '%s' option", drvp->
option );
1497 fprintf( stderr,
"plParseDrvOpts: %s %d\n", t->
opt, *(
int *) t->
var_ptr );
1502 if ( sscanf( drvp->
value,
"%f", (
float *) t->
var_ptr ) != 1 )
1504 snprintf( msg,
sizeof ( msg ) - 1,
"Incorrect argument to '%s' option", drvp->
option );
1508 fprintf( stderr,
"plParseDrvOpts: %s %f\n", t->
opt, *(
float *) t->
var_ptr );
1518 snprintf( msg,
sizeof ( msg ) - 1,
"Option '%s' not recognized.\n\nRecognized options for this driver are:\n", drvp->
option );
1524 while ( ( drvp = drvp->
next ) )
1547 fprintf( stderr,
"%s:\t%s\n", t->
opt, t->
hlp_msg );
1571 free( drvpl->
value );
1574 if ( drvpl != &drv_opt )
1576 }
while ( drvp != NULL );
1580 drv_opt.
value = NULL;
1581 drv_opt.
next = NULL;
1630 fprintf( stderr,
"PLplot library version: %s\n",
PLPLOT_VERSION );
1863 plsc->freeaspect = 1;
1921 width = atof( opt_arg );
1924 fprintf( stderr,
"?invalid width\n" );
1930 plsc->widthlock = 1;
1957 char *color_field, *alpha_field;
1964 if ( *opt_arg ==
'#' )
1972 if ( strchr(
opttmp,
'_' ) )
1975 color_field = strtok(
opttmp,
"_" );
1976 alpha_field = strtok( NULL,
"_" );
1984 bgcolor = strtol( color_field, NULL, 16 );
1989 switch ( strlen( color_field ) )
1992 r = (
PLINT) ( ( bgcolor & 0xF00 ) >> 8 );
1993 g = (
PLINT) ( ( bgcolor & 0x0F0 ) >> 4 );
1994 b = (
PLINT) ( bgcolor & 0x00F );
2002 r = (
PLINT) ( ( bgcolor & 0xFF0000 ) >> 16 );
2003 g = (
PLINT) ( ( bgcolor & 0x00FF00 ) >> 8 );
2004 b = (
PLINT) ( bgcolor & 0x0000FF );
2008 fprintf( stderr,
"Unrecognized background color value %s\n", color_field );
2013 a = atof( alpha_field );
2039 plsc->ncol0 = atoi( opt_arg );
2060 plsc->ncol1 = atoi( opt_arg );
2082 PLFLT xl, yl, xr, yr;
2087 if ( ( field = strtok(
opttmp,
"," ) ) == NULL )
2092 if ( ( field = strtok( NULL,
"," ) ) == NULL )
2097 if ( ( field = strtok( NULL,
"," ) ) == NULL )
2102 if ( ( field = strtok( NULL,
"," ) ) == NULL )
2132 option = (
char *) malloc( (
size_t) ( 1 + strlen( opt_arg ) ) *
sizeof (
char ) );
2133 if ( option == NULL )
2134 plexit(
"opt_drvopt: Out of memory!?" );
2136 value = (
char *) malloc( (
size_t) ( 1 + strlen( opt_arg ) ) *
sizeof (
char ) );
2137 if ( value == NULL )
2138 plexit(
"opt_drvopt: Out of memory!?" );
2141 *option = *value =
'\0';
2143 while ( ( t = *opt_arg++ ) )
2160 if ( drvp->
next == NULL )
2161 plexit(
"opt_drvopt: Out of memory!?\n" );
2168 *tt =
'\0'; tt =
value;
2188 fprintf( stderr,
"\nopt_drvopt: -drvopt parsed options:\n" );
2191 fprintf( stderr,
"%s %s\n", drvp->
option, drvp->
value );
2192 while ( drvp = drvp->
next );
2193 fprintf( stderr,
"\n" );
2196 free( option ); free( value );
2249 size_t len = strlen( opt_arg );
2250 char lastchar = opt_arg[len - 1];
2251 PLFLT multiplier = 1.0e6;
2252 char *spec = (
char *) malloc( len + 1 );
2255 plexit(
"opt_fsiz: Insufficient memory" );
2263 multiplier = 1.0e3; len--;
2267 multiplier = 1.0e6; len--;
2271 multiplier = 1.0e9; len--;
2274 strncpy( spec, opt_arg, len );
2277 bytemax = (
PLINT) ( multiplier * atof( spec ) );
2280 fprintf( stderr,
"?invalid file size %d. 2.14G is the maximum.\n", bytemax );
2283 plsfam( 1, -1, bytemax );
2306 plsc->member = atoi( opt_arg );
2328 plsc->finc = atoi( opt_arg );
2350 plsc->fflen = atoi( opt_arg );
2435 plsc->bufmax = atoi( opt_arg );
2456 plsc->server_name =
plstrdup( opt_arg );
2477 plsc->plserver =
plstrdup( opt_arg );
2498 if ( ( plsc->plwindow = (
char *) malloc( (
size_t) ( 1 + strlen( opt_arg ) ) *
sizeof (
char ) ) ) == NULL )
2500 plexit(
"opt_plwindow: Insufficient memory" );
2502 strcpy( plsc->plwindow, opt_arg );
2523 plsc->auto_path =
plstrdup( opt_arg );
2544 plssub( atoi( opt_arg ), -1 );
2565 plssub( -1, atoi( opt_arg ) );
2591 PLFLT xdpi = 0., ydpi = 0.;
2592 PLINT xwid, ywid, xoff, yoff;
2596 if ( ( plsc->geometry = (
char *) malloc( (
size_t) ( 1 + strlen( opt_arg ) ) *
sizeof (
char ) ) ) == NULL )
2598 plexit(
"opt_geo: Insufficient memory" );
2601 strcpy( plsc->geometry, opt_arg );
2603 numargs = sscanf( opt_arg,
"%dx%d%d%d", &xwid, &ywid, &xoff, &yoff );
2609 fprintf( stderr,
"?invalid xwid in -geometry %s\n", opt_arg );
2611 fprintf( stderr,
"?invalid ywid in -geometry %s\n", opt_arg );
2614 fprintf( stderr,
"?invalid xwid in -geometry %s\n", opt_arg );
2619 fprintf( stderr,
"?invalid ywid in -geometry %s\n", opt_arg );
2623 else if ( numargs == 4 )
2626 fprintf( stderr,
"?invalid xwid in -geometry %s\n", opt_arg );
2628 fprintf( stderr,
"?invalid ywid in -geometry %s\n", opt_arg );
2631 fprintf( stderr,
"?invalid xwid in -geometry %s\n", opt_arg );
2636 fprintf( stderr,
"?invalid ywid in -geometry %s\n", opt_arg );
2639 if ( abs( xoff ) == 0 )
2640 fprintf( stderr,
"?invalid xoff in -geometry %s\n", opt_arg );
2641 if ( abs( yoff ) == 0 )
2642 fprintf( stderr,
"?invalid yoff in -geometry %s\n", opt_arg );
2646 numargs = sscanf( opt_arg,
"%d%d", &xoff, &yoff );
2651 if ( abs( xoff ) == 0 )
2652 fprintf( stderr,
"?invalid xoff in -geometry %s\n", opt_arg );
2653 if ( abs( yoff ) == 0 )
2654 fprintf( stderr,
"?invalid yoff in -geometry %s\n", opt_arg );
2658 fprintf( stderr,
"?invalid -geometry %s\n", opt_arg );
2663 plspage( xdpi, ydpi, xwid, ywid, xoff, yoff );
2683 if ( ( plsc->tk_file = (
char *) malloc( (
size_t) ( 1 + strlen( opt_arg ) ) *
sizeof (
char ) ) ) == NULL )
2685 plexit(
"opt_tk_file: Insufficient memory" );
2688 strcpy( plsc->tk_file, opt_arg );
2714 PLFLT xdpi = 0., ydpi = 0.;
2715 PLINT xwid = 0, ywid = 0, xoff = 0, yoff = 0;
2719 if ( strchr(
opttmp,
'x' ) )
2721 field = strtok(
opttmp,
"x" );
2722 xdpi = atof( field );
2724 fprintf( stderr,
"?invalid xdpi\n" );
2726 if ( ( field = strtok( NULL,
" " ) ) == NULL )
2729 ydpi = atof( field );
2731 fprintf( stderr,
"?invalid ydpi\n" );
2741 plspage( xdpi, ydpi, xwid, ywid, xoff, yoff );
2763 comp = atoi( opt_arg );
2766 fprintf( stderr,
"?invalid compression\n" );
2831 if ( ( locale = setlocale( LC_NUMERIC,
"" ) ) )
2833 printf(
"LC_NUMERIC locale set to \"%s\"\n", locale );
2837 plwarn(
"Could not use invalid environment (e.g., LC_ALL, LC_NUMERIC, or LANG) to set LC_NUMERIC locale. Falling back to LC_NUMERIC \"C\" locale instead.\n" );
2838 if ( !( locale = setlocale( LC_NUMERIC,
"C" ) ) )
2840 plexit(
"Your platform is seriously broken. Not even a \"C\" locale could be set." );
2864 plsc->dev_eofill = 1;
2884 if ( ( plsc->mf_outfile = (
char *) malloc( (
size_t) ( 1 + strlen( opt_arg ) ) *
sizeof (
char ) ) ) == NULL )
2886 plexit(
"opt_mfo: Insufficient memory" );
2889 strcpy( plsc->mf_outfile, opt_arg );
2909 if ( ( plsc->mf_infile = (
char *) malloc( (
size_t) ( 1 + strlen( opt_arg ) ) *
sizeof (
char ) ) ) == NULL )
2911 plexit(
"opt_mfi: Insufficient memory" );
2914 strcpy( plsc->mf_infile, opt_arg );
#define PL_MAX_OPT_TABLES
int plParseDrvOpts(DrvOpt *acc_opt)
PLINT plMergeOpts(PLOptionTable *options, PLCHAR_VECTOR name, PLCHAR_VECTOR *notes)
static int opt_portrait(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
#define PL_PARSE_NOPROGRAM
void plexit(PLCHAR_VECTOR errormsg)
static int opt_v(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_auto_path(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static PLCHAR_VECTOR usage
int(* handler)(PLCHAR_VECTOR, PLCHAR_VECTOR, PLPointer)
static int opt_locale(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_nopixmap(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_fflen(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
const char * PLCHAR_VECTOR
static int opt_width(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
#define PL_PARSE_NODELETE
static int opt_dev(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_db(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
void plabort(PLCHAR_VECTOR errormsg)
static int ParseOpt(int *, char ***, int *, char ***, PLOptionTable *)
static int opt_py(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_fsiz(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_verbose(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_dpi(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_dev_compression(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
PLINT c_plparseopts(int *p_argc, char **argv, PLINT mode)
static int opt_wplt(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_jy(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
void plSetUsage(PLCHAR_VECTOR program_string, PLCHAR_VECTOR usage_string)
static int opt_geo(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_eofill(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int GetOptarg(char **, int *, char ***, int *)
static int opt_o(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_ncol1(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
struct DrvOptCmd DrvOptCmd
static int opt_cmap1(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_server_name(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_h(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
PLOptionInfo ploption_info_default
static int opt_jx(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
PLINT c_plsetopt(PLCHAR_VECTOR opt, PLCHAR_VECTOR opt_arg)
static int opt_a(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_px(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static PLCHAR_VECTOR program
static char opttmp[OPTMAX]
void plHelpDrvOpts(DrvOpt *acc_opt)
static PLCHAR_VECTOR plplot_notes[]
static int opt_mfi(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_bufmax(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_plwindow(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static PLFLT value(double n1, double n2, double hue)
static PLOptionTable options[]
char PLDLLIMPEXP * plstrdup(PLCHAR_VECTOR src)
static int opt_cmap0(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_mar(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int mode_noprogram
static int ProcessOpt(char *, PLOptionTable *, int *, char ***, int *)
static int opt_ori(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
void plwarn(PLCHAR_VECTOR errormsg)
static int opt_finc(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_drvopt(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_np(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_bg(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
PLOptionInfo ploption_info[PL_MAX_OPT_TABLES]
static int opt_freeaspect(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_hack(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_fbeg(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_plserver(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_debug(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_ncol0(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_mfo(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static PLOptionTable ploption_table[]
static int opt_tk_file(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)
static int opt_fam(PLCHAR_VECTOR, PLCHAR_VECTOR, void *)