Remove stuff that are not needed any longer.

This commit is contained in:
kristerw 2003-05-30 22:33:58 +00:00
parent b62cbc21e9
commit 7e5434fe39
4 changed files with 29 additions and 153 deletions

View File

@ -1,4 +1,4 @@
/* $NetBSD: common.h,v 1.13 2003/05/30 18:14:13 kristerw Exp $ */
/* $NetBSD: common.h,v 1.14 2003/05/30 22:33:58 kristerw Exp $ */
#define DEBUGGING
@ -40,7 +40,6 @@
#define MAXHUNKSIZE 100000 /* is this enough lines? */
#define INITHUNKMAX 125 /* initial dynamic allocation size */
#define MAXLINELEN 10240
#define BUFFERSIZE 1024
#define SCCSPREFIX "s."
#define GET "get -e %s"
@ -57,8 +56,6 @@
#define Nulline 0
#define Ctl(ch) ((ch) & 037)
#define strNE(s1,s2) (strcmp(s1, s2))
#define strEQ(s1,s2) (!strcmp(s1, s2))
#define strnNE(s1,s2,l) (strncmp(s1, s2, l))
@ -73,8 +70,6 @@ typedef int LINENUM; /* must be signed */
EXT int Argc; /* guess */
EXT char **Argv;
EXT int Argc_last; /* for restarting plan_b */
EXT char **Argv_last;
EXT struct stat filestat; /* file statistics area */
EXT mode_t filemode INIT(0644);
@ -85,8 +80,6 @@ EXT FILE *rejfp INIT(NULL); /* reject file pointer */
EXT int myuid; /* cache getuid return value */
EXT bool using_plan_a INIT(TRUE); /* try to keep everything in memory */
#define MAXFILEC 2
EXT int filec INIT(0); /* how many file arguments? */
EXT char *filearg[MAXFILEC];

View File

@ -1,7 +1,7 @@
/* $NetBSD: inp.c,v 1.12 2003/05/30 18:14:13 kristerw Exp $ */
/* $NetBSD: inp.c,v 1.13 2003/05/30 22:33:58 kristerw Exp $ */
#include <sys/cdefs.h>
#ifndef lint
__RCSID("$NetBSD: inp.c,v 1.12 2003/05/30 18:14:13 kristerw Exp $");
__RCSID("$NetBSD: inp.c,v 1.13 2003/05/30 22:33:58 kristerw Exp $");
#endif /* not lint */
#include "EXTERN.h"
@ -16,8 +16,7 @@ __RCSID("$NetBSD: inp.c,v 1.12 2003/05/30 18:14:13 kristerw Exp $");
#include <unistd.h>
#include <fcntl.h>
static bool plan_a(char *);
static void plan_b(char *);
static void plan_a(char *);
static bool rev_in_string(char *);
/* Input-file-with-indexable-lines abstract type. */
@ -26,57 +25,37 @@ static size_t i_size; /* Size of the input file */
static char *i_womp; /* Plan a buffer for entire file */
static char **i_ptr; /* Pointers to lines in i_womp */
static int tifd = -1; /* Plan b virtual string array */
static char *tibuf[2]; /* Plan b buffers */
static LINENUM tiline[2] = {-1, -1}; /* 1st line in each buffer */
static LINENUM lines_per_buf; /* How many lines per buffer */
static int tireclen; /* Length of records in tmp file */
/*
* New patch--prepare to edit another file.
* New patch -- prepare to edit another file.
*/
void
re_input(void)
{
if (using_plan_a) {
i_size = 0;
i_size = 0;
if (i_ptr != NULL)
free(i_ptr);
if (i_womp != NULL)
free(i_womp);
i_womp = NULL;
i_ptr = NULL;
} else {
using_plan_a = TRUE; /* maybe the next one is smaller */
Close(tifd);
tifd = -1;
free(tibuf[0]);
free(tibuf[1]);
tibuf[0] = tibuf[1] = NULL;
tiline[0] = tiline[1] = -1;
tireclen = 0;
}
if (i_ptr != NULL)
free(i_ptr);
if (i_womp != NULL)
free(i_womp);
i_womp = NULL;
i_ptr = NULL;
}
/*
* Constuct the line index, somehow or other.
* Construct the line index, somehow or other.
*/
void
scan_input(char *filename)
{
if (!plan_a(filename))
plan_b(filename);
if (verbose) {
say("Patching file %s using Plan %s...\n", filename,
(using_plan_a ? "A" : "B") );
}
plan_a(filename);
if (verbose)
say("Patching file %s using Plan A...\n", filename);
}
/*
* Try keeping everything in memory.
*/
static bool
static void
plan_a(char *filename)
{
int ifd, statfailed;
@ -180,15 +159,8 @@ plan_a(char *filename)
i_womp = xmalloc(i_size + 2);
if ((ifd = open(filename, 0)) < 0)
pfatal("can't open file %s", filename);
if (read(ifd, i_womp, i_size) != i_size) {
/*
* This probably means i_size > 15 or 16 bits worth at this
* point it doesn't matter if i_womp was undersized.
*/
Close(ifd);
free(i_womp);
return FALSE;
}
if (read(ifd, i_womp, i_size) != i_size)
pfatal("read error");
Close(ifd);
if (i_size && i_womp[i_size - 1] != '\n')
i_womp[i_size++] = '\n';
@ -238,105 +210,18 @@ plan_a(char *filename)
say("Good. This file appears to be the %s version.\n",
revision);
}
return TRUE; /* Plan a will work. */
}
/*
* Keep (virtually) nothing in memory.
*/
static void
plan_b(char *filename)
{
FILE *ifp;
int i = 0;
int maxlen = 1;
bool found_revision = (revision == NULL);
using_plan_a = FALSE;
if ((ifp = fopen(filename, "r")) == NULL)
pfatal("can't open file %s", filename);
if ((tifd = creat(TMPINNAME, 0666)) < 0)
pfatal("can't open file %s", TMPINNAME);
while (fgets(buf, sizeof buf, ifp) != NULL) {
if (revision != NULL && !found_revision && rev_in_string(buf))
found_revision = TRUE;
if ((i = strlen(buf)) > maxlen)
maxlen = i; /* Find longest line. */
}
if (revision != NULL) {
if (!found_revision) {
if (force) {
if (verbose)
say(
"Warning: this file doesn't appear to be the %s version--patching anyway.\n",
revision);
} else if (batch) {
fatal(
"this file doesn't appear to be the %s version--aborting.\n", revision);
} else {
ask(
"This file doesn't appear to be the %s version--patch anyway? [n] ",
revision);
if (*buf != 'y')
fatal("aborted\n");
}
} else if (verbose)
say("Good. This file appears to be the %s version.\n",
revision);
}
Fseek(ifp, 0L, 0); /* Rewind file. */
lines_per_buf = BUFFERSIZE / maxlen;
tireclen = maxlen;
tibuf[0] = xmalloc(BUFFERSIZE + 1);
tibuf[1] = xmalloc(BUFFERSIZE + 1);
for (i = 1; ; i++) {
if (! (i % lines_per_buf)) /* New block. */
if (write(tifd, tibuf[0], BUFFERSIZE) < BUFFERSIZE)
pfatal("can't write temp file");
if (fgets(tibuf[0] + maxlen * (i % lines_per_buf),
maxlen + 1, ifp) == NULL) {
input_lines = i - 1;
if (i % lines_per_buf)
if (write(tifd, tibuf[0], BUFFERSIZE)
< BUFFERSIZE)
pfatal("can't write temp file");
break;
}
}
Fclose(ifp);
Close(tifd);
if ((tifd = open(TMPINNAME, 0)) < 0) {
pfatal("can't reopen file %s", TMPINNAME);
}
}
/*
* Fetch a line from the input file, \n terminated, not necessarily \0.
*/
char *
ifetch(LINENUM line, int whichbuf)
ifetch(LINENUM line)
{
if (line < 1 || line > input_lines)
return "";
if (using_plan_a)
return i_ptr[line];
else {
LINENUM offline = line % lines_per_buf;
LINENUM baseline = line - offline;
if (tiline[0] == baseline)
whichbuf = 0;
else if (tiline[1] == baseline)
whichbuf = 1;
else {
tiline[whichbuf] = baseline;
Lseek(tifd, baseline / lines_per_buf * BUFFERSIZE, 0);
if (read(tifd, tibuf[whichbuf], BUFFERSIZE) < 0)
pfatal("error reading tmp file %s", TMPINNAME);
}
return tibuf[whichbuf] + (tireclen * offline);
}
return i_ptr[line];
}
/*
@ -361,5 +246,5 @@ rev_in_string(char *string)
return TRUE;
}
}
return FALSE;
return FALSE;
}

View File

@ -1,9 +1,9 @@
/* $NetBSD: inp.h,v 1.6 2002/03/16 22:36:42 kristerw Exp $ */
/* $NetBSD: inp.h,v 1.7 2003/05/30 22:33:58 kristerw Exp $ */
EXT LINENUM input_lines INIT(0); /* how long is input file in lines */
EXT LINENUM last_frozen_line INIT(0); /* how many input lines have been */
/* irretractibly output */
void re_input(void);
void scan_input(char *);
char *ifetch(LINENUM, int);
char *ifetch(LINENUM);

View File

@ -1,4 +1,4 @@
/* $NetBSD: patch.c,v 1.15 2003/05/30 18:14:13 kristerw Exp $ */
/* $NetBSD: patch.c,v 1.16 2003/05/30 22:33:58 kristerw Exp $ */
/* patch - a program to apply diffs to original files
*
@ -25,7 +25,7 @@
#include <sys/cdefs.h>
#ifndef lint
__RCSID("$NetBSD: patch.c,v 1.15 2003/05/30 18:14:13 kristerw Exp $");
__RCSID("$NetBSD: patch.c,v 1.16 2003/05/30 22:33:58 kristerw Exp $");
#endif /* not lint */
#include "INTERN.h"
@ -440,8 +440,6 @@ get_some_switches(void)
char *s;
rejname[0] = '\0';
Argc_last = Argc;
Argv_last = Argv;
if (!Argc)
return;
for (Argc--,Argv++; Argc; Argc--,Argv++) {
@ -843,7 +841,7 @@ dump_line(LINENUM line)
char R_newline = '\n';
/* Note: string is not null terminated. */
for (s=ifetch(line, 0); putc(*s, ofp) != R_newline; s++) ;
for (s=ifetch(line); putc(*s, ofp) != R_newline; s++) ;
}
/* Does the patch pattern match at line base+offset? */
@ -857,12 +855,12 @@ patch_match(LINENUM base, LINENUM offset, LINENUM fuzz)
for (iline=base+offset+fuzz; pline <= pat_lines; pline++,iline++) {
if (canonicalize) {
if (!similar(ifetch(iline, (offset >= 0)),
if (!similar(ifetch(iline),
pfetch(pline),
pch_line_len(pline) ))
return FALSE;
}
else if (strnNE(ifetch(iline, (offset >= 0)),
else if (strnNE(ifetch(iline),
pfetch(pline),
pch_line_len(pline) ))
return FALSE;