223 lines
6.2 KiB
C
223 lines
6.2 KiB
C
/*
|
|
* rc.h -- declarations for configuration file processing
|
|
*
|
|
* AUTHOR: Savio Lam (lam836@cs.cuhk.hk)
|
|
*
|
|
* This program is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU General Public License
|
|
* as published by the Free Software Foundation; either version 2
|
|
* of the License, or (at your option) any later version.
|
|
*
|
|
* This program is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with this program; if not, write to the Free Software
|
|
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
|
|
*/
|
|
|
|
|
|
#define DIALOGRC ".dialogrc"
|
|
#define VAR_LEN 30
|
|
#define COMMENT_LEN 70
|
|
|
|
/* Types of values */
|
|
#define VAL_INT 0
|
|
#define VAL_STR 1
|
|
#define VAL_BOOL 2
|
|
#define VAL_ATTR 3
|
|
|
|
/* Type of line in configuration file */
|
|
#define LINE_BLANK 2
|
|
#define LINE_COMMENT 1
|
|
#define LINE_OK 0
|
|
#define LINE_ERROR -1
|
|
|
|
/* number of configuration variables */
|
|
#define VAR_COUNT (sizeof(vars) / sizeof(vars_st))
|
|
|
|
/* check if character is white space */
|
|
#define whitespace(c) (c == ' ' || c == '\t')
|
|
|
|
/* check if character is string quoting characters */
|
|
#define isquote(c) (c == '"' || c == '\'')
|
|
|
|
/* get last character of string */
|
|
#define lastch(str) str[strlen(str)-1]
|
|
|
|
/*
|
|
* Configuration variables
|
|
*/
|
|
typedef struct {
|
|
unsigned char name[VAR_LEN]; /* name of configuration variable as in DIALOGRC */
|
|
void *var; /* address of actually variable to change */
|
|
int type; /* type of value */
|
|
unsigned char comment[COMMENT_LEN]; /* comment to put in "rc" file */
|
|
} vars_st;
|
|
|
|
vars_st vars[] = {
|
|
{ "use_shadow",
|
|
&use_shadow,
|
|
VAL_BOOL,
|
|
"Shadow dialog boxes? This also turns on color." },
|
|
|
|
{ "use_colors",
|
|
&use_colors,
|
|
VAL_BOOL,
|
|
"Turn color support ON or OFF" },
|
|
|
|
{ "screen_color",
|
|
color_table[0],
|
|
VAL_ATTR,
|
|
"Screen color" },
|
|
|
|
{ "shadow_color",
|
|
color_table[1],
|
|
VAL_ATTR,
|
|
"Shadow color" },
|
|
|
|
{ "dialog_color",
|
|
color_table[2],
|
|
VAL_ATTR,
|
|
"Dialog box color" },
|
|
|
|
{ "title_color",
|
|
color_table[3],
|
|
VAL_ATTR,
|
|
"Dialog box title color" },
|
|
|
|
{ "border_color",
|
|
color_table[4],
|
|
VAL_ATTR,
|
|
"Dialog box border color" },
|
|
|
|
{ "button_active_color",
|
|
color_table[5],
|
|
VAL_ATTR,
|
|
"Active button color" },
|
|
|
|
{ "button_inactive_color",
|
|
color_table[6],
|
|
VAL_ATTR,
|
|
"Inactive button color" },
|
|
|
|
{ "button_key_active_color",
|
|
color_table[7],
|
|
VAL_ATTR,
|
|
"Active button key color" },
|
|
|
|
{ "button_key_inactive_color",
|
|
color_table[8],
|
|
VAL_ATTR,
|
|
"Inactive button key color" },
|
|
|
|
{ "button_label_active_color",
|
|
color_table[9],
|
|
VAL_ATTR,
|
|
"Active button label color" },
|
|
|
|
{ "button_label_inactive_color",
|
|
color_table[10],
|
|
VAL_ATTR,
|
|
"Inactive button label color" },
|
|
|
|
{ "inputbox_color",
|
|
color_table[11],
|
|
VAL_ATTR,
|
|
"Input box color" },
|
|
|
|
{ "inputbox_border_color",
|
|
color_table[12],
|
|
VAL_ATTR,
|
|
"Input box border color" },
|
|
|
|
{ "searchbox_color",
|
|
color_table[13],
|
|
VAL_ATTR,
|
|
"Search box color" },
|
|
|
|
{ "searchbox_title_color",
|
|
color_table[14],
|
|
VAL_ATTR,
|
|
"Search box title color" },
|
|
|
|
{ "searchbox_border_color",
|
|
color_table[15],
|
|
VAL_ATTR,
|
|
"Search box border color" },
|
|
|
|
{ "position_indicator_color",
|
|
color_table[16],
|
|
VAL_ATTR,
|
|
"File position indicator color" },
|
|
|
|
{ "menubox_color",
|
|
color_table[17],
|
|
VAL_ATTR,
|
|
"Menu box color" },
|
|
|
|
{ "menubox_border_color",
|
|
color_table[18],
|
|
VAL_ATTR,
|
|
"Menu box border color" },
|
|
|
|
{ "item_color",
|
|
color_table[19],
|
|
VAL_ATTR,
|
|
"Item color" },
|
|
|
|
{ "item_selected_color",
|
|
color_table[20],
|
|
VAL_ATTR,
|
|
"Selected item color" },
|
|
|
|
{ "tag_color",
|
|
color_table[21],
|
|
VAL_ATTR,
|
|
"Tag color" },
|
|
|
|
{ "tag_selected_color",
|
|
color_table[22],
|
|
VAL_ATTR,
|
|
"Selected tag color" },
|
|
|
|
{ "tag_key_color",
|
|
color_table[23],
|
|
VAL_ATTR,
|
|
"Tag key color" },
|
|
|
|
{ "tag_key_selected_color",
|
|
color_table[24],
|
|
VAL_ATTR,
|
|
"Selected tag key color" },
|
|
|
|
{ "check_color",
|
|
color_table[25],
|
|
VAL_ATTR,
|
|
"Check box color" },
|
|
|
|
{ "check_selected_color",
|
|
color_table[26],
|
|
VAL_ATTR,
|
|
"Selected check box color" },
|
|
|
|
{ "uarrow_color",
|
|
color_table[27],
|
|
VAL_ATTR,
|
|
"Up arrow color" },
|
|
|
|
{ "darrow_color",
|
|
color_table[28],
|
|
VAL_ATTR,
|
|
"Down arrow color" }
|
|
}; /* vars */
|
|
|
|
|
|
|
|
/*
|
|
* Routines to process configuration file
|
|
*/
|
|
int parse_rc(void);
|