From: keni Date: Wed, 25 Jun 2008 18:56:47 +0000 (+0000) Subject: makedefs --grep prep, misc cleanup (TRUNK ONLY) X-Git-Tag: MOVE2GIT~439 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=41479c040a6e5956b5abe173af6a916d527ddd70;p=nethack makedefs --grep prep, misc cleanup (TRUNK ONLY) use makedefs --grep in Makefile.doc call make clean in doc from make clean in top add commented out rule to produce mdgrep.h from mdgrep.pl macosx1.5: don't chown/chgrp for single-user install unixmain.c: work around C90 warning for Mac-specific code, fix last fix makedefs.c: temporarily disallow blank after control introducer until docs catch up mdgrep.pl: add ALLDOCS, clean up generated file's header --- diff --git a/sys/unix/Makefile.doc b/sys/unix/Makefile.doc index e9ab86743..ca6e93c48 100644 --- a/sys/unix/Makefile.doc +++ b/sys/unix/Makefile.doc @@ -4,6 +4,9 @@ # for Atari # SHELL=E:/GEMINI2/MUPFEL.TTP +MAKEDEFS = ../util/makedefs + +# Which version do we want to build? (XXX These are not used anywhere.) GUIDEBOOK = Guidebook # regular ASCII file #GUIDEBOOK = Guidebook.ps # PostScript file #GUIDEBOOK = Guidebook.dvi # TeX device-independent file @@ -22,8 +25,17 @@ PSCMD = groff # Not appropriate for creating Guidebook.txt. # GUIDECMD = cat Guidebook.txt # The following works better with groff-1.18, eg on Linux -# GUIDECMD = tbl tmac.n Guidebook.mn | nroff -c -Tascii | $(COLCMD) -GUIDECMD = tbl tmac.n Guidebook.mn | nroff | $(COLCMD) +# GUIDECMD = $(GUIDE_PREFORMAT) | nroff -c -Tascii | $(COLCMD) +GUIDECMD = $(GUIDE_PREFORMAT) | nroff | $(COLCMD) + +# Only generate output for the current configuration: +NHGREP = $(MAKEDEFS) --grep --input - --output - +# Generate output for all configurations: +#NHGREP = $(MAKEDEFS) --grep --input - --output - --grep-define ALLDOCS +# Fallback: +#NHGREP = cat + +GUIDE_PREFORMAT = cat Guidebook.mn | $(NHGREP) | tbl tmac.n - # the basic guidebook Guidebook: Guidebook.mn @@ -31,7 +43,7 @@ Guidebook: Guidebook.mn # Fancier output for those with ditroff, psdit and a PostScript printer. Guidebook.ps: Guidebook.mn - tbl tmac.n Guidebook.mn | $(PSCMD) > Guidebook.ps + $(GUIDE_PREFORMAT) | $(PSCMD) > Guidebook.ps # Guidebook.tex is the same as Guidebook.mn but formatted with LaTeX. # - The invocation command for LaTeX may vary in different installations. @@ -47,17 +59,17 @@ MANDIR = /usr/man/man6 MANEXT = 6 # manual installation for most BSD-style systems -GAMEMANCREATE = cp nethack.6 -LEVMANCREATE = cp lev_comp.6 -DGNMANCREATE = cp dgn_comp.6 -RCVRMANCREATE = cp recover.6 -DLBMANCREATE = cp dlb.6 +GAMEMANCREATE = cat nethack.6 | $(NHGREP) > +LEVMANCREATE = cat lev_comp.6 | $(NHGREP) > +DGNMANCREATE = cat dgn_comp.6 | $(NHGREP) > +RCVRMANCREATE = cat recover.6 | $(NHGREP) > +DLBMANCREATE = cat dlb.6 | $(NHGREP) > # manual installation for most SYSV-style systems -# GAMEMANCREATE = nroff -man nethack.6 > -# LEVMANCREATE = nroff -man lev_comp.6 > -# DGNMANCREATE = nroff -man dgn_comp.6 > -# RCVRMANCREATE = nroff -man recover.6 > -# DLBMANCREATE = nroff -man dlb.6 > +# GAMEMANCREATE = cat nethack.6 | $(NHGREP) | nroff -man - > +# LEVMANCREATE = cat lev_comp.6 | $(NHGREP) | nroff -man - > +# DGNMANCREATE = cat dgn_comp.6 | $(NHGREP) | nroff -man - > +# RCVRMANCREATE = cat recover.6 | $(NHGREP) | nroff -man - > +# DLBMANCREATE = cat dlb.6 | $(NHGREP) | nroff -man - > manpages: -$(GAMEMANCREATE) $(MANDIR)/$(GAME).$(MANEXT) @@ -74,17 +86,17 @@ distrib: $(DISTRIB) Guidebook.txt : Guidebook.mn tmac.n $(GUIDECMD) > Guidebook.txt +MAN2TXT = $(NHGREP) | nroff -man - | $(COLCMD) nethack.txt : nethack.6 - nroff -man nethack.6 | $(COLCMD) > nethack.txt + cat nethack.6 | $(MAN2TXT) > nethack.txt lev_comp.txt : lev_comp.6 - nroff -man lev_comp.6 | $(COLCMD) > lev_comp.txt + cat lev_comp.6 | $(MAN2TXT) > lev_comp.txt dgn_comp.txt : dgn_comp.6 - nroff -man dgn_comp.6 | $(COLCMD) > dgn_comp.txt + cat dgn_comp.6 | $(MAN2TXT) > dgn_comp.txt recover.txt : recover.6 - nroff -man recover.6 | $(COLCMD) > recover.txt + cat recover.6 | $(MAN2TXT) > recover.txt dlb.txt : dlb.6 - nroff -man dlb.6 | $(COLCMD) > dlb.txt - + cat dlb.6 | $(MAN2TXT) > dlb.txt clean: -rm -f Guidebook.aux Guidebook.log diff --git a/sys/unix/Makefile.top b/sys/unix/Makefile.top index 3cf757323..0dd3a1eb6 100644 --- a/sys/unix/Makefile.top +++ b/sys/unix/Makefile.top @@ -268,6 +268,7 @@ install: rootcheck $(GAME) recover $(VARDAT) dungeon spec_levs clean: ( cd src ; $(MAKE) clean ) ( cd util ; $(MAKE) clean ) + ( cd doc ; $(MAKE) clean ) # 'make spotless' returns the source tree to near-distribution condition. # it removes .o files, executables, and compiled data files diff --git a/sys/unix/Makefile.utl b/sys/unix/Makefile.utl index c30bfcf20..c62dd5bd6 100644 --- a/sys/unix/Makefile.utl +++ b/sys/unix/Makefile.utl @@ -183,6 +183,10 @@ makedefs.o: makedefs.c $(CONFIG_H) ../include/permonst.h \ ../include/monst.h ../include/you.h ../include/flag.h \ ../include/dlb.h ../include/patchlevel.h ../include/qtext.h +# Don't require perl to build, but document how to get a new mdgrep.h. +#mdgrep.h: mdgrep.pl +# perl mdgrep.pl + ../include/onames.h: makedefs ./makedefs -o ../include/pm.h: makedefs diff --git a/sys/unix/hints/macosx10.5 b/sys/unix/hints/macosx10.5 index aa8137e2c..626421d89 100644 --- a/sys/unix/hints/macosx10.5 +++ b/sys/unix/hints/macosx10.5 @@ -45,8 +45,8 @@ endif # administered this may not be what you (or your admin) want. # Consider a non-shared install (WANT_SHARE_INSTALL=0) instead. # - 'make install' must be run as "sudo make install" -WANT_SHARE_INSTALL=1 -GAMEUID = root +#WANT_SHARE_INSTALL=1 +GAMEUID = keni GAMEGRP = games #CC=gcc -W -Wimplicit -Wreturn-type -Wunused -Wformat -Wswitch -Wshadow -Wcast-qual -Wwrite-strings -DGCC_WARN @@ -113,15 +113,18 @@ ifeq ($(GAMEUID),root) PREFIX:=/Library/NetHack SHELLDIR=/usr/local/bin HACKDIR=$(PREFIX)/nethackdir +CHOWN=chown +CHGRP=chgrp +# We run sgid so the game has access to both HACKDIR and user preferences. +GAMEPERM = 02755 else PREFIX:=/Users/$(GAMEUID) SHELLDIR=$(PREFIX)/bin HACKDIR=$(PREFIX)/nethackdir +CHOWN=touch +CHGRP=touch +GAMEPERM = 0500 endif -CHOWN=chown -CHGRP=chgrp -# We run sgid so the game has access to both HACKDIR and user preferences. -GAMEPERM = 02755 VARFILEPERM = 0664 VARDIRPERM = 0775 ROOTCHECK= [[ `id -u` == 0 ]] || ( echo "Must run install with sudo."; exit 1) diff --git a/sys/unix/unixmain.c b/sys/unix/unixmain.c index 5b9b70487..4119d1e03 100644 --- a/sys/unix/unixmain.c +++ b/sys/unix/unixmain.c @@ -59,6 +59,7 @@ char *argv[]; sys_early_init(); #if defined(__APPLE__) + { /* special hack to change working directory to a resource fork when running from finder --sam */ #define MAC_PATH_VALUE ".app/Contents/MacOS/" @@ -85,6 +86,7 @@ char *argv[]; free(mac_tmp); } } + } #endif hname = argv[0]; @@ -588,8 +590,8 @@ char *optstr; if(optstr[0] == '*') return TRUE; /* allow any user */ if(!pw) return FALSE; pwlen = strlen(pw->pw_name); - *eop = eos(optstr); - *w = optstr; + eop = eos(optstr); + w = optstr; while( w+pwlen <= eop ){ if( ! *w ) break; if( isspace(*w) ){ w++; continue;} diff --git a/util/makedefs.c b/util/makedefs.c index 6b90a14fe..15cb5c344 100644 --- a/util/makedefs.c +++ b/util/makedefs.c @@ -488,6 +488,8 @@ do_ext_makedefs(int argc, char **argv){ Any line starting with a caret is a control line; as in C, zero or more spaces may be embedded in the line almost anywhere; the caret MUST be in column 1. + (XXX for the moment, no white space is allowed after the caret because + existing lines in the docs look like that) Control lines: ^^ a line starting with a (single) literal caret @@ -585,7 +587,11 @@ do_grep_control(buf) { int isif = 1; char *buf0 = buf; +#if 1 + if(isspace(buf[0])) return &buf[-1]; /* XXX see docs above */ +#else while(buf[0] && isspace(buf[0])) buf++; +#endif switch(buf[0]){ case '#': /* comment */ break; @@ -678,7 +684,7 @@ do_grep(){ char *buf1; if(fgets(buf, sizeof(buf), inputfp) == 0) break; - if(tmp=strchr(buf,'\n')) *tmp = '\0'; + if( (tmp=strchr(buf,'\n')) ) *tmp = '\0'; grep_lineno++; if(grep_trace){ Fprintf(outputfp, "%04d %c >%s\n", diff --git a/util/mdgrep.pl b/util/mdgrep.pl index 9f1560ad9..ca1b11f42 100644 --- a/util/mdgrep.pl +++ b/util/mdgrep.pl @@ -28,6 +28,10 @@ # Miscellaneous @misc = qw/BETA/; +# Meta +@meta = qw/ALLDOCS/; # convention: use --grep-define ALLDOCS to notate + # items that are conditionally available + # JUNK: # MICRO BSD __GNUC__ NHSTDC TERMLIB __linux__ LINUX WIN32CON NO_TERMS # ULTRIX_PROTO TERMINFO _DCC DISPMAP OPT_DISPMAP TARGET_API_MAC_CARBON @@ -52,9 +56,15 @@ $outfile = "mdgrep.h"; sub start_file { ($rev) = ('$Revision$') =~ m/: (.*) .$/; open(OUT, ">$outfile") || die "open $outfile: $!"; +# NB: Date and Revision below will be modified when mdgrep.h is written to +# cvs - this is correct (but it means you must commit changes to mdgrep.pl +# before generating mdgrep.h and committing that file. print OUT <