- 2.6. No longer need stderr, suffix, stripcr, parse, allow-spaces, ifdef,
program_name, or posix-backup patches.
This commit is contained in:
parent
988f8a1a7e
commit
d1ec77bd15
@ -1 +1,2 @@
|
||||
patch-2.5.4.tar.gz
|
||||
patch-2.6.tar.xz
|
||||
|
@ -1,11 +0,0 @@
|
||||
--- patch-2.5/util.c~ Thu Jul 10 09:16:12 1997
|
||||
+++ patch-2.5/util.c Sun Jun 6 18:16:30 1999
|
||||
@@ -568,6 +568,8 @@
|
||||
int r;
|
||||
va_list args;
|
||||
|
||||
+ fflush(stderr); /* Ensure pending errors are written before the question */
|
||||
+
|
||||
vararg_start (args, format);
|
||||
vfprintf (stdout, format, args);
|
||||
va_end (args);
|
@ -1,70 +0,0 @@
|
||||
--- patch-2.5.4/patch.c.ifdef Tue Mar 5 09:42:45 2002
|
||||
+++ patch-2.5.4/patch.c Tue Mar 5 09:42:47 2002
|
||||
@@ -88,8 +88,9 @@
|
||||
|
||||
static char const *do_defines; /* symbol to patch using ifdef, ifndef, etc. */
|
||||
static char const if_defined[] = "\n#ifdef %s\n";
|
||||
-static char const not_defined[] = "#ifndef %s\n";
|
||||
-static char const else_defined[] = "\n#else\n";
|
||||
+static char const not_defined[] = "\n#ifndef %s\n";
|
||||
+static char const elseis_defined[] = "\n#else /* %s */\n";
|
||||
+static char const elsenot_defined[] = "\n#else /* not %s */\n";
|
||||
static char const end_defined[] = "\n#endif /* %s */\n";
|
||||
|
||||
static int Argc;
|
||||
@@ -1014,12 +1015,13 @@
|
||||
return FALSE;
|
||||
if (R_do_defines) {
|
||||
if (def_state == OUTSIDE) {
|
||||
- fprintf (fp, outstate->after_newline + if_defined,
|
||||
+ fprintf (fp, outstate->after_newline + not_defined,
|
||||
R_do_defines);
|
||||
def_state = IN_IFNDEF;
|
||||
}
|
||||
else if (def_state == IN_IFDEF) {
|
||||
- fprintf (fp, outstate->after_newline + else_defined);
|
||||
+ fprintf (fp, outstate->after_newline + elsenot_defined,
|
||||
+ R_do_defines);
|
||||
def_state = IN_ELSE;
|
||||
}
|
||||
if (ferror (fp))
|
||||
@@ -1038,7 +1040,8 @@
|
||||
return FALSE;
|
||||
if (R_do_defines) {
|
||||
if (def_state == IN_IFNDEF) {
|
||||
- fprintf (fp, outstate->after_newline + else_defined);
|
||||
+ fprintf (fp, outstate->after_newline + elseis_defined,
|
||||
+ R_do_defines);
|
||||
def_state = IN_ELSE;
|
||||
}
|
||||
else if (def_state == OUTSIDE) {
|
||||
@@ -1069,7 +1072,8 @@
|
||||
return FALSE;
|
||||
assert (outstate->after_newline);
|
||||
if (R_do_defines) {
|
||||
- fprintf (fp, not_defined, R_do_defines);
|
||||
+ fprintf (fp, outstate->after_newline + not_defined,
|
||||
+ R_do_defines);
|
||||
if (ferror (fp))
|
||||
write_fatal ();
|
||||
def_state = IN_IFNDEF;
|
||||
@@ -1086,7 +1090,8 @@
|
||||
while (pch_char (old) == '!');
|
||||
|
||||
if (R_do_defines) {
|
||||
- fprintf (fp, outstate->after_newline + else_defined);
|
||||
+ fprintf (fp, outstate->after_newline + elseis_defined,
|
||||
+ R_do_defines);
|
||||
if (ferror (fp))
|
||||
write_fatal ();
|
||||
def_state = IN_ELSE;
|
||||
@@ -1124,7 +1129,8 @@
|
||||
def_state = IN_IFDEF;
|
||||
}
|
||||
else if (def_state == IN_IFNDEF) {
|
||||
- fprintf (fp, outstate->after_newline + else_defined);
|
||||
+ fprintf (fp, outstate->after_newline + elseis_defined,
|
||||
+ R_do_defines);
|
||||
def_state = IN_ELSE;
|
||||
}
|
||||
if (ferror (fp))
|
@ -1,11 +0,0 @@
|
||||
--- patch-2.5.4/error.c.program_name Tue Apr 9 14:38:27 2002
|
||||
+++ patch-2.5.4/error.c Tue Apr 9 14:38:43 2002
|
||||
@@ -80,7 +80,7 @@
|
||||
|
||||
/* The calling program should define program_name and set it to the
|
||||
name of the executing program. */
|
||||
-extern char *program_name;
|
||||
+extern char const program_name[];
|
||||
|
||||
# ifdef HAVE_STRERROR_R
|
||||
# define __strerror_r strerror_r
|
@ -1,11 +1,7 @@
|
||||
Bug report: #14693
|
||||
Reported by: Vincent Renardias <vincent@waw.com>
|
||||
Patch: jdassen@wi.leidenuniv.nl (J.H.M.Dassen)
|
||||
Since Version: 2.5-2
|
||||
|
||||
--- patch-2.5.orig/inp.c
|
||||
+++ patch-2.5/inp.c
|
||||
@@ -71,6 +71,14 @@
|
||||
diff -up patch-2.6/src/inp.c.sigsegv patch-2.6/src/inp.c
|
||||
--- patch-2.6/src/inp.c.sigsegv 2009-11-02 19:09:57.000000000 +0000
|
||||
+++ patch-2.6/src/inp.c 2009-11-16 09:31:52.305022200 +0000
|
||||
@@ -77,6 +77,14 @@ re_input (void)
|
||||
}
|
||||
}
|
||||
|
||||
@ -20,9 +16,19 @@ Since Version: 2.5-2
|
||||
/* Construct the line index, somehow or other. */
|
||||
|
||||
void
|
||||
--- patch-2.5.orig/patch.c
|
||||
+++ patch-2.5/patch.c
|
||||
@@ -210,7 +210,10 @@
|
||||
diff -up patch-2.6/src/inp.h.sigsegv patch-2.6/src/inp.h
|
||||
--- patch-2.6/src/inp.h.sigsegv 2009-11-02 19:09:57.000000000 +0000
|
||||
+++ patch-2.6/src/inp.h 2009-11-16 09:32:24.440021838 +0000
|
||||
@@ -24,4 +24,5 @@ XTERN LINENUM input_lines; /* how long
|
||||
char const *ifetch (LINENUM, bool, size_t *);
|
||||
void get_input_file (char const *, char const *);
|
||||
void re_input (void);
|
||||
+void reset_scan_input_vars (void);
|
||||
void scan_input (char *);
|
||||
diff -up patch-2.6/src/patch.c.sigsegv patch-2.6/src/patch.c
|
||||
--- patch-2.6/src/patch.c.sigsegv 2009-11-02 19:09:57.000000000 +0000
|
||||
+++ patch-2.6/src/patch.c 2009-11-16 09:31:52.306021801 +0000
|
||||
@@ -210,7 +210,10 @@ main (int argc, char **argv)
|
||||
|
||||
/* find out where all the lines are */
|
||||
if (!skip_rest_of_patch)
|
||||
@ -34,11 +40,3 @@ Since Version: 2.5-2
|
||||
|
||||
/* from here on, open no standard i/o files, because malloc */
|
||||
/* might misfire and we can't catch it easily */
|
||||
--- patch-2.5.orig/inp.h
|
||||
+++ patch-2.5/inp.h
|
||||
@@ -7,4 +7,5 @@
|
||||
char const *ifetch PARAMS ((LINENUM, int, size_t *));
|
||||
void get_input_file PARAMS ((char const *, char const *));
|
||||
void re_input PARAMS ((void));
|
||||
+void reset_scan_input_vars PARAMS (());
|
||||
void scan_input PARAMS ((char *));
|
||||
|
@ -1,12 +0,0 @@
|
||||
--- patch-2.5.4/patch.c.suffix Thu Nov 2 17:57:46 2000
|
||||
+++ patch-2.5.4/patch.c Thu Nov 2 17:58:25 2000
|
||||
@@ -145,8 +145,7 @@
|
||||
: posixly_correct - 1);
|
||||
|
||||
val = getenv ("SIMPLE_BACKUP_SUFFIX");
|
||||
- if (val && *val)
|
||||
- simple_backup_suffix = val;
|
||||
+ simple_backup_suffix = val && *val ? val : ".orig";
|
||||
|
||||
if ((version_control = getenv ("PATCH_VERSION_CONTROL")))
|
||||
version_control_context = "$PATCH_VERSION_CONTROL";
|
7
patch-2.6.tar.xz.sig
Normal file
7
patch-2.6.tar.xz.sig
Normal file
@ -0,0 +1,7 @@
|
||||
-----BEGIN PGP SIGNATURE-----
|
||||
Version: GnuPG v2.0.12 (GNU/Linux)
|
||||
|
||||
iEYEABECAAYFAkr9aWMACgkQ9+hy/rlxVNMK0wCgg0Jg3HqcXm2Eh8jR66YADk8L
|
||||
Si8AmwZ1EDTTvYmeQmae0zrYK6+4HRTR
|
||||
=KgtY
|
||||
-----END PGP SIGNATURE-----
|
@ -1,16 +0,0 @@
|
||||
--- patch-2.5.4/util.c 1999-08-30 07:20:08.000000000 +0100
|
||||
+++ patch-2.5.9/util.c 2003-05-20 15:04:53.000000000 +0100
|
||||
@@ -939,7 +939,13 @@ fetchname (char *at, int strip_leading,
|
||||
}
|
||||
else if (ISSPACE ((unsigned char) *t))
|
||||
{
|
||||
+ /* Allow file names with internal spaces,
|
||||
+ but only if a tab separates the file name from the date. */
|
||||
char const *u = t;
|
||||
+ while (*u != '\t' && ISSPACE ((unsigned char) u[1]))
|
||||
+ u++;
|
||||
+ if (*u != '\t' && strchr (u + 1, '\t'))
|
||||
+ continue;
|
||||
|
||||
if (set_time | set_utc)
|
||||
stamp = str2time (&u, initial_time,
|
@ -1,12 +0,0 @@
|
||||
--- patch-2.5.4/partime.c.parse 1998-03-15 15:48:53.000000000 +0000
|
||||
+++ patch-2.5.4/partime.c 2005-09-07 08:04:41.000000000 +0000
|
||||
@@ -792,7 +792,8 @@
|
||||
if (negative)
|
||||
n = -n;
|
||||
while (!ISALNUM ((unsigned char) *s))
|
||||
- s++;
|
||||
+ if (*s++ == '\0')
|
||||
+ return 0;
|
||||
i = lookup (s, relative_units);
|
||||
if (!TM_DEFINED (i))
|
||||
return 0;
|
@ -1,166 +0,0 @@
|
||||
diff -up patch-2.5.4/util.c.posix-backup patch-2.5.4/util.c
|
||||
--- patch-2.5.4/util.c.posix-backup 2008-06-16 10:22:52.000000000 +0100
|
||||
+++ patch-2.5.4/util.c 2008-06-16 11:30:27.000000000 +0100
|
||||
@@ -109,37 +109,40 @@ move_file (char const *from, int volatil
|
||||
memory_fatal ();
|
||||
}
|
||||
|
||||
- if (to_errno)
|
||||
+ if (strcmp (bakname, "/dev/null") != 0)
|
||||
{
|
||||
- int fd;
|
||||
+ if (to_errno)
|
||||
+ {
|
||||
+ int fd;
|
||||
|
||||
- if (debug & 4)
|
||||
- say ("Creating empty unreadable file %s\n", quotearg (bakname));
|
||||
+ if (debug & 4)
|
||||
+ say ("Creating empty unreadable file %s\n", quotearg (bakname));
|
||||
|
||||
- try_makedirs_errno = ENOENT;
|
||||
- unlink (bakname);
|
||||
- while ((fd = creat (bakname, 0)) < 0)
|
||||
- {
|
||||
- if (errno != try_makedirs_errno)
|
||||
- pfatal ("Can't create file %s", quotearg (bakname));
|
||||
- makedirs (bakname);
|
||||
- try_makedirs_errno = 0;
|
||||
+ try_makedirs_errno = ENOENT;
|
||||
+ unlink (bakname);
|
||||
+ while ((fd = creat (bakname, 0)) < 0)
|
||||
+ {
|
||||
+ if (errno != try_makedirs_errno)
|
||||
+ pfatal ("Can't create file %s", quotearg (bakname));
|
||||
+ makedirs (bakname);
|
||||
+ try_makedirs_errno = 0;
|
||||
+ }
|
||||
+ if (close (fd) != 0)
|
||||
+ pfatal ("Can't close file %s", quotearg (bakname));
|
||||
}
|
||||
- if (close (fd) != 0)
|
||||
- pfatal ("Can't close file %s", quotearg (bakname));
|
||||
- }
|
||||
- else
|
||||
- {
|
||||
- if (debug & 4)
|
||||
- say ("Renaming file %s to %s\n",
|
||||
- quotearg_n (0, to), quotearg_n (1, bakname));
|
||||
- while (rename (to, bakname) != 0)
|
||||
+ else
|
||||
{
|
||||
- if (errno != try_makedirs_errno)
|
||||
- pfatal ("Can't rename file %s to %s",
|
||||
- quotearg_n (0, to), quotearg_n (1, bakname));
|
||||
- makedirs (bakname);
|
||||
- try_makedirs_errno = 0;
|
||||
+ if (debug & 4)
|
||||
+ say ("Renaming file %s to %s\n",
|
||||
+ quotearg_n (0, to), quotearg_n (1, bakname));
|
||||
+ while (rename (to, bakname) != 0)
|
||||
+ {
|
||||
+ if (errno != try_makedirs_errno)
|
||||
+ pfatal ("Can't rename file %s to %s",
|
||||
+ quotearg_n (0, to), quotearg_n (1, bakname));
|
||||
+ makedirs (bakname);
|
||||
+ try_makedirs_errno = 0;
|
||||
+ }
|
||||
}
|
||||
}
|
||||
|
||||
diff -up patch-2.5.4/backupfile.c.posix-backup patch-2.5.4/backupfile.c
|
||||
--- patch-2.5.4/backupfile.c.posix-backup 2008-06-16 11:27:55.000000000 +0100
|
||||
+++ patch-2.5.4/backupfile.c 2008-06-16 11:44:05.000000000 +0100
|
||||
@@ -23,6 +23,8 @@
|
||||
# include <config.h>
|
||||
#endif
|
||||
|
||||
+#define XTERN extern
|
||||
+#include <common.h>
|
||||
#include <argmatch.h>
|
||||
#include <backupfile.h>
|
||||
|
||||
@@ -118,11 +120,15 @@ static int version_number PARAMS ((const
|
||||
char *
|
||||
find_backup_file_name (const char *file, enum backup_type backup_type)
|
||||
{
|
||||
+ static char **previous_files = NULL;
|
||||
+ static int previous_files_allocated = 0;
|
||||
+
|
||||
size_t backup_suffix_size_max;
|
||||
size_t file_len = strlen (file);
|
||||
size_t numbered_suffix_size_max = INT_STRLEN_BOUND (int) + 4;
|
||||
char *s;
|
||||
const char *suffix = simple_backup_suffix;
|
||||
+ int used_version = 0;
|
||||
|
||||
/* Allow room for simple or `.~N~' backups. */
|
||||
backup_suffix_size_max = strlen (simple_backup_suffix) + 1;
|
||||
@@ -147,12 +153,66 @@ find_backup_file_name (const char *file,
|
||||
char *numbered_suffix = s + (file_len + backup_suffix_size_max);
|
||||
sprintf (numbered_suffix, ".~%d~", highest_backup + 1);
|
||||
suffix = numbered_suffix;
|
||||
+ used_version = 1;
|
||||
}
|
||||
strcpy (s, file);
|
||||
}
|
||||
#endif /* HAVE_DIR */
|
||||
|
||||
- addext (s, suffix, '~');
|
||||
+ if (used_version == 0)
|
||||
+ {
|
||||
+ /* If we have already written a ".orig" backup file during
|
||||
+ this run, don't overwrite it. */
|
||||
+ if (previous_files_allocated != 0)
|
||||
+ {
|
||||
+ int i;
|
||||
+ for (i = 0; previous_files[i] != NULL; i++)
|
||||
+ {
|
||||
+ if (!strcmp (previous_files[i], s))
|
||||
+ {
|
||||
+ strcpy (s, "/dev/null");
|
||||
+ break;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (previous_files[i] == NULL)
|
||||
+ {
|
||||
+ if (i == previous_files_allocated - 1)
|
||||
+ {
|
||||
+ char **old_previous_files = previous_files;
|
||||
+ previous_files = realloc (previous_files,
|
||||
+ 2 * previous_files_allocated *
|
||||
+ sizeof (const char *));
|
||||
+ if (previous_files)
|
||||
+ previous_files_allocated *= 2;
|
||||
+ else
|
||||
+ {
|
||||
+ for (i = 0; old_previous_files[i] != NULL; i++)
|
||||
+ free (old_previous_files[i]);
|
||||
+ free (old_previous_files);
|
||||
+ previous_files_allocated = 0;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (i < previous_files_allocated - 1)
|
||||
+ {
|
||||
+ previous_files[i] = strdup (s);
|
||||
+ previous_files[i + 1] = NULL;
|
||||
+ }
|
||||
+ }
|
||||
+ }
|
||||
+ else
|
||||
+ {
|
||||
+ previous_files_allocated = 2;
|
||||
+ previous_files = malloc (previous_files_allocated *
|
||||
+ sizeof (const char *));
|
||||
+ previous_files[0] = strdup (s);
|
||||
+ previous_files[1] = NULL;
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
+ if (strcmp (s, "/dev/null") != 0)
|
||||
+ addext (s, suffix, '~');
|
||||
}
|
||||
return s;
|
||||
}
|
@ -1,7 +1,19 @@
|
||||
diff -up patch-2.5.4/common.h.selinux patch-2.5.4/common.h
|
||||
--- patch-2.5.4/common.h.selinux 1999-08-30 07:20:08.000000000 +0100
|
||||
+++ patch-2.5.4/common.h 2009-02-17 15:33:13.000000000 +0000
|
||||
@@ -39,6 +39,8 @@
|
||||
diff -up patch-2.6/Makefile.in.selinux patch-2.6/Makefile.in
|
||||
--- patch-2.6/Makefile.in.selinux 2009-11-02 19:09:57.000000000 +0000
|
||||
+++ patch-2.6/Makefile.in 2009-11-16 09:38:44.171021894 +0000
|
||||
@@ -40,7 +40,7 @@ EXEEXT = @EXEEXT@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJDIR = gl/lib/
|
||||
LIBOBJS = @LIBOBJS@ ${LIBOBJDIR}full-write$U.o
|
||||
-LIBS = @LIBS@
|
||||
+LIBS = @LIBS@ -lselinux
|
||||
OBJEXT = @OBJEXT@
|
||||
PACKAGE_NAME = @PACKAGE_NAME@
|
||||
PACKAGE_VERSION = @PACKAGE_VERSION@
|
||||
diff -up patch-2.6/src/common.h.selinux patch-2.6/src/common.h
|
||||
--- patch-2.6/src/common.h.selinux 2009-11-02 19:09:57.000000000 +0000
|
||||
+++ patch-2.6/src/common.h 2009-11-16 09:38:12.579147244 +0000
|
||||
@@ -32,6 +32,8 @@
|
||||
#include <sys/types.h>
|
||||
#include <time.h>
|
||||
|
||||
@ -10,7 +22,7 @@ diff -up patch-2.5.4/common.h.selinux patch-2.5.4/common.h
|
||||
#include <sys/stat.h>
|
||||
#if ! defined S_ISDIR && defined S_IFDIR
|
||||
# define S_ISDIR(m) (((m) & S_IFMT) == S_IFDIR)
|
||||
@@ -168,6 +170,7 @@ XTERN char *outfile;
|
||||
@@ -118,6 +120,7 @@ XTERN char *outfile;
|
||||
XTERN int inerrno;
|
||||
XTERN int invc;
|
||||
XTERN struct stat instat;
|
||||
@ -18,16 +30,16 @@ diff -up patch-2.5.4/common.h.selinux patch-2.5.4/common.h
|
||||
XTERN bool dry_run;
|
||||
XTERN bool posixly_correct;
|
||||
|
||||
diff -up patch-2.5.4/inp.c.selinux patch-2.5.4/inp.c
|
||||
--- patch-2.5.4/inp.c.selinux 2009-02-17 15:33:13.000000000 +0000
|
||||
+++ patch-2.5.4/inp.c 2009-02-17 15:33:13.000000000 +0000
|
||||
@@ -154,7 +154,20 @@ get_input_file (char const *filename, ch
|
||||
diff -up patch-2.6/src/inp.c.selinux patch-2.6/src/inp.c
|
||||
--- patch-2.6/src/inp.c.selinux 2009-11-16 09:37:57.515147431 +0000
|
||||
+++ patch-2.6/src/inp.c 2009-11-16 09:40:04.782022221 +0000
|
||||
@@ -153,7 +153,20 @@ get_input_file (char const *filename, ch
|
||||
char *getbuf;
|
||||
|
||||
if (inerrno == -1)
|
||||
- inerrno = stat (inname, &instat) == 0 ? 0 : errno;
|
||||
- inerrno = stat (filename, &instat) == 0 ? 0 : errno;
|
||||
+ {
|
||||
+ inerrno = stat (inname, &instat) == 0 ? 0 : errno;
|
||||
+ inerrno = stat (filename, &instat) == 0 ? 0 : errno;
|
||||
+ if (inerrno == 0)
|
||||
+ {
|
||||
+ inerrno = getfilecon (inname, &incontext) == -1 ? errno : 0;
|
||||
@ -43,7 +55,7 @@ diff -up patch-2.5.4/inp.c.selinux patch-2.5.4/inp.c
|
||||
|
||||
/* Perhaps look for RCS or SCCS versions. */
|
||||
if (patch_get
|
||||
@@ -196,7 +209,7 @@ get_input_file (char const *filename, ch
|
||||
@@ -197,7 +210,7 @@ get_input_file (char const *filename, ch
|
||||
}
|
||||
|
||||
if (cs && version_get (filename, cs, ! inerrno, elsewhere, getbuf,
|
||||
@ -52,7 +64,7 @@ diff -up patch-2.5.4/inp.c.selinux patch-2.5.4/inp.c
|
||||
inerrno = 0;
|
||||
|
||||
free (getbuf);
|
||||
@@ -213,6 +226,7 @@ get_input_file (char const *filename, ch
|
||||
@@ -209,6 +222,7 @@ get_input_file (char const *filename, ch
|
||||
{
|
||||
instat.st_mode = S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH;
|
||||
instat.st_size = 0;
|
||||
@ -60,43 +72,36 @@ diff -up patch-2.5.4/inp.c.selinux patch-2.5.4/inp.c
|
||||
}
|
||||
else if (! S_ISREG (instat.st_mode))
|
||||
fatal ("File %s is not a regular file -- can't patch",
|
||||
diff -up patch-2.5.4/Makefile.in.selinux patch-2.5.4/Makefile.in
|
||||
--- patch-2.5.4/Makefile.in.selinux 1999-08-30 07:37:54.000000000 +0100
|
||||
+++ patch-2.5.4/Makefile.in 2009-02-17 15:33:13.000000000 +0000
|
||||
@@ -36,7 +36,7 @@ DEFS = @DEFS@
|
||||
EXEEXT = @EXEEXT@
|
||||
LDFLAGS = @LDFLAGS@
|
||||
LIBOBJS = @LIBOBJS@
|
||||
-LIBS = @LIBS@
|
||||
+LIBS = @LIBS@ -lselinux
|
||||
PACKAGE = @PACKAGE@
|
||||
U = @U@
|
||||
VERSION = @VERSION@
|
||||
diff -up patch-2.5.4/patch.c.selinux patch-2.5.4/patch.c
|
||||
--- patch-2.5.4/patch.c.selinux 2009-02-17 15:33:13.000000000 +0000
|
||||
+++ patch-2.5.4/patch.c 2009-02-17 15:34:42.000000000 +0000
|
||||
@@ -414,6 +414,16 @@ main (int argc, char **argv)
|
||||
if (! inerrno && chmod (outname, instat.st_mode) != 0)
|
||||
pfatal ("Can't set permissions on file %s",
|
||||
quotearg (outname));
|
||||
+ if (! inerrno && incontext) {
|
||||
+ security_context_t outcontext;
|
||||
+ if (! getfilecon (outname, &outcontext) && outcontext &&
|
||||
+ strcmp(outcontext, incontext) &&
|
||||
+ setfilecon (outname, incontext) != 0) {
|
||||
diff -up patch-2.6/src/patch.c.selinux patch-2.6/src/patch.c
|
||||
--- patch-2.6/src/patch.c.selinux 2009-11-16 09:37:57.516146641 +0000
|
||||
+++ patch-2.6/src/patch.c 2009-11-16 09:41:47.676147549 +0000
|
||||
@@ -421,6 +421,21 @@ main (int argc, char **argv)
|
||||
/* Fails if we are not in group instat.st_gid. */
|
||||
chown (outname, -1, instat.st_gid);
|
||||
}
|
||||
+
|
||||
+ if (! inerrno && incontext)
|
||||
+ {
|
||||
+ security_context_t outcontext;
|
||||
+ if (! getfilecon (outname, &outcontext) &&
|
||||
+ outcontext &&
|
||||
+ strcmp(outcontext, incontext) &&
|
||||
+ setfilecon (outname, incontext) != 0)
|
||||
+ {
|
||||
+ if (errno != ENOTSUP && errno != EPERM)
|
||||
+ pfatal ("Can't set security context on file %s",
|
||||
+ quotearg (outname));
|
||||
+ }
|
||||
+ }
|
||||
}
|
||||
}
|
||||
}
|
||||
diff -up patch-2.5.4/pch.c.selinux patch-2.5.4/pch.c
|
||||
--- patch-2.5.4/pch.c.selinux 2009-02-17 15:33:13.000000000 +0000
|
||||
+++ patch-2.5.4/pch.c 2009-02-17 15:33:13.000000000 +0000
|
||||
@@ -258,7 +258,12 @@ there_is_another_patch (void)
|
||||
{
|
||||
+ pfatal ("Can't set security context "
|
||||
+ "on file %s", quotearg (outname));
|
||||
+ }
|
||||
+ }
|
||||
+
|
||||
/* FIXME: There may be other attributes to preserve. */
|
||||
}
|
||||
}
|
||||
diff -up patch-2.6/src/pch.c.selinux patch-2.6/src/pch.c
|
||||
--- patch-2.6/src/pch.c.selinux 2009-11-02 19:09:57.000000000 +0000
|
||||
+++ patch-2.6/src/pch.c 2009-11-16 09:42:17.453147283 +0000
|
||||
@@ -288,7 +288,12 @@ there_is_another_patch (bool need_header
|
||||
inname[t - buf - 1] = 0;
|
||||
if (stat (inname, &instat) == 0)
|
||||
{
|
||||
- inerrno = 0;
|
||||
@ -109,37 +114,37 @@ diff -up patch-2.5.4/pch.c.selinux patch-2.5.4/pch.c
|
||||
invc = -1;
|
||||
}
|
||||
else
|
||||
@@ -573,7 +578,7 @@ intuit_diff_type (void)
|
||||
@@ -662,7 +667,7 @@ intuit_diff_type (bool need_header)
|
||||
if (cs)
|
||||
{
|
||||
if (version_get (name[i], cs, 0, readonly,
|
||||
if (version_get (p_name[i], cs, false, readonly,
|
||||
- getbuf, &st[i]))
|
||||
+ getbuf, &st[i], NULL))
|
||||
stat_errno[i] = 0;
|
||||
else
|
||||
version_controlled[i] = 0;
|
||||
@@ -641,6 +646,7 @@ intuit_diff_type (void)
|
||||
@@ -727,6 +732,7 @@ intuit_diff_type (bool need_header)
|
||||
inerrno = stat_errno[i];
|
||||
invc = version_controlled[i];
|
||||
instat = st[i];
|
||||
+ getfilecon (inname, &incontext);
|
||||
}
|
||||
|
||||
for (i = OLD; i <= INDEX; i++)
|
||||
diff -up patch-2.5.4/util.c.selinux patch-2.5.4/util.c
|
||||
--- patch-2.5.4/util.c.selinux 2009-02-17 15:33:13.000000000 +0000
|
||||
+++ patch-2.5.4/util.c 2009-02-17 15:33:13.000000000 +0000
|
||||
@@ -375,7 +375,8 @@ version_controller (char const *filename
|
||||
Return nonzero if successful. */
|
||||
int
|
||||
version_get (char const *filename, char const *cs, int exists, int readonly,
|
||||
return retval;
|
||||
diff -up patch-2.6/src/util.c.selinux patch-2.6/src/util.c
|
||||
--- patch-2.6/src/util.c.selinux 2009-11-02 19:09:57.000000000 +0000
|
||||
+++ patch-2.6/src/util.c 2009-11-16 09:40:27.472147644 +0000
|
||||
@@ -574,7 +574,8 @@ version_controller (char const *filename
|
||||
Return true if successful. */
|
||||
bool
|
||||
version_get (char const *filename, char const *cs, bool exists, bool readonly,
|
||||
- char const *getbuf, struct stat *filestat)
|
||||
+ char const *getbuf, struct stat *filestat,
|
||||
+ security_context_t *filecontext)
|
||||
{
|
||||
if (patch_get < 0)
|
||||
{
|
||||
@@ -400,6 +401,13 @@ version_get (char const *filename, char
|
||||
@@ -599,6 +600,13 @@ version_get (char const *filename, char
|
||||
fatal ("Can't get file %s from %s", quotearg (filename), cs);
|
||||
if (stat (filename, filestat) != 0)
|
||||
pfatal ("%s", quotearg (filename));
|
||||
@ -153,15 +158,15 @@ diff -up patch-2.5.4/util.c.selinux patch-2.5.4/util.c
|
||||
}
|
||||
|
||||
return 1;
|
||||
diff -up patch-2.5.4/util.h.selinux patch-2.5.4/util.h
|
||||
--- patch-2.5.4/util.h.selinux 1999-08-30 07:20:08.000000000 +0100
|
||||
+++ patch-2.5.4/util.h 2009-02-17 15:33:13.000000000 +0000
|
||||
@@ -21,7 +21,7 @@ char *fetchname PARAMS ((char *, int, ti
|
||||
char *savebuf PARAMS ((char const *, size_t));
|
||||
char *savestr PARAMS ((char const *));
|
||||
char const *version_controller PARAMS ((char const *, int, struct stat const *, char **, char **));
|
||||
-int version_get PARAMS ((char const *, char const *, int, int, char const *, struct stat *));
|
||||
+int version_get PARAMS ((char const *, char const *, int, int, char const *, struct stat *, security_context_t *));
|
||||
int create_file PARAMS ((char const *, int, mode_t));
|
||||
int systemic PARAMS ((char const *));
|
||||
char *format_linenum PARAMS ((char[LINENUM_LENGTH_BOUND + 1], LINENUM));
|
||||
diff -up patch-2.6/src/util.h.selinux patch-2.6/src/util.h
|
||||
--- patch-2.6/src/util.h.selinux 2009-11-02 19:09:57.000000000 +0000
|
||||
+++ patch-2.6/src/util.h 2009-11-16 09:42:48.750148164 +0000
|
||||
@@ -51,7 +51,7 @@ char *fetchname (char *, int, char **, t
|
||||
char *savebuf (char const *, size_t);
|
||||
char *savestr (char const *);
|
||||
char const *version_controller (char const *, bool, struct stat const *, char **, char **);
|
||||
-bool version_get (char const *, char const *, bool, bool, char const *, struct stat *);
|
||||
+bool version_get (char const *, char const *, bool, bool, char const *, struct stat *, security_context_t *);
|
||||
int create_file (char const *, int, mode_t, bool);
|
||||
int systemic (char const *);
|
||||
char *format_linenum (char[LINENUM_LENGTH_BOUND + 1], LINENUM);
|
||||
|
@ -1,35 +0,0 @@
|
||||
--- patch-2.5.4/pch.c.stripcr 1999-08-30 07:20:08.000000000 +0100
|
||||
+++ patch-2.5.4/pch.c 2005-08-11 12:59:35.000000000 +0100
|
||||
@@ -355,10 +355,16 @@
|
||||
if (!stars_last_line && strnEQ(s, "*** ", 4))
|
||||
name[OLD] = fetchname (s+4, strippath, &p_timestamp[OLD]);
|
||||
else if (strnEQ(s, "+++ ", 4))
|
||||
+ {
|
||||
/* Swap with NEW below. */
|
||||
name[OLD] = fetchname (s+4, strippath, &p_timestamp[OLD]);
|
||||
+ p_strip_trailing_cr = strip_trailing_cr;
|
||||
+ }
|
||||
else if (strnEQ(s, "Index:", 6))
|
||||
+ {
|
||||
name[INDEX] = fetchname (s+6, strippath, (time_t *) 0);
|
||||
+ p_strip_trailing_cr = strip_trailing_cr;
|
||||
+ }
|
||||
else if (strnEQ(s, "Prereq:", 7)) {
|
||||
for (t = s + 7; ISSPACE ((unsigned char) *t); t++)
|
||||
continue;
|
||||
@@ -386,6 +392,7 @@
|
||||
p_timestamp[NEW] = timestamp;
|
||||
p_rfc934_nesting = (t - s) >> 1;
|
||||
}
|
||||
+ p_strip_trailing_cr = strip_trailing_cr;
|
||||
}
|
||||
}
|
||||
if ((diff_type == NO_DIFF || diff_type == ED_DIFF) &&
|
||||
@@ -419,7 +426,6 @@
|
||||
if (s[0] == '+' && s[1] == '0' && !ISDIGIT (s[2]))
|
||||
p_says_nonexistent[NEW] = 1 + ! p_timestamp[NEW];
|
||||
p_indent = indent;
|
||||
- p_strip_trailing_cr = strip_trailing_cr;
|
||||
p_start = this_line;
|
||||
p_sline = p_input_line;
|
||||
retval = UNI_DIFF;
|
37
patch.spec
37
patch.spec
@ -1,21 +1,13 @@
|
||||
Summary: Utility for modifying/upgrading files
|
||||
Name: patch
|
||||
Version: 2.5.4
|
||||
Release: 40%{?dist}
|
||||
Version: 2.6
|
||||
Release: 1%{?dist}
|
||||
License: GPLv2+
|
||||
URL: http://www.gnu.org/software/patch/patch.html
|
||||
Group: Development/Tools
|
||||
Source: ftp://ftp.gnu.org/gnu/patch/patch-%{version}.tar.gz
|
||||
Patch1: patch-2.5-stderr.patch
|
||||
Patch2: patch-2.5.4-suffix.patch
|
||||
Patch3: patch-2.5.4-sigsegv.patch
|
||||
Patch4: patch-2.5.4-ifdef.patch
|
||||
Patch5: patch-2.5.4-program_name.patch
|
||||
Patch6: patch-stripcr.patch
|
||||
Patch7: patch-parse.patch
|
||||
Patch8: patch-allow-spaces.patch
|
||||
Patch9: patch-selinux.patch
|
||||
Patch10: patch-posix-backup.patch
|
||||
Source: ftp://ftp.gnu.org/gnu/patch/patch-%{version}.tar.xz
|
||||
Patch1: patch-2.5.4-sigsegv.patch
|
||||
Patch100: patch-selinux.patch
|
||||
Buildroot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
|
||||
|
||||
BuildRequires: libselinux-devel
|
||||
@ -32,16 +24,8 @@ applications.
|
||||
|
||||
%prep
|
||||
%setup -q
|
||||
%patch1 -p1 -b .stderr
|
||||
%patch2 -p1 -b .suffix
|
||||
%patch3 -p1 -b .sigsegv
|
||||
%patch4 -p1 -b .ifdef
|
||||
%patch5 -p1 -b .program_name
|
||||
%patch6 -p1 -b .stripcr
|
||||
%patch7 -p1 -b .parse
|
||||
%patch8 -p1 -b .allow-spaces
|
||||
%patch9 -p1 -b .selinux
|
||||
%patch10 -p1 -b .posix-backup
|
||||
%patch1 -p1 -b .sigsegv
|
||||
%patch100 -p1 -b .selinux
|
||||
|
||||
%build
|
||||
CFLAGS="$RPM_OPT_FLAGS -D_GNU_SOURCE"
|
||||
@ -54,6 +38,9 @@ make CPPFLAGS=""
|
||||
make %{?smp_mflags}
|
||||
%endif
|
||||
|
||||
%check
|
||||
make check
|
||||
|
||||
%install
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
%makeinstall
|
||||
@ -68,6 +55,10 @@ rm -rf $RPM_BUILD_ROOT
|
||||
%{_mandir}/*/*
|
||||
|
||||
%changelog
|
||||
* Mon Nov 16 2009 Tim Waugh <twaugh@redhat.com> 2.6-1
|
||||
- 2.6. No longer need stderr, suffix, stripcr, parse, allow-spaces,
|
||||
ifdef, program_name, or posix-backup patches.
|
||||
|
||||
* Sat Jul 25 2009 Fedora Release Engineering <rel-eng@lists.fedoraproject.org> - 2.5.4-40
|
||||
- Rebuilt for https://fedoraproject.org/wiki/Fedora_12_Mass_Rebuild
|
||||
|
||||
|
1
sources
1
sources
@ -1 +1,2 @@
|
||||
ee5ae84d115f051d87fcaaef3b4ae782 patch-2.5.4.tar.gz
|
||||
d9d62cb7b98a8a17e42dab910fd2adc9 patch-2.6.tar.xz
|
||||
|
57
upstream-key.gpg
Normal file
57
upstream-key.gpg
Normal file
@ -0,0 +1,57 @@
|
||||
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||
Version: GnuPG v1.4.10 (GNU/Linux)
|
||||
|
||||
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
|
||||
=2DCt
|
||||
-----END PGP PUBLIC KEY BLOCK-----
|
Loading…
Reference in New Issue
Block a user