summaryrefslogtreecommitdiff
path: root/src/utils
diff options
context:
space:
mode:
authorBernd Wachter <bwachter-tmw@lart.info>2010-02-25 10:21:57 +0100
committerBernd Wachter <bwachter-tmw@lart.info>2010-02-25 21:58:06 +0100
commit4df9004a4f4cfa1f1ec1e9a8ae6540710f32b0e2 (patch)
tree2e16eea50fcffd8da8cbd83a41d42068bc2cd090 /src/utils
parentd4bb7d50f6923fb89dcf050f70d94f69143749c1 (diff)
downloadmana-client-4df9004a4f4cfa1f1ec1e9a8ae6540710f32b0e2.tar.gz
mana-client-4df9004a4f4cfa1f1ec1e9a8ae6540710f32b0e2.tar.bz2
mana-client-4df9004a4f4cfa1f1ec1e9a8ae6540710f32b0e2.tar.xz
mana-client-4df9004a4f4cfa1f1ec1e9a8ae6540710f32b0e2.zip
Don't support backslash as path separator for non-windows platforms
Reviewed-by: Thorbjørn Lindeijer
Diffstat (limited to 'src/utils')
-rw-r--r--src/utils/mkdir.cpp (renamed from src/utils/mkdir.c)20
-rw-r--r--src/utils/mkdir.h2
2 files changed, 15 insertions, 7 deletions
diff --git a/src/utils/mkdir.c b/src/utils/mkdir.cpp
index 930d2158..223abe71 100644
--- a/src/utils/mkdir.c
+++ b/src/utils/mkdir.cpp
@@ -36,22 +36,29 @@
#include "mkdir.h"
-int mkdir_r(char *pathname){
+int mkdir_r(const char *pathname) {
char tmp[PATH_MAX];
char *p;
+
+ if (strlen(pathname) >= PATH_MAX-2)
+ return -1;
+
strncpy(tmp, pathname, sizeof(tmp)-1);
+ tmp[PATH_MAX-1] = '\0';
int len=strlen(tmp);
// terminate the pathname with '/'
- if (tmp[len-1] != '/')
+ if (tmp[len-1] != '/') {
tmp[len] = '/';
+ tmp[len+1] = '\0';
+ }
- for (p=tmp;*p;p++){
+ for (p=tmp; *p; p++) {
#if defined WIN32
if (*p == '/' || *p == '\\')
#else
- if (*p == '/' || *p == '\\')
+ if (*p == '/')
#endif
{
*p = '\0';
@@ -72,7 +79,7 @@ int mkdir_r(char *pathname){
// hack, hack. just assume that x: might be a drive
// letter, and try again
if (!(strlen(tmp) == 2 &&
- !strcmp(tmp+1, ":")))
+ !strcmp(tmp + 1, ":")))
#endif
return -1;
}
@@ -83,10 +90,11 @@ int mkdir_r(char *pathname){
*p = '/';
}
}
+ return 0;
}
#ifdef _MKDIR_TEST_
-int main(int argc, char** argv){
+int main(int argc, char** argv) {
if (argc < 2) exit(1);
mkdir_r(argv[1]);
}
diff --git a/src/utils/mkdir.h b/src/utils/mkdir.h
index 07f3dda4..9369b4e7 100644
--- a/src/utils/mkdir.h
+++ b/src/utils/mkdir.h
@@ -21,6 +21,6 @@
#ifndef _MKDIR_H
#define _MKDIR_H
-int mkdir_r(char *pathname);
+int mkdir_r(const char *pathname);
#endif