'flags' should only be set inside DSO_load() if constructing a new DSO
[openssl.git] / crypto / dso / dso.h
index add6858de854185c5b49103524ea85cb2e96dce9..a1678454a5ad6f6d0bacb498e367f53a83d05c26 100644 (file)
@@ -81,12 +81,19 @@ extern "C" {
  * DSO to prevent *any* native name-translation at all - eg. if the caller has
  * prompted the user for a path to a driver library so the filename should be
  * interpreted as-is. */
-#define DSO_FLAG_NO_NAME_TRANSLATION 0x01
+#define DSO_FLAG_NO_NAME_TRANSLATION           0x01
+/* An extra flag to give if only the extension should be added as
+ * translation.  This is obviously only of importance on Unix and
+ * other operating systems where the translation also may prefix
+ * the name with something, like 'lib', and ignored everywhere else.
+ * This flag is also ignored if DSO_FLAG_NO_NAME_TRANSLATION is used
+ * at the same time. */
+#define DSO_FLAG_NAME_TRANSLATION_EXT_ONLY     0x02
 
 /* The following flag controls the translation of symbol names to upper
  * case.  This is currently only being implemented for OpenVMS.
  */
-#define DSO_FLAG_UPCASE_SYMBOL    0x02
+#define DSO_FLAG_UPCASE_SYMBOL                 0x10
 
 
 typedef void (*DSO_FUNC_TYPE)(void);
@@ -180,8 +187,9 @@ DSO *       DSO_new(void);
 DSO *  DSO_new_method(DSO_METHOD *method);
 int    DSO_free(DSO *dso);
 int    DSO_flags(DSO *dso);
-int    DSO_up(DSO *dso);
+int    DSO_up_ref(DSO *dso);
 long   DSO_ctrl(DSO *dso, int cmd, long larg, void *parg);
+
 /* This function sets the DSO's name_converter callback. If it is non-NULL,
  * then it will be used instead of the associated DSO_METHOD's function. If
  * oldcb is non-NULL then it is set to the function pointer value being
@@ -219,8 +227,7 @@ DSO_METHOD *DSO_set_method(DSO *dso, DSO_METHOD *meth);
  * for the first and third parameters. Use DSO_up and DSO_free for
  * subsequent reference count handling. Any flags passed in will be set
  * in the constructed DSO after its init() function but before the
- * load operation. This will be done with;
- *    DSO_ctrl(dso, DSO_CTRL_SET_FLAGS, flags, NULL); */
+ * load operation. If 'dso' is non-NULL, 'flags' is ignored. */
 DSO *DSO_load(DSO *dso, const char *filename, DSO_METHOD *meth, int flags);
 
 /* This function binds to a variable inside a shared library. */
@@ -260,6 +267,7 @@ void ERR_load_DSO_strings(void);
 /* The following lines are auto generated by the script mkerr.pl. Any changes
  * made after this point may be overwritten when the script is next run.
  */
+void ERR_load_DSO_strings(void);
 
 /* Error codes for the DSO functions. */
 
@@ -285,7 +293,7 @@ void ERR_load_DSO_strings(void);
 #define DSO_F_DSO_NEW_METHOD                            113
 #define DSO_F_DSO_SET_FILENAME                          129
 #define DSO_F_DSO_SET_NAME_CONVERTER                    122
-#define DSO_F_DSO_UP                                    114
+#define DSO_F_DSO_UP_REF                                114
 #define DSO_F_VMS_BIND_VAR                              115
 #define DSO_F_VMS_LOAD                                  116
 #define DSO_F_VMS_UNLOAD                                117
@@ -314,4 +322,3 @@ void ERR_load_DSO_strings(void);
 }
 #endif
 #endif
-