eggert@twinsun.com (Paul Eggert) (11/11/89)
This is a companion to "GNU diff 1.10 runtime and lint fixes". The Makefile chicanery prevents -Ddiff from screwing up diff3.c, which has many variables named 'diff'. There are only lint fixes here, because Saber C didn't handle diff3's subprocesses. =================================================================== RCS file: RCS/Makefile,v retrieving revision 1.1 diff -c -r1.1 Makefile *** /tmp/,RCSt1a22748 Fri Nov 10 13:57:39 1989 --- Makefile Fri Nov 10 13:56:18 1989 *************** *** 21,32 **** # You can compile this with ordinary cc as well, # but gcc makes it faster. # Also, gcc supports -O and -g together. ! CC=gcc -O ! CFLAGS = -g INSTALL = install # On system V, enable these three lines: ! # CFLAGS = -g -DUSG # LIBS = -lPW # INSTALL = cp # (If you compile with GCC, you don't need to define LIBS.) --- 21,32 ---- # You can compile this with ordinary cc as well, # but gcc makes it faster. # Also, gcc supports -O and -g together. ! CC=gcc -O -g ! CFLAGS = -Ddiff INSTALL = install # On system V, enable these three lines: ! # CFLAGS = -DUSG # LIBS = -lPW # INSTALL = cp # (If you compile with GCC, you don't need to define LIBS.) *************** *** 61,67 **** $(archpfx)context.o $(archpfx)diff.o: regex.h $(archpfx)diff3.o: diff3.c ! $(CC) -c $(CFLAGS) -DDIFF_PROGRAM=\"$(bindir)/diff\" diff3.c \ $(OUTPUT_OPTION) clean: --- 61,67 ---- $(archpfx)context.o $(archpfx)diff.o: regex.h $(archpfx)diff3.o: diff3.c ! $(CC) -c -DDIFF_PROGRAM=\"$(bindir)/diff\" diff3.c \ $(OUTPUT_OPTION) clean: =================================================================== RCS file: RCS/diff3.c,v retrieving revision 1.1 diff -c -r1.1 diff3.c *** /tmp/,RCSt1a22748 Fri Nov 10 13:57:40 1989 --- diff3.c Fri Nov 10 13:56:20 1989 *************** *** 200,206 **** struct diff3_block *create_diff3_block (); int compare_line_list (); ! int read_diff (); enum diff_type process_diff_control (); char *scan_diff_line (); --- 200,207 ---- struct diff3_block *create_diff3_block (); int compare_line_list (); ! unsigned myread (); ! unsigned read_diff (); enum diff_type process_diff_control (); char *scan_diff_line (); *************** *** 309,315 **** diff = make_3way_diff (thread1, thread2); if (edscript) output_diff3_edscript (stdout, diff, mapping, argv[optind], ! argv[optind + 1], argv[optind + 2]); else output_diff3 (stdout, diff, mapping); --- 310,316 ---- diff = make_3way_diff (thread1, thread2); if (edscript) output_diff3_edscript (stdout, diff, mapping, argv[optind], ! argv[optind + 2]); else output_diff3 (stdout, diff, mapping); *************** *** 425,432 **** *current[2]; int ! high_water_mark, ! base_water_mark; int high_water_thread, --- 426,432 ---- *current[2]; int ! high_water_mark; int high_water_thread, *************** *** 476,484 **** high_water_diff = current[high_water_thread]; - /* low and high waters start off same diff */ - base_water_mark = D_LOWLINE (high_water_diff, FILE0); - high_water_mark = D_HIGHLINE (high_water_diff, FILE0); /* Make the diff you just got info from into the using class */ --- 476,481 ---- *************** *** 588,596 **** struct diff3_block *result; struct diff_block *ptr; int i; - int current_line; - struct diff_block *last_block; - char **result_line_ptr; int current0line; /* Find the range in file0 */ --- 585,590 ---- *************** *** 893,899 **** * Routines to input and parse two way diffs. */ ! extern char *environ; /* I hope this is here */ #define DIFF_CHUNK_SIZE 10000 --- 887,893 ---- * Routines to input and parse two way diffs. */ ! extern char **environ; /* I hope this is here */ #define DIFF_CHUNK_SIZE 10000 *************** *** 902,908 **** char *filea, *fileb; { char *diff_contents; ! int diff_size; char *scan_diff; enum diff_type dt; int i; --- 896,902 ---- char *filea, *fileb; { char *diff_contents; ! unsigned diff_size; char *scan_diff; enum diff_type dt; int i; *************** *** 1023,1029 **** struct diff_block *db; { char *s = *string; - int done = 0; int holdnum; enum diff_type type; --- 1017,1022 ---- *************** *** 1093,1099 **** return type; } ! int read_diff (filea, fileb, output_placement) char *filea, *fileb; char **output_placement; --- 1086,1092 ---- return type; } ! unsigned read_diff (filea, fileb, output_placement) char *filea, *fileb; char **output_placement; *************** *** 1101,1110 **** char *argv[4]; int fds[2]; char *diff_result; ! long current_chunk_size; ! int bytes; ! char *buffer_ptr; ! int total; argv[0] = diff_program; argv[1] = filea; --- 1094,1102 ---- char *argv[4]; int fds[2]; char *diff_result; ! unsigned current_chunk_size; ! unsigned bytes; ! unsigned total; argv[0] = diff_program; argv[1] = filea; *************** *** 1192,1198 **** { int rev_mapping[3]; static int eliminate[3] = { 1, 0, 0}; ! int i, j; int oddoneout; char *cp; struct diff3_block *ptr; --- 1184,1190 ---- { int rev_mapping[3]; static int eliminate[3] = { 1, 0, 0}; ! int i; int oddoneout; char *cp; struct diff3_block *ptr; *************** *** 1289,1299 **** * routine pays attention to. */ void ! output_diff3_edscript (outputfile, diff, mapping, file0, file1, file2) FILE *outputfile; struct diff3_block *diff; int mapping[3]; ! char *file0, *file1, *file2; { int rev_mapping[3]; int i; --- 1281,1291 ---- * routine pays attention to. */ void ! output_diff3_edscript (outputfile, diff, mapping, file0, file2) FILE *outputfile; struct diff3_block *diff; int mapping[3]; ! char *file0, *file2; { int rev_mapping[3]; int i; *************** *** 1441,1462 **** return prev; } ! int myread (fd, ptr, size) ! int fd, size; char *ptr; { ! int result = read (fd, ptr, size); if (result < 0) perror_with_exit ("Read failed"); ! return result; } void * xmalloc (size) ! int size; { ! void *result = (void *) malloc (size); if (!result) fatal ("Malloc failed"); return result; --- 1433,1456 ---- return prev; } ! unsigned myread (fd, ptr, size) ! int fd; char *ptr; + unsigned size; { ! int result = read (fd, ptr, (int)size); if (result < 0) perror_with_exit ("Read failed"); ! return (unsigned)result; } void * xmalloc (size) ! unsigned size; { ! extern void *malloc(); ! void *result = malloc (size); if (!result) fatal ("Malloc failed"); return result; *************** *** 1465,1473 **** void * xrealloc (ptr, size) void *ptr; ! int size; { ! void *result = (void *) realloc (ptr, size); if (!result) fatal ("Malloc failed"); return result; --- 1459,1468 ---- void * xrealloc (ptr, size) void *ptr; ! unsigned size; { ! extern void *realloc(); ! void *result = realloc (ptr, size); if (!result) fatal ("Malloc failed"); return result; *************** *** 1483,1488 **** --- 1478,1484 ---- perror_with_exit (string) char *string; { + extern void perror (); perror (string); exit (1); }