diff --git a/bash-2.02-security.patch b/bash-2.02-security.patch deleted file mode 100644 index f8a913b5424fc529c9a4ea6d022327a0d5d15dc0..0000000000000000000000000000000000000000 --- a/bash-2.02-security.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- bash-2.02-orig/parse.y Wed Mar 25 18:16:23 1998 -+++ bash-2.02/parse.y Sun Apr 19 16:46:34 1998 -@@ -923,7 +923,7 @@ - - #if defined (READLINE) - char *current_readline_prompt = (char *)NULL; --char *current_readline_line = (char *)NULL; -+unsigned char *current_readline_line = (unsigned char *)NULL; - int current_readline_line_index = 0; - - static int diff --git a/bash-2.03-paths.patch b/bash-2.03-paths.patch deleted file mode 100644 index 24ec5cc0ba2809e8ddcca66c1045a1601b6a308f..0000000000000000000000000000000000000000 --- a/bash-2.03-paths.patch +++ /dev/null @@ -1,11 +0,0 @@ ---- bash-3.0/config-top.h.paths 2003-08-05 15:36:12.000000000 +0100 -+++ bash-3.0/config-top.h 2004-07-28 09:36:27.117205637 +0100 -@@ -66,7 +66,7 @@ - the Posix.2 confstr () function, or CS_PATH define are not present. */ - #ifndef STANDARD_UTILS_PATH - #define STANDARD_UTILS_PATH \ -- "/bin:/usr/bin:/sbin:/usr/sbin:/etc:/usr/etc" -+ "/bin:/usr/bin:/usr/sbin:/sbin" - #endif - - /* Default primary and secondary prompt strings. */ diff --git a/bash-2.03-profile.patch b/bash-2.03-profile.patch deleted file mode 100644 index ba3344b3cc17190db779fcc0ed0b4e3d22208dde..0000000000000000000000000000000000000000 --- a/bash-2.03-profile.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up bash-3.2/config-top.h.profile bash-3.2/config-top.h ---- bash-3.2/config-top.h.profile 2008-07-17 13:35:39.000000000 +0200 -+++ bash-3.2/config-top.h 2008-07-17 13:42:18.000000000 +0200 -@@ -26,6 +26,8 @@ - what POSIX.2 specifies. */ - #define CONTINUE_AFTER_KILL_ERROR - -+#define NON_INTERACTIVE_LOGIN_SHELLS -+ - /* Define BREAK_COMPLAINS if you want the non-standard, but useful - error messages about `break' and `continue' out of context. */ - #define BREAK_COMPLAINS diff --git a/bash-2.05a-interpreter.patch.bak b/bash-2.05a-interpreter.patch.bak deleted file mode 100644 index ca497c4a4260742a410491d876828934b343f90a..0000000000000000000000000000000000000000 --- a/bash-2.05a-interpreter.patch.bak +++ /dev/null @@ -1,224 +0,0 @@ -diff --git a/config.h.in b/config.h.in -index a5ad9e7..62a6b32 100644 ---- a/config.h.in -+++ b/config.h.in -@@ -748,6 +748,9 @@ - /* Define if you have the pselect function. */ - #undef HAVE_PSELECT - -+/* Define if you have the pread function. */ -+#undef HAVE_PREAD -+ - /* Define if you have the putenv function. */ - #undef HAVE_PUTENV - -@@ -946,6 +949,9 @@ - /* Define if you have the header file. */ - #undef HAVE_DLFCN_H - -+/* Define if you have the header file. */ -+#undef HAVE_ELF_H -+ - /* Define if you have the header file. */ - #undef HAVE_GRP_H - -diff --git a/configure.ac b/configure.ac -index ce4e9b6..eda95d6 100644 ---- a/configure.ac -+++ b/configure.ac -@@ -700,7 +700,7 @@ BASH_HEADER_INTTYPES - AC_CHECK_HEADERS(unistd.h stdlib.h stdarg.h varargs.h limits.h string.h \ - memory.h locale.h termcap.h termio.h termios.h dlfcn.h \ - stdbool.h stddef.h stdint.h netdb.h pwd.h grp.h strings.h \ -- regex.h syslog.h ulimit.h) -+ regex.h syslog.h ulimit.h elf.h) - AC_CHECK_HEADERS(sys/pte.h sys/stream.h sys/select.h sys/file.h sys/ioctl.h \ - sys/param.h sys/socket.h sys/stat.h \ - sys/time.h sys/times.h sys/types.h sys/wait.h) -@@ -771,7 +771,7 @@ dnl checks for system calls - AC_CHECK_FUNCS(dup2 eaccess fcntl getdtablesize getgroups gethostname \ - getpagesize getpeername getrlimit getrusage gettimeofday \ - kill killpg lstat pselect readlink sbrk select setdtablesize \ -- setitimer tcgetpgrp uname ulimit waitpid) -+ setitimer tcgetpgrp uname ulimit waitpid pread) - AC_REPLACE_FUNCS(rename) - - dnl checks for c library functions -diff --git a/execute_cmd.c b/execute_cmd.c -index 2a3df6d..b5cd405 100644 ---- a/execute_cmd.c -+++ b/execute_cmd.c -@@ -41,6 +41,10 @@ - # include - #endif - -+#ifdef HAVE_ELF_H -+# include -+#endif -+ - #include "posixtime.h" - - #if defined (HAVE_SYS_RESOURCE_H) && !defined (RLIMTYPE) -@@ -5486,6 +5490,14 @@ shell_execve (command, args, env) - { - /* The file has the execute bits set, but the kernel refuses to - run it for some reason. See why. */ -+#if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H) -+ int fd = open (command, O_RDONLY); -+ -+ if (fd >= 0) -+ sample_len = read (fd, sample, sizeof (sample)); -+ else -+ sample_len = -1; -+#endif - #if defined (HAVE_HASH_BANG_EXEC) - READ_SAMPLE_BUF (command, sample, sample_len); - if (sample_len > 0) -@@ -5495,6 +5507,7 @@ shell_execve (command, args, env) - char *interp; - int ilen; - -+ close (fd); - interp = getinterp (sample, sample_len, (int *)NULL); - ilen = strlen (interp); - errno = i; -@@ -5510,6 +5523,136 @@ shell_execve (command, args, env) - return (EX_NOEXEC); - } - #endif -+#if defined (HAVE_ELF_H) -+ if (i == ENOENT -+ && sample_len > EI_NIDENT -+ && memcmp (sample, ELFMAG, SELFMAG) == 0) -+ { -+ off_t offset = -1; -+ -+ /* It is an ELF file. Now determine whether it is dynamically -+ linked and if yes, get the offset of the interpreter -+ string. */ -+ if (sample[EI_CLASS] == ELFCLASS32 -+ && sample_len > sizeof (Elf32_Ehdr)) -+ { -+ Elf32_Ehdr ehdr; -+ Elf32_Phdr *phdr; -+ int nphdr; -+ -+ /* We have to copy the data since the sample buffer -+ might not be aligned correctly to be accessed as -+ an Elf32_Ehdr struct. */ -+ memcpy (&ehdr, sample, sizeof (Elf32_Ehdr)); -+ -+ nphdr = ehdr.e_phnum; -+ phdr = (Elf32_Phdr *) malloc (nphdr * ehdr.e_phentsize); -+ if (phdr != NULL) -+ { -+#ifdef HAVE_PREAD -+ sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize, -+ ehdr.e_phoff); -+#else -+ if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1) -+ sample_len = read (fd, phdr, -+ nphdr * ehdr.e_phentsize); -+ else -+ sample_len = -1; -+#endif -+ if (sample_len == nphdr * ehdr.e_phentsize) -+ while (nphdr-- > 0) -+ if (phdr[nphdr].p_type == PT_INTERP) -+ { -+ offset = phdr[nphdr].p_offset; -+ break; -+ } -+ free (phdr); -+ } -+ } -+ else if (sample[EI_CLASS] == ELFCLASS64 -+ && sample_len > sizeof (Elf64_Ehdr)) -+ { -+ Elf64_Ehdr ehdr; -+ Elf64_Phdr *phdr; -+ int nphdr; -+ -+ /* We have to copy the data since the sample buffer -+ might not be aligned correctly to be accessed as -+ an Elf64_Ehdr struct. */ -+ memcpy (&ehdr, sample, sizeof (Elf64_Ehdr)); -+ -+ nphdr = ehdr.e_phnum; -+ phdr = (Elf64_Phdr *) malloc (nphdr * ehdr.e_phentsize); -+ if (phdr != NULL) -+ { -+#ifdef HAVE_PREAD -+ sample_len = pread (fd, phdr, nphdr * ehdr.e_phentsize, -+ ehdr.e_phoff); -+#else -+ if (lseek (fd, ehdr.e_phoff, SEEK_SET) != -1) -+ sample_len = read (fd, phdr, -+ nphdr * ehdr.e_phentsize); -+ else -+ sample_len = -1; -+#endif -+ if (sample_len == nphdr * ehdr.e_phentsize) -+ while (nphdr-- > 0) -+ if (phdr[nphdr].p_type == PT_INTERP) -+ { -+ offset = phdr[nphdr].p_offset; -+ break; -+ } -+ free (phdr); -+ } -+ } -+ -+ if (offset != -1) -+ { -+ size_t maxlen = 0; -+ size_t actlen = 0; -+ char *interp = NULL; -+ -+ do -+ { -+ if (actlen == maxlen) -+ { -+ char *newinterp = realloc (interp, maxlen += 200); -+ if (newinterp == NULL) -+ { -+ actlen = 0; -+ break; -+ } -+ interp = newinterp; -+ -+#ifdef HAVE_PREAD -+ actlen = pread (fd, interp, maxlen, offset); -+#else -+ if (lseek (fd, offset, SEEK_SET) != -1) -+ actlen = read (fd, interp, maxlen); -+ else -+ actlen = -1; -+#endif -+ } -+ } -+ while (actlen > 0 && memchr (interp, '\0', actlen) == NULL); -+ -+ if (actlen > 0) -+ { -+ close (fd); -+ errno = i; -+ sys_error ("%s: %s: bad ELF interpreter", command, -+ interp); -+ free (interp); -+ return (EX_NOEXEC); -+ } -+ -+ free (interp); -+ } -+ } -+#endif -+#if defined (HAVE_HASH_BANG_EXEC) || defined (HAVE_ELF_H) -+ close (fd); -+#endif - errno = i; - file_error (command); - } --- -2.9.3 - diff --git a/bash-2.05b-debuginfo.patch b/bash-2.05b-debuginfo.patch deleted file mode 100644 index 3278cabfe5cd7923e0dcb4ccb47f4614a9a6760d..0000000000000000000000000000000000000000 --- a/bash-2.05b-debuginfo.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- bash-2.05b/builtins/Makefile.in.debuginfo 2003-03-25 17:25:21.000000000 +0000 -+++ bash-2.05b/builtins/Makefile.in 2003-03-25 17:25:49.000000000 +0000 -@@ -93,7 +93,6 @@ - $(RM) $@ - ./$(MKBUILTINS) $(DIRECTDEFINE) $< - $(CC) -c $(CCFLAGS) $*.c || ( $(RM) $*.c ; exit 1 ) -- $(RM) $*.c - - # How to make a .c file from a .def file. - .def.c: diff --git a/bash-2.05b-manso.patch b/bash-2.05b-manso.patch deleted file mode 100644 index 39ebf744aa054850aaed7297e19320cc58559088..0000000000000000000000000000000000000000 --- a/bash-2.05b-manso.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- bash-2.05b/doc/builtins.1.manso 2003-02-10 18:58:21.000000000 +0000 -+++ bash-2.05b/doc/builtins.1 2003-02-10 18:58:28.000000000 +0000 -@@ -10,6 +10,6 @@ - ulimit, umask, unalias, unset, wait \- bash built-in commands, see \fBbash\fR(1) - .SH BASH BUILTIN COMMANDS - .nr zZ 1 --.so bash.1 -+.so man1/bash.1 - .SH SEE ALSO - bash(1), sh(1) diff --git a/bash-3.2-audit.patch b/bash-3.2-audit.patch deleted file mode 100644 index 48a1751f8311036dab7080c493d2cdfa055bfb4d..0000000000000000000000000000000000000000 --- a/bash-3.2-audit.patch +++ /dev/null @@ -1,96 +0,0 @@ -diff -up bash-4.2/config.h.in.audit bash-4.2/config.h.in ---- bash-4.2/config.h.in.audit 2013-01-31 16:26:16.857698992 +0100 -+++ bash-4.2/config.h.in 2013-01-31 16:26:16.876699255 +0100 -@@ -1131,6 +1131,14 @@ - - /* End additions for lib/intl */ - -+ -+/* Additions for lib/readline */ -+ -+/* Define if you have and it defines AUDIT_USER_TTY */ -+#undef HAVE_DECL_AUDIT_USER_TTY -+ -+/* End additions for lib/readline */ -+ - #include "config-bot.h" - - #endif /* _CONFIG_H_ */ -diff -up bash-4.2/configure.in.audit bash-4.2/configure.in ---- bash-4.2/configure.in.audit 2013-01-31 16:26:16.858699005 +0100 -+++ bash-4.2/configure.ac 2013-01-31 16:26:16.877699269 +0100 -@@ -888,6 +888,8 @@ BASH_FUNC_DUP2_CLOEXEC_CHECK - BASH_SYS_PGRP_SYNC - BASH_SYS_SIGNAL_VINTAGE - -+AC_CHECK_DECLS([AUDIT_USER_TTY],,, [[#include ]]) -+ - dnl checking for the presence of certain library symbols - BASH_SYS_ERRLIST - BASH_SYS_SIGLIST -diff -up bash-4.2/lib/readline/readline.c.audit bash-4.2/lib/readline/readline.c ---- bash-4.2/lib/readline/readline.c.audit 2013-01-31 16:26:16.871699185 +0100 -+++ bash-4.2/lib/readline/readline.c 2013-01-31 17:24:23.902744860 +0100 -@@ -55,6 +55,12 @@ - extern int errno; - #endif /* !errno */ - -+#if defined (HAVE_DECL_AUDIT_USER_TTY) -+# include -+# include -+# include -+#endif -+ - /* System-specific feature definitions and include files. */ - #include "rldefs.h" - #include "rlmbutil.h" -@@ -301,7 +307,48 @@ rl_set_prompt (prompt) - rl_visible_prompt_length = rl_expand_prompt (rl_prompt); - return 0; - } -- -+ -+#if defined (HAVE_DECL_AUDIT_USER_TTY) -+/* Report STRING to the audit system. */ -+static void -+audit_tty (char *string) -+{ -+ struct sockaddr_nl addr; -+ struct msghdr msg; -+ struct nlmsghdr nlm; -+ struct iovec iov[2]; -+ size_t size; -+ int fd; -+ -+ size = strlen (string) + 1; -+ fd = socket (AF_NETLINK, SOCK_RAW, NETLINK_AUDIT); -+ if (fd < 0) -+ return; -+ nlm.nlmsg_len = NLMSG_LENGTH (size); -+ nlm.nlmsg_type = AUDIT_USER_TTY; -+ nlm.nlmsg_flags = NLM_F_REQUEST; -+ nlm.nlmsg_seq = 0; -+ nlm.nlmsg_pid = 0; -+ iov[0].iov_base = &nlm; -+ iov[0].iov_len = sizeof (nlm); -+ iov[1].iov_base = string; -+ iov[1].iov_len = size; -+ addr.nl_family = AF_NETLINK; -+ addr.nl_pad = 0; -+ addr.nl_pid = 0; -+ addr.nl_groups = 0; -+ msg.msg_name = &addr; -+ msg.msg_namelen = sizeof (addr); -+ msg.msg_iov = iov; -+ msg.msg_iovlen = 2; -+ msg.msg_control = NULL; -+ msg.msg_controllen = 0; -+ msg.msg_flags = 0; -+ (void)sendmsg (fd, &msg, 0); -+ close (fd); -+} -+#endif -+ - /* Read a line of input. Prompt with PROMPT. An empty PROMPT means - none. A return value of NULL means that EOF was encountered. */ - char * diff --git a/bash-4.1-broken_pipe.patch b/bash-4.1-broken_pipe.patch deleted file mode 100644 index e0833741aa508124a9fc96e59296da2b2a28c426..0000000000000000000000000000000000000000 --- a/bash-4.1-broken_pipe.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up bash-4.1/config-top.h.broken_pipe bash-4.1/config-top.h ---- bash-4.1/config-top.h.broken_pipe 2011-01-06 18:01:30.000000000 +0100 -+++ bash-4.1/config-top.h 2011-01-06 18:02:14.000000000 +0100 -@@ -51,7 +51,7 @@ - /* Define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS if you don't want builtins - like `echo' and `printf' to report errors when output does not succeed - due to EPIPE. */ --/* #define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS */ -+#define DONT_REPORT_BROKEN_PIPE_WRITE_ERRORS - - /* The default value of the PATH variable. */ - #ifndef DEFAULT_PATH_VALUE diff --git a/bash-4.1-examples.patch b/bash-4.1-examples.patch deleted file mode 100644 index 19159e7589092e80d907d0e223af6a6c001fd60d..0000000000000000000000000000000000000000 --- a/bash-4.1-examples.patch +++ /dev/null @@ -1,24 +0,0 @@ -diff -up bash-4.1/examples/loadables/Makefile.in.examples bash-4.1/examples/loadables/Makefile.in ---- bash-4.1/examples/loadables/Makefile.in.examples 2010-06-22 16:20:02.000000000 +0200 -+++ bash-4.1/examples/loadables/Makefile.in 2010-06-22 16:20:41.000000000 +0200 -@@ -43,7 +43,7 @@ host_os = @host_os@ - host_cpu = @host_cpu@ - host_vendor = @host_vendor@ - --CFLAGS = @CFLAGS@ -+CFLAGS = -O2 -g - LOCAL_CFLAGS = @LOCAL_CFLAGS@ - DEFS = @DEFS@ - LOCAL_DEFS = @LOCAL_DEFS@ -diff -up bash-4.1/examples/loadables/perl/Makefile.in.examples bash-4.1/examples/loadables/perl/Makefile.in ---- bash-4.1/examples/loadables/perl/Makefile.in.examples 2010-06-22 16:20:46.000000000 +0200 -+++ bash-4.1/examples/loadables/perl/Makefile.in 2010-06-22 16:21:04.000000000 +0200 -@@ -42,7 +42,7 @@ SHELL = @MAKE_SHELL@ - - PERL5 = perl5 - --CFLAGS = @CFLAGS@ -+CFLAGS = -O2 -g - - # - # These values are generated for configure by ${topdir}/support/shobj-conf. diff --git a/bash-4.2-manpage_trap.patch b/bash-4.2-manpage_trap.patch deleted file mode 100644 index e81882f3de99ca24b196fd2b11a25d9c0b4ae9df..0000000000000000000000000000000000000000 --- a/bash-4.2-manpage_trap.patch +++ /dev/null @@ -1,12 +0,0 @@ -diff -up bash-4.1/doc/bash.1.manpage_trap bash-4.1/doc/bash.1 ---- bash-4.1/doc/bash.1.manpage_trap 2012-08-28 10:06:00.561999092 +0200 -+++ bash-4.1/doc/bash.1 2012-08-28 10:06:24.225304505 +0200 -@@ -9251,7 +9251,7 @@ being inverted via - These are the same conditions obeyed by the \fBerrexit\fP (\fB\-e\fP) option. - .if t .sp 0.5 - .if n .sp 1 --Signals ignored upon entry to the shell cannot be trapped or reset. -+Signals ignored upon entry to the shell cannot be trapped, reset or listed. - Trapped signals that are not being ignored are reset to their original - values in a subshell or subshell environment when one is created. - The return status is false if any diff --git a/bash-4.2-rc2-logout.patch b/bash-4.2-rc2-logout.patch deleted file mode 100644 index f63c8b63b6ffd9dd1313af6d806e2a7110cb54e7..0000000000000000000000000000000000000000 --- a/bash-4.2-rc2-logout.patch +++ /dev/null @@ -1,41 +0,0 @@ -diff --git a/config-top.h b/config-top.h -index 026d4a4..cb0e002 100644 ---- a/config-top.h -+++ b/config-top.h -@@ -92,7 +92,7 @@ - /* #define SYS_BASHRC "/etc/bash.bashrc" */ - - /* System-wide .bash_logout for login shells. */ --/* #define SYS_BASH_LOGOUT "/etc/bash.bash_logout" */ -+#define SYS_BASH_LOGOUT "/etc/bash.bash_logout" - - /* Define this to make non-interactive shells begun with argv[0][0] == '-' - run the startup files when not in posix mode. */ -diff --git a/doc/bash.1 b/doc/bash.1 -index 04ce845..bfde55e 100644 ---- a/doc/bash.1 -+++ b/doc/bash.1 -@@ -335,8 +335,8 @@ option may be used when the shell is started to inhibit this behavior. - When an interactive login shell exits, - or a non-interactive login shell executes the \fBexit\fP builtin command, - .B bash --reads and executes commands from the file \fI~/.bash_logout\fP, if it --exists. -+reads and executes commands from the files \fI~/.bash_logout\fP -+and \fI/etc/bash.bash_logout\fP, if the files exists. - .PP - When an interactive shell that is not a login shell is started, - .B bash -@@ -10558,6 +10558,9 @@ The \fBbash\fP executable - .FN /etc/profile - The systemwide initialization file, executed for login shells - .TP -+.FN /etc/bash.bash_logout -+The systemwide login shell cleanup file, executed when a login shell exits -+.TP - .FN ~/.bash_profile - The personal initialization file, executed for login shells - .TP --- -2.9.3 - diff --git a/bash-4.2-size_type.patch b/bash-4.2-size_type.patch deleted file mode 100644 index ab566776e0fc67ce95964a22e1bf5e2ba24b4331..0000000000000000000000000000000000000000 --- a/bash-4.2-size_type.patch +++ /dev/null @@ -1,14 +0,0 @@ -diff -up bash-4.2/variables.h.size_type bash-4.2/variables.h ---- bash-4.2/variables.h.size_type 2012-11-29 10:33:25.109036844 +0100 -+++ bash-4.2/variables.h 2012-11-29 10:46:12.718530162 +0100 -@@ -95,8 +95,8 @@ typedef struct variable { - - typedef struct _vlist { - SHELL_VAR **list; -- int list_size; /* allocated size */ -- int list_len; /* current number of entries */ -+ size_t list_size; /* allocated size */ -+ size_t list_len; /* current number of entries */ - } VARLIST; - - /* The various attributes that a given variable can have. */ diff --git a/bash-4.3-man-ulimit.patch b/bash-4.3-man-ulimit.patch deleted file mode 100644 index 0c3fa0a521404b2b42bf0fb2a9d187d3ac93b225..0000000000000000000000000000000000000000 --- a/bash-4.3-man-ulimit.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/doc/bash.1 b/doc/bash.1 -index 6e8aebb..e846e68 100644 ---- a/doc/bash.1 -+++ b/doc/bash.1 -@@ -10333,6 +10333,7 @@ and - which are in 512-byte increments. - The return status is 0 unless an invalid option or argument is supplied, - or an error occurs while setting a new limit. -+In POSIX Mode 512-byte blocks are used for the `-c' and `-f' options. - .RE - .TP - \fBumask\fP [\fB\-p\fP] [\fB\-S\fP] [\fImode\fP] --- -2.9.3 - diff --git a/bash-4.4-no-loadable-builtins.patch b/bash-4.4-no-loadable-builtins.patch deleted file mode 100644 index b03459d56d3ced02350466dadd54c0e03607452a..0000000000000000000000000000000000000000 --- a/bash-4.4-no-loadable-builtins.patch +++ /dev/null @@ -1,15 +0,0 @@ -diff --git a/Makefile.in b/Makefile.in -index a1f9483..24c646a 100644 ---- a/Makefile.in -+++ b/Makefile.in -@@ -800,7 +800,6 @@ install: .made installdirs - infodir=$(infodir) htmldir=$(htmldir) DESTDIR=$(DESTDIR) $@ ) - -( cd $(DEFDIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) - -( cd $(PO_DIR) ; $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) -- -( cd $(LOADABLES_DIR) && $(MAKE) $(MFLAGS) DESTDIR=$(DESTDIR) $@ ) - - install-strip: - $(MAKE) $(MFLAGS) INSTALL_PROGRAM='$(INSTALL_PROGRAM) -s' \ --- -2.9.3 - diff --git a/bash-infotags.patch b/bash-infotags.patch deleted file mode 100644 index fe39609d4843e397c8e63ba5ae98864a8f4bd326..0000000000000000000000000000000000000000 --- a/bash-infotags.patch +++ /dev/null @@ -1,26 +0,0 @@ -diff --git a/doc/Makefile.in b/doc/Makefile.in -index 5f0756c..a5fa5a0 100644 ---- a/doc/Makefile.in -+++ b/doc/Makefile.in -@@ -74,7 +74,6 @@ TEXI2DVI = ${SUPPORT_SRCDIR}/texi2dvi - TEXI2HTML = ${SUPPORT_SRCDIR}/texi2html - MAN2HTML = ${BUILD_DIR}/support/man2html - HTMLPOST = ${srcdir}/htmlpost.sh --INFOPOST = ${srcdir}/infopost.sh - QUIETPS = #set this to -q to shut up dvips - PAPERSIZE = letter # change to a4 for A4-size paper - PSDPI = 600 # could be 300 if you like -@@ -188,8 +187,8 @@ bashref.pdf: $(BASHREF_FILES) $(HSUSER) $(RLUSER) - bashref.html: $(BASHREF_FILES) $(HSUSER) $(RLUSER) - $(MAKEINFO) --html --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi - --bash.info: bashref.info -- ${SHELL} ${INFOPOST} < $(srcdir)/bashref.info > $@ ; \ -+bash.info: $(BASHREF_FILES) $(HSUSER) $(RLUSER) -+ $(MAKEINFO) --no-split -I$(TEXINPUTDIR) $(srcdir)/bashref.texi -o $@ - - bash.txt: bash.1 - bash.ps: bash.1 --- -2.9.3 - diff --git a/bash-requires.patch b/bash-requires.patch deleted file mode 100644 index 6167af1a330169818fada3f0921f702616e79ce9..0000000000000000000000000000000000000000 --- a/bash-requires.patch +++ /dev/null @@ -1,312 +0,0 @@ -diff --git a/builtins.h b/builtins.h -index dac95fd..5b7e811 100644 ---- a/builtins.h -+++ b/builtins.h -@@ -45,6 +45,7 @@ - #define ASSIGNMENT_BUILTIN 0x10 /* This builtin takes assignment statements. */ - #define POSIX_BUILTIN 0x20 /* This builtins is special in the Posix command search order. */ - #define LOCALVAR_BUILTIN 0x40 /* This builtin creates local variables */ -+#define REQUIRES_BUILTIN 0x80 /* This builtin requires other files. */ - - #define BASE_INDENT 4 - -diff --git a/builtins/mkbuiltins.c b/builtins/mkbuiltins.c -index 4f51201..91c25db 100644 ---- a/builtins/mkbuiltins.c -+++ b/builtins/mkbuiltins.c -@@ -69,10 +69,15 @@ extern char *strcpy (); - #define whitespace(c) (((c) == ' ') || ((c) == '\t')) - - /* Flag values that builtins can have. */ -+/* These flags are for the C code generator, -+ the C which is produced (./builtin.c) -+ includes the flags definitions found -+ in ../builtins.h */ - #define BUILTIN_FLAG_SPECIAL 0x01 - #define BUILTIN_FLAG_ASSIGNMENT 0x02 - #define BUILTIN_FLAG_LOCALVAR 0x04 - #define BUILTIN_FLAG_POSIX_BUILTIN 0x08 -+#define BUILTIN_FLAG_REQUIRES 0x10 - - #define BASE_INDENT 4 - -@@ -173,11 +178,19 @@ char *posix_builtins[] = - (char *)NULL - }; - -+/* The builtin commands that cause requirements on other files. */ -+static char *requires_builtins[] = -+{ -+ ".", "command", "exec", "source", "inlib", -+ (char *)NULL -+}; -+ - /* Forward declarations. */ - static int is_special_builtin (); - static int is_assignment_builtin (); - static int is_localvar_builtin (); - static int is_posix_builtin (); -+static int is_requires_builtin (); - - #if !defined (HAVE_RENAME) - static int rename (); -@@ -831,6 +844,8 @@ builtin_handler (self, defs, arg) - new->flags |= BUILTIN_FLAG_LOCALVAR; - if (is_posix_builtin (name)) - new->flags |= BUILTIN_FLAG_POSIX_BUILTIN; -+ if (is_requires_builtin (name)) -+ new->flags |= BUILTIN_FLAG_REQUIRES; - - array_add ((char *)new, defs->builtins); - building_builtin = 1; -@@ -1250,12 +1265,13 @@ write_builtins (defs, structfile, externfile) - else - fprintf (structfile, "(sh_builtin_func_t *)0x0, "); - -- fprintf (structfile, "%s%s%s%s%s, %s_doc,\n", -+ fprintf (structfile, "%s%s%s%s%s%s, %s_doc,\n", - "BUILTIN_ENABLED | STATIC_BUILTIN", - (builtin->flags & BUILTIN_FLAG_SPECIAL) ? " | SPECIAL_BUILTIN" : "", - (builtin->flags & BUILTIN_FLAG_ASSIGNMENT) ? " | ASSIGNMENT_BUILTIN" : "", - (builtin->flags & BUILTIN_FLAG_LOCALVAR) ? " | LOCALVAR_BUILTIN" : "", - (builtin->flags & BUILTIN_FLAG_POSIX_BUILTIN) ? " | POSIX_BUILTIN" : "", -+ (builtin->flags & BUILTIN_FLAG_REQUIRES) ? " | REQUIRES_BUILTIN" : "", - document_name (builtin)); - - /* Don't translate short document summaries that are identical -@@ -1645,6 +1661,13 @@ is_posix_builtin (name) - return (_find_in_table (name, posix_builtins)); - } - -+static int -+is_requires_builtin (name) -+ char *name; -+{ -+ return (_find_in_table (name, requires_builtins)); -+} -+ - #if !defined (HAVE_RENAME) - static int - rename (from, to) -diff --git a/doc/bash.1 b/doc/bash.1 -index d91f1fd..111a66d 100644 ---- a/doc/bash.1 -+++ b/doc/bash.1 -@@ -239,6 +239,14 @@ The shell becomes restricted (see - .B "RESTRICTED SHELL" - below). - .TP -+.B \-\-rpm-requires -+Produce the list of files that are required for the -+shell script to run. This implies '-n' and is subject -+to the same limitations as compile time error checking checking; -+Command substitutions, Conditional expressions and -+.BR eval -+builtin are not parsed so some dependencies may be missed. -+.TP - .B \-\-verbose - Equivalent to \fB\-v\fP. - .TP -diff --git a/doc/bashref.texi b/doc/bashref.texi -index d33cd57..6fc4d18 100644 ---- a/doc/bashref.texi -+++ b/doc/bashref.texi -@@ -6453,6 +6453,13 @@ standard. @xref{Bash POSIX Mode}, for a description of the Bash - @item --restricted - Make the shell a restricted shell (@pxref{The Restricted Shell}). - -+@item --rpm-requires -+Produce the list of files that are required for the -+shell script to run. This implies '-n' and is subject -+to the same limitations as compile time error checking checking; -+Command substitutions, Conditional expressions and @command{eval} -+are not parsed so some dependencies may be missed. -+ - @item --verbose - Equivalent to @option{-v}. Print shell input lines as they're read. - -diff --git a/eval.c b/eval.c -index f02d6e4..76c1e8d 100644 ---- a/eval.c -+++ b/eval.c -@@ -142,7 +142,8 @@ reader_loop () - - if (read_command () == 0) - { -- if (interactive_shell == 0 && read_but_dont_execute) -+ -+ if (interactive_shell == 0 && (read_but_dont_execute && !rpm_requires)) - { - last_command_exit_value = EXECUTION_SUCCESS; - dispose_command (global_command); -diff --git a/execute_cmd.c b/execute_cmd.c -index 8b3c83a..4eae19c 100644 ---- a/execute_cmd.c -+++ b/execute_cmd.c -@@ -542,6 +542,8 @@ async_redirect_stdin () - - #define DESCRIBE_PID(pid) do { if (interactive) describe_pid (pid); } while (0) - -+extern int rpm_requires; -+ - /* Execute the command passed in COMMAND, perhaps doing it asynchronously. - COMMAND is exactly what read_command () places into GLOBAL_COMMAND. - ASYNCHROUNOUS, if non-zero, says to do this command in the background. -@@ -573,7 +575,13 @@ execute_command_internal (command, asynchronous, pipe_in, pipe_out, - - if (breaking || continuing) - return (last_command_exit_value); -- if (command == 0 || read_but_dont_execute) -+ if (command == 0 || (read_but_dont_execute && !rpm_requires)) -+ return (EXECUTION_SUCCESS); -+ if (rpm_requires && command->type == cm_function_def) -+ return last_command_exit_value = -+ execute_intern_function (command->value.Function_def->name, -+ command->value.Function_def); -+ if (read_but_dont_execute) - return (EXECUTION_SUCCESS); - - QUIT; -@@ -2819,7 +2827,7 @@ execute_for_command (for_command) - save_line_number = line_number; - if (check_identifier (for_command->name, 1) == 0) - { -- if (posixly_correct && interactive_shell == 0) -+ if (posixly_correct && interactive_shell == 0 && rpm_requires == 0) - { - last_command_exit_value = EX_BADUSAGE; - jump_to_top_level (ERREXIT); -diff --git a/execute_cmd.h b/execute_cmd.h -index dc2f15e..506fff4 100644 ---- a/execute_cmd.h -+++ b/execute_cmd.h -@@ -22,6 +22,9 @@ - #define _EXECUTE_CMD_H_ - - #include "stdc.h" -+#include "variables.h" -+#include "command.h" -+ - - #if defined (ARRAY_VARS) - struct func_array_state -diff --git a/make_cmd.c b/make_cmd.c -index ecbbfd6..3d8bfa4 100644 ---- a/make_cmd.c -+++ b/make_cmd.c -@@ -35,6 +35,8 @@ - #include "bashintl.h" - - #include "shell.h" -+#include "builtins.h" -+#include "builtins/common.h" - #include "execute_cmd.h" - #include "parser.h" - #include "flags.h" -@@ -828,6 +830,30 @@ make_coproc_command (name, command) - return (make_command (cm_coproc, (SIMPLE_COM *)temp)); - } - -+static void -+output_requirement (deptype, filename) -+const char *deptype; -+char *filename; -+{ -+ static char *alphabet_set = "abcdefghijklmnopqrstuvwxyz" -+ "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; -+ -+ if (strchr(filename, '$') || (filename[0] != '/' && strchr(filename, '/'))) -+ return; -+ -+ /* -+ if the executable is called via variable substitution we can -+ not dermine what it is at compile time. -+ -+ if the executable consists only of characters not in the -+ alphabet we do not consider it a dependency just an artifact -+ of shell parsing (ex "exec < ${infile}"). -+ */ -+ -+ if (strpbrk(filename, alphabet_set)) -+ printf ("%s(%s)\n", deptype, filename); -+} -+ - /* Reverse the word list and redirection list in the simple command - has just been parsed. It seems simpler to do this here the one - time then by any other method that I can think of. */ -@@ -845,6 +871,28 @@ clean_simple_command (command) - REVERSE_LIST (command->value.Simple->redirects, REDIRECT *); - } - -+ if (rpm_requires && command->value.Simple->words) -+ { -+ char *cmd0; -+ char *cmd1; -+ struct builtin *b; -+ -+ cmd0 = command->value.Simple->words->word->word; -+ b = builtin_address_internal (cmd0, 0); -+ cmd1 = 0; -+ if (command->value.Simple->words->next) -+ cmd1 = command->value.Simple->words->next->word->word; -+ -+ if (b) { -+ if ( (b->flags & REQUIRES_BUILTIN) && cmd1) -+ output_requirement ("executable", cmd1); -+ } else { -+ if (!assignment(cmd0, 0)) -+ output_requirement (find_function(cmd0) ? "function" : "executable", cmd0); -+ } -+ } /*rpm_requires*/ -+ -+ - parser_state &= ~PST_REDIRLIST; - return (command); - } -diff --git a/shell.c b/shell.c -index a2b2a55..c5d99b3 100644 ---- a/shell.c -+++ b/shell.c -@@ -193,6 +193,9 @@ int have_devfd = 0; - /* The name of the .(shell)rc file. */ - static char *bashrc_file = DEFAULT_BASHRC; - -+/* Non-zero if we are finding the scripts requirements. */ -+int rpm_requires; -+ - /* Non-zero means to act more like the Bourne shell on startup. */ - static int act_like_sh; - -@@ -259,6 +262,7 @@ static const struct { - { "protected", Int, &protected_mode, (char **)0x0 }, - #endif - { "rcfile", Charp, (int *)0x0, &bashrc_file }, -+ { "rpm-requires", Int, &rpm_requires, (char **)0x0 }, - #if defined (RESTRICTED_SHELL) - { "restricted", Int, &restricted, (char **)0x0 }, - #endif -@@ -496,6 +500,12 @@ main (argc, argv, env) - if (dump_translatable_strings) - read_but_dont_execute = 1; - -+ if (rpm_requires) -+ { -+ read_but_dont_execute = 1; -+ initialize_shell_builtins (); -+ } -+ - if (running_setuid && privileged_mode == 0) - disable_priv_mode (); - -diff --git a/shell.h b/shell.h -index 8072605..6c4149d 100644 ---- a/shell.h -+++ b/shell.h -@@ -99,6 +99,7 @@ extern int interactive, interactive_shell; - extern int startup_state; - extern int reading_shell_script; - extern int shell_initialized; -+extern int rpm_requires; - extern int bash_argv_initialized; - extern int subshell_environment; - extern int current_command_number; diff --git a/bash-setlocale.patch b/bash-setlocale.patch deleted file mode 100644 index f068ec7cf68fe09d1f8ffaa1f70160b7288b54f4..0000000000000000000000000000000000000000 --- a/bash-setlocale.patch +++ /dev/null @@ -1,10 +0,0 @@ ---- bash-3.0/builtins/setattr.def.setlocale 2005-08-08 12:22:42.000000000 +0100 -+++ bash-3.0/builtins/setattr.def 2005-08-08 12:25:16.000000000 +0100 -@@ -423,4 +423,7 @@ - - if (var && (exported_p (var) || (attribute & att_exported))) - array_needs_making++; /* XXX */ -+ -+ if (var) -+ stupidly_hack_special_variables (name); - } diff --git a/bash-tty-tests.patch b/bash-tty-tests.patch deleted file mode 100644 index ea9a8a62dd569b4057b10d46b7d442f8193c53d2..0000000000000000000000000000000000000000 --- a/bash-tty-tests.patch +++ /dev/null @@ -1,60 +0,0 @@ -diff --git a/tests/exec.right b/tests/exec.right -index 6075cc8..0b3f02c 100644 ---- a/tests/exec.right -+++ b/tests/exec.right -@@ -51,7 +51,6 @@ this is ohio-state - 0 - 1 - testb --expand_aliases on - 1 - 1 - 1 -diff --git a/tests/execscript b/tests/execscript -index c1819de..9227a4a 100644 ---- a/tests/execscript -+++ b/tests/execscript -@@ -108,8 +108,6 @@ ${THIS_SH} ./exec6.sub - # checks for properly deciding what constitutes an executable file - ${THIS_SH} ./exec7.sub - --${THIS_SH} -i ${PWD}/exec8.sub -- - ${THIS_SH} ./exec9.sub - - ${THIS_SH} ./exec10.sub -diff --git a/tests/read.right b/tests/read.right -index 73cb704..a92fe7f 100644 ---- a/tests/read.right -+++ b/tests/read.right -@@ -33,14 +33,6 @@ a = abcdefg - a = xyz - a = -xyz 123- - a = abc --timeout 1: ok -- --timeout 2: ok -- --./read2.sub: line 23: read: -3: invalid timeout specification --1 -- --abcde - ./read3.sub: line 4: read: -1: invalid number - abc - ab -diff --git a/tests/read.tests b/tests/read.tests -index f67cd00..083f4a4 100644 ---- a/tests/read.tests -+++ b/tests/read.tests -@@ -82,9 +82,6 @@ echo " foo" | { IFS=$':' ; read line; recho "$line"; } - # test read -d delim behavior - ${THIS_SH} ./read1.sub - --# test read -t timeout behavior --${THIS_SH} ./read2.sub -- - # test read -n nchars behavior - ${THIS_SH} ./read3.sub - --- -2.17.2 diff --git a/bash.spec b/bash.spec index dbe079dc19229b102b0800735baed986b21a6c6e..8c95a44f3815db8a5744ebf888b8de901f7f5976 100644 --- a/bash.spec +++ b/bash.spec @@ -1,6 +1,6 @@ Name: bash Version: 5.0 -Release: 7 +Release: 8 Summary: It is the Bourne Again Shell License: GPLv3 URL: https://www.gnu.org/software/bash @@ -23,38 +23,17 @@ Patch9: bash-5.0-patch9.patch Patch10: bash-5.0-patch10.patch Patch11: bash-5.0-patch11.patch -Patch12: bash-2.02-security.patch -Patch13: bash-2.03-paths.patch -Patch14: bash-2.03-profile.patch Patch15: bash-2.05a-interpreter.patch -Patch16: bash-2.05b-debuginfo.patch -Patch17: bash-2.05b-manso.patch Patch18: bash-2.05b-pgrp_sync.patch -Patch19: bash-3.2-audit.patch -Patch20: bash-3.2-ssh_source_bash.patch -Patch21: bash-infotags.patch -Patch22: bash-requires.patch -Patch23: bash-setlocale.patch -Patch24: bash-tty-tests.patch - -# rh484809 Patch25: bash-4.0-nobits.patch -Patch26: bash-4.1-examples.patch -Patch27: bash-4.1-broken_pipe.patch -Patch28: bash-4.2-rc2-logout.patch Patch29: bash-4.2-coverity.patch -# rh799958 -Patch30: bash-4.2-manpage_trap.patch -Patch31: bash-4.2-size_type.patch -# rh1112710 -Patch32: bash-4.3-man-ulimit.patch # rh1102815 Patch33: bash-4.3-noecho.patch # fix bash leaks memory when LC_ALL set-rh1241533,rh1224855 Patch34: bash-4.3-memleak-lc_all.patch -Patch35: bash-4.4-no-loadable-builtins.patch -Patch9000:0001-bugfix-Forbidden-non-root-user-to-clear-history.patch +Patch9000:bugfix-Forbidden-non-root-user-to-clear-history.patch +Patch9001:enable-dot-logout-and-source-bashrc-through-ssh.patch BuildRequires: gcc bison texinfo @@ -120,7 +99,7 @@ make check %files -f %{name}.lang %defattr(-,root,root) %license COPYING -%config(noreplace) /etc/skel/.%{name}* +%config(noreplace) /etc/skel/.* %{_bindir}/{sh,bash,alias,bg,cd,command,fc,fg,wait,bashbug} %{_bindir}/{hash,getopts,jobs,read,type,ulimit,umask,unalias} @@ -128,6 +107,8 @@ make check %defattr(-,root,root) %{_includedir}/%{name} %{_libdir}/pkgconfig/*.pc +%{_libdir}/bash/* +%exclude %{_libdir}/bash/Makefile* %files help %defattr(-,root,root) @@ -139,13 +120,19 @@ make check %exclude %{_infodir}/dir %changelog -* Wed Dec 25 2019 openEuler Buildteam 5.0-7 +* Mon Jan 6 2020 openEuler Buildteam - 5.0-8 +- Type:enhancement +- ID:NA +- SUG:NA +- DESC:delete redundant files + +* Wed Dec 25 2019 openEuler Buildteam - 5.0-7 - Type:enhancement - ID:NA - SUG:NA - DESC:add provides of bash-doc -* Thu Oct 24 2019 shenyangyang 5.0-6 +* Thu Oct 24 2019 shenyangyang - 5.0-6 - Type:enhancement - ID:NA - SUG:NA diff --git a/0001-bugfix-Forbidden-non-root-user-to-clear-history.patch b/bugfix-Forbidden-non-root-user-to-clear-history.patch similarity index 100% rename from 0001-bugfix-Forbidden-non-root-user-to-clear-history.patch rename to bugfix-Forbidden-non-root-user-to-clear-history.patch diff --git a/dot-bash_logout b/dot-bash_logout index af7c6fd8fd1d77b1081711bd0e497161446cc7d0..31579fc393d16d1df818c568114c16add0cb0cb6 100644 --- a/dot-bash_logout +++ b/dot-bash_logout @@ -1,2 +1,2 @@ -# ~/.bash_logout - +# System-wide .bash_logout for login shells +# executed when a shell logout diff --git a/dot-bash_profile b/dot-bash_profile index 55136b96f7b5901dec91127071e2b5f2031caea8..a67d8bf27432be756b54d8cdd03407a5200a2009 100644 --- a/dot-bash_profile +++ b/dot-bash_profile @@ -1,8 +1,2 @@ -# .bash_profile - -# Get the aliases and functions -if [ -f ~/.bashrc ]; then - . ~/.bashrc -fi - -# User specific environment and startup programs +# Source /root/.bashrc if user has one +# [ -f ~/.bashrc ] && . ~/.bashrc diff --git a/dot-bashrc b/dot-bashrc index 68854a1bbe80c11b286fb0291e336d17c74d6d3c..8212e7880cad6a46dcd2896db1b449b75553ec92 100644 --- a/dot-bashrc +++ b/dot-bashrc @@ -1,15 +1,6 @@ -# .bashrc +# Source default setting +[ -f /etc/bashrc ] && . /etc/bashrc -# Source global definitions -if [ -f /etc/bashrc ]; then - . /etc/bashrc -fi - -# User specific environment +# User environment PATH PATH="$HOME/.local/bin:$HOME/bin:$PATH" export PATH - -# Uncomment the following line if you don't like systemctl's auto-paging feature: -# export SYSTEMD_PAGER= - -# User specific aliases and functions diff --git a/bash-3.2-ssh_source_bash.patch b/enable-dot-logout-and-source-bashrc-through-ssh.patch similarity index 30% rename from bash-3.2-ssh_source_bash.patch rename to enable-dot-logout-and-source-bashrc-through-ssh.patch index 5bd19ce9adf13373aa8f045defe6b1f5ddc28359..b9bede7754437a576daa41106ed6fbbdf4cac5cc 100644 --- a/bash-3.2-ssh_source_bash.patch +++ b/enable-dot-logout-and-source-bashrc-through-ssh.patch @@ -1,7 +1,29 @@ -diff -up bash-4.0/config-top.h.ssh_source_bash bash-4.0/config-top.h ---- bash-4.0/config-top.h.ssh_source_bash 2009-01-21 15:20:06.000000000 +0100 -+++ bash-4.0/config-top.h 2009-01-21 15:25:46.000000000 +0100 -@@ -90,7 +90,7 @@ +From 8d61d57541b0dbf7eb49359f7f0af53ec9724cbe Mon Sep 17 00:00:00 2001 +From: openEuler Buildteam +Date: Thu, 9 Jan 2020 19:02:15 +0800 +Subject: [PATCH] enable dot logout and source bashrc through ssh + +--- + config-top.h | 6 +++--- + 1 file changed, 3 insertions(+), 3 deletions(-) + +diff --git a/config-top.h b/config-top.h +index 56dbd51..3c5555a 100644 +--- a/config-top.h ++++ b/config-top.h +@@ -94,17 +94,17 @@ + /* #define SYS_BASHRC "/etc/bash.bashrc" */ + + /* System-wide .bash_logout for login shells. */ +-/* #define SYS_BASH_LOGOUT "/etc/bash.bash_logout" */ ++#define SYS_BASH_LOGOUT "/etc/bash.bash_logout" + + /* Define this to make non-interactive shells begun with argv[0][0] == '-' + run the startup files when not in posix mode. */ +-/* #define NON_INTERACTIVE_LOGIN_SHELLS */ ++#define NON_INTERACTIVE_LOGIN_SHELLS + + /* Define this if you want bash to try to check whether it's being run by sshd and source the .bashrc if so (like the rshd behavior). This checks for the presence of SSH_CLIENT or SSH2_CLIENT in the initial environment, which can be fooled under certain not-uncommon circumstances. */ @@ -10,3 +32,6 @@ diff -up bash-4.0/config-top.h.ssh_source_bash bash-4.0/config-top.h /* Define if you want the case-capitalizing operators (~[~]) and the `capcase' variable attribute (declare -c). */ +-- +1.8.3.1 +