diff options
Diffstat (limited to 'mbbsd/fav.c')
-rw-r--r-- | mbbsd/fav.c | 22 |
1 files changed, 15 insertions, 7 deletions
diff --git a/mbbsd/fav.c b/mbbsd/fav.c index 56b3b8c3..8aa132e2 100644 --- a/mbbsd/fav.c +++ b/mbbsd/fav.c @@ -43,6 +43,7 @@ static int fav_number; /* definition of fav stack, the top one is in use now. */ static int fav_stack_num = 0; static fav_t *fav_stack[FAV_MAXDEPTH] = {0}; +static fav_t *fav_root = NULL; static char dirty = 0; @@ -288,7 +289,7 @@ fav_item_copy(fav_type_t *target, const fav_type_t *source){ } inline fav_t *get_fav_root(void){ - return fav_stack[0]; + return fav_root; } /** @@ -444,6 +445,16 @@ void fav_folder_out(void) fav_stack_pop(); } +void fav_enter(void) +{ + fav_stack_push_fav(fav_root); +} + +void fav_leave(void) +{ + fav_stack_pop(); +} + static void read_favrec(FILE *frp, fav_t *fp) { int i; @@ -503,14 +514,12 @@ int fav_load(void) { FILE *frp; char buf[128]; - fav_t *fp; if (fav_stack_num > 0) return -1; setuserfile(buf, FAV4); if (!dashf(buf)) { - fp = (fav_t *)fav_malloc(sizeof(fav_t)); - fav_stack_push_fav(fp); + fav_root = (fav_t *)fav_malloc(sizeof(fav_t)); #ifdef MEM_CHECK fav_set_memcheck(MEM_CHECK); #endif @@ -519,10 +528,9 @@ int fav_load(void) if ((frp = fopen(buf, "r")) == NULL) return -1; - fp = (fav_t *)fav_malloc(sizeof(fav_t)); + fav_root = (fav_t *)fav_malloc(sizeof(fav_t)); fav_number = 0; - read_favrec(frp, fp); - fav_stack_push_fav(fp); + read_favrec(frp, fav_root); fclose(frp); #ifdef MEM_CHECK fav_set_memcheck(MEM_CHECK); |