| 17 |
#include "bbs.h" |
#include "bbs.h" |
| 18 |
#include "bbs_cmd.h" |
#include "bbs_cmd.h" |
| 19 |
#include "user_priv.h" |
#include "user_priv.h" |
|
#include "reg_ex.h" |
|
| 20 |
#include "bbs_cmd.h" |
#include "bbs_cmd.h" |
| 21 |
#include "menu.h" |
#include "menu.h" |
| 22 |
#include "log.h" |
#include "log.h" |
| 41 |
int i = 0; |
int i = 0; |
| 42 |
int j = 0; |
int j = 0; |
| 43 |
char buffer[LINE_BUFFER_LEN]; |
char buffer[LINE_BUFFER_LEN]; |
| 44 |
|
char temp[LINE_BUFFER_LEN]; |
| 45 |
char screen_filename[FILE_PATH_LEN]; |
char screen_filename[FILE_PATH_LEN]; |
| 46 |
char *p = NULL; |
char *p = NULL; |
| 47 |
char *q = NULL; |
char *q = NULL; |
| 83 |
{ |
{ |
| 84 |
if (p_menu != NULL) |
if (p_menu != NULL) |
| 85 |
{ |
{ |
| 86 |
log_error("Begin new menu without end the prior one, in menu config line %d\n", fin_line); |
log_error("Incomplete menu definition in menu config line %d\n", fin_line); |
| 87 |
return -1; |
return -1; |
| 88 |
} |
} |
| 89 |
p_menu = (MENU *)malloc(sizeof(MENU)); |
p_menu = (MENU *)malloc(sizeof(MENU)); |
| 521 |
{ |
{ |
| 522 |
fin_line++; |
fin_line++; |
| 523 |
|
|
| 524 |
p = strtok_r(buffer, MENU_CONF_DELIM_WITH_SPACE, &saveptr); |
strncpy(temp, buffer, sizeof(temp)); // Duplicate line for strtok_r |
| 525 |
|
p = strtok_r(temp, MENU_CONF_DELIM_WITH_SPACE, &saveptr); |
| 526 |
if (p != NULL && *p == '%') // END of menu screen |
if (p != NULL && *p == '%') // END of menu screen |
| 527 |
{ |
{ |
| 528 |
break; |
break; |
| 587 |
return -1; |
return -1; |
| 588 |
} |
} |
| 589 |
|
|
| 590 |
|
if (p_menu->item_cur_pos > 0 && |
| 591 |
|
checkpriv(&BBS_priv, 0, p_menu->items[p_menu->item_cur_pos]->priv) != 0 && |
| 592 |
|
checklevel(&BBS_priv, p_menu->items[p_menu->item_cur_pos]->level) != 0) |
| 593 |
|
{ |
| 594 |
|
menu_selectable = 1; |
| 595 |
|
} |
| 596 |
|
|
| 597 |
if (p_menu->title.show) |
if (p_menu->title.show) |
| 598 |
{ |
{ |
| 599 |
show_top(p_menu->title.text); |
show_top(p_menu->title.text); |
| 717 |
{ |
{ |
| 718 |
display_menu_cursor(p_menu, 0); |
display_menu_cursor(p_menu, 0); |
| 719 |
p_menu->item_cur_pos = p_menu->item_count - 1; |
p_menu->item_cur_pos = p_menu->item_count - 1; |
| 720 |
while (!p_menu->items[p_menu->item_cur_pos]->display || |
while (p_menu->item_cur_pos >= 0 && (!p_menu->items[p_menu->item_cur_pos]->display || |
| 721 |
p_menu->items[p_menu->item_cur_pos]->priv != 0 || |
p_menu->items[p_menu->item_cur_pos]->priv != 0 || |
| 722 |
p_menu->items[p_menu->item_cur_pos]->level != 0) |
p_menu->items[p_menu->item_cur_pos]->level != 0)) |
| 723 |
{ |
{ |
| 724 |
p_menu->item_cur_pos--; |
p_menu->item_cur_pos--; |
| 725 |
} |
} |