Make sure that the signal storage is regarded as volatile.
[openssl.git] / crypto / ui / ui_locl.h
index 89cdc2fe6a0ff670c0ef403ad99a39e8f56b0b32..7d3a75a619c71b0cbcb5aacd2a66d09cf1d88ee9 100644 (file)
@@ -1,9 +1,9 @@
 /* crypto/ui/ui.h -*- mode:C; c-file-style: "eay" -*- */
-/* Written by Richard Levitte (levitte@stacken.kth.se) for the OpenSSL
- * project 2000.
+/* Written by Richard Levitte (richard@levitte.org) for the OpenSSL
+ * project 2001.
  */
 /* ====================================================================
- * Copyright (c) 1998-2000 The OpenSSL Project.  All rights reserved.
+ * Copyright (c) 2001 The OpenSSL Project.  All rights reserved.
  *
  * Redistribution and use in source and binary forms, with or without
  * modification, are permitted provided that the following conditions
@@ -96,21 +96,36 @@ struct ui_method_st
 
 struct ui_string_st
        {
-       const char *out_string; /* Input */
        enum UI_string_types type; /* Input */
+       const char *out_string; /* Input */
        int input_flags;        /* Flags from the user */
 
-       /* The following parameters are completely irrelevant for UI_INFO,
-          and can therefore be set to 0 ro NULL */
+       /* The following parameters are completely irrelevant for UIT_INFO,
+          and can therefore be set to 0 or NULL */
        char *result_buf;       /* Input and Output: If not NULL, user-defined
                                   with size in result_maxsize.  Otherwise, it
                                   may be allocated by the UI routine, meaning
                                   result_minsize is going to be overwritten.*/
-       int result_minsize;     /* Input: minimum required size of the result*/
-       int result_maxsize;     /* Input: maximum permitted size of the
-                                  result */
-
-       const char *test_buf;   /* Input: test string to verify against */
+       union
+               {
+               struct
+                       {
+                       int result_minsize;     /* Input: minimum required
+                                                  size of the result.
+                                               */
+                       int result_maxsize;     /* Input: maximum permitted
+                                                  size of the result */
+
+                       const char *test_buf;   /* Input: test string to verify
+                                                  against */
+                       } string_data;
+               struct
+                       {
+                       const char *action_desc; /* Input */
+                       const char *ok_chars; /* Input */
+                       const char *cancel_chars; /* Input */
+                       } boolean_data;
+               } _;
 
 #define OUT_STRING_FREEABLE 0x01
        int flags;              /* flags for internal use */
@@ -124,6 +139,10 @@ struct ui_st
                                         with different echoing status.  */
        void *user_data;
        CRYPTO_EX_DATA ex_data;
+
+#define UI_FLAG_REDOABLE       0x0001
+#define UI_FLAG_PRINT_ERRORS   0x0100
+       int flags;
        };
 
 #endif