Zsh Mailing List Archive
Messages sorted by: Reverse Date, Date, Thread, Author

gawk problem during build, and patches



While building zsh 3.0.6, I got the following:

gawk -f ./rlimits.awk /usr/include/sys/resource.h > rlimits.h
gcc -c -I.. -I. -I. -D_LARGEFILE_SOURCE -D_FILE_OFFSET_BITS=64 -DHAVE_CONFIG_H -Wall -Wno-implicit -Wmissing-prototypes -O2 builtin.c
In file included from builtin.c:3679:
rlimits.h:7: parse error at null character

When I looked at rlimits.h, I see:

-----------------------------------------------------------
/** rlimits.h                                 **/
/** architecture-customized limits for zsh **/

#define ZSH_NLIMITS 7

static char *recs[ZSH_NLIMITS+1] = {
	cputime,
	filesize,
	datasize,
	stacksize,
	coredumpsize,
	descriptors,
	vmemorysize,
	NULL
};
-----------------------------------------------------------

signames.h had similar problems.  The culprits were lines like

             printf("\t%c%s%c,\n", 034, lim[i], 034)

in the .awk files.  Somehow, the 034 was not being interpreted as a
quote (").  I have gawk 3.0.4 installed, but I see that I configured
it with the --enable-non-decimal-data switch.  I assume this means
that 034 is taken to be an octal number, which is not intended.  I
changed the .awk files to just use \" in the format string instead of
%c and a parameter.  I've included patches below.  (I'm not a
subscriber to the list, so if there are any problems, please send me
email.)

- Ed


-----------------------------------------------------------
*** Src/rlimits.awk~    Wed Apr 28 01:21:43 1999
--- Src/rlimits.awk     Fri Aug  6 18:51:54 1999
***************
*** 63,69 ****
        if (msg[i] == "") {
              badlimit++
!             printf("\t%c%s%c,\n", 034, lim[i], 034)
        } else
!           printf("\t%c%s%c,\n", 034, msg[i], 034)
      print "\tNULL"
      print "};"
--- 63,69 ----
        if (msg[i] == "") {
              badlimit++
!             printf("\t\"%s\",\n", lim[i])
        } else
!           printf("\t\"%s\",\n", msg[i])
      print "\tNULL"
      print "};"
-----------------------------------------------------------
*** Src/signames.awk~	Wed Apr 28 01:21:45 1999
--- Src/signames.awk	Fri Aug  6 18:54:32 1999
***************
*** 52,63 ****
  END {
      ps = "%s"
!     ifdstr = sprintf("#ifdef USE_SUSPENDED\n\t%csuspended%s%c,\n%selse\n\t%cstopped%s%c,\n#endif\n", 034, ps, 034, "#", 034, ps, 034)
  
!     printf("%s\n%s\n\n%s\t%d\n\n%s\n\n%s\n\t%c%s%c,\n", "/** signals.h                                 **/", "/** architecture-customized signals.h for zsh **/", "#define SIGCOUNT", max, "#ifdef GLOBALS", "char *sigmsg[SIGCOUNT+2] = {", 034, "done", 034)
  
      for (i = 1; i <= 0 + max; i++)
  	if (msg[i] == "") {
  	    if (sig[i] == "")
! 		printf("\t%c%c,\n", 034, 034)
  	    else if (sig[i] == "STOP")
  		printf ifdstr, " (signal)", " (signal)"
--- 52,63 ----
  END {
      ps = "%s"
!     ifdstr = sprintf("#ifdef USE_SUSPENDED\n\t\"suspended%s\",\n%selse\n\t\"stopped%s\",\n#endif\n", ps, "#", ps)
  
!     printf("%s\n%s\n\n%s\t%d\n\n%s\n\n%s\n\t\"%s\",\n", "/** signals.h                                 **/", "/** architecture-customized signals.h for zsh **/", "#define SIGCOUNT", max, "#ifdef GLOBALS", "char *sigmsg[SIGCOUNT+2] = {", "done")
  
      for (i = 1; i <= 0 + max; i++)
  	if (msg[i] == "") {
  	    if (sig[i] == "")
! 		printf "\t\"\",\n"
  	    else if (sig[i] == "STOP")
  		printf ifdstr, " (signal)", " (signal)"
***************
*** 69,87 ****
  		printf ifdstr, " (tty output)", " (tty output)"
  	    else
! 		printf("\t%cSIG%s%c,\n", 034, sig[i], 034)
  	} else
! 	    printf("\t%c%s%c,\n", 034, msg[i], 034)
      print "\tNULL"
      print "};"
      print ""
      printf "char *sigs[SIGCOUNT+4] = {\n"
!     printf("\t%cEXIT%c,\n", 034, 034)
      for (i = 1; i <= 0 + max; i++)
  	if (sig[i] == "")
! 	    printf("\t%c%d%c,\n", 034, i, 034)
  	else
! 	    printf("\t%c%s%c,\n", 034, sig[i], 034)
!     printf("\t%cZERR%c,\n", 034, 034)
!     printf("\t%cDEBUG%c,\n", 034, 034)
      print "\tNULL"
      print "};"
--- 69,87 ----
  		printf ifdstr, " (tty output)", " (tty output)"
  	    else
! 		printf("\t\"SIG%s\",\n", sig[i])
  	} else
! 	    printf("\t\"%s\",\n", msg[i])
      print "\tNULL"
      print "};"
      print ""
      printf "char *sigs[SIGCOUNT+4] = {\n"
!     printf "\t\"EXIT\",\n"
      for (i = 1; i <= 0 + max; i++)
  	if (sig[i] == "")
! 	    printf("\t\"%d\",\n", i)
  	else
! 	    printf("\t\"%s\",\n", sig[i])
!     printf "\t\"ZERR\",\n"
!     printf "\t\"DEBUG\",\n"
      print "\tNULL"
      print "};"
-----------------------------------------------------------



Messages sorted by: Reverse Date, Date, Thread, Author