--- lbbs/src/menu.c 2005/03/20 17:37:14 1.10 +++ lbbs/src/menu.c 2005/03/21 04:43:47 1.11 @@ -88,7 +88,7 @@ load_menu (MENU_SET * p_menu_set, const { if (buffer[0] == '#') { - break; + continue; } if (buffer[0] == '%') { @@ -99,8 +99,9 @@ load_menu (MENU_SET * p_menu_set, const } if (ireg ("^!([A-Za-z0-9_.]+)[[:space:]]*([0-9]+)," "[[:space:]]*([0-9]+),[[:space:]]*([0-9]+)," - "[[:space:]]*\"([A-Za-z0-9_]+)\",[[:space:]]*\"([^\"]+)\"", - buffer, 7, pmatch) == 0) + "[[:space:]]*([0-9]+),[[:space:]]*\"([A-Za-z0-9_]+)\"," + "[[:space:]]*\"([^\"]+)\"", + buffer, 8, pmatch) == 0) { p_menu_set->p_menu[i]->items[j] = malloc (sizeof (MENU_ITEM)); @@ -126,25 +127,31 @@ load_menu (MENU_SET * p_menu_set, const pmatch[4].rm_eo - pmatch[4].rm_so); temp[pmatch[4].rm_eo - pmatch[4].rm_so] = '\0'; p_menu_set->p_menu[i]->items[j]->priv = atoi (temp); - strncpy (p_menu_set->p_menu[i]->items[j]->name, + strncpy (temp, buffer + pmatch[5].rm_so, pmatch[5].rm_eo - pmatch[5].rm_so); - p_menu_set->p_menu[i]->items[j]->name[pmatch[5].rm_eo - - pmatch[5].rm_so] = - '\0'; - strncpy (p_menu_set->p_menu[i]->items[j]->text, + temp[pmatch[5].rm_eo - pmatch[5].rm_so] = '\0'; + p_menu_set->p_menu[i]->items[j]->level = atoi (temp); + strncpy (p_menu_set->p_menu[i]->items[j]->name, buffer + pmatch[6].rm_so, pmatch[6].rm_eo - pmatch[6].rm_so); - p_menu_set->p_menu[i]->items[j]->text[pmatch[6].rm_eo - + p_menu_set->p_menu[i]->items[j]->name[pmatch[6].rm_eo - pmatch[6].rm_so] = '\0'; + strncpy (p_menu_set->p_menu[i]->items[j]->text, + buffer + pmatch[7].rm_so, + pmatch[7].rm_eo - pmatch[7].rm_so); + p_menu_set->p_menu[i]->items[j]->text[pmatch[7].rm_eo - + pmatch[7].rm_so] = + '\0'; j++; continue; } if (ireg ("^@([A-Za-z0-9_]+)[[:space:]]*([0-9]+)," "[[:space:]]*([0-9]+),[[:space:]]*([0-9]+)," - "[[:space:]]*\"([A-Za-z0-9_]+)\",[[:space:]]*\"([^\"]+)\"", - buffer, 7, pmatch) == 0) + "[[:space:]]*([0-9]+),[[:space:]]*\"([A-Za-z0-9_]+)\"," + "[[:space:]]*\"([^\"]+)\"", + buffer, 8, pmatch) == 0) { p_menu_set->p_menu[i]->items[j] = malloc (sizeof (MENU_ITEM)); @@ -170,18 +177,23 @@ load_menu (MENU_SET * p_menu_set, const pmatch[4].rm_eo - pmatch[4].rm_so); temp[pmatch[4].rm_eo - pmatch[4].rm_so] = '\0'; p_menu_set->p_menu[i]->items[j]->priv = atoi (temp); - strncpy (p_menu_set->p_menu[i]->items[j]->name, + strncpy (temp, buffer + pmatch[5].rm_so, pmatch[5].rm_eo - pmatch[5].rm_so); - p_menu_set->p_menu[i]->items[j]->name[pmatch[5].rm_eo - - pmatch[5].rm_so] = - '\0'; - strncpy (p_menu_set->p_menu[i]->items[j]->text, + temp[pmatch[5].rm_eo - pmatch[5].rm_so] = '\0'; + p_menu_set->p_menu[i]->items[j]->level = atoi (temp); + strncpy (p_menu_set->p_menu[i]->items[j]->name, buffer + pmatch[6].rm_so, pmatch[6].rm_eo - pmatch[6].rm_so); - p_menu_set->p_menu[i]->items[j]->text[pmatch[6].rm_eo - + p_menu_set->p_menu[i]->items[j]->name[pmatch[6].rm_eo - pmatch[6].rm_so] = '\0'; + strncpy (p_menu_set->p_menu[i]->items[j]->text, + buffer + pmatch[7].rm_so, + pmatch[7].rm_eo - pmatch[7].rm_so); + p_menu_set->p_menu[i]->items[j]->text[pmatch[7].rm_eo - + pmatch[7].rm_so] = + '\0'; j++; continue; } @@ -288,7 +300,8 @@ display_menu (MENU * p_menu) for (i = 0; i < p_menu->item_count; i++) { - if (checkpriv (&BBS_priv, 0, p_menu->items[i]->priv) == 0) + if (checkpriv (&BBS_priv, 0, p_menu->items[i]->priv) == 0 + || checklevel (&BBS_priv, p_menu->items[i]->level) == 0) { p_menu->items[i]->display = 0; }