📄 chooser.c
字号:
/* * Copyright (C) 2001-2003 Hewlett-Packard Co. * Contributed by Stephane Eranian <eranian@hpl.hp.com> * * This file is part of the ELILO, the EFI Linux boot loader. * * ELILO is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2, or (at your option) * any later version. * * ELILO is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with ELILO; see the file COPYING. If not, write to the Free * Software Foundation, 59 Temple Place - Suite 330, Boston, MA * 02111-1307, USA. * * Please check out the elilo.txt for complete documentation on how * to use this program. */#include <efi.h>#include <efilib.h>#include "elilo.h"#ifdef CONFIG_CHOOSER_SIMPLE#include "choosers/simple.h"#endif#ifdef CONFIG_CHOOSER_TEXTMENU#include "choosers/textmenu.h"#endifstatic chooser_t *choosers_tab[]={#ifdef CONFIG_CHOOSER_SIMPLE &simple_chooser,#endif#ifdef CONFIG_CHOOSER_TEXTMENU &textmenu_chooser,#endif NULL};/* * The intent of this module is to provide a mechanism by which alternate * choosers can be installed. Developers can write new choosers and * add them to the list. They will be probe and the best match * will be started first. It should be possible to switch to another * chooser using a key combination. There is a default simple text-based * chooser that must always be present. * * Currently you can specify a chooser via "-c name" when you invoke elilo, * or via "chooser=name" in the config file. If the specified chooser * probes ok it will be selected, otherwise the first one that probes ok * will be used. * * XXX: at this time, not all chooser functionalities are implemented. * */chooser_func_t *kernel_chooser;INTNinit_chooser(EFI_HANDLE dev){ chooser_t **p; CHAR16 *chooser_name = L"none"; kernel_chooser = NULL; for (p=choosers_tab; *p; p++) { VERB_PRT(4, Print(L"trying chooser %s\n", (*p)->chooser_name)); if ((*p)->chooser_probe(dev) == 0) { /* * if that's the one we asked for, then go for it */ if (!StrCmp(elilo_opt.chooser, (*p)->chooser_name)) { kernel_chooser = (*p)->chooser_func; chooser_name = (*p)->chooser_name; break; } if (kernel_chooser == NULL) { kernel_chooser = (*p)->chooser_func; chooser_name = (*p)->chooser_name; } } } if (kernel_chooser) { VERB_PRT(2, Print(L"selected chooser %s\n", chooser_name)); return 0; } ERR_PRT((L"No chooser selected. Impossible to proceed")); return -1;}INTNexist_chooser(CHAR16 *name){ chooser_t **p; for (p=choosers_tab; *p; p++) { if (!StrCmp(name, (*p)->chooser_name)) return 0; } return -1;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -