Use new-style system-id macros everywhere possible. I hope I haven't
[openssl.git] / crypto / conf / conf.h
index a23ec95..46048c0 100644 (file)
@@ -1,5 +1,5 @@
 /* crypto/conf/conf.h */
-/* Copyright (C) 1995-1997 Eric Young (eay@cryptsoft.com)
+/* Copyright (C) 1995-1998 Eric Young (eay@cryptsoft.com)
  * All rights reserved.
  *
  * This package is an SSL implementation written
 #ifndef  HEADER_CONF_H
 #define HEADER_CONF_H
 
+#include <openssl/bio.h>
+#include <openssl/lhash.h>
+#include <openssl/stack.h>
+#include <openssl/safestack.h>
+#include <openssl/e_os.h>
+
 #ifdef  __cplusplus
 extern "C" {
 #endif
 
-#include "stack.h"
-#include "lhash.h"
-
 typedef struct
        {
        char *section;
@@ -73,40 +76,114 @@ typedef struct
        char *value;
        } CONF_VALUE;
 
-#ifndef NOPROTO
+DECLARE_STACK_OF(CONF_VALUE)
+
+struct conf_st;
+typedef struct conf_st CONF;
+struct conf_method_st;
+typedef struct conf_method_st CONF_METHOD;
+
+struct conf_method_st
+       {
+       const char *name;
+       CONF *(MS_FAR *create)(CONF_METHOD *meth);
+       int (MS_FAR *init)(CONF *conf);
+       int (MS_FAR *destroy)(CONF *conf);
+       int (MS_FAR *destroy_data)(CONF *conf);
+       int (MS_FAR *load_bio)(CONF *conf, BIO *bp, long *eline);
+       int (MS_FAR *dump)(CONF *conf, BIO *bp);
+       int (MS_FAR *is_number)(CONF *conf, char c);
+       int (MS_FAR *to_int)(CONF *conf, char c);
+       int (MS_FAR *load)(CONF *conf, const char *name, long *eline);
+       };
 
-LHASH *CONF_load(LHASH *conf,char *file,long *eline);
-STACK *CONF_get_section(LHASH *conf,char *section);
+int CONF_set_default_method(CONF_METHOD *meth);
+LHASH *CONF_load(LHASH *conf,const char *file,long *eline);
+#ifndef OPENSSL_NO_FP_API
+LHASH *CONF_load_fp(LHASH *conf, FILE *fp,long *eline);
+#endif
+LHASH *CONF_load_bio(LHASH *conf, BIO *bp,long *eline);
+STACK_OF(CONF_VALUE) *CONF_get_section(LHASH *conf,char *section);
 char *CONF_get_string(LHASH *conf,char *group,char *name);
 long CONF_get_number(LHASH *conf,char *group,char *name);
 void CONF_free(LHASH *conf);
+int CONF_dump_fp(LHASH *conf, FILE *out);
+int CONF_dump_bio(LHASH *conf, BIO *out);
 void ERR_load_CONF_strings(void );
 
-#else
+/* New conf code.  The semantics are different from the functions above.
+   If that wasn't the case, the above functions would have been replaced */
 
-LHASH *CONF_load();
-STACK *CONF_get_section();
-char *CONF_get_string();
-long CONF_get_number();
-void CONF_free();
-void ERR_load_CONF_strings();
+struct conf_st
+       {
+       CONF_METHOD *meth;
+       void *meth_data;
+       LHASH *data;
+       };
 
+CONF *NCONF_new(CONF_METHOD *meth);
+CONF_METHOD *NCONF_default();
+CONF_METHOD *NCONF_WIN32();
+#if 0 /* Just to give you an idea of what I have in mind */
+CONF_METHOD *NCONF_XML();
 #endif
+void NCONF_free(CONF *conf);
+void NCONF_free_data(CONF *conf);
+
+int NCONF_load(CONF *conf,const char *file,long *eline);
+#ifndef OPENSSL_NO_FP_API
+int NCONF_load_fp(CONF *conf, FILE *fp,long *eline);
+#endif
+int NCONF_load_bio(CONF *conf, BIO *bp,long *eline);
+STACK_OF(CONF_VALUE) *NCONF_get_section(CONF *conf,char *section);
+char *NCONF_get_string(CONF *conf,char *group,char *name);
+int NCONF_get_number_e(CONF *conf,char *group,char *name,long *result);
+int NCONF_dump_fp(CONF *conf, FILE *out);
+int NCONF_dump_bio(CONF *conf, BIO *out);
+
+#if 0 /* The following function has no error checking,
+        and should therefore be avoided */
+long NCONF_get_number(CONF *conf,char *group,char *name);
+#else
+#define NCONF_get_number(c,g,n,r) NCONF_get_number_e(c,g,n,r);
+#endif
+
 
 /* BEGIN ERROR CODES */
+/* 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.
+ */
+
 /* Error codes for the CONF functions. */
 
 /* Function codes. */
+#define CONF_F_CONF_DUMP_FP                             104
 #define CONF_F_CONF_LOAD                                100
+#define CONF_F_CONF_LOAD_BIO                            102
+#define CONF_F_CONF_LOAD_FP                             103
+#define CONF_F_NCONF_DUMP_BIO                           105
+#define CONF_F_NCONF_DUMP_FP                            106
+#define CONF_F_NCONF_GET_NUMBER                                 107
+#define CONF_F_NCONF_GET_NUMBER_E                       112
+#define CONF_F_NCONF_GET_SECTION                        108
+#define CONF_F_NCONF_GET_STRING                                 109
+#define CONF_F_NCONF_LOAD                               113
+#define CONF_F_NCONF_LOAD_BIO                           110
+#define CONF_F_NCONF_LOAD_FP                            114
+#define CONF_F_NCONF_NEW                                111
 #define CONF_F_STR_COPY                                         101
 
 /* Reason codes. */
 #define CONF_R_MISSING_CLOSE_SQUARE_BRACKET             100
 #define CONF_R_MISSING_EQUAL_SIGN                       101
 #define CONF_R_NO_CLOSE_BRACE                           102
+#define CONF_R_NO_CONF                                  105
+#define CONF_R_NO_CONF_OR_ENVIRONMENT_VARIABLE          106
+#define CONF_R_NO_SECTION                               107
+#define CONF_R_NO_VALUE                                         108
 #define CONF_R_UNABLE_TO_CREATE_NEW_SECTION             103
 #define CONF_R_VARIABLE_HAS_NO_VALUE                    104
+
 #ifdef  __cplusplus
 }
 #endif