summaryrefslogtreecommitdiff
path: root/cygwin/cygwin.c
diff options
context:
space:
mode:
Diffstat (limited to 'cygwin/cygwin.c')
-rw-r--r--cygwin/cygwin.c37
1 files changed, 37 insertions, 0 deletions
diff --git a/cygwin/cygwin.c b/cygwin/cygwin.c
new file mode 100644
index 0000000000..fc7767ffdc
--- /dev/null
+++ b/cygwin/cygwin.c
@@ -0,0 +1,37 @@
+/*
+ * Cygwin extras
+ */
+
+#include "EXTERN.h"
+#include "perl.h"
+#undef USE_DYNAMIC_LOADING
+#include "XSUB.h"
+
+#include <sys/unistd.h>
+
+
+/* see also Cwd.pm */
+static
+XS(Cygwin_cwd)
+{
+ dXSARGS;
+ char *cwd;
+
+ if(items != 0)
+ Perl_croak(aTHX_ "Usage: Cwd::cwd()");
+ if(cwd = getcwd(NULL, 0)) {
+ ST(0) = sv_2mortal(newSVpv(cwd, 0));
+ safesysfree(cwd);
+ XSRETURN(1);
+ }
+ XSRETURN_UNDEF;
+}
+
+void
+init_os_extras(void)
+{
+ char *file = __FILE__;
+ dTHX;
+
+ newXS("Cwd::cwd", Cygwin_cwd, file);
+}