updating bsd patch, moving it back to usr.bin

Change-Id: Ibc356c932693729ebf86cc4cc51aeca65163af9b
This commit is contained in:
Lionel Sambuc 2014-02-19 17:10:34 +01:00
parent 18e90974b2
commit 757e83288a
16 changed files with 62 additions and 160 deletions

View file

@ -17,7 +17,7 @@ SUBDIR= add_route arp ash at backup btrace \
lpd lspci mail MAKEDEV \ lpd lspci mail MAKEDEV \
mined \ mined \
mount mt netconf \ mount mt netconf \
nonamed patch \ nonamed \
ping postinstall prep printroot \ ping postinstall prep printroot \
profile progressbar pr_routes ps pwdauth \ profile progressbar pr_routes ps pwdauth \
ramdisk rarpd rawspeed rcp readclock \ ramdisk rarpd rawspeed rcp readclock \

View file

@ -19,7 +19,7 @@ SUBDIR= asa \
mkdep mkfifo mkstr mktemp \ mkdep mkfifo mkstr mktemp \
msgc \ msgc \
nbperf newgrp nice nl nohup \ nbperf newgrp nice nl nohup \
passwd paste pathchk pr \ passwd paste patch pathchk pr \
printenv printf pwhash \ printenv printf pwhash \
renice rev \ renice rev \
\ \

View file

@ -22,6 +22,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__RCSID("$NetBSD: backupfile.c,v 1.14 2008/09/19 18:33:34 joerg Exp $");
#include <ctype.h> #include <ctype.h>
#include <dirent.h> #include <dirent.h>
@ -113,7 +114,7 @@ max_backup_version(const char *file, const char *dir)
file_name_length = strlen(file); file_name_length = strlen(file);
while ((dp = readdir(dirp)) != NULL) { while ((dp = readdir(dirp)) != NULL) {
if (strlen(dp->d_name) <= file_name_length) if (dp->d_namlen <= file_name_length)
continue; continue;
this_version = version_number(file, dp->d_name, file_name_length); this_version = version_number(file, dp->d_name, file_name_length);
@ -132,14 +133,9 @@ static char *
make_version_name(const char *file, int version) make_version_name(const char *file, int version)
{ {
char *backup_name; char *backup_name;
int len = strlen(file)+20;
if(!(backup_name = malloc(len))) if (asprintf(&backup_name, "%s.~%d~", file, version) == -1)
return NULL; return NULL;
if (snprintf(backup_name, len, "%s.~%d~", file, version) == -1)
return NULL;
return backup_name; return backup_name;
} }
@ -172,14 +168,9 @@ static char *
concat(const char *str1, const char *str2) concat(const char *str1, const char *str2)
{ {
char *newstr; char *newstr;
int len = strlen(str1) + strlen(str2) + 1;
if(!(newstr = malloc(strlen(str1) + strlen(str2) + 1))) if (asprintf(&newstr, "%s%s", str1, str2) == -1)
return NULL; return NULL;
if (snprintf(newstr, len, "%s%s", str1, str2) == -1)
return NULL;
return newstr; return newstr;
} }

View file

@ -1,7 +1,7 @@
/* /*
* $OpenBSD: inp.c,v 1.34 2006/03/11 19:41:30 otto Exp $ * $OpenBSD: inp.c,v 1.34 2006/03/11 19:41:30 otto Exp $
* $DragonFly: src/usr.bin/patch/inp.c,v 1.6 2007/09/29 23:11:10 swildner Exp $ * $DragonFly: src/usr.bin/patch/inp.c,v 1.6 2007/09/29 23:11:10 swildner Exp $
* $NetBSD: inp.c,v 1.19 2008/09/19 18:33:34 joerg Exp $ * $NetBSD: inp.c,v 1.23 2009/10/21 17:16:11 joerg Exp $
*/ */
/* /*
@ -31,6 +31,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__RCSID("$NetBSD: inp.c,v 1.23 2009/10/21 17:16:11 joerg Exp $");
#include <sys/types.h> #include <sys/types.h>
#include <sys/file.h> #include <sys/file.h>
@ -38,6 +39,7 @@
#include <sys/mman.h> #include <sys/mman.h>
#include <ctype.h> #include <ctype.h>
#include <fcntl.h>
#include <libgen.h> #include <libgen.h>
#include <limits.h> #include <limits.h>
#include <stddef.h> #include <stddef.h>
@ -45,7 +47,6 @@
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <unistd.h> #include <unistd.h>
#include <fcntl.h>
#include "common.h" #include "common.h"
#include "util.h" #include "util.h"
@ -74,24 +75,6 @@ static bool plan_a(const char *);
static void plan_b(const char *); static void plan_b(const char *);
static int readfile(int fd, char *buf, size_t s)
{
int ntoread, nread;
ntoread = s;
nread = 0;
while(ntoread > 0) {
if((nread = read(fd, buf, ntoread)) < 0) {
return nread;
}
buf += nread;
ntoread -= nread;
}
return 0;
}
/* New patch--prepare to edit another file. */ /* New patch--prepare to edit another file. */
void void
@ -102,11 +85,7 @@ re_input(void)
free(i_ptr); free(i_ptr);
i_ptr = NULL; i_ptr = NULL;
if (i_womp != NULL) { if (i_womp != NULL) {
#ifndef __minix
munmap(i_womp, i_size); munmap(i_womp, i_size);
#else
free(i_womp);
#endif
i_womp = NULL; i_womp = NULL;
} }
} else { } else {
@ -143,11 +122,7 @@ reallocate_lines(size_t *lines_allocated)
new_size = *lines_allocated * 3 / 2; new_size = *lines_allocated * 3 / 2;
p = realloc(i_ptr, (new_size + 2) * sizeof(char *)); p = realloc(i_ptr, (new_size + 2) * sizeof(char *));
if (p == NULL) { /* shucks, it was a near thing */ if (p == NULL) { /* shucks, it was a near thing */
#ifndef __minix
munmap(i_womp, i_size); munmap(i_womp, i_size);
#else
free(i_womp);
#endif
i_womp = NULL; i_womp = NULL;
free(i_ptr); free(i_ptr);
i_ptr = NULL; i_ptr = NULL;
@ -279,44 +254,30 @@ plan_a(const char *filename)
out_of_mem = false; out_of_mem = false;
return false; /* force plan b because plan a bombed */ return false; /* force plan b because plan a bombed */
} }
#ifndef __minix if ((uintmax_t)i_size > (uintmax_t)SIZE_MAX) {
if (i_size > SIZE_MAX) {
say("block too large to mmap\n"); say("block too large to mmap\n");
return false; return false;
} }
#endif
if ((ifd = open(filename, O_RDONLY)) < 0) if ((ifd = open(filename, O_RDONLY)) < 0)
pfatal("can't open file %s", filename); pfatal("can't open file %s", filename);
#ifndef __minix if (i_size) {
i_womp = mmap(NULL, i_size, PROT_READ, MAP_PRIVATE, ifd, 0); i_womp = mmap(NULL, i_size, PROT_READ, MAP_PRIVATE, ifd, 0);
if (i_womp == MAP_FAILED) { if (i_womp == MAP_FAILED) {
perror("mmap failed"); perror("mmap failed");
i_womp = NULL;
close(ifd);
return false;
}
} else {
i_womp = NULL; i_womp = NULL;
close(ifd);
return false;
} }
#else
i_womp = malloc(i_size);
if(i_size && i_womp == NULL) {
fprintf(stderr, "Malloc failed.\n");
i_womp = NULL;
close(ifd);
return false;
}
if(readfile(ifd, i_womp, i_size) < 0) {
perror("Readfile failed.");
i_womp = NULL;
close(ifd);
return false;
}
#endif
close(ifd); close(ifd);
#ifndef __minix #if !defined(__minix)
if (i_size) if (i_size)
madvise(i_womp, i_size, MADV_SEQUENTIAL); madvise(i_womp, i_size, MADV_SEQUENTIAL);
#endif #endif /* !defined(__minix) */
/* estimate the number of lines */ /* estimate the number of lines */
lines_allocated = i_size / 25; lines_allocated = i_size / 25;
@ -349,11 +310,7 @@ plan_a(const char *filename)
if (p == NULL) { if (p == NULL) {
free(i_ptr); free(i_ptr);
i_ptr = NULL; i_ptr = NULL;
#ifndef __minix
munmap(i_womp, i_size); munmap(i_womp, i_size);
#else
free(i_womp);
#endif
i_womp = NULL; i_womp = NULL;
return false; return false;
} }

View file

@ -34,6 +34,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__RCSID("$NetBSD: mkpath.c,v 1.1 2008/09/19 18:33:34 joerg Exp $");
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>

View file

@ -1,6 +1,6 @@
.\" $OpenBSD: patch.1,v 1.22 2008/06/06 20:44:00 jmc Exp $ .\" $OpenBSD: patch.1,v 1.22 2008/06/06 20:44:00 jmc Exp $
.\" $DragonFly: src/usr.bin/patch/patch.1,v 1.10 2008/08/18 19:15:55 joerg Exp $ .\" $DragonFly: src/usr.bin/patch/patch.1,v 1.10 2008/08/18 19:15:55 joerg Exp $
.\" $NetBSD: patch.1,v 1.13 2008/09/19 18:33:34 joerg Exp $ .\" $NetBSD: patch.1,v 1.16 2013/01/29 09:30:11 wiz Exp $
.\" Copyright 1986, Larry Wall .\" Copyright 1986, Larry Wall
.\" .\"
.\" Redistribution and use in source and binary forms, with or without .\" Redistribution and use in source and binary forms, with or without
@ -29,7 +29,6 @@
.Nd apply a diff file to an original .Nd apply a diff file to an original
.Sh SYNOPSIS .Sh SYNOPSIS
.Nm .Nm
.Bk -words
.Op Fl bCcEeflNnRstuv .Op Fl bCcEeflNnRstuv
.Op Fl B Ar backup-prefix .Op Fl B Ar backup-prefix
.Op Fl D Ar symbol .Op Fl D Ar symbol
@ -44,7 +43,6 @@
.Op Fl z Ar backup-ext .Op Fl z Ar backup-ext
.Op Fl Fl posix .Op Fl Fl posix
.Op Ar origfile Op Ar patchfile .Op Ar origfile Op Ar patchfile
.Ek
.Nm .Nm
.Pf \*(Lt Ar patchfile .Pf \*(Lt Ar patchfile
.Sh DESCRIPTION .Sh DESCRIPTION
@ -87,10 +85,7 @@ below).
.Pp .Pp
The options are as follows: The options are as follows:
.Bl -tag -width Ds .Bl -tag -width Ds
.It Xo .It Fl B Ar backup-prefix , Fl Fl prefix Ar backup-prefix
.Fl B Ar backup-prefix ,
.Fl Fl prefix Ar backup-prefix
.Xc
Causes the next argument to be interpreted as a prefix to the backup file Causes the next argument to be interpreted as a prefix to the backup file
name. name.
If this argument is specified, any argument to If this argument is specified, any argument to
@ -113,10 +108,7 @@ Checks that the patch would apply cleanly, but does not modify anything.
Forces Forces
.Nm .Nm
to interpret the patch file as a context diff. to interpret the patch file as a context diff.
.It Xo .It Fl D Ar symbol , Fl Fl ifdef Ar symbol
.Fl D Ar symbol ,
.Fl Fl ifdef Ar symbol
.Xc
Causes Causes
.Nm .Nm
to use the to use the
@ -126,10 +118,7 @@ The argument following will be used as the differentiating symbol.
Note that, unlike the C compiler, there must be a space between the Note that, unlike the C compiler, there must be a space between the
.Fl D .Fl D
and the argument. and the argument.
.It Xo .It Fl d Ar directory , Fl Fl directory Ar directory
.Fl d Ar directory ,
.Fl Fl directory Ar directory
.Xc
Causes Causes
.Nm .Nm
to interpret the next argument as a directory, to interpret the next argument as a directory,
@ -145,10 +134,7 @@ Forces
to interpret the patch file as an to interpret the patch file as an
.Xr ed 1 .Xr ed 1
script. script.
.It Xo .It Fl F Ar max-fuzz , Fl Fl fuzz Ar max-fuzz
.Fl F Ar max-fuzz ,
.Fl Fl fuzz Ar max-fuzz
.Xc
Sets the maximum fuzz factor. Sets the maximum fuzz factor.
This option only applies to context diffs, and causes This option only applies to context diffs, and causes
.Nm .Nm
@ -170,12 +156,9 @@ and assume that patches are not reversed even if they look like they are.
This option does not suppress commentary; use This option does not suppress commentary; use
.Fl s .Fl s
for that. for that.
.It Xo .It Fl i Ar patchfile , Fl Fl input Ar patchfile
.Fl i Ar patchfile ,
.Fl Fl input Ar patchfile
.Xc
Causes the next argument to be interpreted as the input file name Causes the next argument to be interpreted as the input file name
(i.e. a patchfile). (i.e., a patchfile).
This option may be specified multiple times. This option may be specified multiple times.
.It Fl l , Fl Fl ignore-whitespace .It Fl l , Fl Fl ignore-whitespace
Causes the pattern matching to be done loosely, in case the tabs and Causes the pattern matching to be done loosely, in case the tabs and
@ -194,15 +177,9 @@ See also
Forces Forces
.Nm .Nm
to interpret the patch file as a normal diff. to interpret the patch file as a normal diff.
.It Xo .It Fl o Ar out-file , Fl Fl output Ar out-file
.Fl o Ar out-file ,
.Fl Fl output Ar out-file
.Xc
Causes the next argument to be interpreted as the output file name. Causes the next argument to be interpreted as the output file name.
.It Xo .It Fl p Ar strip-count , Fl Fl strip Ar strip-count
.Fl p Ar strip-count ,
.Fl Fl strip Ar strip-count
.Xc
Sets the pathname strip count, Sets the pathname strip count,
which controls how pathnames found in the patch file are treated, which controls how pathnames found in the patch file are treated,
in case you keep your files in a different directory than the person who sent in case you keep your files in a different directory than the person who sent
@ -263,21 +240,15 @@ If it can, you will be asked if you want to have the
option set. option set.
If it can't, the patch will continue to be applied normally. If it can't, the patch will continue to be applied normally.
(Note: this method cannot detect a reversed patch if it is a normal diff (Note: this method cannot detect a reversed patch if it is a normal diff
and if the first command is an append (i.e. it should have been a delete) and if the first command is an append (i.e., it should have been a delete)
since appends always succeed, due to the fact that a null context will match since appends always succeed, due to the fact that a null context will match
anywhere. anywhere.
Luckily, most patches add or change lines rather than delete them, so most Luckily, most patches add or change lines rather than delete them, so most
reversed normal diffs will begin with a delete, which will fail, triggering reversed normal diffs will begin with a delete, which will fail, triggering
the heuristic.) the heuristic.)
.It Xo .It Fl r Ar rej-name , Fl Fl reject-file Ar rej-name
.Fl r Ar rej-name ,
.Fl Fl reject-file Ar rej-name
.Xc
Causes the next argument to be interpreted as the reject file name. Causes the next argument to be interpreted as the reject file name.
.It Xo .It Fl s , Fl Fl quiet , Fl Fl silent
.Fl s , Fl Fl quiet ,
.Fl Fl silent
.Xc
Makes Makes
.Nm .Nm
do its work silently, unless an error occurs. do its work silently, unless an error occurs.
@ -295,10 +266,7 @@ and assume that patches are reversed if they look like they are.
Forces Forces
.Nm .Nm
to interpret the patch file as a unified context diff (a unidiff). to interpret the patch file as a unified context diff (a unidiff).
.It Xo .It Fl V Cm t | nil | never , Fl Fl version-control Cm t | nil | never
.Fl V Cm t | nil | never ,
.Fl Fl version-control Cm t | nil | never
.Xc
Causes the next argument to be interpreted as a method for creating Causes the next argument to be interpreted as a method for creating
backup file names. backup file names.
The type of backups made can also be given in the The type of backups made can also be given in the
@ -333,17 +301,11 @@ Always make simple backups.
Causes Causes
.Nm .Nm
to print out its revision header and patch level. to print out its revision header and patch level.
.It Xo .It Fl x Ar number , Fl Fl debug Ar number
.Fl x Ar number ,
.Fl Fl debug Ar number
.Xc
Sets internal debugging flags, and is of interest only to Sets internal debugging flags, and is of interest only to
.Nm .Nm
patchers. patchers.
.It Xo .It Fl z Ar backup-ext , Fl Fl suffix Ar backup-ext
.Fl z Ar backup-ext ,
.Fl Fl suffix Ar backup-ext
.Xc
Causes the next argument to be interpreted as the backup extension, to be Causes the next argument to be interpreted as the backup extension, to be
used in place of used in place of
.Qq .orig . .Qq .orig .

View file

@ -1,7 +1,7 @@
/* /*
* $OpenBSD: patch.c,v 1.45 2007/04/18 21:52:24 sobrado Exp $ * $OpenBSD: patch.c,v 1.45 2007/04/18 21:52:24 sobrado Exp $
* $DragonFly: src/usr.bin/patch/patch.c,v 1.10 2008/08/10 23:39:56 joerg Exp $ * $DragonFly: src/usr.bin/patch/patch.c,v 1.10 2008/08/10 23:39:56 joerg Exp $
* $NetBSD: patch.c,v 1.27 2008/09/19 18:33:34 joerg Exp $ * $NetBSD: patch.c,v 1.29 2011/09/06 18:25:14 joerg Exp $
*/ */
/* /*
@ -31,6 +31,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__RCSID("$NetBSD: patch.c,v 1.29 2011/09/06 18:25:14 joerg Exp $");
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
@ -105,7 +106,7 @@ static bool spew_output(void);
static void dump_line(LINENUM, bool); static void dump_line(LINENUM, bool);
static bool patch_match(LINENUM, LINENUM, LINENUM); static bool patch_match(LINENUM, LINENUM, LINENUM);
static bool similar(const char *, const char *, int); static bool similar(const char *, const char *, int);
static void usage(void); __dead static void usage(void);
/* true if -E was specified on command line. */ /* true if -E was specified on command line. */
static bool remove_empty_files = false; static bool remove_empty_files = false;
@ -155,46 +156,36 @@ main(int argc, char *argv[])
LINENUM where = 0, newwhere, fuzz, mymaxfuzz; LINENUM where = 0, newwhere, fuzz, mymaxfuzz;
const char *tmpdir; const char *tmpdir;
char *v; char *v;
int alloclen;
setbuf(stderr, serrbuf); setbuf(stderr, serrbuf);
for (i = 0; i < MAXFILEC; i++) for (i = 0; i < MAXFILEC; i++)
filearg[i] = NULL; filearg[i] = NULL;
/* Cons up the names of the temporary files. */ /* Cons up the names of the temporary files. */
if ((tmpdir = getenv("TMPDIR")) == NULL || *tmpdir == '\0') if ((tmpdir = getenv("TMPDIR")) == NULL || *tmpdir == '\0')
tmpdir = _PATH_TMP; tmpdir = _PATH_TMP;
for (i = strlen(tmpdir) - 1; i > 0 && tmpdir[i] == '/'; i--) for (i = strlen(tmpdir) - 1; i > 0 && tmpdir[i] == '/'; i--)
; ;
i++; i++;
if (asprintf(&TMPOUTNAME, "%.*s/patchoXXXXXXXXXX", i, tmpdir) == -1)
alloclen = i + 100;
#define TMPALLOC(var) if(!(var = malloc(alloclen))) { fatal(#var); exit(1); }
TMPALLOC(TMPOUTNAME);
TMPALLOC(TMPINNAME);
TMPALLOC(TMPREJNAME);
TMPALLOC(TMPPATNAME);
if (snprintf(TMPOUTNAME, alloclen, "%.*s/patchoXXXXXXXXXX", i, tmpdir) == -1)
fatal("cannot allocate memory"); fatal("cannot allocate memory");
if ((fd = mkstemp(TMPOUTNAME)) < 0) if ((fd = mkstemp(TMPOUTNAME)) < 0)
pfatal("can't create %s", TMPOUTNAME); pfatal("can't create %s", TMPOUTNAME);
close(fd); close(fd);
if (snprintf(TMPINNAME, alloclen, "%.*s/patchiXXXXXXXXXX", i, tmpdir) == -1) if (asprintf(&TMPINNAME, "%.*s/patchiXXXXXXXXXX", i, tmpdir) == -1)
fatal("cannot allocate memory"); fatal("cannot allocate memory");
if ((fd = mkstemp(TMPINNAME)) < 0) if ((fd = mkstemp(TMPINNAME)) < 0)
pfatal("can't create %s", TMPINNAME); pfatal("can't create %s", TMPINNAME);
close(fd); close(fd);
if (snprintf(TMPREJNAME, alloclen, "%.*s/patchrXXXXXXXXXX", i, tmpdir) == -1) if (asprintf(&TMPREJNAME, "%.*s/patchrXXXXXXXXXX", i, tmpdir) == -1)
fatal("cannot allocate memory"); fatal("cannot allocate memory");
if ((fd = mkstemp(TMPREJNAME)) < 0) if ((fd = mkstemp(TMPREJNAME)) < 0)
pfatal("can't create %s", TMPREJNAME); pfatal("can't create %s", TMPREJNAME);
close(fd); close(fd);
if (snprintf(TMPPATNAME, alloclen, "%.*s/patchpXXXXXXXXXX", i, tmpdir) == -1) if (asprintf(&TMPPATNAME, "%.*s/patchpXXXXXXXXXX", i, tmpdir) == -1)
fatal("cannot allocate memory"); fatal("cannot allocate memory");
if ((fd = mkstemp(TMPPATNAME)) < 0) if ((fd = mkstemp(TMPPATNAME)) < 0)
pfatal("can't create %s", TMPPATNAME); pfatal("can't create %s", TMPPATNAME);
@ -632,7 +623,7 @@ usage(void)
" [-r rej-name] [-V t | nil | never] [-x number] [-z backup-ext]\n" " [-r rej-name] [-V t | nil | never] [-x number] [-z backup-ext]\n"
" [--posix] [origfile [patchfile]]\n" " [--posix] [origfile [patchfile]]\n"
" patch <patchfile\n"); " patch <patchfile\n");
my_exit(EXIT_SUCCESS); my_exit(EXIT_FAILURE);
} }
/* /*

View file

@ -1,7 +1,7 @@
/* /*
* $OpenBSD: pch.c,v 1.37 2007/09/02 15:19:33 deraadt Exp $ * $OpenBSD: pch.c,v 1.37 2007/09/02 15:19:33 deraadt Exp $
* $DragonFly: src/usr.bin/patch/pch.c,v 1.6 2008/08/10 23:35:40 joerg Exp $ * $DragonFly: src/usr.bin/patch/pch.c,v 1.6 2008/08/10 23:35:40 joerg Exp $
* $NetBSD: pch.c,v 1.23 2008/09/19 18:33:34 joerg Exp $ * $NetBSD: pch.c,v 1.25 2013/01/29 09:30:11 wiz Exp $
*/ */
/* /*
@ -31,6 +31,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__RCSID("$NetBSD: pch.c,v 1.25 2013/01/29 09:30:11 wiz Exp $");
#include <sys/types.h> #include <sys/types.h>
#include <sys/stat.h> #include <sys/stat.h>
@ -447,7 +448,7 @@ skip_to(LINENUM file_pos, LINENUM file_line)
} }
/* Make this a function for better debugging. */ /* Make this a function for better debugging. */
static void __dead static void
malformed(void) malformed(void)
{ {
fatal("malformed patch at line %ld: %s", p_input_line, buf); fatal("malformed patch at line %ld: %s", p_input_line, buf);
@ -455,7 +456,7 @@ malformed(void)
} }
/* /*
* True if the line has been discarded (i.e. it is a line saying * True if the line has been discarded (i.e., it is a line saying
* "\ No newline at end of file".) * "\ No newline at end of file".)
*/ */
static bool static bool

View file

@ -1,7 +1,7 @@
/* /*
* $OpenBSD: util.c,v 1.32 2006/03/11 19:41:30 otto Exp $ * $OpenBSD: util.c,v 1.32 2006/03/11 19:41:30 otto Exp $
* $DragonFly: src/usr.bin/patch/util.c,v 1.9 2007/09/29 23:11:10 swildner Exp $ * $DragonFly: src/usr.bin/patch/util.c,v 1.9 2007/09/29 23:11:10 swildner Exp $
* $NetBSD: util.c,v 1.24 2008/09/19 18:33:34 joerg Exp $ * $NetBSD: util.c,v 1.26 2010/10/02 19:31:14 wiz Exp $
*/ */
/* /*
@ -31,6 +31,7 @@
*/ */
#include <sys/cdefs.h> #include <sys/cdefs.h>
__RCSID("$NetBSD: util.c,v 1.26 2010/10/02 19:31:14 wiz Exp $");
#include <sys/param.h> #include <sys/param.h>
#include <sys/stat.h> #include <sys/stat.h>
@ -325,8 +326,10 @@ makedirs(const char *filename, bool striplast)
if (striplast) { if (striplast) {
char *s = strrchr(tmpbuf, '/'); char *s = strrchr(tmpbuf, '/');
if (s == NULL) if (s == NULL) {
free(tmpbuf);
return; /* nothing to be done */ return; /* nothing to be done */
}
*s = '\0'; *s = '\0';
} }
if (mkpath(tmpbuf) != 0) if (mkpath(tmpbuf) != 0)
@ -415,7 +418,7 @@ checked_in(char *file)
void void
version(void) version(void)
{ {
fprintf(stderr, "Patch version 2.0-12u8-NetBSD\n"); printf("Patch version 2.0-12u8-NetBSD\n");
my_exit(EXIT_SUCCESS); my_exit(EXIT_SUCCESS);
} }

View file

@ -1,7 +1,7 @@
/* /*
* $OpenBSD: util.h,v 1.15 2005/06/20 07:14:06 otto Exp $ * $OpenBSD: util.h,v 1.15 2005/06/20 07:14:06 otto Exp $
* $DragonFly: src/usr.bin/patch/util.h,v 1.2 2007/09/29 23:11:10 swildner Exp $ * $DragonFly: src/usr.bin/patch/util.h,v 1.2 2007/09/29 23:11:10 swildner Exp $
* $NetBSD: util.h,v 1.11 2008/09/19 18:33:34 joerg Exp $ * $NetBSD: util.h,v 1.12 2011/09/06 18:25:14 joerg Exp $
*/ */
/* /*
@ -35,20 +35,16 @@ char *checked_in(char *);
int backup_file(const char *); int backup_file(const char *);
int move_file(const char *, const char *); int move_file(const char *, const char *);
int copy_file(const char *, const char *); int copy_file(const char *, const char *);
void say(const char *, ...) void say(const char *, ...) __printflike(1, 2);
__attribute__((__format__(__printf__, 1, 2))); void fatal(const char *, ...) __printflike(1, 2) __dead;
void fatal(const char *, ...) void pfatal(const char *, ...) __printflike(1, 2) __dead;
__attribute__((__format__(__printf__, 1, 2))); void ask(const char *, ...) __printflike(1, 2);
void pfatal(const char *, ...)
__attribute__((__format__(__printf__, 1, 2)));
void ask(const char *, ...)
__attribute__((__format__(__printf__, 1, 2)));
char *savestr(const char *); char *savestr(const char *);
void set_signals(int); void set_signals(int);
void ignore_signals(void); void ignore_signals(void);
void makedirs(const char *, bool); void makedirs(const char *, bool);
void version(void); void version(void) __dead;
void my_exit(int) __attribute__((noreturn)); void my_exit(int) __dead;
/* in mkpath.c */ /* in mkpath.c */
extern int mkpath(char *); extern int mkpath(char *);