Beispiel #1
0
const char *UI_get0_result(UI *ui, int i)
	{
	if (i < 0)
		{
		UIerr(UI_F_UI_GET0_RESULT,UI_R_INDEX_TOO_SMALL);
		return NULL;
		}
	if (i >= sk_UI_STRING_num(ui->strings))
		{
		UIerr(UI_F_UI_GET0_RESULT,UI_R_INDEX_TOO_LARGE);
		return NULL;
		}
	return UI_get0_result_string(sk_UI_STRING_value(ui->strings, i));
	}
Beispiel #2
0
int UI_process(UI *ui)
{
    int i, ok = 0;
    const char *state = "processing";

    if (ui->meth->ui_open_session != NULL
        && ui->meth->ui_open_session(ui) <= 0) {
        state = "opening session";
        ok = -1;
        goto err;
    }

    if (ui->flags & UI_FLAG_PRINT_ERRORS)
        ERR_print_errors_cb((int (*)(const char *, size_t, void *))
                            print_error, (void *)ui);

    for (i = 0; i < sk_UI_STRING_num(ui->strings); i++) {
        if (ui->meth->ui_write_string != NULL
            && (ui->meth->ui_write_string(ui,
                                          sk_UI_STRING_value(ui->strings, i))
                <= 0))
        {
            state = "writing strings";
            ok = -1;
            goto err;
        }
    }

    if (ui->meth->ui_flush != NULL)
        switch (ui->meth->ui_flush(ui)) {
        case -1:               /* Interrupt/Cancel/something... */
            ok = -2;
            goto err;
        case 0:                /* Errors */
            state = "flushing";
            ok = -1;
            goto err;
        default:               /* Success */
            ok = 0;
            break;
        }

    for (i = 0; i < sk_UI_STRING_num(ui->strings); i++) {
        if (ui->meth->ui_read_string != NULL) {
            switch (ui->meth->ui_read_string(ui,
                                             sk_UI_STRING_value(ui->strings,
                                                                i))) {
            case -1:           /* Interrupt/Cancel/something... */
                ok = -2;
                goto err;
            case 0:            /* Errors */
                state = "reading strings";
                ok = -1;
                goto err;
            default:           /* Success */
                ok = 0;
                break;
            }
        }
    }

    state = NULL;
 err:
    if (ui->meth->ui_close_session != NULL
        && ui->meth->ui_close_session(ui) <= 0) {
        if (state == NULL)
            state = "closing session";
        ok = -1;
    }

    if (ok == -1) {
        UIerr(UI_F_UI_PROCESS, UI_R_PROCESSING_ERROR);
        ERR_add_error_data(2, "while ", state);
    }
    return ok;
}
Beispiel #3
0
int UI_process(UI *ui)
  {
  int i, ok=0;

  if (ui->meth->ui_open_session && !ui->meth->ui_open_session(ui))
    return -1;

  if (ui->flags & UI_FLAG_PRINT_ERRORS)
    ERR_print_errors_cb(
      (int (*)(const char *, size_t, void *))print_error,
      (void *)ui);

  for(i=0; i<sk_UI_STRING_num(ui->strings); i++)
    {
    if (ui->meth->ui_write_string
      && !ui->meth->ui_write_string(ui,
        sk_UI_STRING_value(ui->strings, i)))
      {
      ok=-1;
      goto err;
      }
    }

  if (ui->meth->ui_flush)
    switch(ui->meth->ui_flush(ui))
      {
    case -1: /* Interrupt/Cancel/something... */
      ok = -2;
      goto err;
    case 0: /* Errors */
      ok = -1;
      goto err;
    default: /* Success */
      ok = 0;
      break;
      }

  for(i=0; i<sk_UI_STRING_num(ui->strings); i++)
    {
    if (ui->meth->ui_read_string)
      {
      switch(ui->meth->ui_read_string(ui,
        sk_UI_STRING_value(ui->strings, i)))
        {
      case -1: /* Interrupt/Cancel/something... */
        ok = -2;
        goto err;
      case 0: /* Errors */
        ok = -1;
        goto err;
      default: /* Success */
        ok = 0;
        break;
        }
      }
    }
 err:
  if (ui->meth->ui_close_session && !ui->meth->ui_close_session(ui))
    return -1;
  return ok;
  }