/[LeafOK_CVS]/lbbs/src/menu.c
ViewVC logotype

Diff of /lbbs/src/menu.c

Parent Directory Parent Directory | Revision Log Revision Log | View Patch Patch

Revision 1.26 by sysadm, Mon May 5 02:54:27 2025 UTC Revision 1.29 by sysadm, Mon May 5 14:27:57 2025 UTC
# Line 50  int load_menu(MENU_SET *p_menu_set, cons Line 50  int load_menu(MENU_SET *p_menu_set, cons
50                  return -1;                  return -1;
51          }          }
52    
53          strcpy(p_menu_set->conf_file, conf_file);          strncpy(p_menu_set->conf_file, conf_file, sizeof(p_menu_set->conf_file) - 1);
54            p_menu_set->conf_file[sizeof(p_menu_set->conf_file) - 1] = '\0';
55    
56          while (fgets(buffer, sizeof(buffer), fin))          while (fgets(buffer, sizeof(buffer), fin))
57          {          {
# Line 62  int load_menu(MENU_SET *p_menu_set, cons Line 63  int load_menu(MENU_SET *p_menu_set, cons
63                          if (ireg("^%S_([A-Za-z0-9_]+)", buffer, 2, pmatch) == 0)                          if (ireg("^%S_([A-Za-z0-9_]+)", buffer, 2, pmatch) == 0)
64                          {                          {
65                                  strncpy(temp, buffer + pmatch[1].rm_so,                                  strncpy(temp, buffer + pmatch[1].rm_so,
66                                                  pmatch[1].rm_eo - pmatch[1].rm_so);                                                  (size_t)(pmatch[1].rm_eo - pmatch[1].rm_so));
67                                  temp[pmatch[1].rm_eo - pmatch[1].rm_so] = '\0';                                  temp[pmatch[1].rm_eo - pmatch[1].rm_so] = '\0';
68                                  sprintf(screen_filename, "%s/MENU_SCR_%s", MENU_TEMP_DIR, temp);                                  snprintf(screen_filename, sizeof(screen_filename), "%s/MENU_SCR_%s", MENU_TEMP_DIR, temp);
69    
70                                  if ((fout = fopen(screen_filename, "w")) == NULL)                                  if ((fout = fopen(screen_filename, "w")) == NULL)
71                                  {                                  {
# Line 92  int load_menu(MENU_SET *p_menu_set, cons Line 93  int load_menu(MENU_SET *p_menu_set, cons
93    
94                                  strncpy(p_menu_set->p_menu[i]->name,                                  strncpy(p_menu_set->p_menu[i]->name,
95                                                  buffer + pmatch[1].rm_so,                                                  buffer + pmatch[1].rm_so,
96                                                  pmatch[1].rm_eo - pmatch[1].rm_so);                                                  (size_t)(pmatch[1].rm_eo - pmatch[1].rm_so));
97                                  p_menu_set->p_menu[i]->name[pmatch[1].rm_eo - pmatch[1].rm_so] =                                  p_menu_set->p_menu[i]->name[pmatch[1].rm_eo - pmatch[1].rm_so] =
98                                          '\0';                                          '\0';
99    
# Line 122  int load_menu(MENU_SET *p_menu_set, cons Line 123  int load_menu(MENU_SET *p_menu_set, cons
123                                                  p_menu_set->p_menu[i]->items[j]->submenu = 1;                                                  p_menu_set->p_menu[i]->items[j]->submenu = 1;
124                                                  strncpy(p_menu_set->p_menu[i]->items[j]->action,                                                  strncpy(p_menu_set->p_menu[i]->items[j]->action,
125                                                                  buffer + pmatch[1].rm_so,                                                                  buffer + pmatch[1].rm_so,
126                                                                  pmatch[1].rm_eo - pmatch[1].rm_so);                                                                  (size_t)(pmatch[1].rm_eo - pmatch[1].rm_so));
127                                                  p_menu_set->p_menu[i]->items[j]->action[pmatch[1].rm_eo -                                                  p_menu_set->p_menu[i]->items[j]->action[pmatch[1].rm_eo -
128                                                                                                                                  pmatch[1].rm_so] = '\0';                                                                                                                                  pmatch[1].rm_so] = '\0';
129                                                  strncpy(temp, buffer + pmatch[2].rm_so,                                                  strncpy(temp, buffer + pmatch[2].rm_so,
130                                                                  pmatch[2].rm_eo - pmatch[2].rm_so);                                                                  (size_t)(pmatch[2].rm_eo - pmatch[2].rm_so));
131                                                  temp[pmatch[2].rm_eo - pmatch[2].rm_so] = '\0';                                                  temp[pmatch[2].rm_eo - pmatch[2].rm_so] = '\0';
132                                                  p_menu_set->p_menu[i]->items[j]->row = atoi(temp);                                                  p_menu_set->p_menu[i]->items[j]->row = atoi(temp);
133                                                  strncpy(temp,                                                  strncpy(temp,
134                                                                  buffer + pmatch[3].rm_so,                                                                  buffer + pmatch[3].rm_so,
135                                                                  pmatch[3].rm_eo - pmatch[3].rm_so);                                                                  (size_t)(pmatch[3].rm_eo - pmatch[3].rm_so));
136                                                  temp[pmatch[3].rm_eo - pmatch[3].rm_so] = '\0';                                                  temp[pmatch[3].rm_eo - pmatch[3].rm_so] = '\0';
137                                                  p_menu_set->p_menu[i]->items[j]->col = atoi(temp);                                                  p_menu_set->p_menu[i]->items[j]->col = atoi(temp);
138                                                  strncpy(temp,                                                  strncpy(temp,
139                                                                  buffer + pmatch[4].rm_so,                                                                  buffer + pmatch[4].rm_so,
140                                                                  pmatch[4].rm_eo - pmatch[4].rm_so);                                                                  (size_t)(pmatch[4].rm_eo - pmatch[4].rm_so));
141                                                  temp[pmatch[4].rm_eo - pmatch[4].rm_so] = '\0';                                                  temp[pmatch[4].rm_eo - pmatch[4].rm_so] = '\0';
142                                                  p_menu_set->p_menu[i]->items[j]->priv = atoi(temp);                                                  p_menu_set->p_menu[i]->items[j]->priv = atoi(temp);
143                                                  strncpy(temp,                                                  strncpy(temp,
144                                                                  buffer + pmatch[5].rm_so,                                                                  buffer + pmatch[5].rm_so,
145                                                                  pmatch[5].rm_eo - pmatch[5].rm_so);                                                                  (size_t)(pmatch[5].rm_eo - pmatch[5].rm_so));
146                                                  temp[pmatch[5].rm_eo - pmatch[5].rm_so] = '\0';                                                  temp[pmatch[5].rm_eo - pmatch[5].rm_so] = '\0';
147                                                  p_menu_set->p_menu[i]->items[j]->level = atoi(temp);                                                  p_menu_set->p_menu[i]->items[j]->level = atoi(temp);
148                                                  strncpy(p_menu_set->p_menu[i]->items[j]->name,                                                  strncpy(p_menu_set->p_menu[i]->items[j]->name,
149                                                                  buffer + pmatch[6].rm_so,                                                                  buffer + pmatch[6].rm_so,
150                                                                  pmatch[6].rm_eo - pmatch[6].rm_so);                                                                  (size_t)(pmatch[6].rm_eo - pmatch[6].rm_so));
151                                                  p_menu_set->p_menu[i]->items[j]->name[pmatch[6].rm_eo -                                                  p_menu_set->p_menu[i]->items[j]->name[pmatch[6].rm_eo -
152                                                                                                                            pmatch[6].rm_so] =                                                                                                                            pmatch[6].rm_so] =
153                                                          '\0';                                                          '\0';
154                                                  strncpy(p_menu_set->p_menu[i]->items[j]->text,                                                  strncpy(p_menu_set->p_menu[i]->items[j]->text,
155                                                                  buffer + pmatch[7].rm_so,                                                                  buffer + pmatch[7].rm_so,
156                                                                  pmatch[7].rm_eo - pmatch[7].rm_so);                                                                  (size_t)(pmatch[7].rm_eo - pmatch[7].rm_so));
157                                                  p_menu_set->p_menu[i]->items[j]->text[pmatch[7].rm_eo -                                                  p_menu_set->p_menu[i]->items[j]->text[pmatch[7].rm_eo -
158                                                                                                                            pmatch[7].rm_so] =                                                                                                                            pmatch[7].rm_so] =
159                                                          '\0';                                                          '\0';
# Line 170  int load_menu(MENU_SET *p_menu_set, cons Line 171  int load_menu(MENU_SET *p_menu_set, cons
171                                                  p_menu_set->p_menu[i]->items[j]->submenu = 0;                                                  p_menu_set->p_menu[i]->items[j]->submenu = 0;
172                                                  strncpy(p_menu_set->p_menu[i]->items[j]->action,                                                  strncpy(p_menu_set->p_menu[i]->items[j]->action,
173                                                                  buffer + pmatch[1].rm_so,                                                                  buffer + pmatch[1].rm_so,
174                                                                  pmatch[1].rm_eo - pmatch[1].rm_so);                                                                  (size_t)(pmatch[1].rm_eo - pmatch[1].rm_so));
175                                                  p_menu_set->p_menu[i]->items[j]->action[pmatch[1].rm_eo -                                                  p_menu_set->p_menu[i]->items[j]->action[pmatch[1].rm_eo -
176                                                                                                                                  pmatch[1].rm_so] = '\0';                                                                                                                                  pmatch[1].rm_so] = '\0';
177                                                  strncpy(temp, buffer + pmatch[2].rm_so,                                                  strncpy(temp, buffer + pmatch[2].rm_so,
178                                                                  pmatch[2].rm_eo - pmatch[2].rm_so);                                                                  (size_t)(pmatch[2].rm_eo - pmatch[2].rm_so));
179                                                  temp[pmatch[2].rm_eo - pmatch[2].rm_so] = '\0';                                                  temp[pmatch[2].rm_eo - pmatch[2].rm_so] = '\0';
180                                                  p_menu_set->p_menu[i]->items[j]->row = atoi(temp);                                                  p_menu_set->p_menu[i]->items[j]->row = atoi(temp);
181                                                  strncpy(temp,                                                  strncpy(temp,
182                                                                  buffer + pmatch[3].rm_so,                                                                  buffer + pmatch[3].rm_so,
183                                                                  pmatch[3].rm_eo - pmatch[3].rm_so);                                                                  (size_t)(pmatch[3].rm_eo - pmatch[3].rm_so));
184                                                  temp[pmatch[3].rm_eo - pmatch[3].rm_so] = '\0';                                                  temp[pmatch[3].rm_eo - pmatch[3].rm_so] = '\0';
185                                                  p_menu_set->p_menu[i]->items[j]->col = atoi(temp);                                                  p_menu_set->p_menu[i]->items[j]->col = atoi(temp);
186                                                  strncpy(temp,                                                  strncpy(temp,
187                                                                  buffer + pmatch[4].rm_so,                                                                  buffer + pmatch[4].rm_so,
188                                                                  pmatch[4].rm_eo - pmatch[4].rm_so);                                                                  (size_t)(pmatch[4].rm_eo - pmatch[4].rm_so));
189                                                  temp[pmatch[4].rm_eo - pmatch[4].rm_so] = '\0';                                                  temp[pmatch[4].rm_eo - pmatch[4].rm_so] = '\0';
190                                                  p_menu_set->p_menu[i]->items[j]->priv = atoi(temp);                                                  p_menu_set->p_menu[i]->items[j]->priv = atoi(temp);
191                                                  strncpy(temp,                                                  strncpy(temp,
192                                                                  buffer + pmatch[5].rm_so,                                                                  buffer + pmatch[5].rm_so,
193                                                                  pmatch[5].rm_eo - pmatch[5].rm_so);                                                                  (size_t)(pmatch[5].rm_eo - pmatch[5].rm_so));
194                                                  temp[pmatch[5].rm_eo - pmatch[5].rm_so] = '\0';                                                  temp[pmatch[5].rm_eo - pmatch[5].rm_so] = '\0';
195                                                  p_menu_set->p_menu[i]->items[j]->level = atoi(temp);                                                  p_menu_set->p_menu[i]->items[j]->level = atoi(temp);
196                                                  strncpy(p_menu_set->p_menu[i]->items[j]->name,                                                  strncpy(p_menu_set->p_menu[i]->items[j]->name,
197                                                                  buffer + pmatch[6].rm_so,                                                                  buffer + pmatch[6].rm_so,
198                                                                  pmatch[6].rm_eo - pmatch[6].rm_so);                                                                  (size_t)(pmatch[6].rm_eo - pmatch[6].rm_so));
199                                                  p_menu_set->p_menu[i]->items[j]->name[pmatch[6].rm_eo -                                                  p_menu_set->p_menu[i]->items[j]->name[pmatch[6].rm_eo -
200                                                                                                                            pmatch[6].rm_so] =                                                                                                                            pmatch[6].rm_so] =
201                                                          '\0';                                                          '\0';
202                                                  strncpy(p_menu_set->p_menu[i]->items[j]->text,                                                  strncpy(p_menu_set->p_menu[i]->items[j]->text,
203                                                                  buffer + pmatch[7].rm_so,                                                                  buffer + pmatch[7].rm_so,
204                                                                  pmatch[7].rm_eo - pmatch[7].rm_so);                                                                  (size_t)(pmatch[7].rm_eo - pmatch[7].rm_so));
205                                                  p_menu_set->p_menu[i]->items[j]->text[pmatch[7].rm_eo -                                                  p_menu_set->p_menu[i]->items[j]->text[pmatch[7].rm_eo -
206                                                                                                                            pmatch[7].rm_so] =                                                                                                                            pmatch[7].rm_so] =
207                                                          '\0';                                                          '\0';
# Line 214  int load_menu(MENU_SET *p_menu_set, cons Line 215  int load_menu(MENU_SET *p_menu_set, cons
215                                                  p_menu_set->p_menu[i]->title.show = 1;                                                  p_menu_set->p_menu[i]->title.show = 1;
216                                                  strncpy(temp,                                                  strncpy(temp,
217                                                                  buffer + pmatch[1].rm_so,                                                                  buffer + pmatch[1].rm_so,
218                                                                  pmatch[1].rm_eo - pmatch[1].rm_so);                                                                  (size_t)(pmatch[1].rm_eo - pmatch[1].rm_so));
219                                                  temp[pmatch[1].rm_eo - pmatch[1].rm_so] = '\0';                                                  temp[pmatch[1].rm_eo - pmatch[1].rm_so] = '\0';
220                                                  p_menu_set->p_menu[i]->title.row = atoi(temp);                                                  p_menu_set->p_menu[i]->title.row = atoi(temp);
221                                                  strncpy(temp,                                                  strncpy(temp,
222                                                                  buffer + pmatch[2].rm_so,                                                                  buffer + pmatch[2].rm_so,
223                                                                  pmatch[2].rm_eo - pmatch[2].rm_so);                                                                  (size_t)(pmatch[2].rm_eo - pmatch[2].rm_so));
224                                                  temp[pmatch[2].rm_eo - pmatch[2].rm_so] = '\0';                                                  temp[pmatch[2].rm_eo - pmatch[2].rm_so] = '\0';
225                                                  p_menu_set->p_menu[i]->title.col = atoi(temp);                                                  p_menu_set->p_menu[i]->title.col = atoi(temp);
226                                                  strncpy(p_menu_set->p_menu[i]->title.text,                                                  strncpy(p_menu_set->p_menu[i]->title.text,
227                                                                  buffer + pmatch[3].rm_so,                                                                  buffer + pmatch[3].rm_so,
228                                                                  pmatch[3].rm_eo - pmatch[3].rm_so);                                                                  (size_t)(pmatch[3].rm_eo - pmatch[3].rm_so));
229                                                  p_menu_set->p_menu[i]->title.text[pmatch[3].rm_eo -                                                  p_menu_set->p_menu[i]->title.text[pmatch[3].rm_eo -
230                                                                                                                    pmatch[3].rm_so] =                                                                                                                    pmatch[3].rm_so] =
231                                                          '\0';                                                          '\0';
# Line 237  int load_menu(MENU_SET *p_menu_set, cons Line 238  int load_menu(MENU_SET *p_menu_set, cons
238                                                  p_menu_set->p_menu[i]->screen.show = 1;                                                  p_menu_set->p_menu[i]->screen.show = 1;
239                                                  strncpy(temp,                                                  strncpy(temp,
240                                                                  buffer + pmatch[1].rm_so,                                                                  buffer + pmatch[1].rm_so,
241                                                                  pmatch[1].rm_eo - pmatch[1].rm_so);                                                                  (size_t)(pmatch[1].rm_eo - pmatch[1].rm_so));
242                                                  temp[pmatch[1].rm_eo - pmatch[1].rm_so] = '\0';                                                  temp[pmatch[1].rm_eo - pmatch[1].rm_so] = '\0';
243                                                  p_menu_set->p_menu[i]->screen.row = atoi(temp);                                                  p_menu_set->p_menu[i]->screen.row = atoi(temp);
244                                                  strncpy(temp,                                                  strncpy(temp,
245                                                                  buffer + pmatch[2].rm_so,                                                                  buffer + pmatch[2].rm_so,
246                                                                  pmatch[2].rm_eo - pmatch[2].rm_so);                                                                  (size_t)(pmatch[2].rm_eo - pmatch[2].rm_so));
247                                                  temp[pmatch[2].rm_eo - pmatch[2].rm_so] = '\0';                                                  temp[pmatch[2].rm_eo - pmatch[2].rm_so] = '\0';
248                                                  p_menu_set->p_menu[i]->screen.col = atoi(temp);                                                  p_menu_set->p_menu[i]->screen.col = atoi(temp);
249                                                  strncpy(temp,                                                  strncpy(temp,
250                                                                  buffer + pmatch[3].rm_so,                                                                  buffer + pmatch[3].rm_so,
251                                                                  pmatch[3].rm_eo - pmatch[3].rm_so);                                                                  (size_t)(pmatch[3].rm_eo - pmatch[3].rm_so));
252                                                  temp[pmatch[3].rm_eo - pmatch[3].rm_so] = '\0';                                                  temp[pmatch[3].rm_eo - pmatch[3].rm_so] = '\0';
253                                                  sprintf(p_menu_set->p_menu[i]->screen.filename,                                                  snprintf(p_menu_set->p_menu[i]->screen.filename,
254                                                                  "%s/MENU_SCR_%s", MENU_TEMP_DIR, temp);                                                                   sizeof(p_menu_set->p_menu[i]->screen.filename),
255                                                                     "%s/MENU_SCR_%s", MENU_TEMP_DIR, temp);
256                                                  continue;                                                  continue;
257                                          }                                          }
258                                  }                                  }
# Line 514  int reload_menu(MENU_SET *p_menu_set) Line 516  int reload_menu(MENU_SET *p_menu_set)
516          int result;          int result;
517          char conf_file[FILE_PATH_LEN];          char conf_file[FILE_PATH_LEN];
518    
519          strncpy(conf_file, p_menu_set->conf_file, sizeof(conf_file));          strncpy(conf_file, p_menu_set->conf_file, sizeof(conf_file) - 1);
520            conf_file[sizeof(conf_file) - 1] = '\0';
521    
522          unload_menu(p_menu_set);          unload_menu(p_menu_set);
523          result = load_menu(p_menu_set, conf_file);          result = load_menu(p_menu_set, conf_file);
524    


Legend:
Removed lines/characters  
Changed lines/characters
  Added lines/characters

webmaster@leafok.com
ViewVC Help
Powered by ViewVC 1.3.0-beta1