Пример #1
0
static int read_string(UI *ui, UI_STRING *uis)
{
    int ok = 0;

    switch (UI_get_string_type(uis)) {
        case UIT_BOOLEAN:
            fputs(UI_get0_output_string(uis), tty_out);
            fputs(UI_get0_action_string(uis), tty_out);
            fflush(tty_out);
            return read_string_inner(ui, uis,
                                     UI_get_input_flags(uis) & UI_INPUT_FLAG_ECHO, 0);
        case UIT_PROMPT:
            fputs(UI_get0_output_string(uis), tty_out);
            fflush(tty_out);
            return read_string_inner(ui, uis,
                                     UI_get_input_flags(uis) & UI_INPUT_FLAG_ECHO, 1);
        case UIT_VERIFY:
            fprintf(tty_out, "Verifying - %s",
                    UI_get0_output_string(uis));
            fflush(tty_out);
            if ((ok = read_string_inner(ui, uis, UI_get_input_flags(uis) 
                & UI_INPUT_FLAG_ECHO, 1)) <= 0)
                return ok;
            if (strcmp(UI_get0_result_string(uis),
                       UI_get0_test_string(uis)) != 0) {
                fprintf(tty_out, "Verify failure\n");
                fflush(tty_out);
                return 0;
            }
            break;
        default:
            break;
    }
    return 1;
}
Пример #2
0
static int ui_android_read(UI *ui, UI_STRING *uis)
{
    int ok = 0;
    int num = 0;
    const char *str;
    char **args;

    switch (UI_get_string_type(uis)) {
	case UIT_BOOLEAN:
	    android_log(PRG_DEBUG, "called ui_android_read() output boolean %s",
	                UI_get0_output_string(uis));
	    android_log(PRG_DEBUG, "called ui_android_read() action boolean %s",
	                UI_get0_action_string(uis));
	    //			UI_get_input_flags(uis) & UI_INPUT_FLAG_ECHO
	case UIT_PROMPT:
        str = UI_get0_output_string(uis);
	    android_log(PRG_DEBUG, "called ui_android_read() output prompt %s",
                    str);
	    break;
	case UIT_VERIFY:
        str = UI_get0_output_string(uis);
	    android_log(PRG_DEBUG, "called ui_android_read() verify output %s",
                    str);
	    break;
	default:
        return 1;
	    break;
    }

    strlcat(ui_buf, "=X=", sizeof(ui_buf));
    strlcat(ui_buf, str, sizeof(ui_buf));

process:
    if (send_req(ui_buf) < 0) {
        android_log(PRG_ERR, "send_req() failed");
        goto out;
    }

    if (recv_cmd(&num, &args) < 0) {
        android_log(PRG_ERR, "recv_cmd() failed");
        goto out;
    }
    if (num != 1) {
        android_log(PRG_ERR, "parameter number mismatch");
        goto out;
    }

    android_log(PRG_DEBUG, "ui_android_read() cmd: %s %d", args[0], num);

    send_ack(num);

    UI_set_result(ui, uis, args[0]);

    ok = 1;

out:
    if (num)
        free_cmd(num, args);
    ui_buf[0] = '\0';
    return ok;
}