]> granicus.if.org Git - nethack/commitdiff
makedefs --grep prep, misc cleanup (TRUNK ONLY)
authorkeni <keni>
Wed, 25 Jun 2008 18:56:47 +0000 (18:56 +0000)
committerkeni <keni>
Wed, 25 Jun 2008 18:56:47 +0000 (18:56 +0000)
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

sys/unix/Makefile.doc
sys/unix/Makefile.top
sys/unix/Makefile.utl
sys/unix/hints/macosx10.5
sys/unix/unixmain.c
util/makedefs.c
util/mdgrep.pl

index e9ab867437ed7dcae2d8dd00f6fa5c0f869deba7..ca6e93c48f6126094836f8a222b0307aa6cb371a 100644 (file)
@@ -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
index 3cf757323e918da61f43d2da83fdb4cfbeda1df9..0dd3a1eb6d0787ee4478c9eec1e1cb4858bacb1e 100644 (file)
@@ -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
index c30bfcf20e9a6b0cfabd64ad9ececdcd593e5e6a..c62dd5bd6987d0ef8b29e0292c7abac766175562 100644 (file)
@@ -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
index aa8137e2cc1a8bb1e2fe61a5a5d3f4fb9677664d..626421d89ac5679e3f6594700535ce48266cf174 100644 (file)
@@ -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)
index 5b9b70487eeeec39c625e4545ffd8f6f05f01d70..4119d1e03eb540e981647f29c0e9166a19be74ef 100644 (file)
@@ -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;}
index 6b90a14feaee98c535008273873867e25d285f31..15cb5c3445233acaedabff2fa49d1ca889131754 100644 (file)
@@ -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",
index 9f1560ad91fe506182292e5a56d64f2fd73a2db8..ca1b11f42ddeb9055721f0a794884ce70f2b95b9 100644 (file)
 # 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 <<E_O_M;
 /*
- * $outfile
+ * NetHack 3.5  $outfile  $Date$  $Revision$
+ * Copyright (c) Kenneth Lorber, Kensington, Maryland, 2008
+ * NetHack may be freely redistributed.  See license for details.
+ *
  * This file generated by mdgrep.pl version $rev.
  * DO NOT EDIT!  Your changes will be lost.
  */
@@ -107,6 +117,6 @@ sub gen_commands {
 &start_file;
 &gen_magic(0, @const_false);
 &gen_magic(1, @const_true);
-&gen_file(sort(@os,@win,@feature,@misc,@const_false,@const_true));
+&gen_file(sort(@os,@win,@feature,@misc,@meta,@const_false,@const_true));
 &gen_commands;
 &end_file;