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:
commit
14e7d1b39e
23
.gitattributes
vendored
Normal file
23
.gitattributes
vendored
Normal 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
1
.gitignore
vendored
Normal file
@ -0,0 +1 @@
|
|||||||
|
.osc
|
64
dash-0.5.5.1-correct-manpage-description-and-history.patch
Normal file
64
dash-0.5.5.1-correct-manpage-description-and-history.patch
Normal 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.
|
@ -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 */
|
96
dash-0.5.5.1-fix-incorrect-savefd-conversion.patch
Normal file
96
dash-0.5.5.1-fix-incorrect-savefd-conversion.patch
Normal 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);
|
||||||
|
|
77
dash-0.5.5.1-fix-parameter-expansion.patch
Normal file
77
dash-0.5.5.1-fix-parameter-expansion.patch
Normal 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
3
dash-0.5.5.1.tar.gz
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
version https://git-lfs.github.com/spec/v1
|
||||||
|
oid sha256:1c6717a1014c73aa16bc78a4767f1e00b40ff2a01a6c2cf2cce9a5335c24493f
|
||||||
|
size 208094
|
10
dash.changes
Normal file
10
dash.changes
Normal 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
75
dash.spec
Normal 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
|
Loading…
Reference in New Issue
Block a user