ascii-chat 0.11.33
Video chat in your terminal
Loading...
Searching...
No Matches
options/common.h
Go to the documentation of this file.
1
88#pragma once
89
90#ifndef OPTIONS_COMMON_H
91#define OPTIONS_COMMON_H
92
93#include "../options/options.h"
94#include "../platform/terminal.h"
95#include <stdbool.h>
96#include <stddef.h>
97#include <stdint.h>
98
99#ifdef __cplusplus
100extern "C" {
101#endif
102
103// ============================================================================
104// Option Parsing Helpers
105// ============================================================================
106
127const char *find_similar_option(const char *unknown_opt, const struct option *options);
128
147const char *format_available_modes(option_mode_bitmask_t mode_bitmask);
148
169int strtoint_safe(const char *str);
170
179static inline asciichat_error_t option_error_invalid(void) {
180 return ERROR_INVALID_PARAM;
181}
182
207char *validate_required_argument(const char *optarg, char *argbuf, size_t argbuf_size, const char *option_name,
208 asciichat_mode_t mode);
209
229bool validate_positive_int_opt(const char *value_str, int *out_value, const char *param_name);
230
250bool validate_port_opt(const char *value_str, uint16_t *out_port);
251
271bool validate_fps_opt(const char *value_str, int *out_fps);
272
292bool validate_webcam_index(const char *value_str, unsigned short int *out_index);
293
316asciichat_error_t validate_options_and_report(const void *config, const void *opts);
317
340asciichat_error_t detect_default_ssh_key(char *key_path, size_t path_size);
341
342// ============================================================================
343// Argument Processing Helpers
344// ============================================================================
345
367char *strip_equals_prefix(const char *opt_value, char *buffer, size_t buffer_size);
368
400char *get_required_argument(const char *opt_value, char *buffer, size_t buffer_size, const char *option_name,
401 asciichat_mode_t mode);
402
414char *read_password_from_stdin(const char *prompt);
415
416// ============================================================================
417// Shared Option Parsers (Client + Mirror Common Options)
418// ============================================================================
419
433asciichat_error_t parse_color_mode_option(const char *value_str, options_t *opts);
434
448asciichat_error_t parse_render_mode_option(const char *value_str, options_t *opts);
449
462asciichat_error_t parse_palette_option(const char *value_str, options_t *opts);
463
477asciichat_error_t parse_palette_chars_option(const char *value_str, options_t *opts);
478
491asciichat_error_t parse_width_option(const char *value_str, options_t *opts);
492
505asciichat_error_t parse_height_option(const char *value_str, options_t *opts);
506
519asciichat_error_t parse_webcam_index_option(const char *value_str, options_t *opts);
520
533asciichat_error_t parse_snapshot_delay_option(const char *value_str, options_t *opts);
534
548asciichat_error_t parse_log_level_option(const char *value_str, options_t *opts);
549
550// ============================================================================
551// Terminal Dimension Utilities
552// ============================================================================
553
578
601
606void print_project_links(FILE *desc);
607
608#ifdef __cplusplus
609}
610#endif
611
612#endif // OPTIONS_COMMON_H
int buffer_size
Size of circular buffer.
Definition grep.c:90
unsigned short uint16_t
Definition common.h:57
asciichat_error_t
Error and exit codes - unified status values (0-255)
Definition error_codes.h:49
@ ERROR_INVALID_PARAM
asciichat_mode_t
Mode type for options parsing.
option_mode_bitmask_t
Option mode bitmask.
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 (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.
ClangTool/LibTooling compatibility shim for stdbool.h.
Consolidated options structure.