aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authornaddy <naddy@FreeBSD.org>2015-09-20 04:04:52 +0800
committernaddy <naddy@FreeBSD.org>2015-09-20 04:04:52 +0800
commitf75912939aa2bddf39cae6a8fbf40ed4e84669f6 (patch)
tree87387113a7b07f40e897c16da337669978555dd7
parentbd68b2beb2a751a97f1884c0bd571e8b146ab36a (diff)
downloadfreebsd-ports-gnome-f75912939aa2bddf39cae6a8fbf40ed4e84669f6.tar.gz
freebsd-ports-gnome-f75912939aa2bddf39cae6a8fbf40ed4e84669f6.tar.zst
freebsd-ports-gnome-f75912939aa2bddf39cae6a8fbf40ed4e84669f6.zip
Properly fix the LP64 issue in the application resource handling rather
than praying that globals end up in the lower 32-bit address space. Add a number of missing includes, missing prototypes, etc.
-rw-r--r--games/xpipeman/Makefile5
-rw-r--r--games/xpipeman/files/patch-Imakefile6
-rw-r--r--games/xpipeman/files/patch-game.c62
-rw-r--r--games/xpipeman/files/patch-graphics.c22
-rw-r--r--games/xpipeman/files/patch-main.c109
-rw-r--r--games/xpipeman/files/patch-score.c25
-rw-r--r--games/xpipeman/files/patch-xpipeman.h44
7 files changed, 236 insertions, 37 deletions
diff --git a/games/xpipeman/Makefile b/games/xpipeman/Makefile
index b9e6cb0e18ec..b98e91f9db8c 100644
--- a/games/xpipeman/Makefile
+++ b/games/xpipeman/Makefile
@@ -3,7 +3,7 @@
PORTNAME= xpipeman
PORTVERSION= 1.0
-PORTREVISION= 3
+PORTREVISION= 4
CATEGORIES= games
MASTER_SITES= SUNSITE/games/strategy
DISTNAME= ${PORTNAME}
@@ -11,9 +11,6 @@ DISTNAME= ${PORTNAME}
MAINTAINER= ports@FreeBSD.org
COMMENT= Connect the pipes to stop the leaks
-# LP64 issues
-ONLY_FOR_ARCHS= i386 amd64
-
USES= imake tar:Z
USE_XORG= x11 xaw xext xmu xt sm ice
CFLAGS+= -Wno-error=return-type
diff --git a/games/xpipeman/files/patch-Imakefile b/games/xpipeman/files/patch-Imakefile
index f5f57b0be476..75d173f1fdb7 100644
--- a/games/xpipeman/files/patch-Imakefile
+++ b/games/xpipeman/files/patch-Imakefile
@@ -1,5 +1,5 @@
---- ./Imakefile.orig 1992-07-28 23:56:27.000000000 +0000
-+++ ./Imakefile 2013-05-31 12:26:22.000000000 +0000
+--- Imakefile.orig 1992-07-28 23:56:27 UTC
++++ Imakefile
@@ -1,7 +1,7 @@
- SCORE_FILE = -DSCORE_FILE=\"/usr/games/lib/xpipescores\"
@@ -20,7 +20,7 @@
all:: xpipeman
ComplexProgramTarget(xpipeman)
-@@ -19,4 +22,3 @@
+@@ -19,4 +22,3 @@ ComplexProgramTarget(xpipeman)
* InstallManPage(xpipeman,$(MANDIR))
* InstallProgram(xpipeman,$(BINDIR))
*/
diff --git a/games/xpipeman/files/patch-game.c b/games/xpipeman/files/patch-game.c
new file mode 100644
index 000000000000..c525c4c2b3c8
--- /dev/null
+++ b/games/xpipeman/files/patch-game.c
@@ -0,0 +1,62 @@
+--- game.c.orig 1991-09-13 20:32:11 UTC
++++ game.c
+@@ -35,6 +35,7 @@
+ */
+
+ #include <X11/Intrinsic.h>
++#include <stdlib.h>
+ #include "xpipeman.h"
+
+ /* some of these are global */
+@@ -442,7 +443,7 @@ new_level()
+ blkrstart=0;
+ blkfull = STARTFULL;
+
+- if (current_callback != NULL)
++ if (current_callback != 0)
+ XtRemoveTimeOut(current_callback);
+ current_callback = XtAddTimeOut(flow_time_start,show_when_flow,NULL);
+
+@@ -458,7 +459,7 @@ new_level()
+ void
+ speed_up_flow()
+ { int i;
+- if (current_callback != NULL)
++ if (current_callback != 0)
+ XtRemoveTimeOut(current_callback);
+ flow_time = FASTFLOW;
+ current_callback= XtAddTimeOut(flow_time,draw_flow,NULL);
+@@ -515,13 +516,13 @@ XtIntervalId *id;
+ }
+ if (start_flowing)
+ {
+- if (current_callback != NULL)
++ if (current_callback != 0)
+ XtRemoveTimeOut(current_callback);
+ current_callback = XtAddTimeOut(flow_time_start,draw_flow,NULL);
+ }
+ else
+ {
+- if (current_callback != NULL)
++ if (current_callback != 0)
+ XtRemoveTimeOut(current_callback);
+ current_callback = XtAddTimeOut(flow_time_start,show_when_flow,NULL);
+ }
+@@ -533,7 +534,7 @@ draw_flow(data,id)
+ caddr_t data;
+ XtIntervalId *id;
+ {
+- current_callback = NULL;
++ current_callback = 0;
+ if (blktime < 2)
+ {
+ pipe_board[flow_x][flow_y] = blkrstart++;
+@@ -584,7 +585,7 @@ increment_flow()
+
+ if (failed) {
+ buttons_disabled = 1;
+- if (current_callback != NULL)
++ if (current_callback != 0)
+ XtRemoveTimeOut(current_callback);
+ current_callback = XtAddTimeOut(3000,level_over,NULL);
+ }
diff --git a/games/xpipeman/files/patch-graphics.c b/games/xpipeman/files/patch-graphics.c
new file mode 100644
index 000000000000..aef58a855554
--- /dev/null
+++ b/games/xpipeman/files/patch-graphics.c
@@ -0,0 +1,22 @@
+--- graphics.c.orig 1991-09-13 20:32:11 UTC
++++ graphics.c
+@@ -63,8 +63,8 @@ init_pixmaps(top_shell)
+
+ /*- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -*/
+
+- fgcolor.pixel = fg;
+- bgcolor.pixel = bg;
++ fgcolor.pixel = app_data.fg;
++ bgcolor.pixel = app_data.bg;
+ fgcolor.flags = DoRed | DoGreen | DoBlue;
+ bgcolor.flags = DoRed | DoGreen | DoBlue;
+ XQueryColor(display,DefaultColormapOfScreen(XtScreen(playfield_widget)), &fgcolor);
+@@ -444,7 +444,7 @@ void free_pixmaps()
+ {
+ int i;
+
+- for(i=0;i++;i<NUM_TMP_CURSOR_PIXMAPS)
++ for(i=0;i<NUM_TMP_CURSOR_PIXMAPS;i++)
+ XFreePixmap(display,tmp_pixmap[i]);
+
+ }
diff --git a/games/xpipeman/files/patch-main.c b/games/xpipeman/files/patch-main.c
index df7d9d2379f1..4a28d73f2b4e 100644
--- a/games/xpipeman/files/patch-main.c
+++ b/games/xpipeman/files/patch-main.c
@@ -1,43 +1,100 @@
---- ./main.c.orig 1991-09-13 20:32:10.000000000 +0000
-+++ ./main.c 2013-05-31 10:39:59.000000000 +0000
-@@ -146,21 +146,11 @@
- {"-scorefile","scorefile",XrmoptionSepArg, NULL },
+--- main.c.orig 1991-09-13 20:32:10 UTC
++++ main.c
+@@ -53,6 +53,9 @@
+ #endif
+
+
++#include <stdlib.h>
++#include <stdio.h>
++#include <unistd.h>
+ #include "xpipeman.h"
+
+ /*----------------------------------------------------------------------*/
+@@ -138,9 +141,7 @@ static XtActionsRec actions[] = {
+ {"do_nothing",(XtActionProc)do_nothing_action},
};
--static XtResource application_resources[] = {
-- {"foreground", "Foreground", XtRPixel, sizeof(Pixel),
+-Pixel fg, bg;
+-
+-XtTranslations translations;
++AppData app_data;
+
+ static XrmOptionDescRec options[] = {
+ {"-scorefile","scorefile",XrmoptionSepArg, NULL },
+@@ -148,19 +149,20 @@ static XrmOptionDescRec options[] = {
+
+ static XtResource application_resources[] = {
+ {"foreground", "Foreground", XtRPixel, sizeof(Pixel),
- (Cardinal)&fg, XtRString, (caddr_t) "Black"},
-- {"background", "Background", XtRPixel, sizeof(Pixel),
++ XtOffsetOf(AppData, fg), XtRString, (caddr_t) "Black"},
+ {"background", "Background", XtRPixel, sizeof(Pixel),
- (Cardinal)&bg, XtRString, (caddr_t) "White"},
-- {"translations","Translations", XtRTranslationTable, sizeof(XtTranslations),
++ XtOffsetOf(AppData, bg), XtRString, (caddr_t) "White"},
+ {"translations","Translations", XtRTranslationTable, sizeof(XtTranslations),
- (Cardinal)&translations, XtRString, (caddr_t)translations_str},
-- {"scorefile","Scorefile", XtRString, sizeof(String),
++ XtOffsetOf(AppData, translations), XtRString, (caddr_t)translations_str},
+ {"scorefile","Scorefile", XtRString, sizeof(String),
- (Cardinal)&score_filename, XtRString, (caddr_t)SCORE_FILE},
--};
++ XtOffsetOf(AppData, score_filename), XtRString, (caddr_t)SCORE_FILE},
+ };
/*----------------------------------------------------------------------*/
++int
main(argc, argv)
- unsigned int argc;
+ int argc;
char **argv;
{
Arg args[1];
-@@ -168,6 +158,17 @@
- Widget quit_command,
- new_game_command;
-
-+XtResource application_resources[] = {
-+ {"foreground", "Foreground", XtRPixel, sizeof(Pixel),
-+ (Cardinal)&fg, XtRString, (caddr_t) "Black"},
-+ {"background", "Background", XtRPixel, sizeof(Pixel),
-+ (Cardinal)&bg, XtRString, (caddr_t) "White"},
-+ {"translations","Translations", XtRTranslationTable, sizeof(XtTranslations),
-+ (Cardinal)&translations, XtRString, (caddr_t)translations_str},
-+ {"scorefile","Scorefile", XtRString, sizeof(String),
-+ (Cardinal)&score_filename, XtRString, (caddr_t)SCORE_FILE},
-+};
-+
+@@ -170,14 +172,14 @@ main(argc, argv)
+
srandom(getpid());
current_block = 0;
- current_callback = NULL;
+- current_callback = NULL;
++ current_callback = 0;
+
+ top_shell = XtInitialize(argv[0], "xpipeman", options, XtNumber(options), &argc, argv);
+ XtSetValues(top_shell, arglisttop_shell, XtNumber(arglisttop_shell));
+
+ XtAddActions(actions,XtNumber(actions));
+
+- XtGetApplicationResources(top_shell, 0, application_resources,
++ XtGetApplicationResources(top_shell, &app_data, application_resources,
+ XtNumber(application_resources), NULL, 0 );
+
+ top_widget = XtCreateManagedWidget(
+@@ -193,7 +195,7 @@ main(argc, argv)
+ arglistplayfield,
+ XtNumber(arglistplayfield));
+
+- XtAugmentTranslations(playfield_widget,translations);
++ XtAugmentTranslations(playfield_widget,app_data.translations);
+
+ quit_command = XtCreateManagedWidget(
+ "quit_button",
+@@ -263,12 +265,12 @@ main(argc, argv)
+
+ display = XtDisplay(playfield_widget);
+ playfield = XtWindow(playfield_widget);
+- gcv.foreground = fg;
+- gcv.background = bg;
++ gcv.foreground = app_data.fg;
++ gcv.background = app_data.bg;
+ gcv.function = GXcopy;
+ gc = XCreateGC(display, playfield,
+ GCForeground | GCBackground | GCFunction, &gcv);
+- gcv.foreground = bg;
++ gcv.foreground = app_data.bg;
+ cleargc = XCreateGC(display, playfield,
+ GCForeground | GCBackground | GCFunction, &gcv);
+
+@@ -318,7 +320,7 @@ void
+ update_remain(score)
+ int score;
+ {
+- char text[13];
++ char text[16];
+ (void)sprintf(text,"Remaining: %4d",score);
+ XtSetArg(arglistremain_command[0],XtNlabel,text);
+ XtSetValues(remain_command,arglistremain_command,1);
diff --git a/games/xpipeman/files/patch-score.c b/games/xpipeman/files/patch-score.c
index ddeaebecb34b..fe30359ded31 100644
--- a/games/xpipeman/files/patch-score.c
+++ b/games/xpipeman/files/patch-score.c
@@ -1,5 +1,5 @@
---- score.c.orig 1991-09-13 22:32:12.000000000 +0200
-+++ score.c 2011-02-02 19:34:46.908945354 +0100
+--- score.c.orig 1991-09-13 20:32:12 UTC
++++ score.c
@@ -50,8 +50,9 @@
#include <X11/Xaw/Label.h>
#endif
@@ -11,7 +11,7 @@
#include "xpipeman.h"
/*----------------------------------------------------------------------*/
-@@ -64,7 +65,7 @@
+@@ -64,13 +65,12 @@ typedef struct {
static SCORE scores[MAXSCORES];
@@ -20,7 +20,24 @@
new_high_score(),
load_scores(),
write_out_scores();
-@@ -198,7 +199,7 @@
+
+ static FILE *scorefile = 0;
+-char *score_filename;
+
+ /*----------------------------------------------------------------------*/
+
+@@ -100,8 +100,8 @@ load_scores()
+ {
+ int i = 0;
+
+- if( !(scorefile = fopen(score_filename,"r+")) ) {
+- scorefile = fopen(score_filename, "w");
++ if( !(scorefile = fopen(app_data.score_filename,"r+")) ) {
++ scorefile = fopen(app_data.score_filename, "w");
+ return;
+ }
+ #ifndef SYSV
+@@ -198,7 +198,7 @@ static Arg arglist_popdown[] = {
/*ARGSUSED*/
diff --git a/games/xpipeman/files/patch-xpipeman.h b/games/xpipeman/files/patch-xpipeman.h
new file mode 100644
index 000000000000..08258cdcb878
--- /dev/null
+++ b/games/xpipeman/files/patch-xpipeman.h
@@ -0,0 +1,44 @@
+--- xpipeman.h.orig 1991-09-13 20:32:14 UTC
++++ xpipeman.h
+@@ -31,6 +31,13 @@
+ *
+ */
+
++typedef struct {
++ Pixel fg;
++ Pixel bg;
++ XtTranslations translations;
++ char *score_filename;
++} AppData;
++
+ /*
+ * from main.c
+ */
+@@ -39,8 +46,8 @@ extern Window playfield;
+ extern Widget playfield_widget;
+ extern GC gc,
+ cleargc;
+-extern Pixel fg,
+- bg;
++
++extern AppData app_data;
+
+ extern void update_score();
+ extern void update_level();
+@@ -118,8 +125,6 @@ extern void check_score(),
+
+ extern void show_scores_callback();
+
+-extern char *score_filename;
+-
+ /*
+ * from game.c
+ */
+@@ -188,4 +193,7 @@ extern void show_level_over_popup(),
+ show_game_over_popup(),
+ level_over_popdown(),
+ game_over_popdown(),
++ show_nomore_popup(),
++ nomore_popdown(),
++ all_popdown(),
+ create_general_popups();