summaryrefslogtreecommitdiff
path: root/io.c
diff options
context:
space:
mode:
authorArnold D. Robbins <arnold@skeeve.com>2013-06-11 18:44:10 +0300
committerArnold D. Robbins <arnold@skeeve.com>2013-06-11 18:44:10 +0300
commit612ea8d837f14a15a44c2d4941ff62c0ebf30461 (patch)
tree1770be5b52e131c0b2150c72a1f42c2301d17c51 /io.c
parent21c8b6d547b12942775d675ead2994992285c04c (diff)
downloadgawk-612ea8d837f14a15a44c2d4941ff62c0ebf30461.tar.gz
Improve fix for debugger on Windows.
Diffstat (limited to 'io.c')
-rw-r--r--io.c15
1 files changed, 11 insertions, 4 deletions
diff --git a/io.c b/io.c
index a918c390..44530967 100644
--- a/io.c
+++ b/io.c
@@ -2731,11 +2731,18 @@ find_source(const char *src, struct stat *stb, int *errcode, int is_extlib)
int
srcopen(SRCFILE *s)
{
+ int fd = INVALID_HANDLE;
+
if (s->stype == SRC_STDIN)
- return fileno(stdin);
- if (s->stype == SRC_FILE || s->stype == SRC_INC)
- return devopen(s->fullpath, "r");
- return INVALID_HANDLE;
+ fd = fileno(stdin);
+ else if (s->stype == SRC_FILE || s->stype == SRC_INC)
+ fd = devopen(s->fullpath, "r");
+
+ /* set binary mode so that debugger byte offset calculations will be right */
+ if (fd != INVALID_HANDLE)
+ os_setbinmode(fd, O_BINARY);
+
+ return fd;
}
/* input parsers, mainly for use by extension functions */