summaryrefslogtreecommitdiff
path: root/obsolete/biblio/bibtex/utils/misc
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /obsolete/biblio/bibtex/utils/misc
Initial commit
Diffstat (limited to 'obsolete/biblio/bibtex/utils/misc')
-rw-r--r--obsolete/biblio/bibtex/utils/misc/rfc2bib.awk117
1 files changed, 117 insertions, 0 deletions
diff --git a/obsolete/biblio/bibtex/utils/misc/rfc2bib.awk b/obsolete/biblio/bibtex/utils/misc/rfc2bib.awk
new file mode 100644
index 0000000000..6b5fa043ee
--- /dev/null
+++ b/obsolete/biblio/bibtex/utils/misc/rfc2bib.awk
@@ -0,0 +1,117 @@
+######################################################################
+#
+# $Id: rfc2bib.awk,v 1.19 2001/02/14 10:41:50 rmm1002 Exp $
+#
+
+# Translates rfc-index.txt to a BibTeX file; probably GNU gawk
+# specific.
+
+# 20010214: fixed up handling of periods in titles (eg. HTTP1.1) by
+# changing FS. Also dealt with altered date parsing for RFC768 (why
+# the removal of hyphens? Wierd...)
+
+# (C) 2000 Richard Mortier, rmm1002@cl.cam.ac.uk
+
+# See http://www.cl.cam.ac.uk/~rmm1002/code.html for updates, etc.
+
+######################################################################
+#
+
+BEGIN {
+
+ FS="[.] " ; RS="\n\n" ;
+
+ # banner
+ printf ("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%");
+ printf ("%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%\n");
+ printf ("%%\n");
+ printf ("%% Date: %s\n", strftime());
+ printf ("%%\n");
+ printf ("%% This file is auto-generated from rfc-index.txt by rfc2bib.awk\n") ;
+ printf ("%% by Richard Mortier (rmm1002 at cl.cam.ac.uk). Consequently it gets\n") ;
+ printf ("%% slightly confused by some entries, so as always\n") ;
+ printf ("%%\n");
+ printf ("%% PROOF-READ YOUR DOCUMENT!\n")
+ printf ("%%\n");
+ printf ("\n");
+ printf ("@string{ietf=\"{IETF}\"}\n\n") ;
+
+}
+
+######################################################################
+#
+
+/^[0-9][0-9][0-9][0-9]/{
+
+ gsub(/[\n]/, "", $0) ;
+ gsub(/[ ]+/, " ", $0) ;
+
+ # guard '$', '_', '#' from BibTeX/LaTeX in all fields
+ gsub(/\$/, "\\$", $0 ) ; # ");
+ gsub(/_/, "\\_", $0 ) ; # ");
+ gsub(/\#/, "\\" "\#", $0 ) ; # ");
+
+ number = substr($1, 0, 4) ;
+ printf ("@TechReport{rfc:%s,\n", number ) ;
+ printf (" key = {{\\sc rfc%s}},\n", number );
+
+ # authors are all the fields "in the middle"; can be separated by
+ # commas or ampersands
+ authors = $2 ;
+ for (i=3 ; i < NF-1 ; i++)
+ {
+ if (length( $ (i) ) > 1)
+ {
+ authors = ( authors ".~" $ (i) ) ;
+ }
+ else
+ {
+ authors = ( authors "." $ (i) ) ;
+ }
+ }
+ gsub(/,| &/, " and", authors) ;
+ gsub(/^ /, "", authors) ;
+ if (length(authors) == 0)
+ {
+ authors = "author list not available" ;
+ }
+ printf (" author = {%s},\n", authors ) ;
+
+ # guard capitals and '&' in the title
+ tmp = substr($1, 6) ;
+ title = gensub(/([A-Z])/, "{\\1}", "g", tmp) ;
+ gsub(/&/, "\\" "\\&", title ) ; # ");
+ printf (" title = {%s},\n", title) ;
+
+ # just let the institution be the IETF for now
+ printf (" institution = ietf,\n") ;
+
+ y_fld = $ (NF-1) ;
+ y_pos = length(y_fld) - 3 ;
+ year = substr(y_fld, y_pos, 4) ;
+ if (length(year) == 0)
+ {
+ year = "{year not available}" ;
+ }
+ printf (" year = %s,\n", year) ;
+
+ printf (" type = {{\\sc rfc}},\n") ;
+ printf (" number = %s,\n", number) ;
+
+ # early RFCs: mmm-dd-yyyy ; later RFCs: month yyyy
+ m_fld = $ (NF-1) ;
+ gsub(/-| |\n|[0-9]/, "", m_fld) ;
+ month = substr(tolower(m_fld), 0, 3) ;
+ if (length(month) == 0)
+ {
+ month = "{month not available}" ;
+ }
+ printf (" month = %s,\n", month) ;
+
+ printf (" annote = {%s},\n", $NF) ;
+ printf ("}\n\n") ;
+
+}
+
+######################################################################
+######################################################################