]> mj.ucw.cz Git - nsc-5.git/blobdiff - m4/nsc.m4
Most directory names are now fixed
[nsc-5.git] / m4 / nsc.m4
index 30b2f1e0cea2e01b7f8e3da70bcf61650fe10c3f..ad9ed2493a642867c1c380eaca6d93f5a2820906 100644 (file)
--- a/m4/nsc.m4
+++ b/m4/nsc.m4
@@ -1,13 +1,16 @@
 dnl ###
 dnl ### NSC -- Zone File Generator
-dnl ### (c) 1997--2008 Martin Mares <mj@ucw.cz>
+dnl ### (c) 1997--2011 Martin Mares <mj@ucw.cz>
 dnl ###
 dnl ### Usage: m4 -DVERS=path-to-version-file nsc.m4 domain-source-files >zone-file
+dnl ###    or: m4 -DHASHING nsc.m4 domain-source-files | md5sum
 dnl ###
 include(m4/dnslib.m4)
 
 # Version number
 
+ifdef(`HASHING', `define(`VERSION',`YYYYMMDDNN')', `
+
 ifdef(`VERS',`',`nsc_fatal_error(`VERS macro not defined')')
 
 define(TODAY_CODE, translit(esyscmd(`date +"%Y%m%d"'),`
@@ -21,6 +24,8 @@ syscmd(echo >VERS "`define'(`LAST_TODAY_CODE',TODAY_CODE) `define'(`SUBVER_NUM',
 ifelse(eval(SUBVER_NUM > 99),1,`nsc_fatal_error(`Too many zone changes in a single day, you must tweak 'VERS` manually')')
 define(`VERSION',TODAY_CODE`'format(`%02d', SUBVER_NUM))
 
+')
+
 # Record names
 
 define(nsc_set_name, `define(`CURRENT_NAME', nsc_corr_dot($1))define(`PRINT_NAME', CURRENT_NAME)')
@@ -30,12 +35,12 @@ define(nsc_abs_name, `ifelse(CURRENT_NAME, translit(CURRENT_NAME,.,:), CURRENT_N
 # SOA record
 
 define(nsc_SOA, `
-$ORIGIN CURRENT_DOMAIN
+ifelse(CURRENT_DOMAIN,@,`',$ORIGIN CURRENT_DOMAIN)
 $TTL   MINTTL
 nsc_emit_name  `SOA'   nsc_corr_dot(NSNAME) MAINTNAME (
                VERSION REFRESH RETRY EXPIRE MINTTL )')
 define(SOA, `ifdef(`CURRENT_DOMAIN',`ifdef(`REVERSE_MODE',,`nsc_fatal_error(`SOA record defined twice')')')dnl
-define(`CURRENT_DOMAIN',$1.)dnl
+define(`CURRENT_DOMAIN',ifelse($1,@,@,$1.))dnl
 nsc_set_name(CURRENT_DOMAIN)dnl
 ifdef(`REVERSE_MODE',,`nsc_SOA')')
 
@@ -119,6 +124,18 @@ define(nsc_ALIAS, `$1      `CNAME' CURRENT_NAME
 ')
 define(ALIAS, `nsc_iterate(`nsc_ALIAS', $@)nsc_set_name(CURRENT_NAME)dnl')
 
+# TXT records
+
+define(TXT, `nsc_emit_name     `TXT'   "$1"')
+
+# RP (responsible person) records
+
+define(RP, `nsc_emit_name      `RP'    nsc_corr_dot($1) nsc_corr_dot($2)')
+
+# SRV records
+
+define(SRV, `_`'$1`'._`'$2`'.CURRENT_NAME      `SRV'   $3 $4 $5 nsc_corr_dot($6)`'nsc_set_name(CURRENT_NAME)')
+
 # CNAME records
 
 define(CNAME, `$1      `CNAME' nsc_corr_dot($2)')
@@ -143,6 +160,7 @@ m4wrap(`nsc_cleanup')
 
 divert(0)dnl
 `;;;' Primary zone file
-`;;;' Generated by NSCVER (nsc.m4) on CURRENT_DATE
+`;;;' Generated by NSCVER (nsc.m4) on ifdef(`HASHING', ``CURRENT_DATE'', `CURRENT_DATE')
 `;;;' Please do not edit manually
+`;;;' `VERSION': VERSION
 `'