.
OBS-URL: https://build.opensuse.org/package/show/Base:System/bash?expand=0&rev=212
This commit is contained in:
parent
8a13b9ddf9
commit
1e9d74b410
91
bash-4.3-pathtemp.patch
Normal file
91
bash-4.3-pathtemp.patch
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
---
|
||||||
|
lib/sh/tmpfile.c | 43 +++++++++++++++++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 43 insertions(+)
|
||||||
|
|
||||||
|
--- lib/sh/tmpfile.c
|
||||||
|
+++ lib/sh/tmpfile.c 2015-10-19 13:35:30.869518731 +0000
|
||||||
|
@@ -36,6 +36,14 @@
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <errno.h>
|
||||||
|
|
||||||
|
+#if defined(__linux__)
|
||||||
|
+# include <sys/statfs.h>
|
||||||
|
+# include <unistd.h>
|
||||||
|
+# ifndef TMPFS_MAGIC
|
||||||
|
+# define TMPFS_MAGIC 0x01021994
|
||||||
|
+# endif
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
#include <shell.h>
|
||||||
|
|
||||||
|
#ifndef errno
|
||||||
|
@@ -60,6 +68,8 @@ static unsigned long filenum = 1L;
|
||||||
|
static char *
|
||||||
|
get_sys_tmpdir ()
|
||||||
|
{
|
||||||
|
+ static int doshm;
|
||||||
|
+
|
||||||
|
if (sys_tmpdir)
|
||||||
|
return sys_tmpdir;
|
||||||
|
|
||||||
|
@@ -86,6 +96,31 @@ get_sys_tmpdir ()
|
||||||
|
return sys_tmpdir;
|
||||||
|
}
|
||||||
|
|
||||||
|
+#if defined(__linux__)
|
||||||
|
+static int
|
||||||
|
+emergency_sys_tmpdir ()
|
||||||
|
+{
|
||||||
|
+ static char *shm = "/dev/shm";
|
||||||
|
+ static size_t pgsz;
|
||||||
|
+ struct statfs fs;
|
||||||
|
+ static int doshm;
|
||||||
|
+
|
||||||
|
+ if (getuid() != 0)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ if (doshm)
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ doshm++;
|
||||||
|
+
|
||||||
|
+ if (statfs(shm, &fs) < 0 || fs.f_type != TMPFS_MAGIC || eaccess(shm, W_OK|X_OK))
|
||||||
|
+ return 0;
|
||||||
|
+
|
||||||
|
+ sys_tmpdir = shm;
|
||||||
|
+ return 1;
|
||||||
|
+}
|
||||||
|
+#endif
|
||||||
|
+
|
||||||
|
static char *
|
||||||
|
get_tmpdir (flags)
|
||||||
|
int flags;
|
||||||
|
@@ -164,6 +199,7 @@ sh_mktmpfd (nameroot, flags, namep)
|
||||||
|
int fd, tdlen;
|
||||||
|
|
||||||
|
filename = (char *)xmalloc (PATH_MAX + 1);
|
||||||
|
+enospace:
|
||||||
|
tdir = get_tmpdir (flags);
|
||||||
|
tdlen = strlen (tdir);
|
||||||
|
|
||||||
|
@@ -177,6 +213,10 @@ sh_mktmpfd (nameroot, flags, namep)
|
||||||
|
free (filename);
|
||||||
|
filename = NULL;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ if (fd < 0 && errno == ENOSPC && emergency_sys_tmpdir())
|
||||||
|
+ goto enospace;
|
||||||
|
+
|
||||||
|
if (namep)
|
||||||
|
*namep = filename;
|
||||||
|
return fd;
|
||||||
|
@@ -194,6 +234,9 @@ sh_mktmpfd (nameroot, flags, namep)
|
||||||
|
}
|
||||||
|
while (fd < 0 && errno == EEXIST);
|
||||||
|
|
||||||
|
+ if (fd < 0 && errno == ENOSPC && emergency_sys_tmpdir())
|
||||||
|
+ goto enospace;
|
||||||
|
+
|
||||||
|
if (namep)
|
||||||
|
*namep = filename;
|
||||||
|
else
|
11
bash-4.3.dif
11
bash-4.3.dif
@ -49,6 +49,17 @@
|
|||||||
|
|
||||||
/* Define if you want the case-capitalizing operators (~[~]) and the
|
/* Define if you want the case-capitalizing operators (~[~]) and the
|
||||||
`capcase' variable attribute (declare -c). */
|
`capcase' variable attribute (declare -c). */
|
||||||
|
@@ -132,3 +136,10 @@
|
||||||
|
/* Define to 1 if you want to be able to export indexed arrays to processes
|
||||||
|
using the foo=([0]=one [1]=two) and so on */
|
||||||
|
/* #define ARRAY_EXPORT 1 */
|
||||||
|
+
|
||||||
|
+#ifndef USE_MKTEMP
|
||||||
|
+# define USE_MKTEMP
|
||||||
|
+#endif
|
||||||
|
+#ifndef USE_MKSTEMP
|
||||||
|
+# define USE_MKSTEMP
|
||||||
|
+#endif
|
||||||
--- doc/Makefile.in
|
--- doc/Makefile.in
|
||||||
+++ doc/Makefile.in 2006-03-27 12:15:25.000000000 +0000
|
+++ doc/Makefile.in 2006-03-27 12:15:25.000000000 +0000
|
||||||
@@ -146,7 +146,7 @@ BASHREF_FILES = $(srcdir)/bashref.texi $
|
@@ -146,7 +146,7 @@ BASHREF_FILES = $(srcdir)/bashref.texi $
|
||||||
|
@ -1,3 +1,12 @@
|
|||||||
|
-------------------------------------------------------------------
|
||||||
|
Mon Oct 19 13:38:58 UTC 2015 - werner@suse.de
|
||||||
|
|
||||||
|
- Define the USE_MKTEMP and USE_MKSTEMP cpp macros as the
|
||||||
|
implementation is already there.
|
||||||
|
- Add patch bash-4.3-pathtemp.patch to allow root to clear the
|
||||||
|
file systems. Otherwise the completion does not work if /tmp
|
||||||
|
if full (ENOSPC for here documents)
|
||||||
|
|
||||||
-------------------------------------------------------------------
|
-------------------------------------------------------------------
|
||||||
Fri Oct 16 13:02:27 UTC 2015 - werner@suse.de
|
Fri Oct 16 13:02:27 UTC 2015 - werner@suse.de
|
||||||
|
|
||||||
|
@ -99,6 +99,8 @@ Patch46: man2html-no-timestamp.patch
|
|||||||
Patch47: bash-4.3-perl522.patch
|
Patch47: bash-4.3-perl522.patch
|
||||||
# PATCH-FIX-SUSE
|
# PATCH-FIX-SUSE
|
||||||
Patch48: bash-4.3-extra-import-func.patch
|
Patch48: bash-4.3-extra-import-func.patch
|
||||||
|
# PATCH-EXTEND-SUSE Allow root to clean file system if filled up
|
||||||
|
Patch49: bash-4.3-pathtemp.patch
|
||||||
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
BuildRoot: %{_tmppath}/%{name}-%{version}-build
|
||||||
%global _sysconfdir /etc
|
%global _sysconfdir /etc
|
||||||
%global _incdir %{_includedir}
|
%global _incdir %{_includedir}
|
||||||
@ -319,6 +321,7 @@ done
|
|||||||
%if %{with import_function}
|
%if %{with import_function}
|
||||||
%patch48
|
%patch48
|
||||||
%endif
|
%endif
|
||||||
|
%patch49
|
||||||
%patch0 -p0 -b .0
|
%patch0 -p0 -b .0
|
||||||
pushd ../readline-%{rl_vers}%{extend}
|
pushd ../readline-%{rl_vers}%{extend}
|
||||||
for patch in ../readline-%{rl_vers}-patches/*; do
|
for patch in ../readline-%{rl_vers}-patches/*; do
|
||||||
|
Loading…
Reference in New Issue
Block a user