Lines Matching refs:mp

48 append_line(grub_menu_t *mp, grub_line_t *lp)
50 if (mp->gm_start == NULL) {
51 mp->gm_start = lp;
53 mp->gm_end->gl_next = lp;
54 lp->gl_prev = mp->gm_end;
56 mp->gm_end = lp;
57 lp->gl_line_num = ++mp->gm_line_num;
62 process_line(grub_menu_t *mp)
67 lp = mp->gm_end;
107 add_entry(grub_menu_t *mp, grub_line_t *start, grub_line_t *end)
117 if (mp->gm_ent_end == NULL) {
118 mp->gm_ent_start = ent;
120 mp->gm_ent_end->ge_next = ent;
121 ent->ge_prev = mp->gm_ent_end;
123 mp->gm_ent_end = ent;
124 ent->ge_entry_num = mp->gm_entry_num++;
125 ent->ge_menu = mp;
130 default_entry(grub_menu_t *mp)
137 lp = mp->gm_curdefault;
142 if (defent >= mp->gm_entry_num)
146 for (ent = mp->gm_ent_start; ent != NULL && defent != ent->ge_entry_num;
150 mp->gm_ent_default = ent;
182 free_entries(grub_menu_t *mp)
186 if (mp == NULL)
189 for (ent = mp->gm_ent_start; (tmp = ent) != NULL;
193 mp->gm_ent_start = NULL;
194 mp->gm_ent_end = NULL;
198 grub_menu_append_line(grub_menu_t *mp, const char *line)
255 append_line(mp, lp);
256 process_line(mp);
261 grub_menu_process(grub_menu_t *mp)
268 free_entries(mp);
274 for (line = mp->gm_start; line != NULL; line = line->gl_next) {
277 mp->gm_curdefault = line;
289 (ret = add_entry(mp, start, line->gl_prev)) != 0)
296 if (start != NULL && (ret = add_entry(mp, start, mp->gm_end)) != 0)
299 for (ent = mp->gm_ent_start; NULL != ent; ent = ent->ge_next)
302 default_entry(mp);
349 grub_menu_t *mp;
359 if ((mp = calloc(1, sizeof (*mp))) == NULL) {
360 *menup = mp;
364 if ((ret = grub_fs_init(&mp->gm_fs)) != 0 ||
365 (ret = grub_current_root(&mp->gm_fs, &mp->gm_root)) != 0)
373 if (mp->gm_root.gr_fs[GRBM_FS_TOP].gfs_mountp[0] == 0) {
374 if ((ret = grub_fsd_mount_tmp(mp->gm_root.gr_fs +
375 GRBM_FS_TOP, mp->gm_root.gr_fstyp)) != 0)
378 (void) snprintf(mp->gm_path, sizeof (mp->gm_path),
379 "%s/%s", mp->gm_root.gr_fs[GRBM_FS_TOP].gfs_mountp,
382 (void) strlcpy(mp->gm_path, path, sizeof (mp->gm_path));
385 if ((fp = fopen(mp->gm_path, "r")) == NULL) {
411 if ((ret = grub_menu_append_line(mp, buf)) != 0)
421 ret = grub_menu_process(mp);
424 grub_fsd_umount_tmp(mp->gm_root.gr_fs + GRBM_FS_TOP);
426 grub_menu_fini(mp);
427 mp = NULL;
429 *menup = mp;
434 grub_menu_fini(grub_menu_t *mp)
436 if (mp == NULL)
439 grub_fs_fini(&mp->gm_fs);
440 free_entries(mp);
441 free_linelist(mp->gm_start);
442 free(mp);
446 grub_menu_next_line(const grub_menu_t *mp, const grub_line_t *lp)
448 assert(mp);
450 return (mp->gm_start);
456 grub_menu_prev_line(const grub_menu_t *mp, const grub_line_t *lp)
458 assert(mp);
460 return (mp->gm_end);
466 grub_menu_get_line(const grub_menu_t *mp, int num)
470 assert(mp);
471 if (num > mp->gm_line_num)
473 for (lp = mp->gm_start; lp != NULL && num != lp->gl_line_num;
480 grub_menu_get_cmdline(const grub_menu_t *mp, int num, char *cmdl, size_t size)
484 assert(mp);
485 if ((ent = grub_menu_get_entry(mp, num)) == NULL)
492 grub_menu_next_entry(const grub_menu_t *mp, const grub_entry_t *ent)
494 assert(mp);
496 return (mp->gm_ent_start);
498 assert(mp == ent->ge_menu);
504 grub_menu_prev_entry(const grub_menu_t *mp, const grub_entry_t *ent)
506 assert(mp);
508 return (mp->gm_ent_end);
510 assert(mp == ent->ge_menu);
516 grub_menu_get_entry(const grub_menu_t *mp, int num)
520 assert(mp);
522 ent = mp->gm_ent_default;
523 } else if (num >= mp->gm_entry_num) {
526 for (ent = mp->gm_ent_start;