Hello,

On Fri, Jan 20, 2023 at 09:19:49PM -0800, Nathan via Cygwin wrote:

> The file here for a game I wanted to use is
> http://www.ifarchive.org/if-archive/games/source/Adventure2.5.tar.gz and it
> all compiled but one file getting the error is init.c  as follows: 
> 
> gcc -O  -c init.c
> 
> init.c:167:1: warning: return type defaults to 'int' [-Wimplicit-int]
>   167 | initialise() {
>       | ^~~~~~~~~~
> 
> init.c: In function 'initialise':
> init.c:169:13: warning: implicit declaration of function 'quick_init'
> [-Wimplicit-function-declaration]
>   169 |         if(!quick_init()){raw_init(); report(); quick_save();}
>       |             ^~~~~~~~~~
> 
> init.c:169:27: warning: implicit declaration of function 'raw_init'
> [-Wimplicit-function-declaration]
>   169 |         if(!quick_init()){raw_init(); report(); quick_save();}
>       |                           ^~~~~~~~
>

[...]

> init.c: At top level:
> init.c:173:8: warning: return type defaults to 'int' [-Wimplicit-int]
>   173 | static raw_init() {
>       |        ^~~~~~~~
> 
> init.c:173:8: error: static declaration of 'raw_init' follows non-static
> declaration
> init.c:169:27: note: previous implicit declaration of 'raw_init' with type
> 'int()'
>   169 |         if(!quick_init()){raw_init(); report(); quick_save();}
>       |                           ^~~~~~~~

[...]

> so any tips or suggestions to fix this would be appreciated.

I guess that this code was written to work older compilers, that
allowed different (looser) constructs.

The problem is not Cygwin, but rather the compiler installed with
Cygwin.

For this reason, what follows is off-topic here.

The attached patch should allow compilation with today's compilers.
Copy the file in the same directory as the sources and run:

 $ patch < adventure.patch

I hope this helps.

Best regards,
-- 
Arrigo
--- init.c.orig	1996-01-29 23:21:02.000000000 +0100
+++ init.c	2023-01-21 08:35:20.788823913 +0100
@@ -164,13 +164,19 @@
  *	%B = VARIABLE NUMBER OF BLANKS
  *	%! = THE ENTIRE MESSAGE SHOULD BE SUPPRESSED */
 
-initialise() {
+static int quick_init();
+static int raw_init();
+static int finish_init();
+static void report();
+static int quick_save();
+
+void initialise() {
 	printf("Initialising...\n");
 	if(!quick_init()){raw_init(); report(); quick_save();}
 	finish_init();
 }
 
-static raw_init() {
+static int raw_init() {
 	printf("Couldn't find adventure.data, using adventure.text...\n");
 
 /*  CLEAR OUT THE VARIOUS TEXT-POINTER ARRAYS.  ALL TEXT IS STORED IN ARRAY
@@ -366,7 +372,7 @@
  *  CORRECT LINK TO USE.)  ABB IS ZEROED; IT CONTROLS WHETHER THE ABBREVIATED
  *  DESCRIPTION IS PRINTED.  COUNTS MOD 5 UNLESS "LOOK" IS USED. */
 
-static finish_init() {
+static int finish_init() {
 	/* 1101 */ for (I=1; I<=100; I++) {
 	PLACE[I]=0;
 	PROP[I]=0;
@@ -590,7 +596,7 @@
 
 /*  REPORT ON AMOUNT OF ARRAYS ACTUALLY USED, TO PERMIT REDUCTIONS. */
 
-static report() {
+static void report() {
 	/* 1998 */ for (K=1; K<=LOCSIZ; K++) {
 	KK=LOCSIZ+1-K;
 	if(LTEXT[KK] != 0) goto L1997;
@@ -631,8 +637,9 @@
 
 static void quick_item(long*);
 static void quick_array(long*, long);
+static int quick_io();
 
-static quick_init() {
+static int quick_init() {
 #ifdef AMIGA
 	f = fopen("ram:adventure.data", READ_MODE);
 #else
@@ -652,7 +659,7 @@
 	return(init_cksum == 0);
 }
 
-static quick_save() {
+static int quick_save() {
 	printf("Writing adventure.data...\n");
 	f = fopen("adventure.data",WRITE_MODE);
 	if(f == NULL){printf("Can't open file!\n"); return(0);}
@@ -664,7 +671,7 @@
 	return(0);
 }
 
-static quick_io() {
+static int quick_io() {
 	quick_item(&LINUSE);
 	quick_item(&TRVS);
 	quick_item(&CLSSES);
-- 
Problem reports:      https://cygwin.com/problems.html
FAQ:                  https://cygwin.com/faq/
Documentation:        https://cygwin.com/docs.html
Unsubscribe info:     https://cygwin.com/ml/#unsubscribe-simple

Reply via email to