| 75 |
if (ireg ("^%menu ([A-Za-z0-9_]+)", buffer, 2, pmatch) == 0) |
if (ireg ("^%menu ([A-Za-z0-9_]+)", buffer, 2, pmatch) == 0) |
| 76 |
{ |
{ |
| 77 |
p_menu_set->p_menu[i] = malloc (sizeof (MENU)); |
p_menu_set->p_menu[i] = malloc (sizeof (MENU)); |
| 78 |
|
p_menu_set->p_menu[i]->title.show = 0; |
| 79 |
|
p_menu_set->p_menu[i]->screen.show = 0; |
| 80 |
|
|
| 81 |
strncpy (p_menu_set->p_menu[i]->name, |
strncpy (p_menu_set->p_menu[i]->name, |
| 82 |
buffer + pmatch[1].rm_so, |
buffer + pmatch[1].rm_so, |
| 203 |
"[[:space:]]*([0-9]+),[[:space:]]*\"([^\"]+)\"", |
"[[:space:]]*([0-9]+),[[:space:]]*\"([^\"]+)\"", |
| 204 |
buffer, 4, pmatch) == 0) |
buffer, 4, pmatch) == 0) |
| 205 |
{ |
{ |
| 206 |
|
p_menu_set->p_menu[i]->title.show = 1; |
| 207 |
strncpy (temp, |
strncpy (temp, |
| 208 |
buffer + pmatch[1].rm_so, |
buffer + pmatch[1].rm_so, |
| 209 |
pmatch[1].rm_eo - pmatch[1].rm_so); |
pmatch[1].rm_eo - pmatch[1].rm_so); |
| 226 |
"[[:space:]]*([0-9]+),[[:space:]]*S_([A-Za-z0-9_]+)", |
"[[:space:]]*([0-9]+),[[:space:]]*S_([A-Za-z0-9_]+)", |
| 227 |
buffer, 4, pmatch) == 0) |
buffer, 4, pmatch) == 0) |
| 228 |
{ |
{ |
| 229 |
|
p_menu_set->p_menu[i]->screen.show = 1; |
| 230 |
strncpy (temp, |
strncpy (temp, |
| 231 |
buffer + pmatch[1].rm_so, |
buffer + pmatch[1].rm_so, |
| 232 |
pmatch[1].rm_eo - pmatch[1].rm_so); |
pmatch[1].rm_eo - pmatch[1].rm_so); |
| 293 |
if (p_menu == NULL) |
if (p_menu == NULL) |
| 294 |
return -1; |
return -1; |
| 295 |
|
|
| 296 |
show_top (p_menu->title.text); |
if (p_menu->title.show) |
| 297 |
|
show_top (p_menu->title.text); |
| 298 |
|
|
| 299 |
moveto (p_menu->screen.row, p_menu->screen.col); |
if (p_menu->screen.show) |
| 300 |
if (display_file (p_menu->screen.filename) != 0) |
{ |
| 301 |
log_error ("Display menu screen <%s> failed!\n", p_menu->screen.filename); |
moveto (p_menu->screen.row, p_menu->screen.col); |
| 302 |
|
if (display_file (p_menu->screen.filename) != 0) |
| 303 |
|
log_error ("Display menu screen <%s> failed!\n", |
| 304 |
|
p_menu->screen.filename); |
| 305 |
|
} |
| 306 |
|
|
| 307 |
row = p_menu->items[0]->row; |
row = p_menu->items[0]->row; |
| 308 |
col = p_menu->items[0]->col; |
col = p_menu->items[0]->col; |
| 310 |
for (i = 0; i < p_menu->item_count; i++) |
for (i = 0; i < p_menu->item_count; i++) |
| 311 |
{ |
{ |
| 312 |
if (checkpriv (&BBS_priv, 0, p_menu->items[i]->priv) == 0 |
if (checkpriv (&BBS_priv, 0, p_menu->items[i]->priv) == 0 |
| 313 |
|| checklevel (&BBS_priv, p_menu->items[i]->level) == 0) |
|| checklevel (&BBS_priv, p_menu->items[i]->level) == 0) |
| 314 |
{ |
{ |
| 315 |
p_menu->items[i]->display = 0; |
p_menu->items[i]->display = 0; |
| 316 |
} |
} |
| 397 |
display_menu_cursor (p_menu, 0); |
display_menu_cursor (p_menu, 0); |
| 398 |
p_menu->item_cur_pos = p_menu->item_count - 1; |
p_menu->item_cur_pos = p_menu->item_count - 1; |
| 399 |
while (!p_menu->items[p_menu->item_cur_pos]->display |
while (!p_menu->items[p_menu->item_cur_pos]->display |
| 400 |
|| p_menu->items[p_menu->item_cur_pos]->priv != 0 |
|| p_menu->items[p_menu->item_cur_pos]->priv != 0 |
| 401 |
|| p_menu->items[p_menu->item_cur_pos]->level != 0) |
|| p_menu->items[p_menu->item_cur_pos]->level != 0) |
| 402 |
p_menu->item_cur_pos--; |
p_menu->item_cur_pos--; |
| 403 |
display_menu_cursor (p_menu, 1); |
display_menu_cursor (p_menu, 1); |
| 404 |
break; |
break; |