Lines Matching refs:ui
14 #include <openssl/ui.h>
73 void UI_free(UI *ui)
75 if (ui == NULL)
77 if ((ui->flags & UI_FLAG_DUPL_DATA) != 0) {
78 ui->meth->ui_destroy_data(ui, ui->user_data);
80 sk_UI_STRING_pop_free(ui->strings, free_string);
81 CRYPTO_free_ex_data(CRYPTO_EX_INDEX_UI, ui, &ui->ex_data);
82 CRYPTO_THREAD_lock_free(ui->lock);
83 OPENSSL_free(ui);
86 static int allocate_string_stack(UI *ui)
88 if (ui->strings == NULL) {
89 ui->strings = sk_UI_STRING_new_null();
90 if (ui->strings == NULL) {
97 static UI_STRING *general_allocate_prompt(UI *ui, const char *prompt,
119 static int general_allocate_string(UI *ui, const char *prompt,
126 UI_STRING *s = general_allocate_prompt(ui, prompt, prompt_freeable,
130 if (allocate_string_stack(ui) >= 0) {
134 ret = sk_UI_STRING_push(ui->strings, s);
146 static int general_allocate_boolean(UI *ui,
170 s = general_allocate_prompt(ui, prompt, prompt_freeable,
174 if (allocate_string_stack(ui) >= 0) {
178 ret = sk_UI_STRING_push(ui->strings, s);
197 int UI_add_input_string(UI *ui, const char *prompt, int flags,
200 return general_allocate_string(ui, prompt, 0,
206 int UI_dup_input_string(UI *ui, const char *prompt, int flags,
219 return general_allocate_string(ui, prompt_copy, 1,
224 int UI_add_verify_string(UI *ui, const char *prompt, int flags,
228 return general_allocate_string(ui, prompt, 0,
233 int UI_dup_verify_string(UI *ui, const char *prompt, int flags,
247 return general_allocate_string(ui, prompt_copy, 1,
252 int UI_add_input_boolean(UI *ui, const char *prompt, const char *action_desc,
256 return general_allocate_boolean(ui, prompt, action_desc,
261 int UI_dup_input_boolean(UI *ui, const char *prompt, const char *action_desc,
302 return general_allocate_boolean(ui, prompt_copy, action_desc_copy,
313 int UI_add_info_string(UI *ui, const char *text)
315 return general_allocate_string(ui, text, 0, UIT_INFO, 0, NULL, 0, 0,
319 int UI_dup_info_string(UI *ui, const char *text)
331 return general_allocate_string(ui, text_copy, 1, UIT_INFO, 0, NULL,
335 int UI_add_error_string(UI *ui, const char *text)
337 return general_allocate_string(ui, text, 0, UIT_ERROR, 0, NULL, 0, 0,
341 int UI_dup_error_string(UI *ui, const char *text)
352 return general_allocate_string(ui, text_copy, 1, UIT_ERROR, 0, NULL,
356 char *UI_construct_prompt(UI *ui, const char *phrase_desc,
361 if (ui != NULL && ui->meth != NULL && ui->meth->ui_construct_prompt != NULL)
362 prompt = ui->meth->ui_construct_prompt(ui, phrase_desc, object_name);
391 void *UI_add_user_data(UI *ui, void *user_data)
393 void *old_data = ui->user_data;
395 if ((ui->flags & UI_FLAG_DUPL_DATA) != 0) {
396 ui->meth->ui_destroy_data(ui, old_data);
399 ui->user_data = user_data;
400 ui->flags &= ~UI_FLAG_DUPL_DATA;
404 int UI_dup_user_data(UI *ui, void *user_data)
408 if (ui->meth->ui_duplicate_data == NULL
409 || ui->meth->ui_destroy_data == NULL) {
414 duplicate = ui->meth->ui_duplicate_data(ui, user_data);
420 (void)UI_add_user_data(ui, duplicate);
421 ui->flags |= UI_FLAG_DUPL_DATA;
426 void *UI_get0_user_data(UI *ui)
428 return ui->user_data;
431 const char *UI_get0_result(UI *ui, int i)
437 if (i >= sk_UI_STRING_num(ui->strings)) {
441 return UI_get0_result_string(sk_UI_STRING_value(ui->strings, i));
444 int UI_get_result_length(UI *ui, int i)
450 if (i >= sk_UI_STRING_num(ui->strings)) {
454 return UI_get_result_string_length(sk_UI_STRING_value(ui->strings, i));
457 static int print_error(const char *str, size_t len, UI *ui)
465 if (ui->meth->ui_write_string != NULL
466 && ui->meth->ui_write_string(ui, &uis) <= 0)
471 int UI_process(UI *ui)
476 if (ui->meth->ui_open_session != NULL
477 && ui->meth->ui_open_session(ui) <= 0) {
483 if (ui->flags & UI_FLAG_PRINT_ERRORS)
485 print_error, (void *)ui);
487 for (i = 0; i < sk_UI_STRING_num(ui->strings); i++) {
488 if (ui->meth->ui_write_string != NULL
489 && (ui->meth->ui_write_string(ui,
490 sk_UI_STRING_value(ui->strings, i))
499 if (ui->meth->ui_flush != NULL)
500 switch (ui->meth->ui_flush(ui)) {
502 ui->flags &= ~UI_FLAG_REDOABLE;
514 for (i = 0; i < sk_UI_STRING_num(ui->strings); i++) {
515 if (ui->meth->ui_read_string != NULL) {
516 switch (ui->meth->ui_read_string(ui,
517 sk_UI_STRING_value(ui->strings,
520 ui->flags &= ~UI_FLAG_REDOABLE;
532 ui->flags &= ~UI_FLAG_REDOABLE;
540 if (ui->meth->ui_close_session != NULL
541 && ui->meth->ui_close_session(ui) <= 0) {
552 int UI_ctrl(UI *ui, int cmd, long i, void *p, void (*f) (void))
554 if (ui == NULL) {
561 int save_flag = ! !(ui->flags & UI_FLAG_PRINT_ERRORS);
563 ui->flags |= UI_FLAG_PRINT_ERRORS;
565 ui->flags &= ~UI_FLAG_PRINT_ERRORS;
569 return ! !(ui->flags & UI_FLAG_REDOABLE);
587 const UI_METHOD *UI_get_method(UI *ui)
589 return ui->meth;
592 const UI_METHOD *UI_set_method(UI *ui, const UI_METHOD *meth)
594 ui->meth = meth;
595 return ui->meth;
631 int UI_method_set_opener(UI_METHOD *method, int (*opener) (UI *ui))
641 int (*writer) (UI *ui, UI_STRING *uis))
650 int UI_method_set_flusher(UI_METHOD *method, int (*flusher) (UI *ui))
660 int (*reader) (UI *ui, UI_STRING *uis))
669 int UI_method_set_closer(UI_METHOD *method, int (*closer) (UI *ui))
679 void *(*duplicator) (UI *ui, void *ui_data),
680 void (*destructor)(UI *ui, void *ui_data))
691 char *(*prompt_constructor) (UI *ui,
874 int UI_set_result(UI *ui, UI_STRING *uis, const char *result)
876 return UI_set_result_ex(ui, uis, result, strlen(result));
879 int UI_set_result_ex(UI *ui, UI_STRING *uis, const char *result, int len)
881 ui->flags &= ~UI_FLAG_REDOABLE;
887 ui->flags |= UI_FLAG_REDOABLE;
895 ui->flags |= UI_FLAG_REDOABLE;