示例#1
0
static int prompt_keymap(void) {
        _cleanup_strv_free_ char **kmaps = NULL;
        int r;

        if (arg_keymap)
                return 0;

        if (!arg_prompt_keymap)
                return 0;

        r = get_keymaps(&kmaps);
        if (r == -ENOENT) /* no keymaps installed */
                return r;
        if (r < 0)
                return log_error_errno(r, "Failed to read keymaps: %m");

        print_welcome();

        printf("\nAvailable keymaps:\n\n");
        r = show_menu(kmaps, 3, 22, 60);
        if (r < 0)
                return r;

        putchar('\n');

        return prompt_loop("Please enter system keymap name or number",
                           kmaps, keymap_is_valid, &arg_keymap);
}
示例#2
0
static int prompt_timezone(void) {
        _cleanup_strv_free_ char **zones = NULL;
        int r;

        if (arg_timezone)
                return 0;

        if (!arg_prompt_timezone)
                return 0;

        r = get_timezones(&zones);
        if (r < 0)
                return log_error_errno(r, "Cannot query timezone list: %m");

        print_welcome();

        printf("\nAvailable Time Zones:\n\n");
        r = show_menu(zones, 3, 22, 30);
        if (r < 0)
                return r;

        putchar('\n');

        r = prompt_loop("Please enter timezone name or number", zones, timezone_is_valid, &arg_timezone);
        if (r < 0)
                return r;

        return 0;
}
示例#3
0
文件: lom.c 项目: chaos/powerman
int
main(int argc, char *argv[])
{
    int c;

    prog = basename(argv[0]);
    while ((c = GETOPT(argc, argv, OPTIONS, longopts)) != -1) {
        switch (c) {
            case 'p':
                if (strcmp(optarg, "ssh") == 0)
                    personality = SSH;
                else if (strcmp(optarg, "serial") == 0)
                    personality = SER;
                else if (strcmp(optarg, "serial_loggedin") == 0)
                    personality = SER_LOGIN;
                else
                    usage();
                break;
            default:
                usage();
        }
    }
    if (optind < argc)
        usage();
    if (personality == NONE)
        usage();
    prompt_loop();
    exit(0);
}
示例#4
0
 /// beep. maybe?
 //void beep (void);
 /// A simple line edit (raw mode)
 int lineedit(const std::string& prompt, std::string& output, mutex * lock, CommandHistory & ch)
 {
     output.clear();
     this->prompt = prompt;
     if (!supported_terminal)
     {
         print(prompt.c_str());
         fflush(dfout_C);
         // FIXME: what do we do here???
         //SDL_mutexV(lock);
         std::getline(std::cin, output);
         //SDL_mutexP(lock);
         return output.size();
     }
     else
     {
         int count;
         if (enable_raw() == -1) return 0;
         if(state == con_lineedit)
             return -1;
         state = con_lineedit;
         count = prompt_loop(lock,ch);
         state = con_unclaimed;
         disable_raw();
         print("\n");
         if(count != -1)
         {
             output = raw_buffer;
         }
         return count;
     }
 }
示例#5
0
文件: minishell.c 项目: jaubere/shell
int		main(int ac, char **av, char **ae)
{
  char		**env;
  int		x;

  env = copy_env(ae, env);
  x = 0;
  while (x == 0)
    env = prompt_loop(env);
  return (0);
}
示例#6
0
文件: main.c 项目: jacwah/pcalc
int main(int argc, char **argv)
{
	struct settings settings;

	read_settings(&settings);
	parse_argv(&argc, &argv, &settings);

	if (argc == 1) {
		return prompt_loop(&settings);
	}
	else {
		char str[1024];

		str[0] = '\0';
		for (int i = 1; i < argc; i++) {
			strcat(str, argv[i]);
			strcat(str, " ");
		}

		int result = 0;
		char *errp;
		enum retcode ret;

		switch (settings.notation) {
			case PREFIX:
				ret = pn_eval_str(&result, &errp, str, 0, NULL);
				break;

			case POSTFIX:
				ret = pn_eval_str(&result, &errp, str,
								  PCALC_REVERSED, NULL);
				break;

			case INFIX:
				ret = inf_eval_str(&result, &errp, str, NULL);
				break;

			default:
				assert(0);
		}

		if (ret == PCALC_OK) {
			print_number(&settings, result);
			return EXIT_SUCCESS;
		}
		else {
			print_error(str, errp, ret);
			return EXIT_FAILURE;
		}
	}
}
示例#7
0
static int prompt_locale(void) {
        _cleanup_strv_free_ char **locales = NULL;
        int r;

        if (arg_locale || arg_locale_messages)
                return 0;

        if (!arg_prompt_locale)
                return 0;

        r = get_locales(&locales);
        if (r < 0) {
                log_error("Cannot query locales list: %s", strerror(-r));
                return r;
        }

        print_welcome();

        printf("\nAvailable Locales:\n\n");
        r = show_menu(locales, 3, 22, 60);
        if (r < 0)
                return r;

        putchar('\n');

        r = prompt_loop("Please enter system locale name or number", locales, locale_is_valid, &arg_locale);
        if (r < 0)
                return r;

        if (isempty(arg_locale))
                return 0;

        r = prompt_loop("Please enter system message locale name or number", locales, locale_is_valid, &arg_locale_messages);
        if (r < 0)
                return r;

        return 0;
}
示例#8
0
文件: dli.c 项目: kmddd59/powerman
int
main(int argc, char *argv[])
{
    prompt_loop();
    exit (0);
}