summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/nsgenbind-ast.c22
-rw-r--r--src/nsgenbind-ast.h5
2 files changed, 27 insertions, 0 deletions
diff --git a/src/nsgenbind-ast.c b/src/nsgenbind-ast.c
index 6b7bf5d..851cbeb 100644
--- a/src/nsgenbind-ast.c
+++ b/src/nsgenbind-ast.c
@@ -445,3 +445,25 @@ int genbind_parsefile(char *infilename, struct genbind_node **ast)
return nsgenbind_parse(ast);
}
+
+#ifdef NEED_STRNDUP
+
+char *strndup(const char *s, size_t n)
+{
+ size_t len;
+ char *s2;
+
+ for (len = 0; len != n && s[len]; len++)
+ continue;
+
+ s2 = malloc(len + 1);
+ if (!s2)
+ return 0;
+
+ memcpy(s2, s, len);
+ s2[len] = 0;
+ return s2;
+}
+
+#endif
+
diff --git a/src/nsgenbind-ast.h b/src/nsgenbind-ast.h
index 4e2ffee..6513f7f 100644
--- a/src/nsgenbind-ast.h
+++ b/src/nsgenbind-ast.h
@@ -126,4 +126,9 @@ char *genbind_node_gettext(struct genbind_node *node);
struct genbind_node *genbind_node_getnode(struct genbind_node *node);
int genbind_node_getint(struct genbind_node *node);
+#ifdef _WIN32
+#define NEED_STRNDUP 1
+char *strndup(const char *s, size_t n);
+#endif
+
#endif