--- lbbs/src/menu.c 2025/04/28 03:31:00 1.21 +++ lbbs/src/menu.c 2025/05/03 13:41:21 1.24 @@ -17,9 +17,15 @@ #include "bbs.h" #include "bbs_cmd.h" +#include "user_priv.h" +#include "reg_ex.h" +#include "bbs_cmd.h" #include "menu.h" +#include "log.h" #include "io.h" +#include "screen.h" #include "common.h" +#include #include #include #include @@ -31,7 +37,9 @@ int load_menu(MENU_SET *p_menu_set, cons { FILE *fin, *fout; int i = 0, j; - char buffer[256], screen_filename[256], temp[256]; + char buffer[LINE_BUFFER_LEN]; + char screen_filename[LINE_BUFFER_LEN]; + char temp[LINE_BUFFER_LEN]; regmatch_t pmatch[10]; if ((fin = fopen(conf_file, "r")) == NULL) @@ -42,7 +50,7 @@ int load_menu(MENU_SET *p_menu_set, cons strcpy(p_menu_set->conf_file, conf_file); - while (fgets(buffer, 255, fin)) + while (fgets(buffer, sizeof(buffer), fin)) { switch (buffer[0]) { @@ -62,7 +70,7 @@ int load_menu(MENU_SET *p_menu_set, cons return -2; } - while (fgets(buffer, 255, fin)) + while (fgets(buffer, sizeof(buffer), fin)) { if (buffer[0] != '%') fputs(buffer, fout); @@ -88,7 +96,7 @@ int load_menu(MENU_SET *p_menu_set, cons j = 0; - while (fgets(buffer, 255, fin)) + while (fgets(buffer, sizeof(buffer), fin)) { if (buffer[0] == '#') { @@ -273,8 +281,7 @@ get_menu(MENU_SET *p_menu_set, const cha return NULL; } -static void -display_menu_cursor(MENU *p_menu, int show) +static void display_menu_cursor(MENU *p_menu, int show) { moveto((p_menu->items[p_menu->item_cur_pos])->r_row, (p_menu->items[p_menu->item_cur_pos])->r_col - 2); @@ -359,6 +366,7 @@ int menu_control(MENU_SET *p_menu_set, i switch (key) { case CR: + igetch(1); // Cleanup remaining '\n' in the buffer case KEY_RIGHT: if (p_menu->items[p_menu->item_cur_pos]->submenu) { @@ -470,9 +478,9 @@ void unload_menu(MENU_SET *p_menu_set) int reload_menu(MENU_SET *p_menu_set) { int result; - char conf_file[256]; + char conf_file[FILE_PATH_LEN]; - strcpy(conf_file, p_menu_set->conf_file); + strncpy(conf_file, p_menu_set->conf_file, sizeof(conf_file)); unload_menu(p_menu_set); result = load_menu(p_menu_set, conf_file);