X-Git-Url: https://git.openssl.org/gitweb/?p=openssl.git;a=blobdiff_plain;f=crypto%2Fconf%2Fconf.h;h=32246ff52c27cd61b6344f3546cf63a13a0b82de;hp=e7c51500970c47ed88bc065e1ace693cd61cf411;hb=b476df64a1d57501faa4c7b8f1c3f097f6e8be41;hpb=ba404b5e86a707afe7faca8e22d53eea5e64c8b6 diff --git a/crypto/conf/conf.h b/crypto/conf/conf.h index e7c5150097..32246ff52c 100644 --- a/crypto/conf/conf.h +++ b/crypto/conf/conf.h @@ -59,14 +59,15 @@ #ifndef HEADER_CONF_H #define HEADER_CONF_H -#ifdef __cplusplus -extern "C" { -#endif - #include #include #include #include +#include + +#ifdef __cplusplus +extern "C" { +#endif typedef struct { @@ -77,33 +78,111 @@ typedef struct 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 *(*create)(CONF_METHOD *meth); + int (*init)(CONF *conf); + int (*destroy)(CONF *conf); + int (*destroy_data)(CONF *conf); + int (*load_bio)(CONF *conf, BIO *bp, long *eline); + int (*dump)(CONF *conf, BIO *bp); + int (*is_number)(CONF *conf, char c); + int (*to_int)(CONF *conf, char c); + int (*load)(CONF *conf, const char *name, long *eline); + }; + +int CONF_set_default_method(CONF_METHOD *meth); +void CONF_set_nconf(CONF *conf,LHASH *hash); 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 ); +/* New conf code. The semantics are different from the functions above. + If that wasn't the case, the above functions would have been replaced */ + +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. */ +void ERR_load_CONF_strings(void); /* 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 @@ -111,4 +190,3 @@ void ERR_load_CONF_strings(void ); } #endif #endif -