]> git.ipfire.org Git - thirdparty/ldns.git/commitdiff
some /etc/hosts parsing
authorMiek Gieben <miekg@NLnetLabs.nl>
Mon, 18 Apr 2005 19:23:35 +0000 (19:23 +0000)
committerMiek Gieben <miekg@NLnetLabs.nl>
Mon, 18 Apr 2005 19:23:35 +0000 (19:23 +0000)
TODO
chaos.c
higher.c
ldns/higher.h
ldns/parse.h
ldns/resolver.h

diff --git a/TODO b/TODO
index 4ac3318af5ef689e51dce69b1db8d790fa5e9850..80dceba57774cb7592262dff0861ddeddd17bf2c 100644 (file)
--- a/TODO
+++ b/TODO
@@ -9,6 +9,7 @@ o Different digests for DS
 o NSEC generation??
 o openssl's setup function (esp. random)
 o -lssl in library creation
+o parse on \n segfaults
 
 Implementation:
 ---------------
diff --git a/chaos.c b/chaos.c
index 96f513a75fc02292c0ec40f8377dca3b89be5961..ab50a3d05e806c1b85c123ce879f992ac3926e34 100644 (file)
--- a/chaos.c
+++ b/chaos.c
@@ -37,6 +37,8 @@ main(int argc, char *argv[])
                }
        }
 
+       (void)ldns_get_rr_list_hosts_frm_file("/etc/hosts");
+       
        version = ldns_dname_new_frm_str("version.bind");
        id      = ldns_dname_new_frm_str("hostname.bind");
 
index ae23ffbd7ce0b9f17f76ef52ff942d9af47d0206..8870a9945f6ab61a258a39cd79944e58c6c190b9 100644 (file)
--- a/higher.c
+++ b/higher.c
@@ -15,6 +15,9 @@
 #include <openssl/ssl.h>
 #include <openssl/sha.h>
 #include <ldns/higher.h>
+#include <ldns/parse.h>
+#include <ldns/resolver.h>
+
 #include "util.h"
 
 ldns_rr_list *
@@ -84,3 +87,49 @@ ldns_get_rr_list_name_by_addr(ldns_resolver *res, ldns_rdf *addr, ldns_rr_class
        }
        return names;
 }
+
+ldns_rr_list *
+ldns_get_rr_list_hosts_frm_fp(FILE *fp)
+{
+       ssize_t i;
+       char *word;
+
+
+       for(
+                       i = ldns_fget_token(fp, word, LDNS_PARSE_NORMAL, 0);
+                       i > 0;
+                       i = ldns_fget_token(fp, word, LDNS_PARSE_NORMAL, 0)
+       ) {
+               /* # is comment */
+               if (word[0] == '#') {
+                       printf("comment\n");
+                       continue;
+               }
+               
+               fprintf(stderr, "%d [%s]\n",i ,word);
+       }
+
+
+}
+
+
+ldns_rr_list *
+ldns_get_rr_list_hosts_frm_file(char *filename)
+{
+       ldns_rr_list *names;
+       FILE *fp;
+
+       if (!filename) {
+                fp = fopen(RESOLV_HOSTS, "r");
+        
+        } else {
+                fp = fopen(filename, "r");
+        }
+        if (!fp) {
+                return NULL;
+        }
+
+       names = ldns_get_rr_list_hosts_frm_fp(fp);
+       fclose(fp);
+       return names;
+}
index ffb02f5d16aa08c786df47117d70810cf1bf0853..624451ff79dc685bc6b4919b187cf3bcba40dd30 100644 (file)
@@ -41,3 +41,21 @@ ldns_get_rr_list_addr_by_name(ldns_resolver *r, ldns_rdf *name, ldns_rr_class c,
 ldns_rr_list *
 ldns_get_rr_list_name_by_addr(ldns_resolver *r, ldns_rdf *addr, ldns_rr_class c, uint16_t flags);
 #endif /* _LDNS_HIGHER_H */
+
+/**
+ * wade through fp (a /etc/hosts like file)
+ * and return a rr_list containing all the 
+ * defined hosts in there
+ * \param[in] fp the file pointer to use
+ * \return ldns_rr_list * with the names
+ */
+ldns_rr_list * ldns_get_rr_list_host_frm_fp(FILE *fp);
+
+/**
+ * wade through fp (a /etc/hosts like file)
+ * and return a rr_list containing all the 
+ * defined hosts in there
+ * \param[in] filename the filename to use (NULL for /etc/hosts)
+ * \return ldns_rr_list * with the names
+ */
+ldns_rr_list * ldns_get_rr_list_host_frm_file(char *filename);
index 641a89464229b1fcafc19b7687854993dae59077..aba1630bc974a1547570ee180324230eaa0af3ec 100644 (file)
@@ -16,6 +16,7 @@
 
 #define LDNS_PARSE_SKIP_SPACE          "\f\n\r\v"
 #define LDNS_PARSE_NORMAL              " \f\n\r\t\v"
+#define LDNS_PARSE_NO_NL               " \t"
 #define MAXLINE_LEN            512
 #define MAXKEYWORD_LEN         32
 
index a59a0cb8e6d552bdab3162a569aafbe1418ccb65..e02f9c30bd6ffe5883bf7ffd82b88199ee7b49c8 100644 (file)
@@ -22,6 +22,7 @@
 
 /** \brief where to find the resolv.conf file */
 #define RESOLV_CONF    "/etc/resolv.conf"
+#define RESOLV_HOSTS   "/etc/hosts"
 
 #define RESOLV_KEYWORD         0
 #define RESOLV_DEFDOMAIN       1