aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2013-12-03 22:13:49 +0200
committerArnold D. Robbins <arnold@skeeve.com>2013-12-03 22:13:49 +0200
commit7bc4e38b948e20f3d72e06662691a527a50eecbf (patch)
tree0b3b35312a402168eb00958b841dceb65740d3ed
parent8067e43cf0c77c53e1a8eb5e2014f26ff5e68c59 (diff)
downloadegawk-7bc4e38b948e20f3d72e06662691a527a50eecbf.tar.gz
egawk-7bc4e38b948e20f3d72e06662691a527a50eecbf.tar.bz2
egawk-7bc4e38b948e20f3d72e06662691a527a50eecbf.zip
VMS fixes in io.c.
-rw-r--r--ChangeLog5
-rw-r--r--io.c10
2 files changed, 13 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 57d0a0e7..0eb55523 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,8 @@
+2013-12-03 John E. Malmberg <wb8tyw@qsl.net>
+
+ * io.c (redirect): Add additional VMS error code to check.
+ (do_find_source): Append "/" if not a VMS filename.
+
2013-12-01 Andrew J. Schorr <aschorr@telemetry-investments.com>
* main.c (optab): Sort by long option name.
diff --git a/io.c b/io.c
index 3daadb32..ce63ec7a 100644
--- a/io.c
+++ b/io.c
@@ -947,7 +947,10 @@ redirect(NODE *redir_exp, int redirtype, int *errflg)
/* Alpha/VMS V7.1's C RTL is returning this instead
of EMFILE (haven't tried other post-V6.2 systems) */
#define SS$_EXQUOTA 0x001C
- else if (errno == EIO && vaxc$errno == SS$_EXQUOTA)
+#define SS$_EXBYTLM 0x2a14 /* VMS 8.4 seen */
+ else if (errno == EIO &&
+ (vaxc$errno == SS$_EXQUOTA ||
+ vaxc$errno == SS$_EXBYTLM))
close_one();
#endif
else {
@@ -2632,7 +2635,10 @@ do_find_source(const char *src, struct stat *stb, int *errcode, path_info *pi)
return NULL;
}
erealloc(path, char *, strlen(path) + strlen(src) + 2, "do_find_source");
-#ifndef VMS
+#ifdef VMS
+ if (strcspn(path,">]:") == strlen(path))
+ strcat(path, "/");
+#else
strcat(path, "/");
#endif
strcat(path, src);