ascii-chat 0.6.0
Real-time terminal-based video chat with ASCII art conversion
Loading...
Searching...
No Matches
mirror.c
Go to the documentation of this file.
1
17#include "options/mirror.h"
18#include "options/builder.h"
19#include "options/common.h"
20
21#include "asciichat_errno.h"
22#include "common.h"
23#include "log/logging.h"
24#include "options/options.h"
25#include "options/validation.h"
26
27#include <stdio.h>
28#include <stdlib.h>
29#include <string.h>
30
31// ============================================================================
32// Mirror Option Parsing
33// ============================================================================
34
35asciichat_error_t parse_mirror_options(int argc, char **argv, options_t *opts) {
36 const options_config_t *config = options_preset_mirror("ascii-chat mirror", "view local webcam as ascii art");
37 int remaining_argc;
38 char **remaining_argv;
39
40 // Apply defaults from preset before parsing command-line args
41 asciichat_error_t defaults_result = options_config_set_defaults(config, opts);
42 if (defaults_result != ASCIICHAT_OK) {
44 return defaults_result;
45 }
46
47 asciichat_error_t result = options_config_parse(config, argc, argv, opts, &remaining_argc, &remaining_argv);
48 if (result != ASCIICHAT_OK) {
50 return result;
51 }
52
53 // Check for unexpected remaining arguments
54 if (remaining_argc > 0) {
55 (void)fprintf(stderr, "Error: Unexpected arguments after options:\n");
56 for (int i = 0; i < remaining_argc; i++) {
57 (void)fprintf(stderr, " %s\n", remaining_argv[i]);
58 }
60 return option_error_invalid();
61 }
62
64 return ASCIICHAT_OK;
65}
66
67// ============================================================================
68// Mirror Usage Text
69// ============================================================================
70
71void usage_mirror(FILE *desc) {
72 // Get config with program name and description
73 const options_config_t *config = options_preset_mirror("ascii-chat mirror", "view local webcam as ascii art");
74 if (!config) {
75 (void)fprintf(desc, "Error: Failed to create options config\n");
76 return;
77 }
78
79 (void)fprintf(desc, "%s - %s\n\n", config->program_name, config->description);
80 (void)fprintf(desc, "USAGE:\n");
81 (void)fprintf(desc, " %s [options...]\n\n", config->program_name);
82
83 // Generate options from builder configuration
84 options_config_print_usage(config, desc);
85
86 // Clean up the config
88}
⚠️‼️ Error and/or exit() when things go bad.
void options_config_print_usage(const options_config_t *config, FILE *stream)
Print usage/help text.
Definition builder.c:1236
asciichat_error_t options_config_set_defaults(const options_config_t *config, void *options_struct)
Set default values in options struct.
Definition builder.c:716
asciichat_error_t options_config_parse(const options_config_t *config, int argc, char **argv, void *options_struct, int *remaining_argc, char ***remaining_argv)
Parse command-line arguments.
Definition builder.c:1101
void options_config_destroy(options_config_t *config)
Free options config.
Definition builder.c:329
Options builder API for flexible command-line option configuration.
const options_config_t * options_preset_mirror(const char *program_name, const char *description)
Get mirror mode options preset.
Definition presets.c:530
asciichat_error_t
Error and exit codes - unified status values (0-255)
Definition error_codes.h:46
@ ASCIICHAT_OK
Definition error_codes.h:48
void usage_mirror(FILE *desc)
Print mirror mode usage/help text.
Definition mirror.c:71
📝 Logging API with multiple log levels and terminal output control
asciichat_error_t parse_mirror_options(int argc, char **argv, options_t *opts)
Parse mirror-specific command-line options.
Definition mirror.c:35
Mirror mode option parsing.
Common utilities and helpers for option parsing.
Validation functions for options parsing.
⚙️ Command-line options parsing and configuration management for ascii-chat
Options configuration.
Definition builder.h:165
const char * program_name
For usage header.
Definition builder.h:176
const char * description
For usage header.
Definition builder.h:177
Consolidated options structure.
Definition options.h:439
Common SIMD utilities and structures.