make_directory used mode as if it were an signed entity, but in fact
it was a mode_t which is unsigned.  Fix it to be signed...
 -Erik
diff --git a/include/libbb.h b/include/libbb.h
index df52027..70ac36a 100644
--- a/include/libbb.h
+++ b/include/libbb.h
@@ -259,7 +259,7 @@
 
 char *dirname (const char *path);
 
-int make_directory (char *path, mode_t mode, int flags);
+int make_directory (char *path, long mode, int flags);
 
 const char *u_signal_names(const char *str_sig, int *signo, int startnum);
 
diff --git a/libbb/libbb.h b/libbb/libbb.h
index df52027..70ac36a 100644
--- a/libbb/libbb.h
+++ b/libbb/libbb.h
@@ -259,7 +259,7 @@
 
 char *dirname (const char *path);
 
-int make_directory (char *path, mode_t mode, int flags);
+int make_directory (char *path, long mode, int flags);
 
 const char *u_signal_names(const char *str_sig, int *signo, int startnum);
 
diff --git a/libbb/make_directory.c b/libbb/make_directory.c
index 54d9b4c..0a9d7b1 100644
--- a/libbb/make_directory.c
+++ b/libbb/make_directory.c
@@ -33,7 +33,7 @@
  * Also create parent directories as necessary if flags contains
  * FILEUTILS_RECUR.  */
 
-int make_directory (char *path, mode_t mode, int flags)
+int make_directory (char *path, long mode, int flags)
 {
 	if (!(flags & FILEUTILS_RECUR)) {
 		if (mkdir (path, 0777) < 0) {