| #ifndef HEADER_CONF_H |
| #define HEADER_CONF_H |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif |
| |
| typedef struct |
| { |
| char *section; |
| char *name; |
| char *value; |
| } CONF_VALUE; |
| |
| DECLARE_STACK_OF(CONF_VALUE); |
| DECLARE_LHASH_OF(CONF_VALUE); |
| |
| struct conf_st; |
| struct conf_method_st; |
| typedef struct conf_method_st CONF_METHOD; |
| |
| int CONF_set_default_method(CONF_METHOD *meth); |
| void CONF_set_nconf(CONF *conf,LHASH_OF(CONF_VALUE) *hash); |
| LHASH_OF(CONF_VALUE) *CONF_load(LHASH_OF(CONF_VALUE) *conf,const char *file, |
| long *eline); |
| #ifndef OPENSSL_NO_FP_API |
| LHASH_OF(CONF_VALUE) *CONF_load_fp(LHASH_OF(CONF_VALUE) *conf, FILE *fp, |
| long *eline); |
| #endif |
| LHASH_OF(CONF_VALUE) *CONF_load_bio(LHASH_OF(CONF_VALUE) *conf, BIO *bp,long *eline); |
| STACK_OF(CONF_VALUE) *CONF_get_section(LHASH_OF(CONF_VALUE) *conf, |
| const char *section); |
| char *CONF_get_string(LHASH_OF(CONF_VALUE) *conf,const char *group, |
| const char *name); |
| long CONF_get_number(LHASH_OF(CONF_VALUE) *conf,const char *group, |
| const char *name); |
| void CONF_free(LHASH_OF(CONF_VALUE) *conf); |
| int CONF_dump_fp(LHASH_OF(CONF_VALUE) *conf, FILE *out); |
| int CONF_dump_bio(LHASH_OF(CONF_VALUE) *conf, BIO *out); |
| |
| |
| #ifdef __cplusplus |
| } |
| #endif |
| |
| |
| void CONF_set_nconf(CONF *conf, LHASH_OF(CONF_VALUE) *hash) |
| { |
| if (default_CONF_method == NULL) |
| default_CONF_method = NCONF_default(); |
| |
| default_CONF_method->init(conf); |
| conf->data = hash; |
| } |
| |
| |
| LHASH_OF(CONF_VALUE) *CONF_load(LHASH_OF(CONF_VALUE) *conf, const char *file, |
| long *eline) |
| { |
| LHASH_OF(CONF_VALUE) *ltmp; |
| BIO *in=NULL; |
| |
| #ifdef OPENSSL_SYS_VMS |
| in=BIO_new_file(file, "r"); |
| #else |
| in=BIO_new_file(file, "rb"); |
| #endif |
| if (in == NULL) |
| { |
| CONFerr(CONF_F_CONF_LOAD,ERR_R_SYS_LIB); |
| return NULL; |
| } |
| |
| return ltmp; |
| } |
| |
| #ifndef OPENSSL_NO_FP_API |
| LHASH_OF(CONF_VALUE) *CONF_load_fp(LHASH_OF(CONF_VALUE) *conf, FILE *fp, |
| long *eline) |
| { |
| BIO *btmp; |
| LHASH_OF(CONF_VALUE) *ltmp; |
| if(!(btmp = BIO_new_fp(fp, BIO_NOCLOSE))) { |
| CONFerr(CONF_F_CONF_LOAD_FP,ERR_R_BUF_LIB); |
| return NULL; |
| } |
| ltmp = CONF_load_bio(conf, btmp, eline); |
| BIO_free(btmp); |
| return ltmp; |
| } |
| #endif |
| |
| LHASH_OF(CONF_VALUE) *CONF_load_bio(LHASH_OF(CONF_VALUE) *conf, BIO *bp, |
| long *eline) |
| { |
| CONF ctmp; |
| int ret; |
| |
| CONF_set_nconf(&ctmp, conf); |
| |
| ret = NCONF_load_bio(&ctmp, bp, eline); |
| if (ret) |
| return ctmp.data; |
| return NULL; |
| } |
| |
| STACK_OF(CONF_VALUE) *CONF_get_section(LHASH_OF(CONF_VALUE) *conf, |
| const char *section) |
| { |
| if (conf == NULL) |
| { |
| return NULL; |
| } |
| else |
| { |
| CONF ctmp; |
| CONF_set_nconf(&ctmp, conf); |
| return NCONF_get_section(&ctmp, section); |
| } |
| } |
| |
| char *CONF_get_string(LHASH_OF(CONF_VALUE) *conf,const char *group, |
| const char *name) |
| { |
| if (conf == NULL) |
| { |
| return NCONF_get_string(NULL, group, name); |
| } |
| else |
| { |
| return NCONF_get_string(&ctmp, group, name); |
| } |
| } |
| |