ascii-chat 0.8.38
Real-time terminal-based video chat with ASCII art conversion
Loading...
Searching...
No Matches
mode_defaults.c File Reference

Mode-aware default value getters for options. More...

Go to the source code of this file.

Functions

const void * get_default_log_file (asciichat_mode_t mode)
 Get mode-specific default value for –log-file.
 
const void * get_default_port (asciichat_mode_t mode)
 Get mode-specific default value for –port.
 
const void * get_default_websocket_port (asciichat_mode_t mode)
 Get mode-specific default value for –websocket-port.
 
void apply_mode_specific_defaults (options_t *opts)
 Apply mode-specific defaults to an options struct after mode detection.
 

Detailed Description

Mode-aware default value getters for options.

Provides mode-specific default values for options that vary by mode.

Author
Zachary Fogg me@zf.nosp@m.o.gg
Date
February 2026

Definition in file options/registry/mode_defaults.c.

Function Documentation

◆ apply_mode_specific_defaults()

void apply_mode_specific_defaults ( options_t *  opts)

Apply mode-specific defaults to an options struct after mode detection.

This function updates options that have mode-dependent defaults (port and websocket_port) based on the detected mode. Log file paths are handled separately by options_get_log_filepath().

Parameters
optsOptions struct to update (must have detected_mode already set)

Definition at line 107 of file options/registry/mode_defaults.c.

107 {
108 if (!opts) {
109 return;
110 }
111
112 // Apply port default based on mode
113 const int *mode_port = (const int *)get_default_port(opts->detected_mode);
114 if (mode_port) {
115 // Only update if still at a generic default (27224 or 27225)
116 if (opts->port == OPT_PORT_INT_DEFAULT || opts->port == OPT_ACDS_PORT_INT_DEFAULT) {
117 opts->port = *mode_port;
118 }
119 }
120
121 // Apply websocket-port default based on mode
122 const int *mode_websocket_port = (const int *)get_default_websocket_port(opts->detected_mode);
123 if (mode_websocket_port) {
124 // Only update if still at a generic default (27226 or 27227)
125 if (opts->websocket_port == OPT_WEBSOCKET_PORT_SERVER_DEFAULT ||
126 opts->websocket_port == OPT_WEBSOCKET_PORT_ACDS_DEFAULT) {
127 opts->websocket_port = *mode_websocket_port;
128 }
129 }
130}
const void * get_default_websocket_port(asciichat_mode_t mode)
Get mode-specific default value for –websocket-port.
const void * get_default_port(asciichat_mode_t mode)
Get mode-specific default value for –port.

References get_default_port(), and get_default_websocket_port().

Referenced by options_init().

◆ get_default_log_file()

const void * get_default_log_file ( asciichat_mode_t  mode)

Get mode-specific default value for –log-file.

Returns empty string - the actual log file path is determined by options_get_log_filepath() which properly handles debug vs release builds and platform-specific temp directories.

Debug builds: Uses current working directory (server.log, client.log, etc.) Release builds: Uses $TMPDIR/ascii-chat/server.log, etc.

Definition at line 32 of file options/registry/mode_defaults.c.

32 {
33 (void)mode; // Unused
34 // Return empty string - let options_get_log_filepath() handle the defaults
35 return "";
36}

◆ get_default_port()

const void * get_default_port ( asciichat_mode_t  mode)

Get mode-specific default value for –port.

Definition at line 50 of file options/registry/mode_defaults.c.

50 {
51 switch (mode) {
52 case MODE_SERVER:
53 return &g_port_server;
54 case MODE_CLIENT:
55 return &g_port_client;
56 case MODE_DISCOVERY_SERVICE:
57 return &g_port_discovery_service;
58 case MODE_DISCOVERY:
59 return &g_port_discovery;
60 case MODE_MIRROR:
61 case MODE_INVALID:
62 default:
63 // Fallback
64 return &g_port_server;
65 }
66}

Referenced by apply_mode_specific_defaults().

◆ get_default_websocket_port()

const void * get_default_websocket_port ( asciichat_mode_t  mode)

Get mode-specific default value for –websocket-port.

Definition at line 78 of file options/registry/mode_defaults.c.

78 {
79 switch (mode) {
80 case MODE_SERVER:
81 return &g_websocket_port_server;
82 case MODE_DISCOVERY_SERVICE:
83 return &g_websocket_port_discovery_service;
84 case MODE_CLIENT:
85 case MODE_MIRROR:
86 case MODE_DISCOVERY:
87 case MODE_INVALID:
88 default:
89 // Fallback (should not be used for client/mirror/discovery)
90 return &g_websocket_port_server;
91 }
92}

Referenced by apply_mode_specific_defaults().