open-src/app/gfx-utils/sun-src/fbconf_xorg/fbc/fbc_getargs.c
author Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
Sat, 10 Sep 2011 23:06:14 -0700
changeset 1208 eaa15317ee26
parent 1117 629ac4b133bc
permissions -rw-r--r--
7088521 fbconfig may use or write to files it shouldn't
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
1117
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
     1
/*
1208
eaa15317ee26 7088521 fbconfig may use or write to files it shouldn't
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1117
diff changeset
     2
 * Copyright (c) 2008, 2011, Oracle and/or its affiliates. All rights reserved.
1117
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
     3
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
     4
 * Permission is hereby granted, free of charge, to any person obtaining a
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
     5
 * copy of this software and associated documentation files (the "Software"),
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
     6
 * to deal in the Software without restriction, including without limitation
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
     7
 * the rights to use, copy, modify, merge, publish, distribute, sublicense,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
     8
 * and/or sell copies of the Software, and to permit persons to whom the
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
     9
 * Software is furnished to do so, subject to the following conditions:
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    10
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    11
 * The above copyright notice and this permission notice (including the next
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    12
 * paragraph) shall be included in all copies or substantial portions of the
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    13
 * Software.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    14
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    15
 * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    16
 * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    17
 * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.  IN NO EVENT SHALL
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    18
 * THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    19
 * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    20
 * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    21
 * DEALINGS IN THE SOFTWARE.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    22
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    23
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    24
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    25
 * fbc_getargs - Program command line processing
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    26
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    27
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    28
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    29
#include <stdio.h>		/* fprintf(), fputs() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    30
#include <stdlib.h>		/* exit(), malloc(), strtof(), strtol() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    31
#include <string.h>		/* strchr(), strcmp(), strlen() */
1208
eaa15317ee26 7088521 fbconfig may use or write to files it shouldn't
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1117
diff changeset
    32
#include <unistd.h>		/* issetugid() */
1117
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    33
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    34
#include "fbc.h"		/* Common fbconf_xorg(1M) definitions */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    35
#include "fbc_error.h"		/* Error reporting */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    36
#include "fbc_getargs.h"	/* Program command line processing */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    37
#include "fbc_keywds.h"		/* Command line keyword look-up */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    38
#include "fbc_properties.h"	/* fbconf_xorg(1M) program properties */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    39
#include "fbc_res.h"		/* Video modes/resolutions (-res option) */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    40
#include "fbc_xorg.h"		/* Edit config file data representations */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    41
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    42
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    43
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    44
 * fbc_search_optvals()
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    45
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    46
 *    Look up the keyword that has been provided as the value for a
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    47
 *    command line option.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    48
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    49
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    50
void
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    51
fbc_search_optvals(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    52
	fbc_varient_t	*fbvar,		/* Program varient data */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    53
	const char	* const	option_name, /* Command line option name */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    54
	const keywd_int_t *keywd_table,	/* Table of recognized keywords */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    55
	const char	* const	option_value, /* Keyword string to look up */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    56
	const keywd_int_t **match_ent_ptr) /* Returned ptr to matching ent */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    57
{
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    58
	int		error_code;	/* Error code */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    59
	int		i;		/* Loop counter / array index */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    60
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    61
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    62
	 * Look up the option value keyword
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    63
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    64
	error_code = fbc_search_keywds((void *)keywd_table,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    65
					sizeof (keywd_int_t),
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    66
					option_value,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    67
					(const void **)match_ent_ptr);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    68
	if (error_code != FBC_SUCCESS) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    69
		if (error_code == FBC_ERR_KWD_INVALID) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    70
			/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    71
			 * Handle an unknown/invalid option value keyword
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    72
			 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    73
			fbc_errormsg("Invalid value for -%s option: %s\n",
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    74
					option_name, option_value);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    75
			fprintf(stderr, "Valid values for -%s option are:\n",
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    76
					option_name);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    77
			for (i = 0; keywd_table[i].argv_name != NULL; i += 1) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    78
				fprintf(stderr, "\t%s\n",
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    79
					keywd_table[i].argv_name);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    80
			}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    81
		} else {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    82
			/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    83
			 * Handle an ambiguous abbreviation of a value keyword
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    84
			 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    85
			fbc_errormsg("Ambiguous value for -%s option.\n",
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    86
					option_name);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    87
			fprintf(stderr, "Possible values are:\n");
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    88
			fbc_print_matching_keywds((void *)keywd_table,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    89
						sizeof (keywd_int_t),
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    90
						option_value);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    91
		}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    92
		fbvar->usage(stderr, fbvar);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    93
		exit(FBC_EXIT_USAGE);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    94
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    95
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    96
}	/* fbc_search_optvals() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    97
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    98
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
    99
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   100
 * fbc_add_Option_mod()
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   101
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   102
 *    Add a config Option entry description to the .Option_mods[] array.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   103
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   104
 *    Reject conflicting Option values and consolidate duplicate
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   105
 *    descriptions.  (Among other things, duplicates raise the
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   106
 *    possibility overfilling the .Option_mods[] array).
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   107
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   108
 *    Currently supported are Option entries having no value or a single
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   109
 *    value.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   110
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   111
 *    Use fbvar->modify_config to show that the specified section of
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   112
 *    the configuration file is to be modified.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   113
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   114
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   115
int
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   116
fbc_add_Option_mod(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   117
	sectn_mask_t	option_section,	/* Option entry (sub)section */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   118
	const char	*option_name,	/* Option entry name  string */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   119
	const char	*option_value,	/* Option entry value string */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   120
	int (* strcmp_fn)(const char *s1, const char *s2),
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   121
					/* strcmp(), strcasecmp(), etc. */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   122
	fbc_varient_t	*fbvar,		/* Program varient data */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   123
	xf86_opt_mod_t	**option_mod_p)	/* Option descr ptr ptr, else NULL */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   124
{
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   125
	int		i;		/* Loop counter / array subscript */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   126
	xf86_opt_mod_t	*option_mod;	/* Ptr to Option modification descr */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   127
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   128
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   129
	 * A NULL Option description pointer can be returned in case of error
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   130
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   131
	if (option_mod_p == NULL) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   132
		/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   133
		 * If the caller doesn't want this result, discard it someplace
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   134
		 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   135
		option_mod_p = &option_mod;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   136
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   137
	*option_mod_p = NULL;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   138
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   139
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   140
	 * Taking this code path shows intent to modify a config file section
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   141
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   142
	fbvar->modify_config |= option_section;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   143
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   144
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   145
	 * See if this Option was specified already and if the values conflict
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   146
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   147
	for (i = 0; i < fbvar->xf86_entry_mods.Option_mods_num; i += 1) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   148
		/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   149
		 * Compare the config sections and Option names
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   150
		 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   151
		 *    Differences in alphabetic case aren't expected,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   152
		 *    but are possible if our tables are constructed
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   153
		 *    carelessly.  XFree86-style insensitivity to
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   154
		 *    whitespace and underscores could be supported,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   155
		 *    should that become an issue.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   156
		 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   157
		option_mod = &fbvar->xf86_entry_mods.Option_mods[i];
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   158
		if ((option_section == option_mod->section) &&
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   159
		    (strcasecmp(option_name, option_mod->name) == 0)) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   160
			/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   161
			 * Compare the Option values or absence thereof
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   162
			 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   163
			 *    Our caller has provided strcmp_fn that
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   164
			 *    does case-insensitive comparisons for
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   165
			 *    keywords, or that does case sensitive
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   166
			 *    comparisons for other values such as
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   167
			 *    pathnames.  Whitespace- and underscore-
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   168
			 *    sensitivity could also be controlled in
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   169
			 *    this way.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   170
			 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   171
			if ((option_value      != NULL) ||
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   172
			    (option_mod->value != NULL)) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   173
				if ((option_value      == NULL) ||
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   174
				    (option_mod->value == NULL)) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   175
					/* NULL and non-NULL conflict */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   176
					return (FBC_ERR_OPT_CONFLICT);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   177
				}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   178
				if (strcmp_fn(option_value, option_mod->value)
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   179
						!= 0) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   180
					/* Value strings don't match */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   181
					return (FBC_ERR_OPT_CONFLICT);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   182
				}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   183
			}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   184
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   185
			/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   186
			 * Option name and value have been specified already
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   187
			 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   188
			*option_mod_p = option_mod;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   189
			return (FBC_SUCCESS);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   190
		}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   191
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   192
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   193
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   194
	 * Point to the next available Option entry description slot
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   195
	 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   196
	 *    Leave space for the array terminator element.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   197
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   198
	option_mod = &fbvar->xf86_entry_mods.Option_mods[
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   199
				fbvar->xf86_entry_mods.Option_mods_num];
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   200
	fbvar->xf86_entry_mods.Option_mods_num += 1;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   201
	if (fbvar->xf86_entry_mods.Option_mods_num >=
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   202
				fbvar->xf86_entry_mods.Option_mods_size) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   203
		fbc_errormsg("Internal error; array bound exceeded\n");
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   204
		exit(FBC_EXIT_FAILURE);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   205
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   206
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   207
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   208
	 * Fill in the Option entry description
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   209
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   210
	option_mod->name    = option_name;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   211
	option_mod->value   = option_value;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   212
	option_mod->section = option_section;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   213
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   214
	*option_mod_p = option_mod;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   215
	return (FBC_SUCCESS);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   216
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   217
}	/* fbc_add_Option_mod() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   218
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   219
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   220
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   221
 * fbc_add_radio_Option_mod()
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   222
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   223
 *    Add a config Option entry description to the .Option_mods[] array.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   224
 *    If this and other Options are ganged together in radio button
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   225
 *    fashion (e.g., if one's value is set to True then all others' must
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   226
 *    be False) then reset the values of the other Options when
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   227
 *    necesary.  Note that these Options are all assumed to belong to
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   228
 *    the same, single section of the configuration file.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   229
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   230
 *    If the Option value is a keyword, look up the command line
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   231
 *    argument and convert it to its config file form.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   232
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   233
 *    For all Option descriptions that are to be added, reject
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   234
 *    conflicting Option values and consolidate duplicate descriptions.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   235
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   236
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   237
void
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   238
fbc_add_radio_Option_mod(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   239
	const keywd_int_t *keywd_table,	/* Table of recognized keywords */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   240
	const char	*option_reset_value, /* Opt reset keyword, else NULL */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   241
	char	* const	argv[],		/* Program argument vector */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   242
	int		arg,		/* Program argument subscript */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   243
	fbc_varient_t	*fbvar,		/* Program varient data */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   244
	const void	*fbopt_descr,	/* Ptr to cmd line option descr */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   245
	xf86_opt_mod_t	**option_mod_p)	/* Option descr ptr ptr, else NULL */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   246
{
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   247
	const keywd_int_t *match_ent_ptr; /* Ptr to matching keyword entry */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   248
	const char	*option_name;	/* Option name  string */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   249
	const char	*option_value;	/* Option value string */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   250
	int (* strcmp_fn)(const char *s1, const char *s2);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   251
					/* strcmp(), strcasecmp(), etc. */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   252
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   253
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   254
	 * See whether the config Option value involves a keyword look-up
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   255
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   256
	option_value = argv[arg+1];
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   257
	strcmp_fn = &strcmp;		/* Assume case-sensitive value */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   258
	if (keywd_table != NULL) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   259
		/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   260
		 * Validate the config Option's keyword value
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   261
		 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   262
		fbc_search_optvals(fbvar,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   263
				((fbopt_descr_t *)fbopt_descr)->argv_name,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   264
				keywd_table,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   265
				option_value,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   266
				&match_ent_ptr);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   267
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   268
		/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   269
		 * Get the Option value as it will appear in the config file
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   270
		 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   271
		 *    If the .conf_name hasn't been provided (e.g.,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   272
		 *    fbc_keywds_Samples[]), use the .argv_name.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   273
		 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   274
		option_value = match_ent_ptr->conf_name;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   275
		if (option_value == NULL) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   276
			option_value = match_ent_ptr->argv_name;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   277
		}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   278
		strcmp_fn = &strcasecmp; /* Keywords are case insensitive */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   279
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   280
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   281
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   282
	 * Set up the Option description for the config file
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   283
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   284
	option_name = ((const fbopt_descr_t *)fbopt_descr)->conf_name;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   285
	if (fbc_add_Option_mod(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   286
			((const fbopt_descr_t *)fbopt_descr)->section,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   287
			option_name,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   288
			option_value,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   289
			strcmp_fn,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   290
			fbvar,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   291
			option_mod_p) != FBC_SUCCESS) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   292
		fbc_errormsg("Conflicting option, %s %s\n",
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   293
				argv[arg], argv[arg+1]);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   294
		exit(FBC_EXIT_USAGE);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   295
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   296
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   297
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   298
	 * See whether setting this value should reset related Option values
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   299
	 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   300
	 *    The values of related Options should be reset (in radio
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   301
	 *    button fashion) if:
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   302
	 *      * A reset value (option_reset_value) has been provided
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   303
	 *      * The value of this Option isn't the reset value
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   304
	 *      * Related Options exist
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   305
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   306
	if ((option_reset_value != NULL) &&
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   307
	    (strcasecmp(option_value, option_reset_value) != 0)) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   308
		/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   309
		 * Reset each related Option value
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   310
		 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   311
		for (;;) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   312
			option_name += strlen(option_name) + 1;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   313
			if (*option_name == '\0') {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   314
				break;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   315
			}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   316
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   317
			/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   318
			 * Set up the Option description for the config file
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   319
			 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   320
			if (fbc_add_Option_mod(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   321
					((const fbopt_descr_t *)fbopt_descr)->
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   322
								section,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   323
					option_name,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   324
					option_reset_value,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   325
					strcmp_fn,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   326
					fbvar,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   327
					NULL) != FBC_SUCCESS) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   328
				fbc_errormsg(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   329
				"Conflicting associated option, %s %s\n",
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   330
						argv[arg], argv[arg+1]);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   331
				exit(FBC_EXIT_USAGE);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   332
			}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   333
		}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   334
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   335
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   336
}	/* fbc_add_radio_Option_mod() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   337
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   338
#ifdef FBC_FUTURE
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   339
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   340
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   341
 * fbc_Option_none()
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   342
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   343
 *    Handle a configuration Option entry having no Option value.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   344
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   345
 *    Note: This is a fbc_getopt_fn_t typed function.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   346
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   347
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   348
void
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   349
fbc_Option_none(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   350
	char	* const	argv[],		/* Program argument vector */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   351
	int		*arg,		/* Program argument subscript */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   352
	fbc_varient_t	*fbvar,		/* Program varient data */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   353
	const void	*fbopt_descr)	/* Ptr to cmd line option descr */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   354
{
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   355
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   356
	if (fbc_add_Option_mod(((const fbopt_descr_t *)fbopt_descr)->section,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   357
			((const fbopt_descr_t *)fbopt_descr)->conf_name,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   358
			NULL,		/* Option entry has no value */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   359
			&strcmp,	/* Not used; there's no value */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   360
			fbvar,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   361
			NULL) != FBC_SUCCESS) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   362
		fbc_errormsg("Conflicting option, %s\n", argv[*arg]);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   363
		exit(FBC_EXIT_USAGE);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   364
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   365
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   366
}	/* fbc_Option_none() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   367
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   368
#endif	/* FBC_FUTURE */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   369
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   370
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   371
 * Keyword tables for command line options having keyword arguments
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   372
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   373
 *    The zeroth keywd_int_t array element contains the "radio button"
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   374
 *    reset value in its .conf_name member.  The zeroth element is not
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   375
 *    part of the keyword look-up table.  The keyword look-up table
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   376
 *    begins at array element [1].
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   377
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   378
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   379
	/* True | False */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   380
const keywd_int_t fbc_keywds_boolean[] = {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   381
	{ NULL,      "False", FBC_Bool_False },	/* Reset value (Boolean) */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   382
	{ "true",    "True",  FBC_Bool_True  },	/* Start of keyword table */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   383
	{ "false",   "False", FBC_Bool_False },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   384
	{ "enable",  "True",  FBC_Bool_True  },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   385
	{ "disable", "False", FBC_Bool_False },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   386
	{ "yes",     "Yes",   FBC_Bool_True  },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   387
	{ "no",      "No",    FBC_Bool_False },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   388
	{ "on",      "On",    FBC_Bool_True  },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   389
	{ "off",     "Off",   FBC_Bool_False },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   390
	{ "0",       "0",     FBC_Bool_False },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   391
	{ "1",       "1",     FBC_Bool_True  },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   392
	{ NULL,      NULL,    FBC_Bool_False }	/* End of keyword table */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   393
};
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   394
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   395
	/* Enable | Disable */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   396
const keywd_int_t fbc_keywds_xable[] = {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   397
	{ NULL,      "Disable", FBC_Bool_False }, /* Reset value (Boolean) */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   398
	{ "enable",  "Enable",  FBC_Bool_True  }, /* Start of keyword table */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   399
	{ "disable", "Disable", FBC_Bool_False },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   400
	{ "true",    "Enable",  FBC_Bool_True  },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   401
	{ "false",   "Disable", FBC_Bool_False },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   402
	{ "on",      "Enable",  FBC_Bool_True  },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   403
	{ "off",     "Disable", FBC_Bool_False },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   404
	{ "yes",     "Enable",  FBC_Bool_True  },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   405
	{ "no",      "Disable", FBC_Bool_False },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   406
	{ NULL,      NULL,      FBC_Bool_False }  /* End of keyword table */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   407
};
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   408
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   409
	/* -outputs Swapped | Direct */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   410
const keywd_int_t fbc_keywds_swappedirect[] = {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   411
	{ NULL,      "Direct",  FBC_Bool_False }, /* Reset value (Boolean) */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   412
	{ "swapped", "Swapped", FBC_Bool_True  }, /* Start of keyword table */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   413
	{ "direct",  "Direct",  FBC_Bool_False },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   414
	{ "true",    "Swapped", FBC_Bool_True  },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   415
	{ "false",   "Direct",  FBC_Bool_False },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   416
	{ "yes",     "Swapped", FBC_Bool_True  },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   417
	{ "no",      "Direct",  FBC_Bool_False },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   418
	{ NULL,      NULL,      FBC_Bool_False }  /* End of keyword table */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   419
};
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   420
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   421
	/* -slave Disable | Multiview | ... */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   422
const keywd_int_t fbc_keywds_MultiviewMode[] = {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   423
	{ NULL,        NULL,        0                       }, /* No reset */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   424
	{ "disable",   "Disable",   FBC_Multiview_Disable   }, /* Start */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   425
	{ "multiview", "Multiview", FBC_Multiview_Multiview },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   426
#ifdef U22only
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   427
	{ "bnc",       "BNC",       FBC_Multiview_BNC       },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   428
#endif
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   429
	{ NULL,        NULL,        0                       }  /* End */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   430
};
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   431
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   432
	/* -multisample Disable | Available | ForceOn */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   433
const keywd_int_t fbc_keywds_Multisample[] = {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   434
	{ NULL,        NULL,        0                   }, /* No reset value */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   435
	{ "disable",   "Disable",   FBC_SampleMode_Off  }, /* Start of table */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   436
	{ "available", "Available", FBC_SampleMode_On   },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   437
	{ "forceon",   "ForceOn",   FBC_SampleMode_Auto },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   438
	{ "off",       "Disable",   FBC_SampleMode_Off  },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   439
	{ "on",        "Available", FBC_SampleMode_On   },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   440
	{ "enable",    "Available", FBC_SampleMode_On   },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   441
	{ "auto",      "ForceOn",   FBC_SampleMode_Auto },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   442
	{ "true",      "Available", FBC_SampleMode_On   },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   443
	{ "false",     "Disable",   FBC_SampleMode_Off  },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   444
	{ NULL,        NULL,        0                   }  /* End of table */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   445
};
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   446
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   447
	/* -samples */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   448
const keywd_int_t fbc_keywds_Samples[] = {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   449
	{ NULL,  NULL,  0 },		/* No reset value defined */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   450
	{ "1",   NULL,  1 },		/* Start of keyword table */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   451
	{ "4",   NULL,  4 },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   452
	{ "8",   NULL,  8 },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   453
	{ "16",  NULL, 16 },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   454
	{ NULL,  NULL,  0 }		/* End of keyword table */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   455
};
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   456
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   457
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   458
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   459
 * fbc_Option_keyword()
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   460
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   461
 *    Handle an configuration Option entry having a keyword value (that
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   462
 *    is independent of other Option entries),
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   463
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   464
 *        Option  "Clone"         "Enable"|"Disable"      # -clone
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   465
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   466
 *        Option  "MultiviewMode" "Disable"|"Multiview"   # -slave
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   467
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   468
 *        Option  "Multisample"   "Disable"|"Available"|"ForceOn"
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   469
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   470
 *        Option  "Samples"       "1"|"4"|"8"|"16"        # -samples
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   471
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   472
 *        Option  "StereoEnable"  "Enable"|"Disable"      # -stereo
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   473
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   474
 *    or multiple such configuration Option entries that are ganged
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   475
 *    together in radio-button fashion.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   476
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   477
 *        Option  "DefLinear"      "True"|"False"         # -deflinear
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   478
 *        Option  "DefOverlay"     "True"|"False"         # -defoverlay
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   479
 *        Option  "DefTransparent" "True"|"False"         # -deftransparent
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   480
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   481
 *        Option  "DoubleWide"    "Enable"|"Disable"      # -doublewide
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   482
 *        Option  "DoubleHigh"    "Enable"|"Disable"      # -doublehigh
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   483
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   484
 *    If this and other Options are ganged together in radio button
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   485
 *    fashion (e.g., if one's value is set to True then all others' must
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   486
 *    be False) then reset the values of the other Options when
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   487
 *    necessary.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   488
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   489
 *    Note: This is a fbc_getopt_fn_t typed function.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   490
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   491
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   492
void
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   493
fbc_Option_keyword(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   494
	char	* const	argv[],		/* Program argument vector */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   495
	int		*arg,		/* Program argument subscript */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   496
	fbc_varient_t	*fbvar,		/* Program varient data */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   497
	const void	*fbopt_descr)	/* Ptr to cmd line option descr */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   498
{
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   499
	const keywd_int_t *keywd_table;	/* Table of recognized keywords */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   500
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   501
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   502
	 * Prepare an Option entry having a Boolean-style keyword value
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   503
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   504
	keywd_table = ((fbopt_descr_t *)fbopt_descr)->keywd_table;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   505
	fbc_add_radio_Option_mod(&keywd_table[1],
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   506
				keywd_table[0].conf_name,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   507
				argv,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   508
				*arg,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   509
				fbvar,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   510
				fbopt_descr,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   511
				NULL);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   512
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   513
}	/* fbc_Option_keyword() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   514
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   515
#ifndef FBC_FUTURE
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   516
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   517
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   518
 * fbc_Option_int()
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   519
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   520
 *    Handle a configuration Option entry having an integer value.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   521
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   522
 *    Note: This is a fbc_getopt_fn_t typed function.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   523
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   524
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   525
void
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   526
fbc_Option_int(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   527
	char	* const	argv[],		/* Program argument vector */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   528
	int		*arg,		/* Program argument subscript */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   529
	fbc_varient_t	*fbvar,		/* Program varient data */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   530
	const void	*fbopt_descr)	/* Ptr to cmd line option descr */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   531
{
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   532
	char		*end_ptr;	/* Ptr to terminator char */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   533
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   534
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   535
	 * Validate the integer value string
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   536
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   537
	(void) strtol(argv[*arg+1], &end_ptr, 0);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   538
	if ((end_ptr == argv[*arg+1]) || (*end_ptr != 0)) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   539
		fbc_errormsg("Invalid integer value, %s %s\n",
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   540
				argv[*arg], argv[*arg+1]);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   541
		fbvar->usage(stderr, fbvar);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   542
		exit(FBC_EXIT_USAGE);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   543
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   544
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   545
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   546
	 * Initialize the config Option descriptor
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   547
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   548
	if (fbc_add_Option_mod(((const fbopt_descr_t *)fbopt_descr)->section,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   549
			((const fbopt_descr_t *)fbopt_descr)->conf_name,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   550
			argv[*arg+1],
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   551
			&strcasecmp,	/* Hexadecimal is case insensitive */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   552
			fbvar,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   553
			NULL) != FBC_SUCCESS) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   554
		fbc_errormsg("Conflicting option, %s %s\n",
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   555
				argv[*arg], argv[*arg+1]);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   556
		exit(FBC_EXIT_USAGE);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   557
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   558
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   559
}	/* fbc_Option_int() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   560
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   561
#endif	/* FBC_FUTURE */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   562
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   563
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   564
 * fbc_Option_Stream_Offset()
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   565
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   566
 *    Handle the configuration Option entries:
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   567
 *         Option "StreamXOffset" <int>
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   568
 *         Option "StreamYOffset" <int>
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   569
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   570
 *    This function handles a single command line option, -offset, that
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   571
 *    takes two integer arguments.  Retrieving two config Option names
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   572
 *    from one fbopt_descr_t table entry is atypical, and involves an
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   573
 *    embedded Nul character in the Option name(s) string.  Config
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   574
 *    Option entry descriptors are produced for StreamXOffset &
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   575
 *    StreamYOffset.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   576
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   577
 *    Note: This is a fbc_getopt_fn_t typed function.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   578
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   579
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   580
void
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   581
fbc_Option_Stream_Offset(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   582
	char	* const	argv[],		/* Program argument vector */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   583
	int		*arg,		/* Program argument subscript */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   584
	fbc_varient_t	*fbvar,		/* Program varient data */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   585
	const void	*fbopt_descr)	/* Ptr to cmd line option descriptor */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   586
{
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   587
	char		*end_ptr;	/* Ptr to terminator char */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   588
	int		i;		/* Loop counter / argv[] index */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   589
	const char	*option_name;	/* Option name string */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   590
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   591
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   592
	 * Validate the signed integer offset value strings
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   593
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   594
	for (i = 1; i <= 2; i += 1) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   595
		(void) strtol(argv[*arg+i], &end_ptr, 0);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   596
		if ((end_ptr == argv[*arg+i]) || (*end_ptr != 0)) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   597
			fbc_errormsg("Invalid offset value #%d, %s %s %s\n",
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   598
				    i, argv[*arg], argv[*arg+1], argv[*arg+2]);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   599
			fbvar->usage(stderr, fbvar);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   600
			exit(FBC_EXIT_USAGE);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   601
		}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   602
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   603
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   604
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   605
	 * Initialize StreamXOffset & StreamYOffset config Option descriptors
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   606
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   607
	option_name = ((const fbopt_descr_t *)fbopt_descr)->conf_name;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   608
	for (i = 1; i <= 2; i += 1) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   609
		if (fbc_add_Option_mod(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   610
				((const fbopt_descr_t *)fbopt_descr)->section,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   611
				option_name,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   612
				argv[*arg+i],
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   613
				&strcasecmp,	/* Hex is case insensitive */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   614
				fbvar,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   615
				NULL) != FBC_SUCCESS) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   616
			fbc_errormsg("Conflicting option, %s %s %s\n",
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   617
				argv[*arg], argv[*arg+1], argv[*arg+2]);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   618
			exit(FBC_EXIT_USAGE);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   619
		}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   620
		option_name += strlen(option_name) + 1;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   621
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   622
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   623
}	/* fbc_Option_Stream_Offset() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   624
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   625
#ifdef FBC_FUTURE
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   626
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   627
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   628
 * fbc_Option_real()
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   629
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   630
 *    Handle a configuration Option entry having a floating point value.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   631
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   632
 *    Note: This is a fbc_getopt_fn_t typed function.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   633
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   634
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   635
void
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   636
fbc_Option_real(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   637
	char	* const	argv[],		/* Program argument vector */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   638
	int		*arg,		/* Program argument subscript */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   639
	fbc_varient_t	*fbvar,		/* Program varient data */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   640
	const void	*fbopt_descr)	/* Ptr to cmd line option descriptor */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   641
{
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   642
	char		*end_ptr;	/* Ptr to terminator char */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   643
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   644
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   645
	 * Validate the floating point value string
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   646
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   647
	(void) strtod(argv[*arg+1], &end_ptr);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   648
	if ((end_ptr == argv[*arg+1]) || (*end_ptr != 0)) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   649
		fbc_errormsg("Invalid floating point value, %s %s\n",
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   650
				argv[*arg], argv[*arg+1]);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   651
		fbvar->usage(stderr, fbvar);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   652
		exit(FBC_EXIT_USAGE);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   653
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   654
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   655
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   656
	 * Initialize the config Option entry descriptor
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   657
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   658
	if (fbc_add_Option_mod(((const fbopt_descr_t *)fbopt_descr)->section,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   659
			((const fbopt_descr_t *)fbopt_descr)->conf_name,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   660
			argv[*arg+1],
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   661
			strcasecmp,	/* Floating point is insensitive */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   662
			fbvar,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   663
			NULL) != FBC_SUCCESS) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   664
		fbc_errormsg("Conflicting option, %s %s\n",
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   665
				argv[*arg], argv[*arg+1]);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   666
		exit(FBC_EXIT_USAGE);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   667
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   668
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   669
}	/* fbc_Option_real() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   670
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   671
#endif	/* FBC_FUTURE */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   672
#ifdef FBC_FUTURE
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   673
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   674
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   675
 * fbc_Option_string()
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   676
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   677
 *    Handle a configuration Option entry having a string value.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   678
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   679
 *    Note: This is a fbc_getopt_fn_t typed function.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   680
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   681
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   682
void
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   683
fbc_Option_string(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   684
	char	* const	argv[],		/* Program argument vector */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   685
	int		*arg,		/* Program argument subscript */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   686
	fbc_varient_t	*fbvar,		/* Program varient data */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   687
	const void	*fbopt_descr)	/* Ptr to cmd line option descriptor */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   688
{
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   689
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   690
	if (fbc_add_Option_mod(((const fbopt_descr_t *)fbopt_descr)->section,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   691
			((const fbopt_descr_t *)fbopt_descr)->conf_name,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   692
			argv[*arg+1],
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   693
			&strcasecmp,	/* Ummm ... */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   694
			fbvar,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   695
			NULL) != FBC_SUCCESS) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   696
		fbc_errormsg("Conflicting option, %s %s\n",
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   697
				argv[*arg], argv[*arg+1]);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   698
		exit(FBC_EXIT_USAGE);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   699
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   700
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   701
}	/* fbc_Option_string() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   702
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   703
#endif	/* FBC_FUTURE */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   704
#ifdef FBC_FUTURE	/* or past */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   705
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   706
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   707
 * fbc_opt_DefaultDepth()
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   708
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   709
 *    Set the DefaultDepth entry of a Screen section (-defdepth):
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   710
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   711
 *        DefaultDepth 8|24
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   712
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   713
 *    (Had been implemented for kfbconfig OS release 5.9.)
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   714
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   715
 *    Note: This is a fbc_getopt_fn_t typed function.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   716
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   717
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   718
const keywd_int_t fbc_keywds_DefaultDepth[] = {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   719
	{ "8",  NULL,  8 },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   720
	{ "24", NULL, 24 },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   721
	{ NULL, NULL,  0 }		/* End of table */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   722
};
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   723
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   724
void
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   725
fbc_opt_DefaultDepth(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   726
	char	* const	argv[],		/* Program argument vector */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   727
	int		*arg,		/* Program argument subscript */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   728
	fbc_varient_t	*fbvar,		/* Program varient data */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   729
	const void	*fbopt_descr)	/* Ptr to cmd line option descriptor */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   730
{
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   731
	const keywd_int_t *match_ent_ptr; /* Ptr to matching keyword entry */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   732
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   733
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   734
	 * Get the option's keyword value
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   735
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   736
	fbc_search_optvals(fbvar,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   737
			((fbopt_descr_t *)fbopt_descr)->argv_name,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   738
			((fbopt_descr_t *)fbopt_descr)->keywd_table,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   739
			argv[*arg+1],
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   740
			&match_ent_ptr);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   741
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   742
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   743
	 * Convert the keyword value to the corresponding depth value
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   744
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   745
	fbvar->xf86_entry_mods.scrn_defaultdepth = match_ent_ptr->value;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   746
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   747
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   748
	 * The -defdepth option shows intent to modify the Screen section
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   749
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   750
	fbvar->modify_config |= FBC_SECTN_DefaultDepth;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   751
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   752
}	/* fbc_opt_DefaultDepth() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   753
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   754
#endif
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   755
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   756
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   757
 * fbc_opt_defaults()
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   758
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   759
 *    Establish the default configuration for the specified device
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   760
 *    (-defaults).
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   761
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   762
 *    Note: This is a fbc_getopt_fn_t typed function.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   763
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   764
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   765
void
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   766
fbc_opt_defaults(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   767
	char	* const	argv[],		/* Program argument vector */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   768
	int		*arg,		/* Program argument subscript */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   769
	fbc_varient_t	*fbvar,		/* Program varient data */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   770
	const void	*fbopt_descr)	/* Ptr to cmd line option descr */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   771
{
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   772
	int		defaults_arg;	/* Implied command line arg index */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   773
	const fbopt_descr_t *fbopt_dsc;	/* Ptr to cmd line option descr */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   774
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   775
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   776
	 * For each command line option descriptor, set any -defaults values
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   777
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   778
	for (fbopt_dsc = fbvar->fbc_option;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   779
	    fbopt_dsc->argv_name != NULL;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   780
	    fbopt_dsc += 1) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   781
		/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   782
		 * See if this command line option has any -defaults values
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   783
		 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   784
		if (fbopt_dsc->defaults_argv == NULL) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   785
			continue;	/* Nope */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   786
		}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   787
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   788
		/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   789
		 * Avoid infinite recursion; disallow defaults for -defaults
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   790
		 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   791
		if ((fbopt_dsc == (fbopt_descr_t *)fbopt_descr) ||
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   792
		    (strcasecmp(fbopt_dsc->argv_name, "defaults") == 0)) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   793
			fbc_errormsg(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   794
	"Internal error; recursive -defaults encountered and ignored\n");
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   795
			continue;	/* Let's not find out what that does */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   796
		}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   797
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   798
		/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   799
		 * Set the default(s) for this implied command line option
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   800
		 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   801
		defaults_arg = 0;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   802
		(*fbopt_dsc->fbc_getopt_fn)(fbopt_dsc->defaults_argv,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   803
					    &defaults_arg,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   804
					    fbvar,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   805
					    fbopt_dsc);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   806
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   807
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   808
}	/* fbc_opt_defaults() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   809
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   810
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   811
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   812
 * fbc_opt_dev()
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   813
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   814
 *    Needn't get the frame buffer device name (-dev).
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   815
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   816
 *    The frame buffer device name should have been determined already
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   817
 *    (by fbc_get_device_arg() and fbc_get_device_name()), so it could
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   818
 *    be established what command line options to support.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   819
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   820
 *    Note: This is a fbc_getopt_fn_t typed function.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   821
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   822
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   823
void
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   824
fbc_opt_dev(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   825
	char	* const	argv[],		/* Program argument vector */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   826
	int		*arg,		/* Program argument subscript */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   827
	fbc_varient_t	*fbvar,		/* Program varient data */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   828
	const void	*fbopt_descr)	/* Ptr to cmd line option descr */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   829
{
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   830
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   831
	/* void */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   832
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   833
}	/* fbc_opt_dev() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   834
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   835
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   836
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   837
 * fbc_opt_file()
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   838
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   839
 *    Specify the configuration file (-file)
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   840
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   841
 *    Note: This is a fbc_getopt_fn_t typed function.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   842
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   843
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   844
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   845
 * Note:  Initialization code in main() assumes that the
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   846
 *        fbc_keywds_file[0] entry contains the default values.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   847
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   848
const keywd_int_t	fbc_keywds_file[] = {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   849
	{ FBC_FILE_KEYWD_MACHINE, FBC_FILE_PATH_MACHINE, FBC_File_Machine },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   850
	{ FBC_FILE_KEYWD_SYSTEM,  FBC_FILE_PATH_SYSTEM,  FBC_File_System  },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   851
	{ NULL,                   NULL,                  0                }
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   852
};
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   853
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   854
const char * const fbc_config_search_path  = "%A";	/* Absolute path: %A */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   855
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   856
void
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   857
fbc_opt_file(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   858
	char	* const	argv[],		/* Program argument vector */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   859
	int		*arg,		/* Program argument subscript */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   860
	fbc_varient_t	*fbvar,		/* Program varient data */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   861
	const void	*fbopt_descr)	/* Ptr to cmd line option descr */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   862
{
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   863
	const keywd_int_t *match_ent_ptr; /* Ptr to matching keyword entry */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   864
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   865
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   866
	 * Distinguish between keywords and pathnames
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   867
	 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   868
	 *    Pathnames ought to be absolute ("%A"), which means the
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   869
	 *    first character must be a slash.  Otherwise, it's assumed
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   870
	 *    that the argument is a keyword.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   871
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   872
	if (*argv[*arg+1] == '/') {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   873
		/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   874
??? Allow this?	 * Save the fully qualified configuration file pathname
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   875
		 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   876
		fbvar->config_file_loc  = NULL;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   877
		fbvar->config_file_path = argv[*arg+1];
1208
eaa15317ee26 7088521 fbconfig may use or write to files it shouldn't
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1117
diff changeset
   878
eaa15317ee26 7088521 fbconfig may use or write to files it shouldn't
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1117
diff changeset
   879
		if (issetugid()) {
eaa15317ee26 7088521 fbconfig may use or write to files it shouldn't
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1117
diff changeset
   880
		    fbc_errormsg("%s %s not allowed with added privileges\n",
eaa15317ee26 7088521 fbconfig may use or write to files it shouldn't
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1117
diff changeset
   881
				 argv[*arg], argv[*arg+1]);
eaa15317ee26 7088521 fbconfig may use or write to files it shouldn't
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1117
diff changeset
   882
		    fbvar->usage(stderr, fbvar);
eaa15317ee26 7088521 fbconfig may use or write to files it shouldn't
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1117
diff changeset
   883
		    exit(FBC_EXIT_USAGE);
eaa15317ee26 7088521 fbconfig may use or write to files it shouldn't
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents: 1117
diff changeset
   884
		}
1117
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   885
	} else {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   886
		/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   887
		 * Look up the configuration file location keyword
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   888
		 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   889
		fbc_search_optvals(fbvar,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   890
				((fbopt_descr_t *)fbopt_descr)->argv_name,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   891
				((fbopt_descr_t *)fbopt_descr)->keywd_table,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   892
				argv[*arg+1],
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   893
				&match_ent_ptr);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   894
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   895
		/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   896
		 * Normalize the location keyword, to be used in -propt output
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   897
		 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   898
		fbvar->config_file_loc  = match_ent_ptr->argv_name;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   899
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   900
		/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   901
		 * Establish the configuration file pathname
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   902
		 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   903
		fbvar->config_file_path = match_ent_ptr->conf_name;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   904
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   905
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   906
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   907
	 * Establish the configuration file search path
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   908
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   909
	fbvar->config_search_path = fbc_config_search_path;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   910
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   911
}	/* fbc_opt_file() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   912
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   913
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   914
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   915
 * fbc_opt_Gamma()
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   916
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   917
 *    Set the Gamma entry of a Monitor section (-g <gamma_value>):
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   918
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   919
 *        Gamma <gamma_value>
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   920
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   921
 *    Note: This is a fbc_getopt_fn_t typed function.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   922
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   923
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   924
void
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   925
fbc_opt_Gamma(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   926
	char	* const	argv[],		/* Program argument vector */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   927
	int		*arg,		/* Program argument subscript */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   928
	fbc_varient_t	*fbvar,		/* Program varient data */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   929
	const void	*fbopt_descr)	/* Ptr to cmd line option descr */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   930
{
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   931
	char		*end_ptr;	/* Ptr to terminator char */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   932
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   933
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   934
	 * Process the gamma correction value argument
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   935
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   936
	fbvar->xf86_entry_mods.mon_gamma_red = strtof(argv[*arg+1], &end_ptr);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   937
	if ((end_ptr == argv[*arg+1]) ||
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   938
	    (*end_ptr != '\0') ||
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   939
	    !FBC_VALID_Gamma(fbvar->xf86_entry_mods.mon_gamma_red)) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   940
		fbc_errormsg("Invalid gamma value, %s %s\n",
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   941
				argv[*arg], argv[*arg+1]);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   942
		fbvar->usage(stderr, fbvar);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   943
		exit(FBC_EXIT_USAGE);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   944
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   945
	fbvar->xf86_entry_mods.mon_gamma_green =
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   946
				fbvar->xf86_entry_mods.mon_gamma_red;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   947
	fbvar->xf86_entry_mods.mon_gamma_blue  =
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   948
				fbvar->xf86_entry_mods.mon_gamma_red;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   949
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   950
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   951
	 * Add the "#Gamma" pseudo-Option and reset any "GFile" Option
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   952
	 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   953
	 *    If no config entries are ganged with -g ("#Gamma"), we
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   954
	 *    don't need to do anything.  This is indicated by having no
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   955
	 *    config Option entry names (.conf_name is NULL).
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   956
	 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   957
	 *    If this device has any config entries that are ganged with
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   958
	 *    "#Gamma" then they should also be pseudo-Options, or real
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   959
	 *    Options for which the empty pathname value, "", is the
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   960
	 *    correct reset value.  Pseudo-options are flagged with a
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   961
	 *    "#" name prefix.  These fake Options will be eliminated
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   962
	 *    from the .Option_mods[] array before the array is used to
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   963
	 *    update the config file, so the choice of a reset value is
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   964
	 *    unimportant in such cases.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   965
	 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   966
	 *    The point of all this is to permit these two (more in the
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   967
	 *    future?) config entries to be manipulated in radio-button
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   968
	 *    fashion, when one is an Option entry and the other is not.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   969
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   970
	if (((const fbopt_descr_t *)fbopt_descr)->conf_name != NULL) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   971
		fbc_add_radio_Option_mod(NULL,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   972
					"",	/* No gamma table pathname */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   973
					argv,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   974
					*arg,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   975
					fbvar,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   976
					fbopt_descr,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   977
					NULL);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   978
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   979
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   980
}	/* fbc_opt_Gamma() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   981
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   982
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   983
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   984
 * fbc_Option_GFile()
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   985
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   986
 *    Handle a gamma table file pathname configuration Option entry
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   987
 *    (-gfile):
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   988
 *        Option "GFile" "[<gfile_path>]"
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   989
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   990
 *    Note: This is a fbc_getopt_fn_t typed function.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   991
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   992
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   993
void
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   994
fbc_Option_GFile(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   995
	char	* const	argv[],		/* Program argument vector */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   996
	int		*arg,		/* Program argument subscript */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   997
	fbc_varient_t	*fbvar,		/* Program varient data */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   998
	const void	*fbopt_descr)	/* Ptr to cmd line option descriptor */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
   999
{
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1000
	xf86_opt_mod_t	*option_mod;	/* Option entry description */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1001
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1002
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1003
	 * Save the gamma table input file pathname (or empty string)
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1004
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1005
	fbvar->gfile_in_path = argv[*arg+1];
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1006
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1007
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1008
	 * Add the "GFile" Option and reset the "#Gamma" pseudo-Option, if any
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1009
	 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1010
	 *    If this device has any config entries that are ganged with
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1011
	 *    "GFile" then they should be pseudo-Options, such as
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1012
	 *    "#Gamma", or be real Options for which the arbitrarily
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1013
	 *    chosen FBC_GAMMA_DEFAULT_STR is the correct reset value.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1014
	 *    Pseudo-options are flagged with a "#" name prefix.  These
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1015
	 *    fake Options will be eliminated from the .Option_mods[]
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1016
	 *    array before the array is used to update the config file,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1017
	 *    so the choice of a reset value is unimportant.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1018
	 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1019
	 *    The point of all this is to permit these two (more in the
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1020
	 *    future?) config entries to be manipulated in radio-button
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1021
	 *    fashion, when one is an Option entry and the other is not.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1022
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1023
	fbc_add_radio_Option_mod(NULL,		/* "GFile" takes no keywords */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1024
				FBC_GAMMA_DEFAULT_STR, /* A "don't care" arg */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1025
				argv,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1026
				*arg,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1027
				fbvar,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1028
				fbopt_descr,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1029
				&option_mod);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1030
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1031
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1032
	 * Arrange to delete any Gamma entry
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1033
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1034
	fbvar->xf86_entry_mods.mon_gamma_red   = 0.;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1035
	fbvar->xf86_entry_mods.mon_gamma_green = 0.;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1036
	fbvar->xf86_entry_mods.mon_gamma_blue  = 0.;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1037
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1038
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1039
	 * Note where the pointer for the gamma table pathname has been stored
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1040
	 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1041
	 *    The description for the "GFile" Option entry has just been
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1042
	 *    initialized using a pointer to the input gamma table
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1043
	 *    pathname.  Before the actual Option entry is created, this
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1044
	 *    must be replaced by a pointer to the output pathname (e.g.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1045
	 *    "/etc/X11/kfb0.gamma"), which is based on the config file
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1046
	 *    directory and the device name.  We don't necessarily know
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1047
	 *    the config file directory yet.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1048
	 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1049
	 *    A further wrinkle is that the Option description needs the
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1050
	 *    input pathname during command line processing so that
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1051
	 *    conflicting -gfile argument strings can be detected.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1052
	 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1053
	 *    If this -gfile option has a non-empty pathname argument
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1054
	 *    and no other -gfile option has been seen, remember the
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1055
	 *    address of the pathname pointer so it can be changed
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1056
	 *    later, after the command line processing has been
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1057
	 *    completed, and once the output pathname components are
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1058
	 *    known.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1059
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1060
	if ((*(argv[*arg+1]) != '\0') && (fbvar->gfile_out_path == NULL)) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1061
		fbvar->gfile_out_path = &option_mod->value;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1062
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1063
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1064
}	/* fbc_Option_GFile() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1065
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1066
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1067
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1068
 * fbc_opt_help()
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1069
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1070
 *    Handle a request for help with the current varient of
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1071
 *    fbconf_xorg(1M) (-help).
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1072
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1073
 *    Note: This is a fbc_getopt_fn_t typed function.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1074
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1075
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1076
void
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1077
fbc_opt_help(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1078
	char	* const	argv[],		/* Program argument vector */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1079
	int		*arg,		/* Program argument subscript */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1080
	fbc_varient_t	*fbvar,		/* Program varient data */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1081
	const void	*fbopt_descr)	/* Ptr to cmd line option descr */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1082
{
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1083
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1084
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1085
	 * Remember to be helpful later on
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1086
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1087
	fbvar->option_set.help = TRUE;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1088
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1089
}	/* fbc_opt_help() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1090
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1091
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1092
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1093
 * fbc_opt_prconf()
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1094
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1095
 *    Print hardware configuration (-prconf).
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1096
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1097
 *    Note: This is a fbc_getopt_fn_t typed function.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1098
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1099
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1100
void
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1101
fbc_opt_prconf(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1102
	char	* const	argv[],		/* Program argument vector */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1103
	int		*arg,		/* Program argument subscript */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1104
	fbc_varient_t	*fbvar,		/* Program varient data */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1105
	const void	*fbopt_descr)	/* Ptr to cmd line option descr */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1106
{
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1107
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1108
	fbvar->option_set.prconf = TRUE;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1109
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1110
}	/* fbc_opt_prconf() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1111
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1112
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1113
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1114
 * fbc_opt_predid()
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1115
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1116
 *    Print EDID data (-predid [raw] [parsed]).
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1117
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1118
 *    Note: This is a fbc_getopt_fn_t typed function.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1119
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1120
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1121
enum {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1122
	FBC_PrEDID_Raw,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1123
	FBC_PrEDID_Parsed
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1124
};
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1125
const keywd_int_t	fbc_keywds_predid[] = {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1126
	{ "raw",    NULL, FBC_PrEDID_Raw	},
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1127
	{ "parsed", NULL, FBC_PrEDID_Parsed	},
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1128
	{ NULL,     NULL, 0			}	/* End of table */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1129
};
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1130
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1131
void
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1132
fbc_opt_predid(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1133
	char	* const	argv[],		/* Program argument vector */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1134
	int		*arg,		/* Program argument subscript */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1135
	fbc_varient_t	*fbvar,		/* Program varient data */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1136
	const void	*fbopt_descr)	/* Ptr to cmd line option descr */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1137
{
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1138
	const keywd_int_t *match_ent_ptr; /* Ptr to matching keyword entry */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1139
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1140
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1141
	 * Redundant but safe
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1142
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1143
	fbvar->option_set.predid_raw    = FALSE;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1144
	fbvar->option_set.predid_parsed = FALSE;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1145
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1146
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1147
	 * Repeat for each argv[] string that looks like an argument
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1148
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1149
	while ((argv[*arg+1] != NULL) && (*argv[*arg+1] != '-')) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1150
		/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1151
		 * Look up the keyword (and exit if it isn't found)
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1152
		 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1153
		fbc_search_optvals(fbvar,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1154
				((fbopt_descr_t *)fbopt_descr)->argv_name,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1155
				&fbc_keywds_predid[0],
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1156
				argv[*arg+1],
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1157
				&match_ent_ptr);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1158
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1159
		switch (match_ent_ptr->value) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1160
		case FBC_PrEDID_Raw:	/* 10-sec video mode trial */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1161
			fbvar->option_set.predid_raw = TRUE;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1162
			break;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1163
		case FBC_PrEDID_Parsed:	/* Apply new video mode now */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1164
			fbvar->option_set.predid_parsed = TRUE;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1165
			break;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1166
		default:
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1167
			fbc_errormsg(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1168
			"Internal error; unimplemented keyword, %s\n",
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1169
					argv[*arg+2]);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1170
			break;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1171
		}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1172
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1173
		/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1174
		 * Include this keyword argument in the count
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1175
		 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1176
		*arg += 1;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1177
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1178
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1179
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1180
	 * The default is "-predid parsed"
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1181
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1182
	if (!(fbvar->option_set.predid_raw ||
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1183
		fbvar->option_set.predid_parsed)) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1184
	    fbvar->option_set.predid_parsed = TRUE;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1185
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1186
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1187
}	/* fbc_opt_predid() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1188
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1189
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1190
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1191
 * fbc_opt_propt()
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1192
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1193
 *    Print configuration options (-propt).
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1194
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1195
 *    Note: This is a fbc_getopt_fn_t typed function.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1196
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1197
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1198
void
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1199
fbc_opt_propt(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1200
	char	* const	argv[],		/* Program argument vector */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1201
	int		*arg,		/* Program argument subscript */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1202
	fbc_varient_t	*fbvar,		/* Program varient data */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1203
	const void	*fbopt_descr)	/* Ptr to cmd line option descr */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1204
{
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1205
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1206
	fbvar->option_set.propt = TRUE;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1207
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1208
}	/* fbc_opt_propt() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1209
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1210
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1211
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1212
 * fbc_opt_res()
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1213
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1214
 *    Video mode/resolution:
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1215
 *        -res ?
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1216
 *        -res <video_mode> [noconfirm|nocheck]
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1217
 *        -res <video_mode> [noconfirm|nocheck] [try|now]
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1218
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1219
 *    Note: This is a fbc_getopt_fn_t typed function.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1220
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1221
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1222
enum {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1223
	FBC_ResMode_NOTSET = 0,	/* No update, let window system do it later */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1224
	FBC_ResMode_NoCheck,	/* Don't check video mode for monitor support */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1225
	FBC_ResMode_NoConfirm,	/* Check video mode, but don't ask user */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1226
	FBC_ResMode_Try,	/* Update for 10 seconds, then restore */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1227
	FBC_ResMode_Now		/* Update video mode now */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1228
};
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1229
const keywd_int_t fbc_keywds_res_nn[] = {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1230
	{ "nocheck",   NULL, FBC_ResMode_NoCheck   },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1231
	{ "noconfirm", NULL, FBC_ResMode_NoConfirm },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1232
	{ NULL,        NULL, 0                }	/* End of table */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1233
};
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1234
const keywd_int_t fbc_keywds_res_nntn[] = {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1235
	{ "nocheck",   NULL, FBC_ResMode_NoCheck    },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1236
	{ "noconfirm", NULL, FBC_ResMode_NoConfirm  },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1237
	{ "try",       NULL, FBC_ResMode_Try	    },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1238
	{ "now",       NULL, FBC_ResMode_Now	    },
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1239
	{ NULL,        NULL, 0			    }	/* End of table */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1240
};
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1241
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1242
void
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1243
fbc_opt_res(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1244
	char	* const	argv[],		/* Program argument vector */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1245
	int		*arg,		/* Program argument subscript */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1246
	fbc_varient_t	*fbvar,		/* Program varient data */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1247
	const void	*fbopt_descr)	/* Ptr to cmd line option descr */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1248
{
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1249
	const keywd_int_t *match_ent_ptr; /* Ptr to matching keyword entry */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1250
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1251
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1252
	 * Redundant but safe
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1253
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1254
	fbvar->option_set.res_list           = FALSE;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1255
	fbvar->option_set.res_mode_nocheck   = FALSE;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1256
	fbvar->option_set.res_mode_noconfirm = FALSE;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1257
	fbvar->option_set.res_mode_try       = FALSE;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1258
	fbvar->option_set.res_mode_now       = FALSE;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1259
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1260
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1261
	 * Handle -res ? as the special directive for listing video modes
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1262
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1263
	if (strcmp(argv[*arg+1], "?") == 0) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1264
		fbvar->option_set.res_list = TRUE;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1265
		return;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1266
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1267
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1268
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1269
	 * Save the video mode / resolution name
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1270
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1271
	fbvar->xf86_entry_mods.video_mode.name = argv[*arg+1];
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1272
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1273
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1274
	 * Handle any keyword arguments
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1275
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1276
	if (((fbopt_descr_t *)fbopt_descr)->keywd_table != NULL) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1277
		/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1278
		 * Repeat for each argv[] string that looks like an argument
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1279
		 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1280
		while ((argv[*arg+2] != NULL) && (*argv[*arg+2] != '-')) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1281
			/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1282
			 * Look up the keyword (and exit if it isn't found)
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1283
			 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1284
			fbc_search_optvals(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1285
				fbvar,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1286
				((fbopt_descr_t *)fbopt_descr)->argv_name,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1287
				((fbopt_descr_t *)fbopt_descr)->keywd_table,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1288
				argv[*arg+2],
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1289
				&match_ent_ptr);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1290
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1291
			switch (match_ent_ptr->value) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1292
			case FBC_ResMode_NoCheck:
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1293
				/* Don't check the video mode argument */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1294
				fbvar->option_set.res_mode_nocheck = TRUE;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1295
				/* "nocheck" implies "noconfirm" */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1296
				/*FALLTHROUGH*/
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1297
			case FBC_ResMode_NoConfirm:
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1298
				/* Check without confirmation */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1299
				fbvar->option_set.res_mode_noconfirm = TRUE;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1300
				break;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1301
			case FBC_ResMode_Try:
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1302
				/* 10-second video mode trial */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1303
				fbvar->option_set.res_mode_try = TRUE;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1304
				break;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1305
			case FBC_ResMode_Now:
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1306
				/* Apply the new video mode now */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1307
				fbvar->option_set.res_mode_now = TRUE;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1308
				break;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1309
			default:
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1310
				fbc_errormsg(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1311
				"Internal error; unimplemented keyword, %s\n",
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1312
						argv[*arg+2]);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1313
				break;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1314
			}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1315
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1316
			/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1317
			 * Include this keyword argument in the count
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1318
			 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1319
			*arg += 1;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1320
		}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1321
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1322
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1323
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1324
	 * Taking this code path shows intent to modify a config file section
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1325
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1326
	fbvar->modify_config |= FBC_SECTN_Res;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1327
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1328
}	/* fbc_opt_res() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1329
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1330
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1331
/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1332
 * fbc_getargs()
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1333
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1334
 *    Process the fbconf_xorg(1M) program command line options.  There
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1335
 *    are no legal program command line arguments.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1336
 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1337
 *    In the event of an error this function or one of its subordinate
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1338
 *    functions is expected to report the error and exit the program.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1339
 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1340
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1341
int
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1342
fbc_getargs(
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1343
	const int	argc,		/* Program argument count */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1344
	char	 *const	argv[],		/* Program argument vector */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1345
	fbc_varient_t	*fbvar)		/* Program varient data */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1346
{
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1347
	int		arg;		/* Program cmd line arg index */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1348
	int		error_code;	/* Error code */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1349
	fbopt_descr_t	*fbopt_descr;	/* Program option descriptors */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1350
	xf86_opt_mod_t	*option_mod;	/* Ptr to Option mod descr */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1351
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1352
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1353
	 * Fill in "not set" values for the explicitly named xorg.conf entries
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1354
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1355
	fbvar->xf86_entry_mods.scrn_defaultdepth = FBC_NO_DefaultDepth;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1356
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1357
	fbvar->xf86_entry_mods.mon_gamma_red     = FBC_NO_Gamma;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1358
	fbvar->xf86_entry_mods.mon_gamma_green   = FBC_NO_Gamma;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1359
	fbvar->xf86_entry_mods.mon_gamma_blue    = FBC_NO_Gamma;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1360
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1361
	fbvar->xf86_entry_mods.video_mode.name   = FBC_NO_MODE_NAME;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1362
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1363
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1364
	 * Allocate a descriptor array of config Option entries to be modified
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1365
	 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1366
	 *    This includes space for the descriptor array's terminator
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1367
	 *    element.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1368
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1369
	fbvar->xf86_entry_mods.Option_mods =
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1370
			malloc(fbvar->xf86_entry_mods.Option_mods_size
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1371
						* sizeof (xf86_opt_mod_t));
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1372
	if (fbvar->xf86_entry_mods.Option_mods == NULL) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1373
		fbc_errormsg("Insufficient memory, Option_mods\n");
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1374
		exit(FBC_EXIT_FAILURE);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1375
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1376
	fbvar->xf86_entry_mods.Option_mods_num = 0; /* No entries yet */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1377
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1378
	fbvar->modify_config = FBC_SECTION_NONE; /* No modifications yet */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1379
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1380
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1381
	 * Process the program command line options
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1382
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1383
	for (arg = 1; arg < argc; arg += 1) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1384
		/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1385
		 * Look up the command line option by name
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1386
		 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1387
		if (*argv[arg] != '-') {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1388
			break;		/* This looks more like an argument */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1389
		}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1390
		error_code = fbc_search_keywds(fbvar->fbc_option,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1391
						sizeof (fbopt_descr_t),
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1392
						argv[arg]+1,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1393
						(void *)&fbopt_descr);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1394
		if (error_code != FBC_SUCCESS) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1395
			if (error_code == FBC_ERR_KWD_INVALID) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1396
				fbc_errormsg("Unknown option, %s\n",
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1397
						argv[arg]);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1398
			} else {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1399
				fbc_errormsg("Option %s is ambiguous.\n",
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1400
						argv[arg]);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1401
				fprintf(stderr, "Possible values are:\n");
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1402
				fbc_print_matching_keywds(fbvar->fbc_option,
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1403
							sizeof (fbopt_descr_t),
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1404
							argv[arg]+1);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1405
			}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1406
			fbvar->usage(stderr, fbvar);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1407
			exit(FBC_EXIT_USAGE);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1408
		}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1409
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1410
		/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1411
		 * Make sure the final cmd line option isn't missing an arg
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1412
		 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1413
		if ((arg + fbopt_descr->option_args) >= argc) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1414
			fbc_errormsg("Option requires an argument, %s\n",
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1415
					argv[arg]);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1416
			fbvar->usage(stderr, fbvar);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1417
			exit(FBC_EXIT_USAGE);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1418
		}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1419
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1420
		/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1421
		 * Process the command line option and any argument(s)
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1422
		 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1423
		(*fbopt_descr->fbc_getopt_fn)(argv, &arg, fbvar, fbopt_descr);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1424
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1425
		/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1426
		 * Advance to the next option, if any
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1427
		 *
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1428
		 *    If the current option accepted a variable number
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1429
		 *    of arguments, the "fbc_getopt_fn" function should
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1430
		 *    have incremented the "arg" index by the number of
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1431
		 *    optional arguments that were encountered.  Here
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1432
		 *    the "arg" index is incremented by the number of
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1433
		 *    required arguments.
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1434
		 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1435
		arg += fbopt_descr->option_args;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1436
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1437
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1438
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1439
	 * Disallow program command line arguments
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1440
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1441
	if (arg < argc) {
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1442
		fbc_errormsg("Unknown option, %s\n", argv[arg]);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1443
		fbvar->usage(stderr, fbvar);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1444
		exit(FBC_EXIT_USAGE);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1445
	}
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1446
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1447
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1448
	 * Mark the end of the array of config Option entries to be modified
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1449
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1450
	option_mod = &fbvar->xf86_entry_mods.Option_mods[
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1451
			fbvar->xf86_entry_mods.Option_mods_num];
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1452
	option_mod->section = 0;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1453
	option_mod->name    = NULL;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1454
	option_mod->value   = NULL;
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1455
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1456
	/*
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1457
	 * Return without incident
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1458
	 */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1459
	return (FBC_EXIT_SUCCESS);
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1460
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1461
}	/* fbc_getargs() */
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1462
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1463
629ac4b133bc 7039328 Move SPARC Graphics utilities to X consolidation
Alan Coopersmith <Alan.Coopersmith@Oracle.COM>
parents:
diff changeset
  1464
/* End of fbc_getargs.c */