C-Menu 0.2.9
A User Interface Toolkit
Loading...
Searching...
No Matches
menu.h
Go to the documentation of this file.
1/** @file menu.h
2 * @brief Menu data structures, enums, types, end external declarations
3 * @author Bill Waller
4 * Copyright (c) 2025
5 * MIT License
6 * billxwaller@gmail.com
7 * @date 2026-02-09
8 */
9
10#ifndef _MENU_H
11#define _MENU_H 1
12
13#include <cm.h>
14
15#ifndef _COMMON_H
16typedef struct Init Init;
17#endif
18
19#define MAX_MENU_LINES 256 /** Maximum number of menu lines in a menu */
20
21/**< Menu line types */
22enum { MT_NULL = 0x320, MT_TEXT, MT_CHOICE };
23
24/**< Menu Action types */
26
27/**< Menu command types */
28enum {
29 CT_NULL = 0x396,
44};
45
46/** @struct Line
47 @brief The Line strutures are attached to the Menu main structure */
48typedef struct {
49 unsigned int type; /**< The type of menu line, e.g. MT_TEXT for a text line,
50 MT_CHOICE for a choice line */
51 char *raw_text; /**< The raw text of the menu line, as read from the menu
52 description file, before processing any variables or
53 formatting */
54 char *choice_text; /**< The formatted text of the menu line, after
55 processing any variables and formatting, used for
56 display purposes */
57 char choice_letter; /**< The letter that the user can press to select this
58 menu line, if it is a choice line, used for selection
59 purposes */
60 int letter_pos; /**< The position of the choice letter in the text, for
61 highlighting purposes, used to determine where to
62 highlight the choice letter in the menu display */
63 unsigned int
64 command_type; /**< The type of command associated with this menu line,
65 e.g. CT_RETURNMAIN for a command that returns to the
66 main menu, CT_EXEC for a command that executes a
67 program, CT_HELP for a command that displays help
68 information, etc., used to determine what action to
69 take when this menu line is selected */
70 char *command_str; /**< The command string associated with this menu line,
71 which may be a command to execute, a menu to display,
72 a form to show, etc., depending on the command type,
73 used to determine the specific action to take when
74 this menu line is selected */
75} Line;
76
77/** @struct Menu
78 @brief The Menu structure is the main data structure for the menu
79 application, containing all the information about the menu, its lines, and
80 its display properties */
81typedef struct {
82 int fg_clr_idx; /**< The foreground color for the menu display, used to
83 determine the color of the text and other elements in the
84 menu display */
85 int bg_clr_idx; /** <The background color for the menu display, used to
86 determine the color of the background in the menu display
87 */
88 int bo_clr_idx; /**< The color for the box around the menu, used to
89 determine the color of the box in the menu display */
90 int lines; /**< The number of lines for the menu window size, used to
91 determine the height of the menu display */
92 int cols; /**< The number of columns for the menu window size, used to
93 determine the width of the menu display */
94 int begy; /**< The screen line for the upper left corner of the menu window,
95 used to determine the vertical position of the menu display on
96 the screen */
97 int begx; /**< The screen column for the upper left corner of the menu
98 window, used to determine the horizontal position of the menu
99 display on the screen */
100 WINDOW *win; /**< The ncurses window structure for the menu display, used to
101 manage the display of the menu on the screen and handle user
102 input */
103 WINDOW *box; /**< The ncurses window structure for the box around the menu,
104 used to manage the display of the box around the menu on the
105 screen */
106 char title[MAXLEN]; /**< The title to display on the top line of the box
107 window, used to provide a title or header for the
108 menu display */
109 int argc; /**< The number of arguments on the command line, used to
110 determine how many arguments were passed to the menu
111 application when it was executed */
112 char **argv; /**< The argument vector from the command line, used to access
113 the specific arguments passed to the menu application when
114 it was executed */
115 char mapp_spec[MAXLEN]; /**< The menu application description file spec,
116 which may be a file name or a fully qualified
117 path to a file, used to specify the location of
118 the menu description file that contains the
119 information about the menu lines and their
120 properties */
121 char help_spec[MAXLEN]; /**< The menu application help file spec, which may
122 be a file name or a fully qualified path to a
123 file, used to specify the location of the help
124 file that contains the information about the menu
125 application and how to use it */
126 char provider_cmd[MAXLEN]; /**< The provider command, which can be executed
127 in the background to provide dynamic content
128 for a program called by the menu application,
129 used to specify a command that can be run in
130 the background to generate dynamic content for
131 the menu display or for a program that is
132 called by the menu application */
134 [MAXLEN]; /**< The receiver command, which can be executed in the
135 background to process the output of a program called by the
136 menu application, used to specify a command that can be run
137 in the background to process the output of a program that
138 is called by the menu application, such as parsing the
139 output and updating the menu display or performing some
140 other action based on the output */
141 char cmd[MAXLEN]; /**< A command that can be executed in the foreground,
142 possibly taking control of the screen, by the menu
143 application, such as an editor or other program that is
144 called by the menu application, used to specify a
145 command that can be run in the foreground when selected
146 from the menu, which may take control of the screen and
147 require user interaction */
148 bool f_mapp_spec; /**< A flag to indicate whether the menu application
149 description file has been verified, used to indicate
150 whether the menu description file specified by
151 mapp_spec has been successfully verified and can be
152 used to populate the menu lines and their properties */
153 bool f_help_spec; /**< A flag to indicate whether the menu application help
154 file has been verified, used to indicate whether the
155 help file specified by help_spec has been successfully
156 verified and can be used to provide help information
157 for the menu application */
158 bool f_provider_cmd; /**< A flag to indicate whether the provider command
159 has been verified, used to indicate whether the
160 provider command specified by provider_cmd has been
161 successfully verified and can be executed in the
162 background to provide dynamic content for the menu
163 display or for a program called by the menu
164 application */
165 bool f_receiver_cmd; /**< A flag to indicate whether the receiver command
166 has been verified, used to indicate whether the
167 receiver command specified by receiver_cmd has been
168 successfully verified and can be executed in the
169 background to process the output of a program called
170 by the menu application */
171 bool f_cmd; /**< A flag to indicate whether the foreground command has been
172 verified, used to indicate whether the command specified by
173 cmd has been successfully verified and can be executed in the
174 foreground when selected from the menu */
175 int choice_max_len; /**< The longest choice text string of all menu lines,
176 used to determine the width of the menu window,
177 calculated based on the length of the choice_text for
178 all menu lines and used to ensure that the menu
179 window is wide enough to accommodate the longest
180 choice text without truncation or wrapping */
181 int text_max_len; /**< The longest text string of all menu lines, used to
182 determine the width of the menu window, calculated
183 based on the length of the raw_text for all menu lines
184 and used to ensure that the menu window is wide enough
185 to accommodate the longest text without truncation or
186 wrapping */
187 int item_count; /**< The number of menu lines in this menu, used to
188 determine how many lines are currently defined in the
189 menu and to manage the array of menu lines */
190 int line_idx; /**< The index of the currently selected menu line, used for
191 highlighting and selection purposes, updated based on user
192 input to indicate which menu line is currently selected and
193 should be highlighted in the menu display */
194 Line *line[MAX_MENU_LINES]; /**< An array of pointers to the menu line
195 structures in this menu, used to store the
196 information about each menu line, including
197 its type, text, choice letter, command type,
198 and command string, and to manage the menu
199 lines in the menu display */
200} Menu;
201extern Menu *menu;
202
203extern unsigned int get_command_type(char *);
204extern void free_menu_line(Line *);
205#endif
void form_help(char *)
@ P_HELP
Definition form.h:32
@ P_CALC
Definition form.h:38
@ P_CONTINUE
Definition form.h:28
@ P_END
Definition form.h:43
@ P_ACCEPT
Definition form.h:30
@ P_CANCEL
Definition form.h:34
@ P_EDIT
Definition form.h:41
@ P_REFUSE
Definition form.h:36
int form_yx_to_fidx(Form *, int, int)
#define FIELD_MAXLEN
Definition form.h:18
FieldFormat
Definition form.h:48
@ FF_DECIMAL_INT
Definition form.h:51
@ FF_STRING
Definition form.h:49
@ FF_HEX_INT
Definition form.h:53
@ FF_YYYYMMDD
Definition form.h:62
@ FF_HHMMSS
Definition form.h:64
@ FF_CURRENCY
Definition form.h:59
@ FF_FLOAT
Definition form.h:55
@ FF_INVALID
Definition form.h:69
@ FF_DOUBLE
Definition form.h:57
@ FF_APR
Definition form.h:66
int form_read_description(Form *)
Form * form
Definition mem.c:47
void form_display_chyron(Form *)
#define FIELD_MAXCNT
Definition form.h:19
int cmd_processor(Init *)
Init * init
Definition common.h:186
OptType
option types
Definition common.h:78
@ OT_INT
Definition common.h:80
@ OT_BOOL
Definition common.h:81
@ OT_HEX
Definition common.h:82
@ OT_STRING
Definition common.h:79
Caller
Definition common.h:75
@ FORM
Definition common.h:75
@ MENU
Definition common.h:75
@ VIEW
Definition common.h:75
@ PICK
Definition common.h:75
int popup_form(Init *, int, char **, int, int)
Definition popups.c:34
OptGroup
option groups
Definition common.h:86
@ OG_FILES
Definition common.h:87
@ OG_DIRS
Definition common.h:88
@ OG_SPECS
Definition common.h:89
@ OG_MISC
Definition common.h:90
@ OG_FLAGS
Definition common.h:92
@ OG_PARMS
Definition common.h:91
@ OG_COL
Definition common.h:93
int popup_menu(Init *, int, char **, int, int)
Definition popups.c:8
int popup_view(Init *, int, char **, int, int, int, int)
Definition popups.c:47
int parse_opt_args(Init *, int, char **)
Definition init.c:393
int popup_pick(Init *, int, char **, int, int)
Definition popups.c:21
@ IC_MENU
Definition common.h:184
@ IC_VIEW
Definition common.h:184
@ IC_FORM
Definition common.h:184
@ IC_PICK
Definition common.h:184
char minitrc[MAXLEN]
int init_cnt
Definition mem.c:43
volatile sig_atomic_t sig_received
Definition sig.c:31
size_t rtrim(char *)
Trims trailing spaces from string s in place.
Definition futil.c:102
bool handle_signal(sig_atomic_t)
int eargc
Definition futil.c:41
void win_Toggle_Attrs()
#define MAXWIN
Definition cm.h:468
int n_cols
#define KEY_ALTEND
Definition cm.h:403
int mbegx
#define KEY_ALTLEFT
Definition cm.h:406
void curskeys(WINDOW *)
#define KEY_ALTDOWN
Definition cm.h:407
void sig_shell_mode()
void get_rfc3339_s(char *, size_t)
bool f_have_shell_tioctl
Definition scriou.c:24
void init_stdscr()
#define KEY_ALTHOME
Definition cm.h:400
int dbgfd
colors_enum
Definition cm.h:122
@ CLR_FG
Definition cm.h:140
@ CLR_RED
Definition cm.h:124
@ CLR_YELLOW
Definition cm.h:126
@ CLR_BCYAN
Definition cm.h:137
@ CLR_WHITE
Definition cm.h:130
@ CLR_MAGENTA
Definition cm.h:128
@ CLR_BLACK
Definition cm.h:123
@ CLR_BWHITE
Definition cm.h:138
@ CLR_LN_BG
Definition cm.h:144
@ CLR_BO
Definition cm.h:142
@ CLR_BBLACK
Definition cm.h:131
@ CLR_BBLUE
Definition cm.h:135
@ CLR_LN
Definition cm.h:143
@ CLR_BGREEN
Definition cm.h:133
@ CLR_BYELLOW
Definition cm.h:134
@ CLR_BMAGENTA
Definition cm.h:136
@ CLR_BORANGE
Definition cm.h:139
@ CLR_BG
Definition cm.h:141
@ CLR_BRED
Definition cm.h:132
@ CLR_NCOLORS
Definition cm.h:145
@ CLR_BLUE
Definition cm.h:127
@ CLR_GREEN
Definition cm.h:125
@ CLR_CYAN
Definition cm.h:129
void mouse_getch(int *, int *, int *, int *)
int display_ok_message(char *)
int cp_title
#define KEY_ALTF0
Definition cm.h:345
int cp_default
#define MAXARGS
Definition cm.h:30
void destroy_win(WINDOW *)
int cols
bool f_curses_open
Definition sig.c:33
int enter_option()
#define CHYRON_KEYS
Definition cm.h:230
struct termios shell_tioctl curses_tioctl
Definition scriou.c:34
void dump_opts()
FTypes
Definition cm.h:156
@ FT_UNKNOWN
Definition cm.h:164
@ FT_SOCK
Definition cm.h:163
@ FT_DIR
Definition cm.h:159
@ FT_FIFO
Definition cm.h:160
@ FT_REG
Definition cm.h:162
@ FT_CHR
Definition cm.h:158
@ FT_BLK
Definition cm.h:157
@ FT_LNK
Definition cm.h:161
int mg_line
const wchar_t bw_tt
void write_log(char *)
unsigned char uchar
Definition cm.h:469
int cp_bold
char earg_str[MAXLEN]
Definition futil.c:40
bool verify_dir_q(char *, int)
String mk_string(size_t)
Create a String struct with a dynamically allocated string.
Definition futil.c:1396
bool construct_file_spec(char *, char *, char *, char *, char *, int)
int mcols
const wchar_t bw_cr
#define KEY_ALTPGDN
Definition cm.h:404
int mg_action
#define XTERM_256COLOR
Definition cm.h:347
const wchar_t bw_bt
#define KEY_ALTRIGHT
Definition cm.h:408
#define CHYRON_KEY_MAXLEN
Definition cm.h:227
bool verify_file_q(char *, int)
bool f_debug
int lines
#define KEY_ALTDEL
Definition cm.h:402
#define SCR_COLS
Definition cm.h:31
int cp_highlight
void dump_opts_by_use(char *, char *)
int open_log(char *)
int begx
int wait_timeout
Definition futil.c:98
int win_attr_even
char errmsg[]
Definition futil.c:84
#define KEY_ALTUP
Definition cm.h:405
LFFlags
Definition cm.h:148
@ LF_EXC_REGEX
Definition cm.h:151
@ LF_HIDE
Definition cm.h:149
@ LF_ICASE
Definition cm.h:150
@ LF_EXEC
Definition cm.h:153
@ LF_REGEX
Definition cm.h:152
int mlines
#define KEY_ALTPGUP
Definition cm.h:401
void destroy_box(WINDOW *)
bool f_restore_screen
#define COLOR_LEN
Definition cm.h:180
char * eargv[MAXARGS]
Definition futil.c:42
int win_attr_odd
int n_lines
int mg_col
bool f_have_curses_tioctl
Definition scriou.c:25
#define KEY_ALTF(n)
Definition cm.h:346
void w_mouse_getch(WINDOW *, int *, int *, int *, int *)
int mbegy
bool str_to_bool(const char *)
Converts String to boolean true or false.
Definition futil.c:649
#define __atexit
This macro registers the end_pgm function to be called when the program exits.
Definition cm.h:194
struct termios shell_out_tioctl curses_out_tioctl
Definition scriou.c:36
void user_end()
int display_curses_keys()
#define KEY_ALTINS
Definition cm.h:399
int begy
void display_argv_error_msg(char *, char **)
struct termios shell_in_tioctl curses_in_tioctl
Definition scriou.c:35
int cp_ln_bg
struct termios shell_err_tioctl curses_err_tioctl
Definition scriou.c:37
int clr_idx
@ MT_TEXT
Definition menu.h:22
@ MT_CHOICE
Definition menu.h:22
@ MT_NULL
Definition menu.h:22
Menu * menu
Definition mem.c:45
@ MA_RETURN
Definition menu.h:25
@ MA_DISPLAY_MENU
Definition menu.h:25
@ MA_RESET_MENU
Definition menu.h:25
@ MA_NEW
Definition menu.h:25
@ MA_CONTINUE
Definition menu.h:25
void free_menu_line(Line *)
#define MAX_MENU_LINES
Definition menu.h:19
@ CT_PICK
Definition menu.h:37
@ CT_FORM
Definition menu.h:33
@ CT_UNDEFINED
Definition menu.h:43
@ CT_MENU
Definition menu.h:36
@ CT_RETURN
Definition menu.h:40
@ CT_TOGGLE
Definition menu.h:41
@ CT_HELP
Definition menu.h:31
@ CT_WRITE_CONFIG
Definition menu.h:42
@ CT_FORM_WRITE
Definition menu.h:35
@ CT_EXEC
Definition menu.h:30
@ CT_VIEW
Definition menu.h:38
@ CT_NULL
Definition menu.h:29
@ CT_ABOUT
Definition menu.h:32
@ CT_FORM_EXEC
Definition menu.h:34
@ CT_CKEYS
Definition menu.h:39
#define TRUE
Definition iloan.c:19
int popup_ckeys()
Display Curses Keys Responds to curses keys and mouse events, displaying the key code and description...
Definition curskeys.c:23
#define KSTRLEN
Definition curskeys.c:14
#define MAXLEN
Definition curskeys.c:15
int cp_box
Definition dwin.c:138
unsigned int cmd_key
Definition dwin.c:117
WINDOW * win
Definition dwin.c:113
const wchar_t bw_rt
Definition dwin.c:102
const wchar_t bw_ho
Definition dwin.c:95
cchar_t CCC_LN
Definition dwin.c:151
int cp_win
Definition dwin.c:137
int clr_pair_cnt
Definition dwin.c:144
WINDOW * win_win[MAXWIN]
Definition dwin.c:114
bool waitpid_with_timeout(pid_t pid, int timeout)
Definition dwin.c:1431
bool action_disposition(char *title, char *action_str)
Definition dwin.c:1224
const wchar_t bw_tl
Definition dwin.c:97
char em1[MAXLEN]
Definition dwin.c:133
int tty_fd
Definition dwin.c:153
void display_chyron(WINDOW *win, Chyron *chyron, int line, int col)
Definition dwin.c:297
cchar_t CCC_WIN
Definition dwin.c:146
int clr_cnt
Definition dwin.c:142
const wchar_t bw_tr
Definition dwin.c:98
int clr_pair_idx
Definition dwin.c:143
int cp_ln
Definition dwin.c:141
const wchar_t bw_lt
Definition dwin.c:101
int click_x
Definition dwin.c:45
int src_line
Definition dwin.c:129
char * src_name
Definition dwin.c:130
cchar_t CCC_BOX
Definition dwin.c:148
const wchar_t bw_bl
Definition dwin.c:99
int win_ptr
Definition dwin.c:121
int exit_code
Definition dwin.c:116
int click_y
Definition dwin.c:44
char em0[MAXLEN]
Definition dwin.c:132
char em3[MAXLEN]
Definition dwin.c:135
int cp_reverse_highlight
Definition dwin.c:140
char const colors_text[][10]
Definition dwin.c:91
int rgb_clr_to_cube(int)
void set_chyron_key(Chyron *, int, char *, int)
Definition dwin.c:245
const wchar_t bw_ve
Definition dwin.c:96
cchar_t CCC_REVERSE
Definition dwin.c:149
cchar_t CCC_NORM
Definition dwin.c:145
int cp_reverse
Definition dwin.c:139
int win_attr
Definition dwin.c:119
WINDOW * win_box[MAXWIN]
Definition dwin.c:115
char fn[MAXLEN]
Definition dwin.c:131
char em2[MAXLEN]
Definition dwin.c:134
int cp_norm
Definition dwin.c:136
const wchar_t bw_br
Definition dwin.c:100
char ff_tbl[][26]
Definition fields.c:40
struct termios shell_tioctl
Definition scriou.c:22
bool open_curses(SIO *)
Initialize NCurses and color settings.
Definition dwin.c:423
int xwgetch(WINDOW *, Chyron *, int)
Wrapper for wgetch that handles signals, mouse events, checks for clicks on the chyron line,...
Definition dwin.c:1359
void restore_wins()
Restore all windows after a screen resize.
Definition dwin.c:938
int win_new(int, int, int, int, char *, int)
Create a new window with optional box and title.
Definition dwin.c:783
void win_init_attrs()
Initialize window attributes.
Definition dwin.c:162
WINDOW * win_del()
Delete the current window and its associated box window.
Definition dwin.c:902
void mvwaddstr_fill(WINDOW *, int, int, char *, int)
For lines shorter than their display area, fill the rest with spaces.
Definition dwin.c:1262
void cbox(WINDOW *)
Draw a box around the specified window.
Definition dwin.c:960
void win_resize(int, int, char *)
Resize the current window and its box, and update the title.
Definition dwin.c:851
void destroy_curses()
Gracefully shut down NCurses and restore terminal settings.
Definition dwin.c:738
void win_redraw(WINDOW *)
Redraw the specified window.
Definition dwin.c:891
bool is_set_chyron_key(Chyron *, int)
Check if function key label is set.
Definition dwin.c:217
Chyron * destroy_chyron(Chyron *chyron)
Destroy Chyron structure.
Definition dwin.c:198
int get_chyron_key(Chyron *, int)
Get keycode from chyron.
Definition dwin.c:369
void set_chyron_key_cp(Chyron *, int, char *, int, int)
Set chyron key.
Definition dwin.c:237
void compile_chyron(Chyron *)
construct the chyron string from the chyron structure
Definition dwin.c:268
void unset_chyron_key(Chyron *, int)
Unset chyron key.
Definition dwin.c:258
Chyron * new_chyron()
Create and initialize Chyron structure.
Definition dwin.c:183
RGB xterm256_idx_to_rgb(int)
Convert XTerm 256 color index to RGB color.
Definition dwin.c:590
int clr_name_to_idx(char *)
Get color index from color name.
Definition dwin.c:1282
int rgb_to_curses_clr(RGB *)
Get color index for RGB color.
Definition dwin.c:541
bool init_clr_palette(SIO *)
Initialize color palette based on SIO settings.
Definition dwin.c:651
void apply_gamma(RGB *)
Apply gamma correction to RGB color.
Definition dwin.c:624
int rgb_to_xterm256_idx(RGB *)
Convert RGB color to XTerm 256 color index.
Definition dwin.c:569
int get_clr_pair(int fg, int bg)
Get color pair index for foreground and background colors.
Definition dwin.c:510
bool wait_destroy(Chyron *)
Destroy the waiting message window and chyron.
Definition dwin.c:1203
int wait_continue(WINDOW *, Chyron *, int)
Update the waiting message with remaining time and check for user input.
Definition dwin.c:1215
int answer_yn(char *em0, char *em1, char *em2, char *em3)
Accept a single letter answer.
Definition dwin.c:994
WINDOW * wait_mk_win(Chyron *, char *)
Display a popup waiting message.
Definition dwin.c:1172
int Perror(char *)
Display a simple error message window or print to stderr.
Definition dwin.c:1110
int display_error(char *em0, char *em1, char *em2, char *em3)
Display an error message window or print to stderr.
Definition dwin.c:1054
void abend(int, char *)
Abnormal program termination.
Definition dwin.c:1331
Chyron * wait_mk_chyron()
Create a Chyron struct for the waiting message.
Definition dwin.c:1161
int fork_exec(char **)
Fork and exec a command.
Definition exec.c:128
int shell(char *)
Execute a shell command.
Definition exec.c:80
int full_screen_fork_exec(char **)
Execute a command in full screen mode.
Definition exec.c:44
int full_screen_shell(char *)
Execute a shell command in full screen mode.
Definition exec.c:60
int form_fmt_field(Form *, char *)
Format field according to its format type.
Definition fields.c:421
int field_editor(Form *)
Accept input for a field.
Definition fields.c:59
int form_display_field_n(Form *, int)
Display field n.
Definition fields.c:351
int form_display_field(Form *)
Display current field.
Definition fields.c:369
int form_desc_error(int, char *, char *)
Handle errors encountered while parsing the form description file, providing detailed error messages ...
int init_form(Init *, int, char **, int, int)
Initialize form data structure and parse description file.
Definition form_engine.c:59
int field_navigator(Form *)
Handle user input for field entry, allowing navigation between fields and looping until an exit actio...
bool locate_file_in_path(char *, char *)
Locates a file in the system PATH.
Definition futil.c:939
void destroy_argv(int argc, char **argv)
Deallocates memory allocated for argument strings in argv.
Definition futil.c:221
size_t canonicalize_file_spec(char *)
Removes quotes and trims at first space.
Definition futil.c:1216
size_t strnz__cpy(char *, const char *, size_t)
safer alternative to strncpy
Definition futil.c:269
bool trim_ext(char *, char *)
trims the file extension from "filename" and copies the result to "buf"
Definition futil.c:741
bool stripz_quotes(char *)
removes leading and trailing double quotes if present
Definition futil.c:469
size_t trim(char *)
Trims leading and trailing spaces from string s in place.
Definition futil.c:118
bool is_directory(const char *)
Checks if the given path is a directory.
Definition futil.c:1245
bool file_spec_path(char *, char *)
extracts the path component of a file specification
Definition futil.c:578
bool str_to_upper(char *)
Converts a string to uppercase.
Definition futil.c:247
bool dir_name(char *, char *)
Returns the directory name of a file specification.
Definition futil.c:801
double str_to_double(char *)
converts string to double
Definition futil.c:637
bool str_to_lower(char *)
Converts a string to lowercase.
Definition futil.c:233
bool lf_find(const char *, const char *, const char *, int, int)
Find files in a directory matching a regular expression.
Definition futil.c:977
bool strnfill(char *, char, int)
Fills string s with character c n.
Definition futil.c:440
size_t strnz(char *, size_t)
terminates string at New Line, Carriage Return, or max_len
Definition futil.c:340
size_t ssnprintf(char *, size_t, const char *,...)
ssnprintf was designed to be a safer alternative to snprintf.
Definition futil.c:147
bool strip_quotes(char *)
removes leading and trailing double quotes if present
Definition futil.c:454
bool is_valid_regex(const char *)
Checks if the given regular expression pattern is valid.
Definition futil.c:1256
char * strnz_dup(char *, size_t)
Allocates memory for and duplicates string s up to length l or until line feed or carriage return.
Definition futil.c:379
size_t strip_ansi(char *, char *)
Strips ANSI SGR escape sequences (ending in 'm') from string s to d.
Definition futil.c:537
bool mk_dir(char *dir)
If directory doesn't exist, make it.
Definition futil.c:1195
size_t strnz__cat(char *, const char *, size_t)
safer alternative to strncat
Definition futil.c:298
bool str_subc(char *, char *, char, char *, int)
Replaces "ReplaceChr" in "s" with "Withstr" in "d" won't copy more than "l" bytes to "d" Replaces all...
Definition futil.c:415
bool verify_file(char *, int)
Verifies that the file specified by "in_spec" exists and is accessible with the permissions specified...
Definition futil.c:892
char * rep_substring(const char *, const char *, const char *)
Replace all occurrences of "tgt_s" in "org_s" with "rep_s".
Definition futil.c:1292
size_t strnlf(char *, size_t)
terminates string with line feed
Definition futil.c:358
int a_toi(char *, bool *)
a safer alternative to atoi() for converting ASCII strings to integers.
Definition futil.c:505
bool file_spec_name(char *, char *)
extracts the file name component of a file specification
Definition futil.c:605
bool expand_tilde(char *, int)
Replace Leading Tilde With Home Directory.
Definition futil.c:684
bool verify_dir(char *, int)
Verifies that the directory specified by "spec" exists and is accessible with the permissions specifi...
Definition futil.c:841
bool chrep(char *, char, char)
Replaces all occurrences of old_chr in s with new_chr in place.
Definition futil.c:486
bool base_name(char *, char *)
Returns the base name of a file specification.
Definition futil.c:775
bool normalize_file_spec(char *)
replace backslashes with forward lashes
Definition futil.c:561
int str_to_args(char **, char *, int)
Converts a string into an array of argument strings.
Definition futil.c:167
bool trim_path(char *)
Trims trailing spaces and slashes from directory path in place.
Definition futil.c:713
size_t string_cpy(String *, const String *)
Copy src String to dest String, allocating additional memory for dest String if necessary.
Definition futil.c:1430
String to_string(const char *)
String functions provide a simple string library to facilitate string manipulation in C,...
Definition futil.c:1375
size_t string_ncpy(String *, const String *, size_t)
copies up to n characters from src String to dest String, allocating additional memory for dest Strin...
Definition futil.c:1487
size_t string_cat(String *, const String *)
Concatenates src String to dest String, allocating additional memory for dest String if necessary.
Definition futil.c:1447
String free_string(String)
Free the dynamically allocated String.
Definition futil.c:1415
size_t string_ncat(String *, const String *, size_t)
Concatenates up to n characters from src String to dest String, allocating additional memory for dest...
Definition futil.c:1466
int segmentation_fault()
Function to intentionally cause a segmentation fault for testing purposes.
Definition futil.c:1512
bool derive_file_spec(char *, char *, char *)
Derive full file specification from directory and file name.
Definition init.c:821
int write_config(Init *)
Write the current configuration to a file specified in init->minitrc.
Definition init.c:723
void mapp_initialization(Init *, int, char **)
Main initialization function for MAPP - Menu Application.
Definition init.c:324
void zero_opt_args(Init *)
Initialize optional arguments in the Init struct to default values.
Definition init.c:408
int init_view_full_screen(Init *)
Initialize C-Menu View in full screen mode.
Definition init_view.c:40
int init_view_boxwin(Init *, char *)
Initialize the C-Menu View in box window mode.
Definition init_view.c:123
int view_init_input(View *, char *)
Initialize the input for a C-Menu View.
Definition init_view.c:223
View * destroy_view(Init *init)
Destroy View structure.
Definition mem.c:346
Form * new_form(Init *, int, char **, int, int)
Create and initialize Form structure.
Definition mem.c:253
bool init_menu_files(Init *, int, char **)
Initialize Menu file specifications.
Definition mem.c:486
bool verify_spec_arg(char *, char *, char *, char *, int)
Verify file specification argument.
Definition mem.c:373
Init * new_init(int, char **)
Create and initialize Init structure.
Definition mem.c:70
Menu * new_menu(Init *, int, char **, int, int)
Create and initialize Menu structure.
Definition mem.c:148
Menu * destroy_menu(Init *init)
Destroy Menu structure.
Definition mem.c:169
Form * destroy_form(Init *init)
Destroy Form structure.
Definition mem.c:276
View * new_view(Init *)
Create and initialize View structure.
Definition mem.c:300
Pick * new_pick(Init *, int, char **, int, int)
Create and initialize Pick structure.
Definition mem.c:200
Init * destroy_init(Init *init)
Destroy Init structure.
Definition mem.c:105
Pick * destroy_pick(Init *init)
Destroy Pick structure.
Definition mem.c:230
unsigned int menu_engine(Init *)
The main loop of the menu system.
Definition menu_engine.c:37
unsigned int get_command_type(char *)
Get command type from command string.
unsigned int parse_menu_description(Init *)
Parse menu description file and create Menu.
int init_pick(Init *, int, char **, int, int)
Initializes pick structure and opens pick input file or pipe.
Definition pick_engine.c:59
int pick_engine(Init *)
Initializes pick interface, calculates window size and position, and enters picker loop.
int open_pick_win(Init *)
Initializes the pick window based on the parameters specified in the Pick structure.
bool capture_shell_tioctl()
capture_shell_tioctl() - capture shell terminal settings
Definition scriou.c:43
char di_getch()
sget single character from terminal in raw mode
Definition scriou.c:139
bool restore_curses_tioctl()
restore_curses_tioctl() - restore curses terminal settings
Definition scriou.c:81
bool capture_curses_tioctl()
capture_curses_tioctl() - capture curses terminal settings
Definition scriou.c:68
bool mk_raw_tioctl(struct termios *)
mk_raw_tioctl() - set terminal to raw mode
Definition scriou.c:126
bool set_sane_tioctl(struct termios *)
set_sane_tioctl() - set terminal to sane settings for C-MENU
Definition scriou.c:95
bool restore_shell_tioctl()
restore_shell_tioctl() - restore shell terminal settings
Definition scriou.c:56
void sig_dfl_mode()
Set signal handlers to default behavior.
Definition sig.c:42
void signal_handler(int)
Signal handler for interrupt signals.
Definition sig.c:95
void sig_prog_mode()
Set up signal handlers for interrupt signals.
Definition sig.c:62
int view_file(Init *)
Start view.
char title[MAXLEN]
Definition common.h:123
char mapp_data[MAXLEN]
Definition common.h:139
char minitrc[MAXLEN]
Definition common.h:164
bool f_out_spec
Definition common.h:161
char mapp_help[MAXLEN]
Definition common.h:140
int begx
Definition common.h:112
bool f_title
Definition common.h:156
char chyron_s[MAXLEN]
Definition common.h:122
SIO * sio
Definition common.h:108
int pick_cnt
Definition common.h:177
bool f_cmd_all
Definition common.h:155
Form * form
Definition common.h:174
char in_spec[MAXLEN]
Definition common.h:158
char cmd_all[MAXLEN]
Definition common.h:117
bool f_mapp_help
Definition common.h:147
bool f_mapp_msrc
Definition common.h:148
int argc
Definition common.h:124
char fill_char[2]
Definition common.h:137
bool f_cmd
Definition common.h:154
int prompt_type
Definition common.h:120
char about_fn[MAXLEN]
Definition common.h:165
char mapp_msrc[MAXLEN]
Definition common.h:141
int cols
Definition common.h:110
int menu_cnt
Definition common.h:173
int tab_stop
Definition common.h:171
bool f_mapp_home
Definition common.h:144
bool f_erase_remainder
Definition common.h:134
bool f_mapp_data
Definition common.h:145
bool f_mapp_desc
Definition common.h:151
char mapp_home[MAXLEN]
Definition common.h:138
bool f_mapp_user
Definition common.h:149
char prompt_str[MAXLEN]
Definition common.h:119
bool f_squeeze
Definition common.h:130
int begy
Definition common.h:111
char parent_cmd[MAXLEN]
Definition common.h:118
char mapp_spec[MAXLEN]
Definition common.h:166
char receiver_cmd[MAXLEN]
Definition common.h:115
bool f_multiple_cmd_args
Definition common.h:132
int select_max
Definition common.h:169
bool f_ln
Definition common.h:135
bool f_mapp_spec
Definition common.h:146
char provider_cmd[MAXLEN]
Definition common.h:114
char out_spec[MAXLEN]
Definition common.h:159
bool f_strip_ansi
Definition common.h:129
View * view
Definition common.h:178
Menu * menu
Definition common.h:172
bool f_at_end_remove
Definition common.h:128
int view_cnt
Definition common.h:179
char brackets[3]
Definition common.h:136
bool f_ignore_case
Definition common.h:127
char ** argv
Definition common.h:125
int lines
Definition common.h:109
char mapp_user[MAXLEN]
Definition common.h:142
char cmd[MAXLEN]
Definition common.h:116
int optind
Definition common.h:126
bool f_help_spec
Definition common.h:157
bool f_receiver_cmd
Definition common.h:153
bool f_provider_cmd
Definition common.h:152
int form_cnt
Definition common.h:175
char help_spec[MAXLEN]
Definition common.h:167
char editor[MAXLEN]
Definition common.h:162
Pick * pick
Definition common.h:176
bool f_in_spec
Definition common.h:160
char menuapp[MAXLEN]
Definition common.h:163
char text[CHYRON_KEY_MAXLEN]
Definition cm.h:233
int end_pos
Definition cm.h:236
int cp
Definition cm.h:237
int keycode
Definition cm.h:235
int l
Definition cm.h:244
cchar_t cmplx_buf[MAXLEN]
Definition cm.h:243
char s[MAXLEN]
Definition cm.h:242
ChyronKey * key[CHYRON_KEYS]
Definition cm.h:241
int r
Definition cm.h:266
int b
Definition cm.h:268
int g
Definition cm.h:267
int pair_id
Definition cm.h:305
int fg
Definition cm.h:303
int bg
Definition cm.h:304
char * s
Definition cm.h:570
size_t l
Definition cm.h:571
Arg ** v
Definition cm.h:577
size_t n
Definition cm.h:579
size_t l
Definition cm.h:586
char * s
Definition cm.h:585
size_t l
allocated length
Definition cm.h:595
wchar_t * s
Definition cm.h:594
size_t l
Definition cm.h:607
cchar_t * s
Definition cm.h:606
double green_gamma
Definition cm.h:628
char black[COLOR_LEN]
Definition cm.h:631
FILE * stdout_fp
Definition cm.h:658
char bg_clr_x[COLOR_LEN]
Definition cm.h:652
char fg_clr_x[COLOR_LEN]
Definition cm.h:651
int cp_reverse_highlight
Definition cm.h:673
double blue_gamma
Definition cm.h:629
int clr_idx
Definition cm.h:667
char bred[COLOR_LEN]
Definition cm.h:641
char yellow[COLOR_LEN]
Definition cm.h:634
int cp_ln_bg
Definition cm.h:679
int clr_cnt
Definition cm.h:665
int stdout_fd
Definition cm.h:662
char bo_clr_x[COLOR_LEN]
Definition cm.h:653
char abg[COLOR_LEN]
Definition cm.h:650
int stderr_fd
Definition cm.h:663
int cp_ln
Definition cm.h:678
int cp_box
Definition cm.h:674
FILE * stdin_fp
Definition cm.h:657
char bcyan[COLOR_LEN]
Definition cm.h:646
char borange[COLOR_LEN]
Definition cm.h:648
double red_gamma
Definition cm.h:627
char red[COLOR_LEN]
Definition cm.h:632
FILE * tty_fp
Definition cm.h:660
char magenta[COLOR_LEN]
Definition cm.h:636
char bgreen[COLOR_LEN]
Definition cm.h:642
int cp_bold
Definition cm.h:675
char ln_clr_x[COLOR_LEN]
Definition cm.h:654
char byellow[COLOR_LEN]
Definition cm.h:643
char bwhite[COLOR_LEN]
Definition cm.h:647
int cp_reverse
Definition cm.h:672
char ln_bg_clr_x[COLOR_LEN]
Definition cm.h:655
char cyan[COLOR_LEN]
Definition cm.h:637
int cp_default
Definition cm.h:669
FILE * stderr_fp
Definition cm.h:659
char tty_name[MAXLEN]
Definition cm.h:656
int cp_highlight
Definition cm.h:677
int cp_title
Definition cm.h:676
char orange[COLOR_LEN]
Definition cm.h:639
int clr_pair_cnt
Definition cm.h:666
char green[COLOR_LEN]
Definition cm.h:633
char white[COLOR_LEN]
Definition cm.h:638
char bg[COLOR_LEN]
Definition cm.h:649
char bblue[COLOR_LEN]
Definition cm.h:644
int tty_fd
Definition cm.h:664
int cp_norm
Definition cm.h:670
char bmagenta[COLOR_LEN]
Definition cm.h:645
char blue[COLOR_LEN]
Definition cm.h:635
int cp_win
Definition cm.h:671
int stdin_fd
Definition cm.h:661
double gray_gamma
Definition cm.h:630
char bblack[COLOR_LEN]
Definition cm.h:640
int clr_pair_idx
Definition cm.h:668
int len
Definition form.h:108
int col
Definition form.h:104
char str[SCR_COLS]
Definition form.h:106
int line
Definition form.h:102
int line
Definition form.h:115
char display_s[FIELD_MAXLEN]
Definition form.h:132
char accept_s[FIELD_MAXLEN]
Definition form.h:128
int ff
Definition form.h:121
int col
Definition form.h:117
char input_s[FIELD_MAXLEN]
Definition form.h:125
int len
Definition form.h:119
char filler_s[FIELD_MAXLEN]
Definition form.h:137
FILE * out_fp
Definition form.h:161
Text * text[FIELD_MAXCNT]
Definition form.h:331
bool f_in_pipe
Definition form.h:221
bool f_mapp_spec
Definition form.h:192
bool f_erase_remainder
Definition form.h:235
WINDOW * box
Definition form.h:156
Field * field[FIELD_MAXCNT]
Definition form.h:344
char receiver_cmd[MAXLEN]
Definition form.h:178
bool f_process
Definition form.h:245
int didx
Definition form.h:316
int begy
Definition form.h:151
char provider_cmd[MAXLEN]
Definition form.h:170
bool f_query
Definition form.h:247
int out_fd
Definition form.h:165
int cols
Definition form.h:150
int lines
Definition form.h:149
int fcnt
Definition form.h:309
int begx
Definition form.h:153
bool f_out_pipe
Definition form.h:226
int fidx
Definition form.h:301
bool f_provider_cmd
Definition form.h:255
bool f_calculate
Definition form.h:243
int bg_clr_idx
Definition form.h:147
char fill_char[2]
Definition form.h:290
bool help
Definition form.h:249
bool f_cmd
Definition form.h:270
bool f_help_spec
Definition form.h:231
FILE * in_fp
Definition form.h:159
char out_spec[MAXLEN]
Definition form.h:208
Chyron * chyron
Definition form.h:356
int bo_clr_idx
Definition form.h:148
bool f_receiver_cmd
Definition form.h:262
char in_spec[MAXLEN]
Definition form.h:201
char mapp_spec[FIELD_MAXLEN]
Definition form.h:167
char cmd[MAXLEN]
Definition form.h:185
char title[MAXLEN]
Definition form.h:157
char brackets[3]
Definition form.h:278
int dcnt
Definition form.h:323
int fg_clr_idx
Definition form.h:146
bool f_out_spec
Definition form.h:218
WINDOW * win
Definition form.h:155
bool f_in_spec
Definition form.h:215
int in_fd
Definition form.h:163
char help_spec[MAXLEN]
Definition form.h:194
char * choice_text
Definition menu.h:54
char * raw_text
Definition menu.h:51
char * command_str
Definition menu.h:70
unsigned int type
Definition menu.h:49
int letter_pos
Definition menu.h:60
unsigned int command_type
Definition menu.h:64
char choice_letter
Definition menu.h:57
char provider_cmd[MAXLEN]
Definition menu.h:126
int cols
Definition menu.h:92
char mapp_spec[MAXLEN]
Definition menu.h:115
int argc
Definition menu.h:109
Line * line[MAX_MENU_LINES]
Definition menu.h:194
bool f_help_spec
Definition menu.h:153
WINDOW * win
Definition menu.h:100
WINDOW * box
Definition menu.h:103
char cmd[MAXLEN]
Definition menu.h:141
bool f_provider_cmd
Definition menu.h:158
int bo_clr_idx
Definition menu.h:88
int fg_clr_idx
Definition menu.h:82
int begy
Definition menu.h:94
int text_max_len
Definition menu.h:181
bool f_mapp_spec
Definition menu.h:148
char receiver_cmd[MAXLEN]
Definition menu.h:134
int item_count
Definition menu.h:187
bool f_receiver_cmd
Definition menu.h:165
int choice_max_len
Definition menu.h:175
int bg_clr_idx
Definition menu.h:85
bool f_cmd
Definition menu.h:171
int line_idx
Definition menu.h:190
char help_spec[MAXLEN]
Definition menu.h:121
int lines
Definition menu.h:90
char ** argv
Definition menu.h:112
char title[MAXLEN]
Definition menu.h:106
int begx
Definition menu.h:97