xref: /openbsd-src/sbin/isakmpd/genconstants.sh (revision 60c439c72a3cbe34ac7950cdf753b6ea1e79e3ca)
1*60c439c7Sderaadt#	$OpenBSD: genconstants.sh,v 1.13 2014/01/22 03:09:31 deraadt Exp $
28c844cbbSniklas#	$EOM: genconstants.sh,v 1.6 1999/04/02 01:15:53 niklas Exp $
32040585eSniklas
42040585eSniklas#
542af7185Sniklas# Copyright (c) 1998, 1999, 2001 Niklas Hallqvist.  All rights reserved.
62040585eSniklas#
72040585eSniklas# Redistribution and use in source and binary forms, with or without
82040585eSniklas# modification, are permitted provided that the following conditions
92040585eSniklas# are met:
102040585eSniklas# 1. Redistributions of source code must retain the above copyright
112040585eSniklas#    notice, this list of conditions and the following disclaimer.
122040585eSniklas# 2. Redistributions in binary form must reproduce the above copyright
132040585eSniklas#    notice, this list of conditions and the following disclaimer in the
142040585eSniklas#    documentation and/or other materials provided with the distribution.
152040585eSniklas#
162040585eSniklas# THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
172040585eSniklas# IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
182040585eSniklas# OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
192040585eSniklas# IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT,
202040585eSniklas# INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT
212040585eSniklas# NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
222040585eSniklas# DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
232040585eSniklas# THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
242040585eSniklas# (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
252040585eSniklas# THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
262040585eSniklas#
272040585eSniklas
282040585eSniklas#
292040585eSniklas# This code was written under funding by Ericsson Radio Systems.
302040585eSniklas#
312040585eSniklas
322040585eSniklasbase=`basename $1`
332040585eSniklasupcased_name=`echo $base |tr a-z A-Z`
342040585eSniklas
352040585eSniklasawk=${AWK:-awk}
362040585eSniklas
372040585eSniklaslocase_function='function locase (str) {
382040585eSniklas  cmd = "echo " str " |tr A-Z a-z"
392040585eSniklas  cmd | getline retval;
402040585eSniklas  close (cmd);
412040585eSniklas  return retval;
422040585eSniklas}'
432040585eSniklas
442040585eSniklas$awk "
452040585eSniklas$locase_function
462040585eSniklas"'
472040585eSniklasBEGIN {
482040585eSniklas  print "/* DO NOT EDIT-- this file is automatically generated.  */\n"
492040585eSniklas  print "#ifndef _'$upcased_name'_H_"
502040585eSniklas  print "#define _'$upcased_name'_H_\n"
512040585eSniklas  print "#include \"constants.h\"\n"
522040585eSniklas}
532040585eSniklas
542040585eSniklas/^[#.]/ {
552040585eSniklas  next
562040585eSniklas}
572040585eSniklas
582040585eSniklas/^[^ 	]/ {
592040585eSniklas  prefix = $1
602040585eSniklas  printf ("extern struct constant_map %s_cst[];\n\n", locase(prefix));
612040585eSniklas  next
622040585eSniklas}
632040585eSniklas
642040585eSniklas/^[ 	]/ && $1 {
652040585eSniklas  printf ("#define %s_%s %s\n", prefix, $1, $2)
662040585eSniklas  next
672040585eSniklas}
682040585eSniklas
692040585eSniklas{
702040585eSniklas    print
712040585eSniklas}
722040585eSniklas
732040585eSniklasEND {
742040585eSniklas  printf ("\n")
752040585eSniklas  print "#endif /* _'$upcased_name'_H_ */"
762040585eSniklas}
772040585eSniklas' <$1.cst >$base.h
782040585eSniklas
792040585eSniklas$awk "
802040585eSniklas$locase_function
812040585eSniklas"'
822040585eSniklasBEGIN {
832040585eSniklas  print "/* DO NOT EDIT-- this file is automatically generated.  */\n"
84770a3ddbSniklas  print "#include \"constants.h\""
852040585eSniklas  print "#include \"'$base'.h\"\n"
862040585eSniklas}
872040585eSniklas
882040585eSniklas/^#/ {
892040585eSniklas  next
902040585eSniklas}
912040585eSniklas
922040585eSniklas/^\./ {
932040585eSniklas  print "	{ 0, 0 }\n};\n"
942040585eSniklas  next
952040585eSniklas}
962040585eSniklas
972040585eSniklas/^[^ 	]/ {
982040585eSniklas  prefix = $1
992040585eSniklas  printf ("struct constant_map %s_cst[] = {\n", locase(prefix))
1002040585eSniklas  next
1012040585eSniklas}
1022040585eSniklas
1032040585eSniklas/^[ 	]/ && $1 {
104204de0fbSho  printf ("	{ %s_%s, \"%s\", %s },\n", prefix, $1, $1,
105204de0fbSho    ($3 && substr($3,1,1) != "#") ? $3 : 0)
1062040585eSniklas  next
1072040585eSniklas}
1082040585eSniklas
1092040585eSniklas{
1102040585eSniklas  print
1112040585eSniklas}
1122040585eSniklas' <$1.cst >$base.c
113