| #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 ); |
| } |
| } |
| |