summaryrefslogtreecommitdiff
path: root/ext/standard/string.c
diff options
context:
space:
mode:
Diffstat (limited to 'ext/standard/string.c')
-rw-r--r--ext/standard/string.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/ext/standard/string.c b/ext/standard/string.c
index 713e521b94..2cdfd018c9 100644
--- a/ext/standard/string.c
+++ b/ext/standard/string.c
@@ -1175,6 +1175,22 @@ PHPAPI size_t php_dirname(char *path, size_t len)
return len;
}
}
+#elif defined(NETWARE)
+ /*
+ * Find the first occurence of : from the left
+ * move the path pointer to the position just after :
+ * increment the len_adjust to the length of path till colon character(inclusive)
+ * If there is no character beyond : simple return len
+ */
+ char *colonpos = NULL;
+ colonpos = strchr(path, ':');
+ if(colonpos != NULL) {
+ len_adjust = ((colonpos - path) + 1);
+ path += len_adjust;
+ if(len_adjust == len) {
+ return len;
+ }
+ }
#endif
if (len == 0) {
@@ -1199,9 +1215,21 @@ PHPAPI size_t php_dirname(char *path, size_t len)
}
if (end < path) {
/* No slash found, therefore return '.' */
+#ifdef NETWARE
+ if(len_adjust == 0) {
+ path[0] = '.';
+ path[1] = '\0';
+ return 1; //only one character
+ }
+ else {
+ path[0] = '\0';
+ return len_adjust;
+ }
+#else
path[0] = '.';
path[1] = '\0';
return 1 + len_adjust;
+#endif
}
/* Strip slashes which came before the file name */