2
3
4
5
6
7
8
15typedef struct Init Init;
18#define FIELD_MAXLEN 1024
19#define FIELD_MAXCNT 100
24
31
33
35
37
39
40
42
44
50
52
54
56
58
60
61
63
65
67
68
70
72
73
74
75
76
77
78
79
80
84
85
86
87
88
91
92
93
94
95
96
97
100
103
105
107
109
113
116
118
120
122
123
124
126
127
129
130
131
133
134
135
136
138
139
140
141
152
154
158
160
162
164
166
168
171
172
173
174
175
176
179
180
181
182
183
184
186
187
188
189
190
191
195
196
197
198
199
200
202
203
204
205
206
207
209
210
211
212
213
214
216
217
219
220
222
223
224
225
227
228
229
230
232
233
236
237
238
239
240
241
242
244
246
248
250
251
252
253
254
256
257
258
259
260
261
263
264
265
266
267
268
269
271
272
273
274
275
276
279
280
281
282
283
284
285
286
287
288
289
291
292
293
294
295
296
297
298
299
300
302
303
304
305
306
307
308
310
311
312
313
314
315
317
318
319
320
321
322
324
325
326
327
328
329
330
332
333
334
335
336
337
338
339
340
341
342
345
346
347
348
349
350
351
352
353
354
355
357
358
359
360
361
362
366
367
368
369
370
371
372
int form_yx_to_fidx(Form *, int, int)
int form_read_description(Form *)
void form_display_chyron(Form *)
int cmd_processor(Init *)
int popup_form(Init *, int, char **, int, int)
int popup_menu(Init *, int, char **, int, int)
int popup_view(Init *, int, char **, int, int, int, int)
int parse_opt_args(Init *, int, char **)
int popup_pick(Init *, int, char **, int, int)
volatile sig_atomic_t sig_received
size_t rtrim(char *)
Trims trailing spaces from string s in place.
bool handle_signal(sig_atomic_t)
void get_rfc3339_s(char *, size_t)
void mouse_getch(int *, int *, int *, int *)
int display_ok_message(char *)
void destroy_win(WINDOW *)
struct termios shell_tioctl curses_tioctl
bool verify_dir_q(char *, int)
String mk_string(size_t)
Create a String struct with a dynamically allocated string.
bool construct_file_spec(char *, char *, char *, char *, char *, int)
#define CHYRON_KEY_MAXLEN
bool verify_file_q(char *, int)
void dump_opts_by_use(char *, char *)
void destroy_box(WINDOW *)
bool f_have_curses_tioctl
void w_mouse_getch(WINDOW *, int *, int *, int *, int *)
bool str_to_bool(const char *)
Converts String to boolean true or false.
#define __atexit
This macro registers the end_pgm function to be called when the program exits.
struct termios shell_out_tioctl curses_out_tioctl
int display_curses_keys()
void display_argv_error_msg(char *, char **)
struct termios shell_in_tioctl curses_in_tioctl
struct termios shell_err_tioctl curses_err_tioctl
int popup_ckeys()
Display Curses Keys Responds to curses keys and mouse events, displaying the key code and description...
bool waitpid_with_timeout(pid_t pid, int timeout)
bool action_disposition(char *title, char *action_str)
void display_chyron(WINDOW *win, Chyron *chyron, int line, int col)
char const colors_text[][10]
void set_chyron_key(Chyron *, int, char *, int)
struct termios shell_tioctl
bool open_curses(SIO *)
Initialize NCurses and color settings.
int xwgetch(WINDOW *, Chyron *, int)
Wrapper for wgetch that handles signals, mouse events, checks for clicks on the chyron line,...
void restore_wins()
Restore all windows after a screen resize.
int win_new(int, int, int, int, char *, int)
Create a new window with optional box and title.
void win_init_attrs()
Initialize window attributes.
WINDOW * win_del()
Delete the current window and its associated box window.
void mvwaddstr_fill(WINDOW *, int, int, char *, int)
For lines shorter than their display area, fill the rest with spaces.
void cbox(WINDOW *)
Draw a box around the specified window.
void win_resize(int, int, char *)
Resize the current window and its box, and update the title.
void destroy_curses()
Gracefully shut down NCurses and restore terminal settings.
void win_redraw(WINDOW *)
Redraw the specified window.
bool is_set_chyron_key(Chyron *, int)
Check if function key label is set.
Chyron * destroy_chyron(Chyron *chyron)
Destroy Chyron structure.
int get_chyron_key(Chyron *, int)
Get keycode from chyron.
void set_chyron_key_cp(Chyron *, int, char *, int, int)
Set chyron key.
void compile_chyron(Chyron *)
construct the chyron string from the chyron structure
void unset_chyron_key(Chyron *, int)
Unset chyron key.
Chyron * new_chyron()
Create and initialize Chyron structure.
RGB xterm256_idx_to_rgb(int)
Convert XTerm 256 color index to RGB color.
int clr_name_to_idx(char *)
Get color index from color name.
int rgb_to_curses_clr(RGB *)
Get color index for RGB color.
bool init_clr_palette(SIO *)
Initialize color palette based on SIO settings.
void apply_gamma(RGB *)
Apply gamma correction to RGB color.
int rgb_to_xterm256_idx(RGB *)
Convert RGB color to XTerm 256 color index.
int get_clr_pair(int fg, int bg)
Get color pair index for foreground and background colors.
bool wait_destroy(Chyron *)
Destroy the waiting message window and chyron.
int wait_continue(WINDOW *, Chyron *, int)
Update the waiting message with remaining time and check for user input.
int answer_yn(char *em0, char *em1, char *em2, char *em3)
Accept a single letter answer.
WINDOW * wait_mk_win(Chyron *, char *)
Display a popup waiting message.
int Perror(char *)
Display a simple error message window or print to stderr.
int display_error(char *em0, char *em1, char *em2, char *em3)
Display an error message window or print to stderr.
void abend(int, char *)
Abnormal program termination.
Chyron * wait_mk_chyron()
Create a Chyron struct for the waiting message.
int fork_exec(char **)
Fork and exec a command.
int shell(char *)
Execute a shell command.
int full_screen_fork_exec(char **)
Execute a command in full screen mode.
int full_screen_shell(char *)
Execute a shell command in full screen mode.
int form_fmt_field(Form *, char *)
Format field according to its format type.
int field_editor(Form *)
Accept input for a field.
int form_display_field_n(Form *, int)
Display field n.
int form_display_field(Form *)
Display current field.
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.
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.
void destroy_argv(int argc, char **argv)
Deallocates memory allocated for argument strings in argv.
size_t canonicalize_file_spec(char *)
Removes quotes and trims at first space.
size_t strnz__cpy(char *, const char *, size_t)
safer alternative to strncpy
bool trim_ext(char *, char *)
trims the file extension from "filename" and copies the result to "buf"
bool stripz_quotes(char *)
removes leading and trailing double quotes if present
size_t trim(char *)
Trims leading and trailing spaces from string s in place.
bool is_directory(const char *)
Checks if the given path is a directory.
bool file_spec_path(char *, char *)
extracts the path component of a file specification
bool str_to_upper(char *)
Converts a string to uppercase.
bool dir_name(char *, char *)
Returns the directory name of a file specification.
double str_to_double(char *)
converts string to double
bool str_to_lower(char *)
Converts a string to lowercase.
bool lf_find(const char *, const char *, const char *, int, int)
Find files in a directory matching a regular expression.
bool strnfill(char *, char, int)
Fills string s with character c n.
size_t strnz(char *, size_t)
terminates string at New Line, Carriage Return, or max_len
size_t ssnprintf(char *, size_t, const char *,...)
ssnprintf was designed to be a safer alternative to snprintf.
bool strip_quotes(char *)
removes leading and trailing double quotes if present
bool is_valid_regex(const char *)
Checks if the given regular expression pattern is valid.
char * strnz_dup(char *, size_t)
Allocates memory for and duplicates string s up to length l or until line feed or carriage return.
size_t strip_ansi(char *, char *)
Strips ANSI SGR escape sequences (ending in 'm') from string s to d.
bool mk_dir(char *dir)
If directory doesn't exist, make it.
size_t strnz__cat(char *, const char *, size_t)
safer alternative to strncat
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...
bool verify_file(char *, int)
Verifies that the file specified by "in_spec" exists and is accessible with the permissions specified...
char * rep_substring(const char *, const char *, const char *)
Replace all occurrences of "tgt_s" in "org_s" with "rep_s".
size_t strnlf(char *, size_t)
terminates string with line feed
int a_toi(char *, bool *)
a safer alternative to atoi() for converting ASCII strings to integers.
bool file_spec_name(char *, char *)
extracts the file name component of a file specification
bool expand_tilde(char *, int)
Replace Leading Tilde With Home Directory.
bool verify_dir(char *, int)
Verifies that the directory specified by "spec" exists and is accessible with the permissions specifi...
bool chrep(char *, char, char)
Replaces all occurrences of old_chr in s with new_chr in place.
bool base_name(char *, char *)
Returns the base name of a file specification.
bool normalize_file_spec(char *)
replace backslashes with forward lashes
int str_to_args(char **, char *, int)
Converts a string into an array of argument strings.
bool trim_path(char *)
Trims trailing spaces and slashes from directory path in place.
size_t string_cpy(String *, const String *)
Copy src String to dest String, allocating additional memory for dest String if necessary.
String to_string(const char *)
String functions provide a simple string library to facilitate string manipulation in C,...
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...
size_t string_cat(String *, const String *)
Concatenates src String to dest String, allocating additional memory for dest String if necessary.
String free_string(String)
Free the dynamically allocated String.
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...
int segmentation_fault()
Function to intentionally cause a segmentation fault for testing purposes.
bool derive_file_spec(char *, char *, char *)
Derive full file specification from directory and file name.
int write_config(Init *)
Write the current configuration to a file specified in init->minitrc.
void mapp_initialization(Init *, int, char **)
Main initialization function for MAPP - Menu Application.
void zero_opt_args(Init *)
Initialize optional arguments in the Init struct to default values.
int init_view_full_screen(Init *)
Initialize C-Menu View in full screen mode.
int init_view_boxwin(Init *, char *)
Initialize the C-Menu View in box window mode.
int view_init_input(View *, char *)
Initialize the input for a C-Menu View.
View * destroy_view(Init *init)
Destroy View structure.
Form * new_form(Init *, int, char **, int, int)
Create and initialize Form structure.
bool init_menu_files(Init *, int, char **)
Initialize Menu file specifications.
bool verify_spec_arg(char *, char *, char *, char *, int)
Verify file specification argument.
Init * new_init(int, char **)
Create and initialize Init structure.
Menu * new_menu(Init *, int, char **, int, int)
Create and initialize Menu structure.
Menu * destroy_menu(Init *init)
Destroy Menu structure.
Form * destroy_form(Init *init)
Destroy Form structure.
View * new_view(Init *)
Create and initialize View structure.
Pick * new_pick(Init *, int, char **, int, int)
Create and initialize Pick structure.
Init * destroy_init(Init *init)
Destroy Init structure.
Pick * destroy_pick(Init *init)
Destroy Pick structure.
unsigned int menu_engine(Init *)
The main loop of the menu system.
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.
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
char di_getch()
sget single character from terminal in raw mode
bool restore_curses_tioctl()
restore_curses_tioctl() - restore curses terminal settings
bool capture_curses_tioctl()
capture_curses_tioctl() - capture curses terminal settings
bool mk_raw_tioctl(struct termios *)
mk_raw_tioctl() - set terminal to raw mode
bool set_sane_tioctl(struct termios *)
set_sane_tioctl() - set terminal to sane settings for C-MENU
bool restore_shell_tioctl()
restore_shell_tioctl() - restore shell terminal settings
void sig_dfl_mode()
Set signal handlers to default behavior.
void signal_handler(int)
Signal handler for interrupt signals.
void sig_prog_mode()
Set up signal handlers for interrupt signals.
int view_file(Init *)
Start view.
char receiver_cmd[MAXLEN]
char provider_cmd[MAXLEN]
char text[CHYRON_KEY_MAXLEN]
cchar_t cmplx_buf[MAXLEN]
ChyronKey * key[CHYRON_KEYS]
char ln_bg_clr_x[COLOR_LEN]
char display_s[FIELD_MAXLEN]
char accept_s[FIELD_MAXLEN]
char input_s[FIELD_MAXLEN]
char filler_s[FIELD_MAXLEN]
Text * text[FIELD_MAXCNT]
Field * field[FIELD_MAXCNT]
char receiver_cmd[MAXLEN]
char provider_cmd[MAXLEN]
char mapp_spec[FIELD_MAXLEN]