Removed traces of cryptall.h, and did a "make depend".
[openssl.git] / crypto / conf / conf.c
index 9e84300c5efd3023eb45050adf0c3e7a7cf7dd82..f2387098e64da5d6d865a7259aac170083232daa 100644 (file)
 #include <stdio.h>
 #include <errno.h>
 #include "cryptlib.h"
-#include "stack.h"
-#include "lhash.h"
-#include "conf.h"
-#include "buffer.h"
-#include "err.h"
+#include <openssl/stack.h>
+#include <openssl/lhash.h>
+#include <openssl/conf.h>
+#include <openssl/buffer.h>
+#include <openssl/err.h>
 
 #include "conf_lcl.h"
 
@@ -93,22 +93,21 @@ static CONF_VALUE *new_section();
 static CONF_VALUE *get_section();
 #endif
 
-#define scan_esc(p)    ((*(++p) == '\0')?(p):(++p))
+#define scan_esc(p)    ((((p)[1] == '\0')?(p++):(p+=2)),p)
 
-char *CONF_version="CONF part of SSLeay 0.9.0b 29-Jun-1998";
+const char *CONF_version="CONF" OPENSSL_VERSION_PTEXT;
 
-LHASH *CONF_load(h,file,line)
-LHASH *h;
-char *file;
-long *line;
+LHASH *CONF_load(LHASH *h, char *file, long *line)
        {
        LHASH *ret=NULL;
        FILE *in=NULL;
 #define BUFSIZE        512
+       char btmp[16];
        int bufnum=0,i,ii;
        BUF_MEM *buff=NULL;
        char *s,*p,*end;
-       int again,n,eline=0;
+       int again,n;
+       long eline=0;
        CONF_VALUE *v=NULL,*vv,*tv;
        CONF_VALUE *sv=NULL;
        char *section=NULL,*buf;
@@ -219,12 +218,21 @@ long *line;
                if (IS_EOF(*s)) continue; /* blank line */
                if (*s == '[')
                        {
+                       char *ss;
+
                        s++;
                        start=eat_ws(s);
-                       end=eat_alpha_numeric(start);
+                       ss=start;
+again:
+                       end=eat_alpha_numeric(ss);
                        p=eat_ws(end);
                        if (*p != ']')
                                {
+                               if (*p != '\0')
+                                       {
+                                       ss=p;
+                                       goto again;
+                                       }
                                CONFerr(CONF_F_CONF_LOAD,CONF_R_MISSING_CLOSE_SQUARE_BRACKET);
                                goto err;
                                }
@@ -328,6 +336,8 @@ err:
        if (buff != NULL) BUF_MEM_free(buff);
        if (section != NULL) Free(section);
        if (line != NULL) *line=eline;
+       sprintf(btmp,"%ld",eline);
+       ERR_add_error_data(2,"line ",btmp);
        if (in != NULL) fclose(in);
        if ((h != ret) && (ret != NULL)) CONF_free(ret);
        if (v != NULL)
@@ -339,10 +349,7 @@ err:
        return(NULL);
        }
                
-char *CONF_get_string(conf,section,name)
-LHASH *conf;
-char *section;
-char *name;
+char *CONF_get_string(LHASH *conf, char *section, char *name)
        {
        CONF_VALUE *v,vv;
        char *p;
@@ -362,7 +369,7 @@ char *name;
                                if (p != NULL) return(p);
                                }
                        }
-               vv.section="default";
+               vv.section=BUF_strdup("default");
                vv.name=name;
                v=(CONF_VALUE *)lh_retrieve(conf,(char *)&vv);
                if (v != NULL)
@@ -374,9 +381,7 @@ char *name;
                return(Getenv(name));
        }
 
-static CONF_VALUE *get_section(conf,section)
-LHASH *conf;
-char *section;
+static CONF_VALUE *get_section(LHASH *conf, char *section)
        {
        CONF_VALUE *v,vv;
 
@@ -387,9 +392,7 @@ char *section;
        return(v);
        }
 
-STACK *CONF_get_section(conf,section)
-LHASH *conf;
-char *section;
+STACK *CONF_get_section(LHASH *conf, char *section)
        {
        CONF_VALUE *v;
 
@@ -400,10 +403,7 @@ char *section;
                return(NULL);
        }
 
-long CONF_get_number(conf,section,name)
-LHASH *conf;
-char *section;
-char *name;
+long CONF_get_number(LHASH *conf, char *section, char *name)
        {
        char *str;
        long ret=0;
@@ -420,8 +420,7 @@ char *name;
                }
        }
 
-void CONF_free(conf)
-LHASH *conf;
+void CONF_free(LHASH *conf)
        {
        if (conf == NULL) return;
 
@@ -436,9 +435,7 @@ LHASH *conf;
        lh_free(conf);
        }
 
-static void value_free_hash(a,conf)
-CONF_VALUE *a;
-LHASH *conf;
+static void value_free_hash(CONF_VALUE *a, LHASH *conf)
        {
        if (a->name != NULL)
                {
@@ -446,9 +443,7 @@ LHASH *conf;
                }
        }
 
-static void value_free_stack(a,conf)
-CONF_VALUE *a;
-LHASH *conf;
+static void value_free_stack(CONF_VALUE *a, LHASH *conf)
        {
        CONF_VALUE *vv;
        STACK *sk;
@@ -469,8 +464,7 @@ LHASH *conf;
        Free(a);
        }
 
-static void clear_comments(p)
-char *p;
+static void clear_comments(char *p)
        {
        char *to;
 
@@ -499,10 +493,7 @@ char *p;
                }
        }
 
-static int str_copy(conf,section,pto,from)
-LHASH *conf;
-char *section;
-char **pto,*from;
+static int str_copy(LHASH *conf, char *section, char **pto, char *from)
        {
        int q,r,rr=0,to=0,len=0;
        char *s,*e,*rp,*p,*rrp,*np,*cp,v;
@@ -616,16 +607,14 @@ err:
        return(0);
        }
 
-static char *eat_ws(p)
-char *p;
+static char *eat_ws(char *p)
        {
        while (IS_WS(*p) && (!IS_EOF(*p)))
                p++;
        return(p);
        }
 
-static char *eat_alpha_numeric(p)
-char *p;
+static char *eat_alpha_numeric(char *p)
        {
        for (;;)
                {
@@ -640,14 +629,12 @@ char *p;
                }
        }
 
-static unsigned long hash(v)
-CONF_VALUE *v;
+static unsigned long hash(CONF_VALUE *v)
        {
        return((lh_strhash(v->section)<<2)^lh_strhash(v->name));
        }
 
-static int cmp(a,b)
-CONF_VALUE *a,*b;
+static int cmp(CONF_VALUE *a, CONF_VALUE *b)
        {
        int i;
 
@@ -668,8 +655,7 @@ CONF_VALUE *a,*b;
                return((a->name == NULL)?-1:1);
        }
 
-static char *scan_quote(p)
-char *p;
+static char *scan_quote(char *p)
        {
        int q= *p;
 
@@ -687,9 +673,7 @@ char *p;
        return(p);
        }
 
-static CONF_VALUE *new_section(conf,section)
-LHASH *conf;
-char *section;
+static CONF_VALUE *new_section(LHASH *conf, char *section)
        {
        STACK *sk=NULL;
        int ok=0,i;