ascii-chat
Binary v0.15.83-53-gb711d8720
Library lib/v0.3.2-701-gb711d8720
Video chat in your terminal
Loading...
Searching...
No Matches
options/common.h
Go to the documentation of this file.
1
87
88#pragma once
89
90#ifndef OPTIONS_COMMON_H
91#define OPTIONS_COMMON_H
92
93#include "../options/options.h"
94#ifdef _WIN32
96#else
97#include <getopt.h>
98#endif
99#include <libplatform/terminal.h>
100#include <stdbool.h>
101#include <stddef.h>
102#include <stdint.h>
103
104#ifdef __cplusplus
105extern "C" {
106#endif
107
108// ============================================================================
109// Option Parsing Helpers
110// ============================================================================
111
132const char *find_similar_option(const char *unknown_opt, const struct option *options);
133
152const char *format_available_modes(option_mode_bitmask_t mode_bitmask);
153
174int strtoint_safe(const char *str);
175
184static inline asciichat_error_t option_error_invalid(void) {
185 return ERROR_INVALID_PARAM;
186}
187
212char *validate_required_argument(const char *optarg, char *argbuf, size_t argbuf_size, const char *option_name,
213 asciichat_mode_t mode);
214
234bool validate_positive_int_opt(const char *value_str, int *out_value, const char *param_name);
235
255bool validate_port_opt(const char *value_str, uint16_t *out_port);
256
276bool validate_fps_opt(const char *value_str, int *out_fps);
277
297bool validate_webcam_index(const char *value_str, unsigned short int *out_index);
298
321asciichat_error_t validate_options_and_report(const void *config, const void *opts);
322
345asciichat_error_t detect_default_ssh_key(char *key_path, size_t path_size);
346
347// ============================================================================
348// Argument Processing Helpers
349// ============================================================================
350
372char *strip_equals_prefix(const char *opt_value, char *buffer, size_t buffer_size);
373
405char *get_required_argument(const char *opt_value, char *buffer, size_t buffer_size, const char *option_name,
406 asciichat_mode_t mode);
407
419char *read_password_from_stdin(const char *prompt);
420
421// ============================================================================
422// Shared Option Parsers (Client + Mirror Common Options)
423// ============================================================================
424
438asciichat_error_t parse_color_mode_option(const char *value_str, options_t *opts);
439
453asciichat_error_t parse_render_mode_option(const char *value_str, options_t *opts);
454
467asciichat_error_t parse_palette_option(const char *value_str, options_t *opts);
468
482asciichat_error_t parse_palette_chars_option(const char *value_str, options_t *opts);
483
496asciichat_error_t parse_width_option(const char *value_str, options_t *opts);
497
510asciichat_error_t parse_height_option(const char *value_str, options_t *opts);
511
524asciichat_error_t parse_webcam_index_option(const char *value_str, options_t *opts);
525
538asciichat_error_t parse_snapshot_delay_option(const char *value_str, options_t *opts);
539
553asciichat_error_t parse_log_level_option(const char *value_str, options_t *opts);
554
555// ============================================================================
556// Terminal Dimension Utilities
557// ============================================================================
558
583
606
611void print_project_links(FILE *desc);
612
613#ifdef __cplusplus
614}
615#endif
616
617#endif // OPTIONS_COMMON_H
int buffer_size
Size of circular buffer.
Definition grep.c:68
unsigned short uint16_t
Definition common.h:61
asciichat_error_t
Error and exit codes - unified status values (0-255).
Definition error_codes.h:44
@ ERROR_INVALID_PARAM
asciichat_mode_t
Mode type for options parsing.
Definition options.h:919
struct options_state options_t
Immutable, RCU-published snapshot of the application's runtime configuration.
option_mode_bitmask_t
Option mode bitmask.
Definition options.h:936
char * strip_equals_prefix(const char *opt_value, char *buffer, size_t buffer_size)
Strip equals sign prefix from option argument.
void print_project_links(FILE *desc)
Print project links with link emoji and colored styling.
const char * format_available_modes(option_mode_bitmask_t mode_bitmask)
Format all available modes for an option as comma-separated list.
char * validate_required_argument(const char *optarg, char *argbuf, size_t argbuf_size, const char *option_name, asciichat_mode_t mode)
Validate and retrieve required argument for an option.
const char * find_similar_option(const char *unknown_opt, const struct option *options)
Find a similar option name for typo suggestions.
asciichat_error_t parse_render_mode_option(const char *value_str, options_t *opts)
Parse –render-mode option and set opts->render_mode.
int strtoint_safe(const char *str)
Safely parse string to integer with validation.
void update_dimensions_to_terminal_size(options_t *opts)
Update dimensions to current terminal size.
asciichat_error_t parse_width_option(const char *value_str, options_t *opts)
Parse –width option and set opts->width.
asciichat_error_t detect_default_ssh_key(char *key_path, size_t path_size)
Detect default SSH key path for the current user.
char * read_password_from_stdin(const char *prompt)
Read password from stdin with prompt.
bool validate_port_opt(const char *value_str, uint16_t *out_port)
Validate port number (1-65535).
asciichat_error_t parse_height_option(const char *value_str, options_t *opts)
Parse –height option and set opts->height.
bool validate_fps_opt(const char *value_str, int *out_fps)
Validate FPS value (0 for auto, otherwise 1-144).
asciichat_error_t parse_palette_chars_option(const char *value_str, options_t *opts)
Parse –palette-chars option and set opt_palette_custom.
asciichat_error_t parse_palette_option(const char *value_str, options_t *opts)
Parse –palette option and set opt_palette_type.
asciichat_error_t parse_log_level_option(const char *value_str, options_t *opts)
Parse –log-level option and set opt_log_level.
asciichat_error_t validate_options_and_report(const void *config, const void *opts)
Validate options and report errors to stderr.
bool validate_positive_int_opt(const char *value_str, int *out_value, const char *param_name)
Validate a positive integer value.
asciichat_error_t parse_color_mode_option(const char *value_str, options_t *opts)
Parse –color-mode option and set opts->color_mode.
asciichat_error_t parse_snapshot_delay_option(const char *value_str, options_t *opts)
Parse –snapshot-delay option and set opts->snapshot_delay.
char * get_required_argument(const char *opt_value, char *buffer, size_t buffer_size, const char *option_name, asciichat_mode_t mode)
Handle required arguments with consistent error messages.
asciichat_error_t parse_webcam_index_option(const char *value_str, options_t *opts)
Parse –webcam-index option and set opts->webcam_index.
bool validate_webcam_index(const char *value_str, unsigned short int *out_index)
Validate webcam index using the common device index validator.
void update_dimensions_for_full_height(options_t *opts)
Update dimensions for full-height mode.
⚙️ Unified options parsing system for ascii-chat with builder pattern and lock-free access