home *** CD-ROM | disk | FTP | other *** search
/ InfoMagic Source Code 1993 July / THE_SOURCE_CODE_CD_ROM.iso / bsd_srcs / bin / sh / mkbuiltins < prev    next >
Encoding:
Text File  |  1991-04-15  |  2.9 KB  |  88 lines

  1. #!/bin/sh -
  2. #
  3. # Copyright (c) 1991 The Regents of the University of California.
  4. # All rights reserved.
  5. #
  6. # This code is derived from software contributed to Berkeley by
  7. # Kenneth Almquist.
  8. #
  9. # Redistribution and use in source and binary forms, with or without
  10. # modification, are permitted provided that the following conditions
  11. # are met:
  12. # 1. Redistributions of source code must retain the above copyright
  13. #    notice, this list of conditions and the following disclaimer.
  14. # 2. Redistributions in binary form must reproduce the above copyright
  15. #    notice, this list of conditions and the following disclaimer in the
  16. #    documentation and/or other materials provided with the distribution.
  17. # 3. All advertising materials mentioning features or use of this software
  18. #    must display the following acknowledgement:
  19. #    This product includes software developed by the University of
  20. #    California, Berkeley and its contributors.
  21. # 4. Neither the name of the University nor the names of its contributors
  22. #    may be used to endorse or promote products derived from this software
  23. #    without specific prior written permission.
  24. #
  25. # THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
  26. # ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  27. # IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  28. # ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
  29. # FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  30. # DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  31. # OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  32. # HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  33. # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  34. # OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  35. # SUCH DAMAGE.
  36. #
  37. #    @(#)mkbuiltins    5.2 (Berkeley) 3/8/91
  38.  
  39. temp=/tmp/ka$$
  40. havejobs=0
  41. if grep '^#define JOBS[     ]*1' shell.h > /dev/null
  42. then    havejobs=1
  43. fi
  44. exec > obj/builtins.c
  45. cat <<\!
  46. /*
  47.  * This file was generated by the mkbuiltins program.
  48.  */
  49.  
  50. #include "shell.h"
  51. #include "builtins.h"
  52.  
  53. !
  54. awk '/^[^#]/ {if('$havejobs' || $2 != "-j") print $0}' builtins |
  55.     sed 's/-j//' > $temp
  56. awk '{    printf "int %s();\n", $1}' $temp
  57. echo '
  58. int (*const builtinfunc[])() = {'
  59. awk '/^[^#]/ {    printf "\t%s,\n", $1}' $temp
  60. echo '};
  61.  
  62. const struct builtincmd builtincmd[] = {'
  63. awk '{    for (i = 2 ; i <= NF ; i++) {
  64.         printf "\t\"%s\", %d,\n",  $i, NR-1
  65.     }}' $temp
  66. echo '    NULL, 0
  67. };'
  68.  
  69. exec > obj/builtins.h
  70. cat <<\!
  71. /*
  72.  * This file was generated by the mkbuiltins program.
  73.  */
  74.  
  75. #include <sys/cdefs.h>
  76. !
  77. tr abcdefghijklmnopqrstuvwxyz ABCDEFGHIJKLMNOPQRSTUVWXYZ < $temp |
  78.     awk '{    printf "#define %s %d\n", $1, NR-1}'
  79. echo '
  80. struct builtincmd {
  81.       char *name;
  82.       int code;
  83. };
  84.  
  85. extern int (*const builtinfunc[])();
  86. extern const struct builtincmd builtincmd[];'
  87. rm -f $temp
  88.