Fix alignment errors in hashtable fuzzer
[openssl.git] / doc / man3 / UI_create_method.pod
index c1d3088296144f45dd6f970687fd7723bb5ec2d1..23af53eccd880afbf72a58661cb64082a3fade55 100644 (file)
@@ -5,9 +5,11 @@
 UI_METHOD,
 UI_create_method, UI_destroy_method, UI_method_set_opener,
 UI_method_set_writer, UI_method_set_flusher, UI_method_set_reader,
-UI_method_set_closer, UI_method_set_prompt_constructor,
-UI_method_set_ex_data, UI_method_get_opener, UI_method_get_writer,
-UI_method_get_flusher, UI_method_get_reader, UI_method_get_closer,
+UI_method_set_closer, UI_method_set_data_duplicator,
+UI_method_set_prompt_constructor, UI_method_set_ex_data,
+UI_method_get_opener, UI_method_get_writer, UI_method_get_flusher,
+UI_method_get_reader, UI_method_get_closer,
+UI_method_get_data_duplicator, UI_method_get_data_destructor,
 UI_method_get_prompt_constructor, UI_method_get_ex_data - user
 interface method creation and destruction
 
@@ -26,6 +28,9 @@ interface method creation and destruction
  int UI_method_set_reader(UI_METHOD *method,
                           int (*reader) (UI *ui, UI_STRING *uis));
  int UI_method_set_closer(UI_METHOD *method, int (*closer) (UI *ui));
+ int UI_method_set_data_duplicator(UI_METHOD *method,
+                                   void *(*duplicator) (UI *ui, void *ui_data),
+                                   void (*destructor)(UI *ui, void *ui_data));
  int UI_method_set_prompt_constructor(UI_METHOD *method,
                                       char *(*prompt_constructor) (UI *ui,
                                                                    const char
@@ -40,11 +45,13 @@ interface method creation and destruction
  int (*UI_method_get_closer(const UI_METHOD *method)) (UI *);
  char *(*UI_method_get_prompt_constructor(const UI_METHOD *method))
      (UI *, const char *, const char *);
+ void *(*UI_method_get_data_duplicator(const UI_METHOD *method)) (UI *, void *);
+ void (*UI_method_get_data_destructor(const UI_METHOD *method)) (UI *, void *);
  const void *UI_method_get_ex_data(const UI_METHOD *method, int idx);
 
 =head1 DESCRIPTION
 
-A method contains a few functions that implement the low level of the
+A method contains a few functions that implement the low-level of the
 User Interface.
 These functions are:
 
@@ -85,28 +92,13 @@ by closing the channel to the tty, maybe by destroying a dialog box.
 
 =back
 
-All of these functions are expected to return one of these values:
-
-=over 4
-
-=item 0
-
-on error.
-
-=item 1
-
-on success.
-
-=item -1
-
-on out-off-band events, for example if some prompting has been
-cancelled (by pressing Ctrl-C, for example).
-This is only expected to be returned by the flusher or the reader.
+All of these functions are expected to return 0 on error, 1 on
+success, or -1 on out-off-band events, for example if some prompting
+has been cancelled (by pressing Ctrl-C, for example).
+Only the flusher or the reader are expected to return -1.
 If returned by another of the functions, it's treated as if 0 was
 returned.
 
-=back
-
 Regarding the writer and the reader, don't assume the former should
 only write and don't assume the latter should only read.
 This depends on the needs of the method.
@@ -163,6 +155,9 @@ UI_method_set_flusher(), UI_method_set_reader() and
 UI_method_set_closer() set the five main method function to the given
 function pointer.
 
+UI_method_set_data_duplicator() sets the user data duplicator and destructor.
+See L<UI_dup_user_data(3)>.
+
 UI_method_set_prompt_constructor() sets the prompt constructor.
 See L<UI_construct_prompt(3)>.
 
@@ -173,8 +168,9 @@ get that index.
 
 UI_method_get_opener(), UI_method_get_writer(),
 UI_method_get_flusher(), UI_method_get_reader(),
-UI_method_get_closer() and UI_method_get_prompt_constructor() return
-the different method functions.
+UI_method_get_closer(), UI_method_get_data_duplicator(),
+UI_method_get_data_destructor() and UI_method_get_prompt_constructor()
+return the different method functions.
 
 UI_method_get_ex_data() returns the application data previously stored
 with UI_method_set_ex_data().
@@ -186,17 +182,19 @@ error.
 
 UI_method_set_opener(), UI_method_set_writer(),
 UI_method_set_flusher(), UI_method_set_reader(),
-UI_method_set_closer() and UI_method_set_prompt_constructor() return
-0 on success, -1 if the given B<method> is NULL.
+UI_method_set_closer(), UI_method_set_data_duplicator() and
+UI_method_set_prompt_constructor()
+return 0 on success, -1 if the given B<method> is NULL.
 
 UI_method_set_ex_data() returns 1 on success and 0 on error (because
 CRYPTO_set_ex_data() does so).
 
 UI_method_get_opener(), UI_method_get_writer(),
 UI_method_get_flusher(), UI_method_get_reader(),
-UI_method_get_closer() and UI_method_get_prompt_constructor() return
-the requested function pointer if it's set in the method, otherwise
-NULL.
+UI_method_get_closer(), UI_method_get_data_duplicator(),
+UI_method_get_data_destructor() and UI_method_get_prompt_constructor()
+return the requested function pointer if it's set in the method,
+otherwise NULL.
 
 UI_method_get_ex_data() returns a pointer to the application specific
 data associated with the method.
@@ -205,11 +203,16 @@ data associated with the method.
 
 L<UI(3)>, L<CRYPTO_get_ex_data(3)>, L<UI_STRING(3)>
 
+=head1 HISTORY
+
+The UI_method_set_data_duplicator(), UI_method_get_data_duplicator()
+and UI_method_get_data_destructor() functions were added in OpenSSL 1.1.1.
+
 =head1 COPYRIGHT
 
-Copyright 2001-2016 The OpenSSL Project Authors. All Rights Reserved.
+Copyright 2001-2020 The OpenSSL Project Authors. All Rights Reserved.
 
-Licensed under the OpenSSL license (the "License").  You may not use
+Licensed under the Apache License 2.0 (the "License").  You may not use
 this file except in compliance with the License.  You can obtain a copy
 in the file LICENSE in the source distribution or at
 L<https://www.openssl.org/source/license.html>.