]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
put the comment handling inside the get_Xtoken functions
authorMiek Gieben <miekg@NLnetLabs.nl>
Tue, 26 Jul 2005 09:17:22 +0000 (09:17 +0000)
committerMiek Gieben <miekg@NLnetLabs.nl>
Tue, 26 Jul 2005 09:17:22 +0000 (09:17 +0000)
ldns/zone.h
parse.c
rr.c
zone.c

index b354e75a49090441f305664b659eaf32610b0011..e25b1d4550bdc984419126744f2152193030bd38 100644 (file)
@@ -88,5 +88,4 @@ bool ldns_zone_push_rr(ldns_zone *z, ldns_rr *rr);
  */
 bool ldns_zone_rr_is_glue(ldns_zone *z, ldns_rr *rr);
 
-
 #endif /* LDNS_ZONE_H */
diff --git a/parse.c b/parse.c
index dc00807db55720fbb8f9336eb5b4640b93dd5b8c..bb639ff769519a0f413c1c41a5fa78207ec8978a 100644 (file)
--- a/parse.c
+++ b/parse.c
@@ -68,6 +68,7 @@ ldns_fget_token(FILE *f, char *token, const char *delim, size_t limit)
 {      
        int c;
        int p; /* 0 -> no parenthese seen, >0 nr of ( seen */
+       int com;
        char *t;
        size_t i;
        const char *d;
@@ -83,6 +84,7 @@ ldns_fget_token(FILE *f, char *token, const char *delim, size_t limit)
 
        p = 0;
        i = 0;
+       com = 0;
        t = token;
        while ((c = getc(f)) != EOF) {
                if (c == '(') {
@@ -101,6 +103,23 @@ ldns_fget_token(FILE *f, char *token, const char *delim, size_t limit)
                        return 0;
                }
 
+               /* do something with comments ; */
+               if (c == ';') {
+                       com = 1;
+               }
+
+               if (c == '\n' && com != 0) {
+                       /* comments */
+                       com = 0;
+                       *t = ' ';
+                       continue;
+               }
+
+               if (com == 1) {
+                       *t = ' ';
+                       continue;
+               }
+
                if (c == '\n' && p != 0) {
                        /* in parentheses */
                        continue;
@@ -189,6 +208,7 @@ ldns_bget_token(ldns_buffer *b, char *token, const char *delim, size_t limit)
 {      
        int c;
        int p; /* 0 -> no parenthese seen, >0 nr of ( seen */
+       int com;
        char *t;
        size_t i;
        const char *d;
@@ -204,6 +224,7 @@ ldns_bget_token(ldns_buffer *b, char *token, const char *delim, size_t limit)
 
        p = 0;
        i = 0;
+       com = 0;
        t = token;
        while ((c = ldns_bgetc(b)) != EOF) {
                if (c == '(') {
@@ -222,6 +243,24 @@ ldns_bget_token(ldns_buffer *b, char *token, const char *delim, size_t limit)
                        return 0;
                }
 
+               /* do something with comments ; */
+               if (c == ';') {
+                       com = 1;
+               }
+
+               if (c == '\n' && com != 0) {
+                       /* comments */
+                       com = 0;
+                       *t = ' ';
+                       continue;
+               }
+
+               if (com == 1) {
+                       *t = ' ';
+                       continue;
+               }
+
+
                if (c == '\n' && p != 0) {
                        /* in parentheses */
                        continue;
@@ -261,6 +300,9 @@ tokenread:
        return (ssize_t)i;
 }
 
+#if 0
+# not needed anymore
+
 char *
 ldns_str_remove_comment(char *str)
 {
@@ -285,6 +327,7 @@ ldns_str_remove_comment(char *str)
        }
        return str2;
 }
+#endif
 
 void
 ldns_bskipc(ldns_buffer *buffer, char c)
diff --git a/rr.c b/rr.c
index 7cc400ecdc555a13e9100c098672b35096223cfd..6fdd639612b97dede4cca7c131affc5aee382e6f 100644 (file)
--- a/rr.c
+++ b/rr.c
@@ -104,7 +104,6 @@ ldns_rr_new_frm_str(const char *str)
        char  *type;
        char  *rdata;
        char  *rd;
-       char  *no_comment_str;
        const char *delimiters;
        ssize_t c;
        
@@ -131,9 +130,7 @@ ldns_rr_new_frm_str(const char *str)
        ttl_val = 0;
        clas_val = 0;
 
-       no_comment_str = ldns_str_remove_comment((char*)str);
-
-       ldns_buffer_new_frm_data(rr_buf, no_comment_str, strlen(no_comment_str));
+       ldns_buffer_new_frm_data(rr_buf, (char*)str, strlen(str));
        
        /* split the rr in its parts -1 signals trouble */
        if (ldns_bget_token(rr_buf, owner, "\t\n ", LDNS_MAX_DOMAINLEN) == -1) {
diff --git a/zone.c b/zone.c
index 3fd1c335efeeb1d130fead2eea8888ac13319d8e..47e86f518329e501b0ca6d160797dba7f57ca760 100644 (file)
--- a/zone.c
+++ b/zone.c
@@ -60,6 +60,7 @@ ldns_zone_rr_is_glue(ldns_zone *z, ldns_rr *rr)
        return false;
 }
 
+
 #if 0
 /**
  * ixfr function. Work on a ldns_zone and remove and add