.
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
|
||||
`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 2006-03-27 12:15:25.000000000 +0000
|
||||
@@ -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
|
||||
|
||||
|
@ -99,6 +99,8 @@ Patch46: man2html-no-timestamp.patch
|
||||
Patch47: bash-4.3-perl522.patch
|
||||
# PATCH-FIX-SUSE
|
||||
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
|
||||
%global _sysconfdir /etc
|
||||
%global _incdir %{_includedir}
|
||||
@ -319,6 +321,7 @@ done
|
||||
%if %{with import_function}
|
||||
%patch48
|
||||
%endif
|
||||
%patch49
|
||||
%patch0 -p0 -b .0
|
||||
pushd ../readline-%{rl_vers}%{extend}
|
||||
for patch in ../readline-%{rl_vers}-patches/*; do
|
||||
|
Loading…
Reference in New Issue
Block a user