aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2011-01-10 21:45:58 +0200
committerArnold D. Robbins <arnold@skeeve.com>2011-01-10 21:45:58 +0200
commit3e47f16c969b845e323f38f421a6b1da8c20c3a5 (patch)
tree3a2fc4ca6d389ec5b44d319024daa192bd3c71ab
parent163f4f479b50edfc153e9f2e77bdd9cd070e37ff (diff)
downloadegawk-3e47f16c969b845e323f38f421a6b1da8c20c3a5.tar.gz
egawk-3e47f16c969b845e323f38f421a6b1da8c20c3a5.tar.bz2
egawk-3e47f16c969b845e323f38f421a6b1da8c20c3a5.zip
Fixes for OS/2.
-rw-r--r--ChangeLog4
-rw-r--r--awklib/ChangeLog4
-rw-r--r--awklib/Makefile.am2
-rw-r--r--awklib/Makefile.in2
-rw-r--r--doc/gawk.info117
-rw-r--r--doc/gawk.texi18
-rw-r--r--io.c9
7 files changed, 90 insertions, 66 deletions
diff --git a/ChangeLog b/ChangeLog
index 97f03e4a..910c8a96 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,7 @@
+Mon Jan 10 21:40:05 2011 Andreas Buening <andreas.buening@nexgo.de>
+
+ * io.c (devopen): Handle opening of directories for OS/2.
+
Mon Jan 10 21:37:49 2011 Arnold D. Robbins <arnold@skeeve.com>
* awk.h: Rearrange includes of <fcntl.h> so it won't be
diff --git a/awklib/ChangeLog b/awklib/ChangeLog
index 92d24d8b..e3f24da4 100644
--- a/awklib/ChangeLog
+++ b/awklib/ChangeLog
@@ -1,3 +1,7 @@
+Mon Jan 10 21:40:05 2011 Andreas Buening <andreas.buening@nexgo.de>
+
+ * Makefile.am (AWKPROG): Get correct path to gawk executable.
+
Fri Nov 19 11:53:16 2010 Arnold D. Robbins <arnold@skeeve.com>
* Makefile.am: Remove special handling of CVS directories.
diff --git a/awklib/Makefile.am b/awklib/Makefile.am
index e2c98dff..6801af28 100644
--- a/awklib/Makefile.am
+++ b/awklib/Makefile.am
@@ -26,7 +26,7 @@
EXTRA_DIST = ChangeLog extract.awk eg $(srcdir)/stamp-eg
# With some locales, the script extract.awk fails.
# So we fix the locale to some sensible value.
-AWKPROG = LC_ALL=C LANG=C ../gawk$(EXEEXT)
+AWKPROG = LC_ALL=C LANG=C $(abs_top_builddir)/gawk$(EXEEXT)
# Get config.h from the build directory and custom.h from the source directory.
AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir)
diff --git a/awklib/Makefile.in b/awklib/Makefile.in
index cd721f59..f853f0ce 100644
--- a/awklib/Makefile.in
+++ b/awklib/Makefile.in
@@ -247,7 +247,7 @@ top_srcdir = @top_srcdir@
EXTRA_DIST = ChangeLog extract.awk eg $(srcdir)/stamp-eg
# With some locales, the script extract.awk fails.
# So we fix the locale to some sensible value.
-AWKPROG = LC_ALL=C LANG=C ../gawk$(EXEEXT)
+AWKPROG = LC_ALL=C LANG=C $(abs_top_builddir)/gawk$(EXEEXT)
# Get config.h from the build directory and custom.h from the source directory.
AM_CPPFLAGS = -I$(top_builddir) -I$(top_srcdir)
diff --git a/doc/gawk.info b/doc/gawk.info
index 50f54f64..066cd3d0 100644
--- a/doc/gawk.info
+++ b/doc/gawk.info
@@ -20149,11 +20149,6 @@ additional `configure' options `--infodir=c:/usr/share/info',
NOTE: Versions later than GCC 2.95, i.e., GCC 3.x using the
Innotek libc were not tested.
- After compilation the internal tests can be performed. Enter `make
-check CMP="diff -a"' at your command prompt. All tests except for the
-`pid' test are expected to work properly. The `pid' test fails because
-child processes are not started by `fork()'.
-
`make install' works as expected with the EMX build.
NOTE: Most OS/2 ports of GNU `make' are not able to handle the
@@ -20170,13 +20165,21 @@ B.3.1.3 Testing `gawk' on PC Operating Systems
Using `make' to run the standard tests and to install `gawk' requires
additional Unix-like tools, including `sh', `sed', and `cp'. In order
to run the tests, the `test/*.ok' files may need to be converted so
-that they have the usual MS-DOS-style end-of-line markers. Most of the
-tests work properly with Stewartson's shell along with the companion
-utilities or appropriate GNU utilities. However, some editing of
-`test/Makefile' is required. It is recommended that you copy the file
-`pc/Makefile.tst' over the file `test/Makefile' as a replacement.
-Details can be found in `README_d/README.pc' and in the file
-`pc/Makefile.tst'.
+that they have the usual MS-DOS-style end-of-line markers.
+Alternatively, run `make check CMP="diff -a"' to use GNU `diff' in text
+mode instead of `cmp' to compare the resulting files.
+
+ Most of the tests work properly with Stewartson's shell along with
+the companion utilities or appropriate GNU utilities. However, some
+editing of `test/Makefile' is required. It is recommended that you copy
+the file `pc/Makefile.tst' over the file `test/Makefile' as a
+replacement. Details can be found in `README_d/README.pc' and in the
+file `pc/Makefile.tst'.
+
+ On OS/2 the `pid' test fails because `spawnl()' is used instead of
+`fork()'/`execl()' to start child processes. Also the `mbfw1' and
+`mbprintf1' tests fail because the needed multibyte functionality is
+not available.

File: gawk.info, Node: PC Using, Next: Cygwin, Prev: PC Testing, Up: PC Installation
@@ -27108,50 +27111,50 @@ Node: Non-Unix Installation800385
Node: PC Installation800843
Node: PC Binary Installation802142
Node: PC Compiling803990
-Node: PC Testing807396
-Node: PC Using808220
-Node: Cygwin812405
-Node: MSYS813402
-Node: VMS Installation813916
-Node: VMS Compilation814520
-Node: VMS Installation Details816097
-Node: VMS Running817727
-Node: VMS POSIX819324
-Node: VMS Old Gawk820622
-Node: Bugs821094
-Node: Other Versions824959
-Node: Notes829484
-Node: Compatibility Mode830176
-Node: Additions830959
-Node: Accessing The Source831771
-Node: Adding Code833194
-Node: New Ports838742
-Node: Dynamic Extensions842855
-Node: Internals844231
-Node: Plugin License853350
-Node: Sample Library853984
-Node: Internal File Description854670
-Node: Internal File Ops858377
-Ref: Internal File Ops-Footnote-1863145
-Node: Using Internal File Ops863293
-Node: Future Extensions865670
-Node: Basic Concepts868174
-Node: Basic High Level868931
-Ref: Basic High Level-Footnote-1872966
-Node: Basic Data Typing873151
-Node: Floating Point Issues877676
-Node: String Conversion Precision878759
-Ref: String Conversion Precision-Footnote-1880453
-Node: Unexpected Results880562
-Node: POSIX Floating Point Problems882388
-Ref: POSIX Floating Point Problems-Footnote-1886084
-Node: Glossary886122
-Node: Copying910221
-Node: GNU Free Documentation License947778
-Node: next-edition972922
-Node: unresolved973274
-Node: revision973774
-Node: consistency974197
-Node: Index977696
+Node: PC Testing807136
+Node: PC Using808312
+Node: Cygwin812497
+Node: MSYS813494
+Node: VMS Installation814008
+Node: VMS Compilation814612
+Node: VMS Installation Details816189
+Node: VMS Running817819
+Node: VMS POSIX819416
+Node: VMS Old Gawk820714
+Node: Bugs821186
+Node: Other Versions825051
+Node: Notes829576
+Node: Compatibility Mode830268
+Node: Additions831051
+Node: Accessing The Source831863
+Node: Adding Code833286
+Node: New Ports838834
+Node: Dynamic Extensions842947
+Node: Internals844323
+Node: Plugin License853442
+Node: Sample Library854076
+Node: Internal File Description854762
+Node: Internal File Ops858469
+Ref: Internal File Ops-Footnote-1863237
+Node: Using Internal File Ops863385
+Node: Future Extensions865762
+Node: Basic Concepts868266
+Node: Basic High Level869023
+Ref: Basic High Level-Footnote-1873058
+Node: Basic Data Typing873243
+Node: Floating Point Issues877768
+Node: String Conversion Precision878851
+Ref: String Conversion Precision-Footnote-1880545
+Node: Unexpected Results880654
+Node: POSIX Floating Point Problems882480
+Ref: POSIX Floating Point Problems-Footnote-1886176
+Node: Glossary886214
+Node: Copying910313
+Node: GNU Free Documentation License947870
+Node: next-edition973014
+Node: unresolved973366
+Node: revision973866
+Node: consistency974289
+Node: Index977788

End Tag Table
diff --git a/doc/gawk.texi b/doc/gawk.texi
index a81b14d3..3c045bbd 100644
--- a/doc/gawk.texi
+++ b/doc/gawk.texi
@@ -27066,12 +27066,6 @@ Versions later than GCC 2.95, i.e., GCC 3.x using the Innotek libc
were not tested.
@end quotation
-After compilation the internal tests can be performed. Enter
-@samp{make check CMP="diff -a"} at your command prompt. All tests
-except for the @code{pid} test are expected to work properly.
-The @code{pid} test fails because child processes are not started by
-@code{fork()}.
-
@samp{make install} works as expected with the EMX build.
@quotation NOTE
@@ -27088,7 +27082,11 @@ find the latest version on
Using @command{make} to run the standard tests and to install @command{gawk}
requires additional Unix-like tools, including @command{sh}, @command{sed}, and
@command{cp}. In order to run the tests, the @file{test/*.ok} files may need to
-be converted so that they have the usual MS-DOS-style end-of-line markers. Most
+be converted so that they have the usual MS-DOS-style end-of-line markers.
+Alternatively, run @command{make check CMP="diff -a"} to use GNU @command{diff}
+in text mode instead of @command{cmp} to compare the resulting files.
+
+Most
of the tests work properly with Stewartson's shell along with the
companion utilities or appropriate GNU utilities. However, some editing of
@file{test/Makefile} is required. It is recommended that you copy the file
@@ -27096,6 +27094,12 @@ companion utilities or appropriate GNU utilities. However, some editing of
replacement. Details can be found in @file{README_d/README.pc}
and in the file @file{pc/Makefile.tst}.
+On OS/2 the @code{pid} test fails because @code{spawnl()} is used instead of
+@code{fork()}/@code{execl()} to start child processes.
+Also the @code{mbfw1} and @code{mbprintf1} tests fail because the needed
+multibyte functionality is not available.
+
+
@node PC Using
@appendixsubsubsec Using @command{gawk} on PC Operating Systems
@c STARTOFRANGE opgawx
diff --git a/io.c b/io.c
index 2063c2a9..af15aa02 100644
--- a/io.c
+++ b/io.c
@@ -1502,6 +1502,15 @@ devopen(const char *name, const char *mode)
strictopen:
if (openfd == INVALID_HANDLE)
openfd = open(name, flag, 0666);
+#ifdef __EMX__
+ if (openfd == INVALID_HANDLE && errno == EACCES) {
+ /* on OS/2 directory access via open() is not permitted */
+ struct stat buf;
+
+ if (stat(name, &buf) == 0 && S_ISDIR(buf.st_mode))
+ errno = EISDIR;
+ }
+#endif
if (openfd != INVALID_HANDLE) {
if (os_isdir(openfd)) {
(void) close(openfd); /* don't leak fds */