Accepting request 32541 from shells

Copy from shells/dash based on submit request 32541 from user gberh

OBS-URL: https://build.opensuse.org/request/show/32541
OBS-URL: https://build.opensuse.org/package/show/openSUSE:Factory/dash?expand=0&rev=1
This commit is contained in:
OBS User autobuild 2010-02-18 13:38:26 +00:00 committed by Git OBS Bridge
commit 14e7d1b39e
10 changed files with 378 additions and 0 deletions

23
.gitattributes vendored Normal file
View File

@ -0,0 +1,23 @@
## Default LFS
*.7z filter=lfs diff=lfs merge=lfs -text
*.bsp filter=lfs diff=lfs merge=lfs -text
*.bz2 filter=lfs diff=lfs merge=lfs -text
*.gem filter=lfs diff=lfs merge=lfs -text
*.gz filter=lfs diff=lfs merge=lfs -text
*.jar filter=lfs diff=lfs merge=lfs -text
*.lz filter=lfs diff=lfs merge=lfs -text
*.lzma filter=lfs diff=lfs merge=lfs -text
*.obscpio filter=lfs diff=lfs merge=lfs -text
*.oxt filter=lfs diff=lfs merge=lfs -text
*.pdf filter=lfs diff=lfs merge=lfs -text
*.png filter=lfs diff=lfs merge=lfs -text
*.rpm filter=lfs diff=lfs merge=lfs -text
*.tbz filter=lfs diff=lfs merge=lfs -text
*.tbz2 filter=lfs diff=lfs merge=lfs -text
*.tgz filter=lfs diff=lfs merge=lfs -text
*.ttf filter=lfs diff=lfs merge=lfs -text
*.txz filter=lfs diff=lfs merge=lfs -text
*.whl filter=lfs diff=lfs merge=lfs -text
*.xz filter=lfs diff=lfs merge=lfs -text
*.zip filter=lfs diff=lfs merge=lfs -text
*.zst filter=lfs diff=lfs merge=lfs -text

1
.gitignore vendored Normal file
View File

@ -0,0 +1 @@
.osc

View File

@ -0,0 +1,64 @@
From: Gerrit Pape <pape@smarden.org>
Date: Sat, 23 May 2009 02:05:15 +0000 (+0800)
Subject: [MAN] Update manual page to differentiate dash from ash
X-Git-Url: http://git.kernel.org/?p=utils%2Fdash%2Fdash.git;a=commitdiff_plain;h=956b4bd209a9d17613e419e2b50e0f533600497b
[MAN] Update manual page to differentiate dash from ash
Rename sh to dash in the header and synopsis; remove reference to the
4.4 BSD release in the description, and replace the history information
with a reference to NetBSD's ash.
Suggested by jaalto through
http://bugs.debian.org/499838
Signed-off-by: Gerrit Pape <pape@smarden.org>
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
---
diff --git a/src/dash.1 b/src/dash.1
index 5a8e2fe..c7771d0 100644
--- a/src/dash.1
+++ b/src/dash.1
@@ -34,9 +34,9 @@
.\"
.Dd January 19, 2003
.Os
-.Dt SH 1
+.Dt DASH 1
.Sh NAME
-.Nm sh
+.Nm dash
.Nd command interpreter (shell)
.Sh SYNOPSIS
.Nm
@@ -93,9 +93,6 @@ but it is not a Korn shell clone (see
Only features designated by
.Tn POSIX ,
plus a few Berkeley extensions, are being incorporated into this shell.
-We expect
-.Tn POSIX
-conformance by the time 4.4 BSD is released.
This man page is not intended
to be a tutorial or a complete specification of the shell.
.Ss Overview
@@ -2333,11 +2330,15 @@ The process ID of the parent process of the shell.
.Xr environ 7 ,
.Xr sysctl 8
.Sh HISTORY
-A
.Nm
-command appeared in
-.At v1 .
-It was, however, unmaintainable so we wrote this one.
+is a POSIX-compliant implementation of /bin/sh that aims to be as small as
+possible.
+.Nm
+is a direct descendant of the NetBSD version of ash (the Almquist SHell),
+ported to Linux in early 1997.
+It was renamed to
+.Nm
+in 2002.
.Sh BUGS
Setuid shell scripts should be avoided at all costs, as they are a
significant security risk.

View File

@ -0,0 +1,29 @@
From: Herbert Xu <herbert@gondor.apana.org.au>
Date: Sun, 22 Feb 2009 11:29:48 +0000 (+0800)
Subject: [JOBS] Do not close stderr when /dev/tty fails to open
X-Git-Url: http://git.kernel.org/?p=utils%2Fdash%2Fdash.git;a=commitdiff_plain;h=fcc4134a7b76d82d39dea635c41ec593a41d6d19
[JOBS] Do not close stderr when /dev/tty fails to open
As it stands if we fail to open /dev/tty we end up closing stderr
after saving it at a higher fd.
Thanks to David van Gorkom for reporting this.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
---
diff --git a/src/jobs.c b/src/jobs.c
index 69a84f7..b1ab7ab 100644
--- a/src/jobs.c
+++ b/src/jobs.c
@@ -195,6 +195,9 @@ setjobctl(int on)
while (!isatty(fd))
if (--fd < 0)
goto out;
+ fd = dup(fd);
+ if (fd < 0)
+ goto out;
}
fd = savefd(fd);
do { /* while we are in the background */

View File

@ -0,0 +1,96 @@
From: Herbert Xu <herbert@gondor.apana.org.au>
Date: Sat, 27 Jun 2009 12:38:23 +0000 (+0800)
Subject: [REDIR] Fix incorrect savefd conversions
X-Git-Url: http://git.kernel.org/?p=utils%2Fdash%2Fdash.git;a=commitdiff_plain;h=6c0398654015de53269a2ef32eae3c7b560875dd
[REDIR] Fix incorrect savefd conversions
When I added savefd we may end up closing stderr if that is how
we get to the tty. This patch fixes by adding a second argument
to indicate what fd should be closed which lets jobs.c get around
the problem.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
---
diff --git a/src/input.c b/src/input.c
index 27c4fd1..1e198e9 100644
--- a/src/input.c
+++ b/src/input.c
@@ -410,7 +410,7 @@ setinputfile(const char *fname, int flags)
sh_error("Can't open %s", fname);
}
if (fd < 10)
- fd = savefd(fd);
+ fd = savefd(fd, fd);
setinputfd(fd, flags & INPUT_PUSH_FILE);
out:
INTON;
diff --git a/src/jobs.c b/src/jobs.c
index b1ab7ab..a4fada0 100644
--- a/src/jobs.c
+++ b/src/jobs.c
@@ -189,17 +189,15 @@ setjobctl(int on)
if (on == jobctl || rootshell == 0)
return;
if (on) {
- fd = open(_PATH_TTY, O_RDWR);
+ int ofd;
+ ofd = fd = open(_PATH_TTY, O_RDWR);
if (fd < 0) {
fd += 3;
while (!isatty(fd))
if (--fd < 0)
goto out;
- fd = dup(fd);
- if (fd < 0)
- goto out;
}
- fd = savefd(fd);
+ fd = savefd(fd, ofd);
do { /* while we are in the background */
if ((pgrp = tcgetpgrp(fd)) < 0) {
out:
diff --git a/src/redir.c b/src/redir.c
index ce34db0..b01237d 100644
--- a/src/redir.c
+++ b/src/redir.c
@@ -145,7 +145,7 @@ redirect(union node *redir, int flags)
if (likely(i == EMPTY)) {
i = CLOSED;
if (fd != newfd) {
- i = savefd(fd);
+ i = savefd(fd, fd);
fd = -1;
}
}
@@ -399,7 +399,7 @@ RESET {
*/
int
-savefd(int from)
+savefd(int from, int ofd)
{
int newfd;
int err;
@@ -407,7 +407,7 @@ savefd(int from)
newfd = fcntl(from, F_DUPFD, 10);
err = newfd < 0 ? errno : 0;
if (err != EBADF) {
- close(from);
+ close(ofd);
if (err)
sh_error("%d: %s", from, strerror(err));
else
diff --git a/src/redir.h b/src/redir.h
index a8e6630..d1d160e 100644
--- a/src/redir.h
+++ b/src/redir.h
@@ -45,6 +45,6 @@ union node;
void redirect(union node *, int);
void popredir(int);
void clearredir(void);
-int savefd(int);
+int savefd(int, int);
int redirectsafe(union node *, int);

View File

@ -0,0 +1,77 @@
From: Herbert Xu <herbert@gondor.apana.org.au>
Date: Sat, 27 Jun 2009 13:00:39 +0000 (+0800)
Subject: [EXPAND] Fix quoted pattern patch breakage
X-Git-Url: http://git.kernel.org/?p=utils%2Fdash%2Fdash.git;a=commitdiff_plain;h=0d7d66039b614b642c775432fd64aa8c11f9a64d
[EXPAND] Fix quoted pattern patch breakage
The change
[EXPAND] Do not quote back slashes in parameter expansions outside quotes
broke quote removal after parameter expansion. This is because
its effecte extended beyond that of quoted patterns.
This patch fixes this by limiting the change to just quoted
patterns.
Signed-off-by: Herbert Xu <herbert@gondor.apana.org.au>
---
diff --git a/src/expand.c b/src/expand.c
index e4c4c8b..7995d40 100644
--- a/src/expand.c
+++ b/src/expand.c
@@ -869,7 +869,9 @@ memtodest(const char *p, size_t len, const char *syntax, int quotes) {
int c = (signed char)*p++;
if (c) {
if ((quotes & QUOTES_ESC) &&
- (syntax[c] == CCTL || syntax[c] == CDBACK))
+ ((syntax[c] == CCTL) ||
+ (((quotes & EXP_FULL) || syntax != BASESYNTAX) &&
+ syntax[c] == CBACK)))
USTPUTC(CTLESC, q);
} else if (!(quotes & QUOTES_KEEPNUL))
continue;
diff --git a/src/mksyntax.c b/src/mksyntax.c
index 9ecbb45..7a8a9ae 100644
--- a/src/mksyntax.c
+++ b/src/mksyntax.c
@@ -53,7 +53,6 @@ struct synclass synclass[] = {
{ "CWORD", "character is nothing special" },
{ "CNL", "newline character" },
{ "CBACK", "a backslash character" },
- { "CDBACK", "a backslash character in double quotes" },
{ "CSQUOTE", "single quote" },
{ "CDQUOTE", "double quote" },
{ "CENDQUOTE", "a terminating quote" },
@@ -176,7 +175,7 @@ main(int argc, char **argv)
init();
fputs("\n/* syntax table used when in double quotes */\n", cfile);
add("\n", "CNL");
- add("\\", "CDBACK");
+ add("\\", "CBACK");
add("\"", "CENDQUOTE");
add("`", "CBQUOTE");
add("$", "CVAR");
@@ -194,7 +193,7 @@ main(int argc, char **argv)
init();
fputs("\n/* syntax table used when in arithmetic */\n", cfile);
add("\n", "CNL");
- add("\\", "CDBACK");
+ add("\\", "CBACK");
add("`", "CBQUOTE");
add("$", "CVAR");
add("}", "CENDVAR");
diff --git a/src/parser.c b/src/parser.c
index dad1037..28a46c0 100644
--- a/src/parser.c
+++ b/src/parser.c
@@ -901,7 +901,6 @@ readtoken1(int firstc, char const *syntax, char *eofmark, int striptabs)
break;
/* backslash */
case CBACK:
- case CDBACK:
c = pgetc2();
if (c == PEOF) {
USTPUTC(CTLESC, out);

3
dash-0.5.5.1.tar.gz Normal file
View File

@ -0,0 +1,3 @@
version https://git-lfs.github.com/spec/v1
oid sha256:1c6717a1014c73aa16bc78a4767f1e00b40ff2a01a6c2cf2cce9a5335c24493f
size 208094

10
dash.changes Normal file
View File

@ -0,0 +1,10 @@
-------------------------------------------------------------------
Sat Feb 13 12:00:22 UTC 2010 - guido+opensuse.org@berhoerster.name
- do not provide ash
-------------------------------------------------------------------
Sat Feb 13 11:06:54 UTC 2010 - guido+opensuse.org@berhoerster.name
- initial packaging of dash

75
dash.spec Normal file
View File

@ -0,0 +1,75 @@
#
# spec file for package dash (Version 0.5.5.1)
#
# Copyright (c) 2010 SUSE LINUX Products GmbH, Nuernberg, Germany.
#
# All modifications and additions to the file contributed by third parties
# remain the property of their copyright owners, unless otherwise agreed
# upon. The license for this file, and modifications and additions to the
# file, is the same license as for the pristine package itself (unless the
# license for the pristine package is not an Open Source License, in which
# case the license is the MIT License). An "Open Source License" is a
# license that conforms to the Open Source Definition (Version 1.9)
# published by the Open Source Initiative.
# Please submit bugfixes or comments via http://bugs.opensuse.org/
#
Name: dash
Summary: POSIX-compliant Implementation of /bin/sh
Version: 0.5.5.1
Release: 1
License: BSD3c
Group: System/Shells
AutoReqProv: on
Source: http://gondor.apana.org.au/~herbert/dash/files/dash-%{version}.tar.gz
Patch0: %{name}-0.5.5.1-do-not-close-stderr-when-dev-tty-fails-to-open.patch
Patch1: %{name}-0.5.5.1-correct-manpage-description-and-history.patch
Patch2: %{name}-0.5.5.1-fix-incorrect-savefd-conversion.patch
Patch3: %{name}-0.5.5.1-fix-parameter-expansion.patch
Url: http://gondor.apana.org.au/~herbert/dash/
BuildRoot: %{_tmppath}/%{name}-%{version}-build
%description
DASH is a POSIX-compliant implementation of /bin/sh that aims to be as small as
possible without sacrificing speed where possible.
Authors:
--------
The Regents of the University of California
Christos Zoulas
Herbert Xu <herbert@gondor.apana.org.au>
%prep
%setup -q
%patch0 -p1
%patch1 -p1
%patch2 -p1
%patch3 -p1
%build
%configure --prefix=%{_prefix} --mandir=%{_mandir}
make
%install
make DESTDIR=$RPM_BUILD_ROOT install
# move to /bin and symlink to /usr/bin
%__mkdir_p $RPM_BUILD_ROOT/bin
%__mv $RPM_BUILD_ROOT/usr/bin/dash $RPM_BUILD_ROOT/bin
%__ln_s ../../bin/dash $RPM_BUILD_ROOT/usr/bin/dash
%clean
rm -rf $RPM_BUILD_ROOT
%files
%defattr(-,root,root,-)
%doc ChangeLog
%doc %{_mandir}/man1/dash.1*
/usr/bin/dash
/bin/dash
%changelog

0
ready Normal file
View File