Mercurial > hg > early-roguelike
view urogue/Makefile.in @ 280:70aa5808c782
Fix potential segfaults at restore related to ctime().
In some games, restore() passes the result of ctime() to mvprintw() or
some other variadic message-formatting function. If ctime() has not
been declared properly, its return type is inferred to be int instead
of char *. This does not cause a warning because the compiler does not
know the correct type of variadic arguments.
On platforms where ints and pointers are not the same size, this can,
probably depending on alignment, result in a segfault that is not easy
to trace.
Including time.h fixes the problem. Some games manually declared
ctime() and avoided the bug. These declarations have also been
replaced with the include.
author | John "Elwin" Edwards |
---|---|
date | Fri, 15 Sep 2017 20:51:10 -0400 |
parents | aa0eefcd7df6 |
children | fe6b7a1a6dfc |
line wrap: on
line source
# UltraRogue: The Ultimate Adventure in the Dungeons of Doom # Copyright (C) 1985, 1986, 1992, 1993, 1995 Herb Chong # All rights reserved. # # See the file LICENSE.TXT for full copyright and licensing information. # # Makefile for urogue # DISTNAME=urogue1.0.7 PACKAGE_TARNAME=@PACKAGE_TARNAME@ HDRS = dict.h dictutil.h rogue.h OBJS = armor.o \ artifact.o \ bag.o \ chase.o \ command.o \ daemon.o \ daemons.o \ dict.o \ dictutil.o \ encumb.o \ fight.o \ getplay.o \ ident.o \ init.o \ io.o \ list.o \ magic.o \ main.o \ maze.o \ mdport.o \ memory.o \ misc.o \ monsdata.o \ monsters.o \ move.o \ newlvl.o \ options.o \ pack.o \ passages.o \ player.o \ potions.o \ random.o \ rings.o \ rip.o \ rooms.o \ save.o \ scrolls.o \ state.o \ status.o \ sticks.o \ things.o \ trader.o \ verify.o \ vers.o \ weapons.o \ wizard.o \ xcrypt.o PROGRAM =@PROGRAM@ CFILES = armor.c \ artifact.c \ bag.c \ chase.c \ command.c \ daemon.c \ daemons.c \ dict.c \ dictutil.c \ encumb.c \ fight.c \ getplay.c \ ident.c \ init.c \ io.c \ list.c \ magic.c \ main.c \ maze.c \ mdport.c \ memory.c \ misc.c \ monsdata.c \ monsters.c \ move.c \ newlvl.c \ options.c \ pack.c \ passages.c \ player.c \ potions.c \ random.c \ rings.c \ rip.c \ rooms.c \ save.c \ scrolls.c \ state.c \ status.c \ sticks.c \ things.c \ trader.c \ verify.c \ vers.c \ weapons.c \ wizard.c \ xcrypt.c MISC= Makefile README LICENSE.TXT history.txt TODO DOCS = $(PROGRAM).cat RAWDOCS = README LICENSE.TXT history.txt TODO CC = @CC@ CPPFLAGS=@DEFS@ CFLAGS= CRLIB = @LIBS@ RM = rm -f TAR = tar GROFF=@GROFF@ NROFF=@NROFF@ COLCRT=@COLCRT@ INSTALL=@INSTALL@ SCOREFILE=@SCOREFILE@ LOGFILE=@LOGFILE@ SAVEDIR=@SAVEDIR@ CHARDIR=@CHARDIR@ GROUPOWNER=@GROUPOWNER@ DESTDIR= prefix=@prefix@ exec_prefix=@exec_prefix@ datarootdir=@datarootdir@ bindir=@bindir@ docdir=@docdir@ mandir=@mandir@ man6dir=$(mandir)/man6 .c.o: $(CC) $(CFLAGS) $(CPPFLAGS) -c -o $*.o $*.c all: $(PROGRAM) docs $(PROGRAM): $(OBJS) $(MAKEFILE) $(CC) $(CFLAGS) $(LDFLAGS) $(OBJS) $(CRLIB) -o $@ clean: rm -f $(OBJS) urogue a.out core *.map urogue.exe $(PROGRAM).cat docs: $(DOCS) $(PROGRAM).cat: urogue.6 if test "x$(GROFF)" != "x" ; then \ $(GROFF) -P-c -P-b -P-u -Tascii -man urogue.6 > $(PROGRAM).cat ;\ elif test "x$(NROFF)" != "x" && test "x$(COLCRT)" != "x" ; then \ $(NROFF) -man urogue.6 | $(COLCRT) - > $(PROGRAM).cat ;\ fi install: all touch test if test ! -f $(DESTDIR)$(SCOREFILE) ; then \ mkdir -p `dirname $(DESTDIR)$(SCOREFILE)` ; \ $(INSTALL) -m 0664 test $(DESTDIR)$(SCOREFILE) ; fi if test "x$(LOGFILE)" != "x" && test ! -f $(DESTDIR)$(LOGFILE) ; then \ mkdir -p `dirname $(DESTDIR)$(LOGFILE)` ; \ $(INSTALL) -m 0664 test $(DESTDIR)$(LOGFILE) ; fi if test "x$(SAVEDIR)" != "x" && test ! -d $(DESTDIR)$(SAVEDIR) ; then \ mkdir -p $(DESTDIR)$(SAVEDIR) ; fi if test "x$(CHARDIR)" != "x" && test ! -d $(DESTDIR)$(CHARDIR) ; then \ mkdir -p $(DESTDIR)$(CHARDIR) ; fi mkdir -p $(DESTDIR)$(bindir) $(INSTALL) -m 0755 $(PROGRAM) $(DESTDIR)$(bindir)/$(PROGRAM) -if test "x$(GROUPOWNER)" != "x" ; then \ chgrp $(GROUPOWNER) $(DESTDIR)$(SCOREFILE) ; \ chgrp $(GROUPOWNER) $(DESTDIR)$(LOGFILE) ; \ chgrp $(GROUPOWNER) $(DESTDIR)$(bindir)/$(PROGRAM) ; \ chgrp $(GROUPOWNER) $(DESTDIR)$(SAVEDIR) ; \ chgrp $(GROUPOWNER) $(DESTDIR)$(CHARDIR) ; \ chmod 02755 $(DESTDIR)$(bindir)/$(PROGRAM) ; \ chmod 0464 $(DESTDIR)$(SCOREFILE) ; \ chmod 0464 $(DESTDIR)$(LOGFILE) ; \ chmod 0775 $(DESTDIR)$(SAVEDIR) ; \ chmod 0775 $(DESTDIR)$(CHARDIR) ; \ fi mkdir -p $(DESTDIR)$(man6dir) $(INSTALL) -m 0644 urogue.6 $(DESTDIR)$(man6dir)/$(PROGRAM).6 mkdir -p $(DESTDIR)$(docdir) $(INSTALL) -m 0644 $(DOCS) $(RAWDOCS) $(DESTDIR)$(docdir) $(RM) test uninstall: $(RM) $(DESTDIR)$(bindir)/$(PROGRAM) $(RM) $(DESTDIR)$(man6dir)/$(PROGRAM).6 $(RM) -r $(DESTDIR)$(docdir) reinstall: uninstall install dist.src: make clean tar cf $(DISTNAME)-src.tar $(CFILES) $(HDRS) $(MISC) gzip -f $(DISTNAME)-src.tar dist.irix: make clean make CC=cc CFLAGS="-woff 1116 -O3" urogue nroff -man urogue.6 | colcrt - > urogue.cat tar cf $(DISTNAME)-irix.tar urogue urogue.cat README LICENSE.TXT gzip -f $(DISTNAME)-irix.tar dist.aix: make clean make CC=xlc CFLAGS="-qmaxmem=16768 -O3 -qstrict" urogue nroff -man urogue.6 | colcrt - > urogue.cat tar cf $(DISTNAME)-aix.tar urogue urogue.cat README LICENSE.TXT gzip -f $(DISTNAME)-aix.tar dist.linux: make clean make urogue groff -man urogue.6 | sed -e 's/.\x08//g' > urogue.cat tar cf $(DISTNAME)-linux.tar urogue urogue.cat README LICENSE.TXT gzip -f $(DISTNAME)-linux.tar dist.interix: make clean make urogue groff -P-b -P-u -man -Tascii urogue.6 > urogue.cat tar cf $(DISTNAME)-interix.tar urogue urogue.cat README LICENSE.TXT gzip -f $(DISTNAME)-interix.tar dist.cygwin: make clean make urogue groff -P-c -man -Tascii urogue.6 | sed -e 's/.\x08//g' > urogue.cat tar cf $(DISTNAME)-cygwin.tar urogue.exe urogue.cat README LICENSE.TXT gzip -f $(DISTNAME)-cygwin.tar dist.djgpp: make clean make LDFLAGS="-L$(DJDIR)/LIB" CRLIB="-lpdcurses" urogue groff -man -Tascii urogue.6 | sed -e 's/.\x08//g' > urogue.cat rm -f $(DISTNAME)-djgpp.zip zip $(DISTNAME)-djgpp.zip urogue.exe urogue.cat README LICENSE.TXT