toy@ecse.rpi.edu (Ray Toy) (07/09/89)
Newsgroups: gnu.utils.bug
Subject:Fixes for Gnudiff 1.7 on 286
I've found a few minor bugs with diff 1.7 when compiling
for a '286 machine. The first is that not every compiler
knows what to do with 'void *' functions. The second is
that 0 is not the same as '(char *) 0)', as usual on a 286.
Here are the patches that fix these minor bugs. I hope
someone finds them useful.
Thanks for the world's fastest diff!
Ray
*** diff.c Wed Apr 26 15:38:27 1989
--- ../new-diff/diff.c Thu Jul 6 20:52:06 1989
***************
*** 314,320 ****
switch_string = option_list (argv + 1, optind - 1);
! val = compare_files (0, argv[optind], 0, argv[optind + 1], 0);
/* Print any messages that were saved up for last. */
print_message_queue ();
--- 314,320 ----
switch_string = option_list (argv + 1, optind - 1);
! val = compare_files ((char *) NULL, argv[optind], (char *) NULL, argv[optind + 1], 0);
/* Print any messages that were saved up for last. */
print_message_queue ();
*** diff.h Fri Feb 24 12:42:05 1989
--- ../new-diff/diff.h Thu Jul 6 21:30:04 1989
***************
*** 41,46 ****
--- 41,47 ----
#ifdef USG
/* Define needed BSD functions in terms of sysV library. */
+ #include <memory.h>
#define bcopy(s,d,n) memcpy((d),(s),(n))
#define bcmp(s1,s2,n) memcmp((s1),(s2),(n))
#define bzero(s,n) memset((s),0,(n))
***************
*** 72,79 ****
#if defined (__STDC__) || defined (__GNUC__)
#include "limits.h"
#else
! #define INT_MAX 2147483647
! #define CHAR_BIT 8
#endif
/* Support old-fashioned C compilers. */
--- 73,85 ----
#if defined (__STDC__) || defined (__GNUC__)
#include "limits.h"
#else
! #ifdef iAPX286
! # define INT_MAX 32767
! # define CHAR_BIT 8
! #else
! # define INT_MAX 2147483647
! # define CHAR_BIT 8
! #endif
#endif
/* Support old-fashioned C compilers. */
***************
*** 308,317 ****
EXTERN FILE *outfile;
/* Declare various functions. */
! void *xmalloc ();
! void *xrealloc ();
! void *xcalloc();
char *concat ();
void free ();
char *rindex ();
--- 314,328 ----
EXTERN FILE *outfile;
/* Declare various functions. */
+ #ifdef HAVE_VOID_PTR
+ #define VOID void
+ #else
+ #define VOID char
+ #endif
! VOID *xmalloc ();
! VOID *xrealloc ();
! VOID *xcalloc();
char *concat ();
void free ();
char *rindex ();
*** diff3.c Sat Apr 8 15:56:10 1989
--- ../new-diff/diff3.c Fri Jul 7 09:00:50 1989
***************
*** 24,32 ****
--- 24,46 ----
#include <stdio.h>
#include <ctype.h>
+ /*
+ * Do we have void pointers?
+ */
+
+ #ifdef HAVE_VOID_PTR
+ #define VOID void
+ #else
+ #define VOID char
+ #endif
+
#ifdef USG
/* Define needed BSD functions in terms of sysV library. */
+ #include <malloc.h>
+ #include <memory.h>
+ #include <fcntl.h>
+
#define bcopy(s,d,n) memcpy((d),(s),(n))
#define bcmp(s1,s2,n) memcmp((s1),(s2),(n))
#define bzero(s,n) memset((s),0,(n))
***************
*** 204,211 ****
struct diff3_block *reverse_diff3_blocklist ();
! void *xmalloc ();
! void *xrealloc ();
/*
* No options take arguments. "i" is my own addition; it stands for
--- 218,225 ----
struct diff3_block *reverse_diff3_blocklist ();
! VOID *xmalloc ();
! VOID *xrealloc ();
/*
* No options take arguments. "i" is my own addition; it stands for
***************
*** 1127,1133 ****
do {
bytes = myread (fds[0],
diff_result + total,
! current_chunk_size - total);
total += bytes;
if (total == current_chunk_size)
diff_result = (char *) xrealloc (diff_result, (current_chunk_size *= 2));
--- 1141,1147 ----
do {
bytes = myread (fds[0],
diff_result + total,
! (int) current_chunk_size - total);
total += bytes;
if (total == current_chunk_size)
diff_result = (char *) xrealloc (diff_result, (current_chunk_size *= 2));
***************
*** 1450,1471 ****
return result;
}
! void *
xmalloc (size)
int size;
{
! void *result = (void *) malloc (size);
if (!result)
fatal ("Malloc failed");
return result;
}
! void *
xrealloc (ptr, size)
! void *ptr;
int size;
{
! void *result = (void *) realloc (ptr, size);
if (!result)
fatal ("Malloc failed");
return result;
--- 1464,1485 ----
return result;
}
! VOID *
xmalloc (size)
int size;
{
! VOID *result = (VOID *) malloc (size);
if (!result)
fatal ("Malloc failed");
return result;
}
! VOID *
xrealloc (ptr, size)
! VOID *ptr;
int size;
{
! VOID *result = (VOID *) realloc (ptr, size);
if (!result)
fatal ("Malloc failed");
return result;
*** regex.c Sat Apr 22 19:10:31 1989
--- ../new-diff/regex.c Thu Jul 6 21:52:48 1989
***************
*** 39,45 ****
--- 39,47 ----
#else /* not emacs */
#ifdef USG
+ #include <malloc.h>
#ifndef BSTRING
+ #include <memory.h>
#define bcopy(s,d,n) memcpy((d),(s),(n))
#define bcmp(s1,s2,n) memcmp((s1),(s2),(n))
#define bzero(s,n) memset((s),0,(n))
*** util.c Fri Feb 24 12:41:08 1989
--- ../new-diff/util.c Fri Jul 7 00:11:16 1989
***************
*** 563,575 ****
*inserts = show_to;
}
/* malloc a block of memory, with fatal error message if we can't do it. */
! void *
xmalloc (size)
unsigned size;
{
! register void *value = (void *) malloc (size);
if (!value)
fatal ("virtual memory exhausted");
--- 563,582 ----
*inserts = show_to;
}
+ #ifdef USG
+ /*
+ * Need to declare malloc routines!
+ */
+ #include <malloc.h>
+ #endif
+
/* malloc a block of memory, with fatal error message if we can't do it. */
! VOID *
xmalloc (size)
unsigned size;
{
! register VOID *value = (VOID *) malloc (size);
if (!value)
fatal ("virtual memory exhausted");
***************
*** 578,589 ****
/* realloc a block of memory, with fatal error message if we can't do it. */
! void *
xrealloc (old, size)
! void *old;
unsigned int size;
{
! register void *value = (void *) realloc (old, size);
if (!value)
fatal ("virtual memory exhausted");
--- 585,596 ----
/* realloc a block of memory, with fatal error message if we can't do it. */
! VOID *
xrealloc (old, size)
! VOID *old;
unsigned int size;
{
! register VOID *value = (VOID *) realloc (old, size);
if (!value)
fatal ("virtual memory exhausted");
***************
*** 590,600 ****
return value;
}
! void *
xcalloc (nitems, size)
int nitems, size;
{
! void *value = (void *) calloc (nitems, size);
if (! value)
fatal ("virtual memory exhausted");
--- 597,607 ----
return value;
}
! VOID *
xcalloc (nitems, size)
int nitems, size;
{
! VOID *value = (VOID *) calloc (nitems, size);
if (! value)
fatal ("virtual memory exhausted");
Newsgroups: gnu.utils.bugs
Subject: Fixes for diff 1.7 on a '286
Expires:
References:
Sender:
Followup-To:
Distribution: gnu
Organization: Rensselaer Polytechnic Institute, Troy, NY
Keywords: