summaryrefslogtreecommitdiff
path: root/src/kmk/kmkbuiltin/mscfakes.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/kmk/kmkbuiltin/mscfakes.c')
-rw-r--r--src/kmk/kmkbuiltin/mscfakes.c20
1 files changed, 14 insertions, 6 deletions
diff --git a/src/kmk/kmkbuiltin/mscfakes.c b/src/kmk/kmkbuiltin/mscfakes.c
index 7d040ff..3f472c9 100644
--- a/src/kmk/kmkbuiltin/mscfakes.c
+++ b/src/kmk/kmkbuiltin/mscfakes.c
@@ -1,4 +1,4 @@
-/* $Id: mscfakes.c 2484 2011-07-21 19:01:08Z bird $ */
+/* $Id: mscfakes.c 2645 2012-09-09 02:29:23Z bird $ */
/** @file
* Fake Unix stuff for MSC.
*/
@@ -477,13 +477,15 @@ int writev(int fd, const struct iovec *vector, int count)
intmax_t strtoimax(const char *nptr, char **endptr, int base)
{
- return strtol(nptr, endptr, base); /** @todo fix this. */
+ if (*nptr != '-')
+ return _strtoui64(nptr, endptr, base);
+ return -(intmax_t)_strtoui64(nptr + 1, endptr, base);
}
uintmax_t strtoumax(const char *nptr, char **endptr, int base)
{
- return strtoul(nptr, endptr, base); /** @todo fix this. */
+ return _strtoui64(nptr, endptr, base);
}
@@ -532,13 +534,12 @@ int vasprintf(char **strp, const char *fmt, va_list va)
}
-#undef stat
/*
* Workaround for directory names with trailing slashes.
- * Added by bird reasons stated.
*/
+#undef stat
int
-my_other_stat(const char *path, struct stat *st)
+bird_w32_stat(const char *path, struct stat *st)
{
int rc = stat(path, st);
if ( rc != 0
@@ -563,6 +564,13 @@ my_other_stat(const char *path, struct stat *st)
}
}
}
+#ifdef KMK_PRF
+ {
+ int err = errno;
+ fprintf(stderr, "stat(%s,) -> %d/%d\n", path, rc, errno);
+ errno = err;
+ }
+#endif
return rc;
}