lorid

convert chordpro to pdf
git clone git://git.relim.de/lorid.git
Log | Files | Refs | README | LICENSE

commit 33e49574529be97e5266afdbcd2feed9184213be
parent af0bbfe83e52c25273ef1b4a4caa77211117b43c
Author: nibo <nibo@relim.de>
Date:   Sat, 29 Mar 2025 19:06:27 +0100

Replace sprintf with snprintf

Diffstat:
Msrc/chord_diagram.c | 12+++++++-----
Msrc/chordpro.c | 2+-
Msrc/config.c | 12+++++++-----
Msrc/core.c | 4++--
Msrc/lorid.c | 6+++---
Msrc/out_pdf.c | 11++++++-----
6 files changed, 26 insertions(+), 21 deletions(-)

diff --git a/src/chord_diagram.c b/src/chord_diagram.c @@ -456,9 +456,10 @@ string_diagram_draw( } } else { double base_pos_x; - char base_position[5]; + size_t base_size = 5; + char base_position[base_size]; base_position[4] = 0; - sprintf((char *)&base_position, "%d", diagram->base_fret); + snprintf((char *)&base_position, base_size, "%d", diagram->base_fret); if (diagram->base_fret > 9) { base_pos_x = x - field_width - field_width; } else { @@ -689,9 +690,10 @@ debug_chord_diagram_print(struct ChordDiagram *diagram) printf("---- CHORD DIAGRAM BEGIN ----\n"); printf("show: %s\n", diagram->show ? "true" : "false"); - char str[8]; - str[7] = 0; - sprintf((char *)&str, "#%02X%02X%02X", diagram->color->red, diagram->color->green, diagram->color->blue); + size_t size = 8; + char str[size]; + // str[7] = 0; + snprintf((char *)&str, size, "#%02X%02X%02X", diagram->color->red, diagram->color->green, diagram->color->blue); printf("color: %s\n", str); diff --git a/src/chordpro.c b/src/chordpro.c @@ -383,7 +383,7 @@ cho_rgbcolor_to_string(struct RGBColor *color) { static char str[8]; str[7] = 0; - sprintf((char *)&str, "#%02X%02X%02X", color->red, color->green, color->blue); + snprintf((char *)&str, 8, "#%02X%02X%02X", color->red, color->green, color->blue); return (const char *)&str; } diff --git a/src/config.c b/src/config.c @@ -106,8 +106,9 @@ config_log( { va_list va; va_start(va, msg); - char str[10+strlen(toml_section)+strlen(msg)+1]; - sprintf((char *)&str, "section %s: %s", toml_section, msg); + size_t size = 10 + strlen(toml_section) + strlen(msg) + 1; + char str[size]; + snprintf((char *)&str, size, "section %s: %s", toml_section, msg); util_vlog(ctx->config_filepath, 0, level, str, va); } @@ -554,7 +555,7 @@ config_load_style( char err[25]; if (!config_load_font(style->font, font_section, presence, &err)) { LOG_DEBUG("config_load_font failed."); - sprintf((char *)err_buf, "font.%s", err); + snprintf((char *)err_buf, 38, "font.%s", err); return false; } } @@ -1008,9 +1009,10 @@ config_load(toml_table_t *toml, const char *filepath) key = toml_table_table(styles, key_name); if (key) { style = config->output->styles[ttype]; - char toml_section_name[16+strlen(key_name)+1]; + size_t size = 16 + strlen(key_name) + 1; + char toml_section_name[size]; char err[38]; - sprintf((char *)&toml_section_name, "[output.styles.%s]", key_name); + snprintf((char *)&toml_section_name, size, "[output.styles.%s]", key_name); if (!config_load_style(style, key, &presences[ttype], &err)) { LOG_DEBUG("config_load_style failed."); config_log(&ctx, LOG_ERR, toml_section_name, err); diff --git a/src/core.c b/src/core.c @@ -570,9 +570,9 @@ size_to_string(struct Size *size) { static char str[10+1]; if (size->d > 999999) { - sprintf((char *)&str, ">999.999"); + snprintf((char *)&str, 10+1, ">999.999"); } else { - sprintf((char *)&str, "%.1f%s", size->d, size_type_to_string(size->type)); + snprintf((char *)&str, 10+1, "%.1f%s", size->d, size_type_to_string(size->type)); } return str; } diff --git a/src/lorid.c b/src/lorid.c @@ -68,9 +68,9 @@ main(int argc, char *argv[]) util_log(NULL, 0, LOG_ERR, "Failed to read the environment variable 'HOME'."); return 1; } - char default_config_path[26+strlen(home)+1]; - sprintf(default_config_path, "%s/.config/lorid/config.toml", home); - printf("default config path '%s'\n", default_config_path); + size_t size = 26 + strlen(home) + 1; + char default_config_path[size]; + snprintf(default_config_path, size, "%s/.config/lorid/config.toml", home); config = config_load_from_file(default_config_path); if (!config) { printf("Loading default config instead of reading from a file.\n"); diff --git a/src/out_pdf.c b/src/out_pdf.c @@ -1053,7 +1053,7 @@ image_name(struct PDFContext *ctx, struct ChoImage *image) return NULL; } memset(tmp, 0, PATH_MAX); - sprintf((char *)&tmp, "%ld", s.st_ino); + snprintf((char *)&tmp, PATH_MAX, "%ld", s.st_ino); return strdup(tmp); } @@ -1710,7 +1710,7 @@ numeral_system_number_to_str(enum NumeralSystem system, int n) return str; } else { static char str[11+1]; - sprintf((char *)&str, "%d", n); + snprintf((char *)&str, 11+1, "%d", n); return str; } } @@ -1887,7 +1887,8 @@ pdf_texts_add_toc_entry( double page_no_width, dots_width; int index, line_count; char tmp[strlen(entry->title)+1]; - char page_no[11+1]; + size_t page_no_size = 11 + 1; + char page_no[page_no_size]; strcpy((char *)&tmp, entry->title); width = text_width(ctx, entry->title, style); if (width == ERROR) { @@ -1949,7 +1950,7 @@ pdf_texts_add_toc_entry( (*texts)[ctx->t_ctx.text]->y = ctx->t_ctx.y; (*texts)[ctx->t_ctx.text]->width = width; ctx->t_ctx.text++; - sprintf((char *)&page_no, "%d", entry->page_index+1); + snprintf((char *)&page_no, page_no_size, "%d", entry->page_index+1); width = text_width(ctx, page_no, style); if (width == ERROR) { LOG_DEBUG("text_width failed."); @@ -2009,7 +2010,7 @@ pdf_texts_add_toc_entry( } (*texts)[ctx->t_ctx.text]->width = width; ctx->t_ctx.text++; - sprintf((char *)&page_no, "%d", entry->page_index+1); + snprintf((char *)&page_no, page_no_size, "%d", entry->page_index+1); page_no_width = text_width(ctx, page_no, style); if (page_no_width == ERROR) { LOG_DEBUG("text_width failed.");