OpenPKG CVS Repository
http://cvs.openpkg.org/
____________________________________________________________________________
Server: cvs.openpkg.org Name: Ralf S. Engelschall
Root: /e/openpkg/cvs Email: [EMAIL PROTECTED]
Module: openpkg-src openpkg-web Date: 24-Jul-2003 10:32:11
Branch: HEAD Handle: 2003072409321001
Added files:
openpkg-src/flex flex.patch
Modified files:
openpkg-src/flex flex.spec
openpkg-web news.txt
Log:
apply patch to get Flex beta version building on Solaris and similar
platforms where std{in,out} cannot be used as an lvalue
Summary:
Revision Changes Path
1.5 +39 -0 openpkg-src/flex/flex.patch
1.58 +5 -1 openpkg-src/flex/flex.spec
1.5781 +1 -0 openpkg-web/news.txt
____________________________________________________________________________
patch -p0 <<'@@ .'
Index: openpkg-src/flex/flex.patch
============================================================================
$ cvs diff -u -r0 -r1.5 flex.patch
--- /dev/null 2003-07-24 10:32:11.000000000 +0200
+++ flex.patch 2003-07-24 10:32:11.000000000 +0200
@@ -0,0 +1,39 @@
+It is not portable to use "std{in,out}" as "lvalues" (for instance,
+building under Sun Solaris breaks here). The portable solution is to use
+freopen(3). Unfortunately, to achieve the same effect than fdopen(3) on
+"std{in,out}", one has to use "/dev/std{in,out}" (which in turn is not
+really portable, but at least more portable than using "std{in,out}"
+as "lvalues"). The only "we know it better" alternative would be to
+just replace the code with a fflush(3) on the streams and know that the
+stream has not recognized the changed underlying filedescriptor. But
+this again is not really portable, although also working for mostly all
+Unix platforms.
+
+--- filter.c.orig 2003-03-25 17:39:08.000000000 +0100
++++ filter.c 2003-07-24 10:05:02.000000000 +0200
+@@ -158,10 +158,10 @@
+ int r;
+
+ /* setup streams again */
+- if ((stdin = fdopen (0, "r")) == NULL)
+- flexfatal (_("fdopen(0) failed"));
+- if ((stdout = fdopen (1, "w")) == NULL)
+- flexfatal (_("fdopen(1) failed"));
++ if ((freopen ("/dev/stdin", "r", stdin)) == NULL)
++ flexfatal (_("freopen(stdin) failed"));
++ if ((freopen ("/dev/stdout", "w", stdout)) == NULL)
++ flexfatal (_("freopen(stdout) failed"));
+
+ if ((r = chain->filter_func (chain)) == -1)
+ flexfatal (_("filter_func failed"));
+@@ -181,8 +181,8 @@
+ if (dup2 (pipes[1], 1) == -1)
+ flexfatal (_("dup2(pipes[1],1)"));
+ close (pipes[1]);
+- if ((stdout = fdopen (1, "w")) == NULL)
+- flexfatal (_("fdopen(1) failed"));
++ if ((freopen ("/dev/stdout", "w", stdout)) == NULL)
++ flexfatal (_("freopen(stdout) failed"));
+
+ return true;
+ }
@@ .
patch -p0 <<'@@ .'
Index: openpkg-src/flex/flex.spec
============================================================================
$ cvs diff -u -r1.57 -r1.58 flex.spec
--- openpkg-src/flex/flex.spec 23 Jul 2003 19:09:37 -0000 1.57
+++ openpkg-src/flex/flex.spec 24 Jul 2003 08:32:11 -0000 1.58
@@ -38,7 +38,7 @@
Group: Language
License: BSD
Version: %{V_release}
-Release: 20030723
+Release: 20030724
# package options
%option with_beta yes
@@ -46,6 +46,7 @@
# list of sources
Source0: ftp://ftp.gnu.org/non-gnu/flex/flex-%{V_release}.tar.gz
Source1: http://osdn.dl.sourceforge.net/sourceforge/lex/flex-%{V_beta}.tar.gz
+Patch0: flex.patch
# build information
Prefix: %{l_prefix}
@@ -69,6 +70,9 @@
%setup0 -q -c -n flex-%{version}
%if "%{with_beta}" == "yes"
%setup1 -q -T -D -a 1
+ ( cd flex-%{V_beta}
+ %patch0 -p0
+ ) || exit $?
%endif
%build
@@ .
patch -p0 <<'@@ .'
Index: openpkg-web/news.txt
============================================================================
$ cvs diff -u -r1.5780 -r1.5781 news.txt
--- openpkg-web/news.txt 24 Jul 2003 08:27:45 -0000 1.5780
+++ openpkg-web/news.txt 24 Jul 2003 08:32:10 -0000 1.5781
@@ -1,3 +1,4 @@
+24-Jul-2003: Upgraded package: P<flex-2.5.4a-20030724>
24-Jul-2003: Upgraded package: P<delegate-8.5.7-20030724>
24-Jul-2003: Upgraded package: P<ethereal-0.9.14-20030724>
24-Jul-2003: Upgraded package: P<uvscan-4.1.6.4279-20030724>
@@ .
______________________________________________________________________
The OpenPKG Project www.openpkg.org
CVS Repository Commit List [EMAIL PROTECTED]