diff --git a/src/sbbs3/msdirent.c b/src/sbbs3/msdirent.c
index 5fc7e790015df3b39d0d1550323a16c8f4833319..6da8f6b967c62db9a28c17819c241c5a50f2b61d 100644
--- a/src/sbbs3/msdirent.c
+++ b/src/sbbs3/msdirent.c
@@ -88,15 +88,3 @@ void rewinddir(DIR* dir)
 	dir->end=FALSE;
 	dir->handle=_findfirst(dir->filespec,&dir->finddata);
 }
-int getfattr(char* filename)
-{
-	long handle;
-	struct _finddata_t	finddata;
-
-	if((handle=_findfirst(filename,&finddata))==-1) {
-		errno=ENOENT;
-		return(-1);
-	}
-	_findclose(handle);
-	return(finddata.attrib);
-}
\ No newline at end of file
diff --git a/src/sbbs3/msdirent.h b/src/sbbs3/msdirent.h
index d9e3e18d22e319f29882da7dff1b24203813850d..7ddd46266724178a4d247e1043ed2c72b09f986a 100644
--- a/src/sbbs3/msdirent.h
+++ b/src/sbbs3/msdirent.h
@@ -73,8 +73,6 @@ struct dirent  *	readdir  (DIR *__dir);
 int                 closedir (DIR *__dir);
 void                rewinddir(DIR *__dir);
 
-int					getfattr(char* filename);
-
 #ifdef __cplusplus
 }
 #endif
diff --git a/src/sbbs3/sbbswrap.h b/src/sbbs3/sbbswrap.h
index 420f6dd7ff849499530eeb92f081ecbe53a7d76b..448d06be6ecd827992a0084dadbb422109517c02 100644
--- a/src/sbbs3/sbbswrap.h
+++ b/src/sbbs3/sbbswrap.h
@@ -119,6 +119,7 @@ DLLEXPORT char* ultoa(ulong, char*, int radix);
 DLLEXPORT BOOL		fexist(char *filespec);
 DLLEXPORT long		flength(char *filename);
 DLLEXPORT long		fdate(char *filename);
+DLLEXPORT int		getfattr(char* filename);
 DLLEXPORT ulong		getfreediskspace(char* path);
 
 #ifdef __cplusplus
diff --git a/src/sbbs3/wrappers.c b/src/sbbs3/wrappers.c
index f7c66e35941a96684cd0e81e83c25fc40ffd941e..21de30462fc80dac5a5f78b95dcbfd87cb310743 100644
--- a/src/sbbs3/wrappers.c
+++ b/src/sbbs3/wrappers.c
@@ -55,6 +55,7 @@
 
 #include <stdio.h>		/* sprintf */
 #include <stdlib.h>		/* rand */
+#include <errno.h>		/* ENOENT definitions */
 
 #include "gen_defs.h"	/* BOOL */ 
 #include "sbbswrap.h"	/* verify prototypes */
@@ -131,6 +132,33 @@ long fdate(char *filename)
 	return(st.st_mtime);
 }
 
+/****************************************************************************/
+/* Returns the attributes (mode) for specified 'filename'					*/
+/****************************************************************************/
+int getfattr(char* filename)
+{
+#ifdef _WIN32
+	long handle;
+	struct _finddata_t	finddata;
+
+	if((handle=_findfirst(filename,&finddata))==-1) {
+		errno=ENOENT;
+		return(-1);
+	}
+	_findclose(handle);
+	return(finddata.attrib);
+#else
+	STAT st;
+
+	if(stat(filename, &st)!=0) {
+		errno=ENOENT;
+		return(-1L);
+	}
+
+	return(st.st_mode);
+#endif
+}
+
 /****************************************************************************/
 /* Returns the length of the file in 'fd'									*/
 /****************************************************************************/