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

Groff/troff formatting utilities for man page generation. More...

Go to the source code of this file.

Functions

const char * manpage_fmt_escape_groff (const char *str)
 
void manpage_fmt_write_section (FILE *f, const char *section_name)
 
void manpage_fmt_write_blank_line (FILE *f)
 
void manpage_fmt_write_bold (FILE *f, const char *text)
 
void manpage_fmt_write_italic (FILE *f, const char *text)
 
void manpage_fmt_write_tagged_paragraph (FILE *f)
 
void manpage_fmt_write_text (FILE *f, const char *text)
 
void manpage_fmt_write_title (FILE *f, const char *program_name, const char *mode_name, const char *brief_description)
 

Detailed Description

Groff/troff formatting utilities for man page generation.

Provides utilities for generating properly formatted groff/troff output for man pages.

Definition in file formatter.c.

Function Documentation

◆ manpage_fmt_escape_groff()

const char * manpage_fmt_escape_groff ( const char *  str)

Definition at line 21 of file formatter.c.

21 {
22 // For simplicity, we'll just return the string as-is
23 // In a more robust implementation, we'd escape special characters
24 // But for man page content, most strings don't have problematic characters
25 return str ? str : "";
26}

Referenced by manpage_fmt_write_title().

◆ manpage_fmt_write_blank_line()

void manpage_fmt_write_blank_line ( FILE *  f)

Definition at line 35 of file formatter.c.

35 {
36 if (!f) {
37 return;
38 }
39 fprintf(f, "\n");
40}

Referenced by options_config_generate_manpage_template().

◆ manpage_fmt_write_bold()

void manpage_fmt_write_bold ( FILE *  f,
const char *  text 
)

Definition at line 42 of file formatter.c.

42 {
43 if (!f || !text) {
44 return;
45 }
46 fprintf(f, ".B %s\n", text);
47}

◆ manpage_fmt_write_italic()

void manpage_fmt_write_italic ( FILE *  f,
const char *  text 
)

Definition at line 49 of file formatter.c.

49 {
50 if (!f || !text) {
51 return;
52 }
53 fprintf(f, ".I %s\n", text);
54}

◆ manpage_fmt_write_section()

void manpage_fmt_write_section ( FILE *  f,
const char *  section_name 
)

Definition at line 28 of file formatter.c.

28 {
29 if (!f || !section_name) {
30 return;
31 }
32 fprintf(f, ".SH %s\n", section_name);
33}

Referenced by options_config_generate_manpage_template().

◆ manpage_fmt_write_tagged_paragraph()

void manpage_fmt_write_tagged_paragraph ( FILE *  f)

Definition at line 56 of file formatter.c.

56 {
57 if (!f) {
58 return;
59 }
60 fprintf(f, ".TP\n");
61}

◆ manpage_fmt_write_text()

void manpage_fmt_write_text ( FILE *  f,
const char *  text 
)

Definition at line 63 of file formatter.c.

63 {
64 if (!f) {
65 return;
66 }
67
68 if (text) {
69 fprintf(f, "%s\n", text);
70 } else {
71 fprintf(f, "\n");
72 }
73}

◆ manpage_fmt_write_title()

void manpage_fmt_write_title ( FILE *  f,
const char *  program_name,
const char *  mode_name,
const char *  brief_description 
)

Definition at line 75 of file formatter.c.

75 {
76 if (!f || !program_name || !brief_description) {
77 return;
78 }
79
80 time_t now = time(NULL);
81 struct tm tm_buf;
82 platform_localtime(&now, &tm_buf);
83 char date_str[32];
84 strftime(date_str, sizeof(date_str), "%B %Y", &tm_buf);
85
86 // Build full program name (e.g., "ascii-chat-server" or just "ascii-chat")
87 char full_name[256];
88 if (mode_name) {
89 safe_snprintf(full_name, sizeof(full_name), "%s-%s", program_name, mode_name);
90 } else {
91 safe_snprintf(full_name, sizeof(full_name), "%s", program_name);
92 }
93
94 // .TH NAME SECTION DATE SOURCE MANUAL
95 // Section 1 = user commands, 5 = file formats
96 fprintf(f, ".TH %s 1 \"%s\" \"%s\" \"User Commands\"\n", full_name, date_str, program_name);
97 fprintf(f, ".SH NAME\n");
98 fprintf(f, ".B %s\n", full_name);
99 fprintf(f, "\\- %s\n", manpage_fmt_escape_groff(brief_description));
100 fprintf(f, "\n");
101}
const char * manpage_fmt_escape_groff(const char *str)
Definition formatter.c:21
int safe_snprintf(char *buffer, size_t buffer_size, const char *format,...)
Safe formatted string printing to buffer.
Definition system.c:456
asciichat_error_t platform_localtime(const time_t *timer, struct tm *result)
Definition util.c:48

References manpage_fmt_escape_groff(), platform_localtime(), and safe_snprintf().

Referenced by options_config_generate_manpage_template().