summaryrefslogtreecommitdiff
path: root/contrib/python/examples/python3/ldns_rr_new_frm_fp_l.demo.py
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/python/examples/python3/ldns_rr_new_frm_fp_l.demo.py')
-rw-r--r--contrib/python/examples/python3/ldns_rr_new_frm_fp_l.demo.py43
1 files changed, 43 insertions, 0 deletions
diff --git a/contrib/python/examples/python3/ldns_rr_new_frm_fp_l.demo.py b/contrib/python/examples/python3/ldns_rr_new_frm_fp_l.demo.py
new file mode 100644
index 0000000..1bd667b
--- /dev/null
+++ b/contrib/python/examples/python3/ldns_rr_new_frm_fp_l.demo.py
@@ -0,0 +1,43 @@
+import ldns
+import sys
+
+if len(sys.argv) <= 1:
+ print("Usage: %s zone_file" % sys.argv[0])
+ sys.exit()
+
+inp = open(sys.argv[1],"r");
+# variables that preserve the parsers state
+my_ttl = 3600;
+my_origin = None
+my_prev = None
+# additional state variables
+last_pos = 0
+line_nr = 0
+
+while True:
+ ret = ldns.ldns_rr_new_frm_fp_l_(inp, my_ttl, my_origin, my_prev)
+ s, rr, line_inc, new_ttl, new_origin, new_prev = ret # unpack the result
+ line_nr += line_inc # increase number of parsed lines
+ my_prev = new_prev # update ref to previous owner
+
+ if s == ldns.LDNS_STATUS_SYNTAX_TTL:
+ my_ttl = new_ttl # update default TTL
+ print("$TTL:", my_ttl)
+ elif s == ldns.LDNS_STATUS_SYNTAX_ORIGIN:
+ my_origin = new_origin # update reference to origin
+ print("$ORIGIN:", my_origin)
+ elif s == ldns.LDNS_STATUS_SYNTAX_EMPTY:
+ if last_pos == inp.tell():
+ break # no advance since last read - EOF
+ last_pos = inp.tell()
+ elif s != ldns.LDNS_STATUS_OK:
+ print("! parse error in line", line_nr)
+ else:
+ # we are sure to have LDNS_STATUS_OK
+ print(rr)
+
+inp.close()
+print("--------------------")
+print("Read %d lines" % line_nr)
+
+