]> err.no Git - sope/commitdiff
added a new mkdirs like method to NSFileManager
authorhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Mon, 6 Sep 2004 16:13:33 +0000 (16:13 +0000)
committerhelge <helge@e4a50df8-12e2-0310-a44c-efbce7f8a7e3>
Mon, 6 Sep 2004 16:13:33 +0000 (16:13 +0000)
git-svn-id: http://svn.opengroupware.org/SOPE/trunk@112 e4a50df8-12e2-0310-a44c-efbce7f8a7e3

sope-core/NGExtensions/ChangeLog
sope-core/NGExtensions/FdExt.subproj/NSFileManager+Extensions.m
sope-core/NGExtensions/NGExtensions/NSFileManager+Extensions.h
sope-core/NGExtensions/Version

index da7dd14bf676e475d3f612cc11dcd739497a64ab..78c06dd10e4d2920a9738648b09f0803fd029496 100644 (file)
@@ -1,10 +1,14 @@
 2004-09-06  Helge Hess  <helge.hess@skyrix.com>
-
+       
+       * FdExt.subproj/NSFileManager+Extensions.m: added new method:
+         -createDirectoriesAtPath:attributes: (comparable to mkdirs)
+         (v4.3.114)
+       
        * NGBundleManager.m: changed bundle resource lookup to check loaded
          bundles before scanning the NGBundlePath resources (is faster and
          fixes an issue with a bundle loaded but not in the search path)
          (v4.3.113)
-
+       
 2004-09-05  Helge Hess  <helge.hess@opengroupware.org>
 
        * v4.3.112
index 0e1e5e7f3a1b6a05db075792f47078a80bc81a46..5815f05386cbe8228d7fd85db7a8046d67d13d38 100644 (file)
@@ -1,7 +1,7 @@
 /*
-  Copyright (C) 2000-2003 SKYRIX Software AG
+  Copyright (C) 2000-2004 SKYRIX Software AG
 
-  This file is part of OGo
+  This file is part of OpenGroupware.org.
 
   OGo is free software; you can redistribute it and/or modify it under
   the terms of the GNU Lesser General Public License as published by the
@@ -18,7 +18,6 @@
   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
   02111-1307, USA.
 */
-// $Id$
 
 #include "NSFileManager+Extensions.h"
 #include "NGFileFolderInfoDataSource.h"
 
 @implementation NSFileManager(ExtendedFileManagerImp)
 
+/* directories */
+
+- (BOOL)createDirectoriesAtPath:(NSString *)_p attributes:(NSDictionary *)_a {
+  unsigned i, count;
+  NSArray *pc;
+  BOOL    isDir;
+  
+  if ([_p length] == 0)
+    return NO;
+  if ([self fileExistsAtPath:_p isDirectory:&isDir])
+    return isDir;
+  
+  pc = [_p pathComponents];
+  if ((count = [pc count]) == 0)
+    return YES;
+  
+  for (i = 0; i < count; i++) {
+    NSString *fp;
+    NSRange  r;
+    
+    r.location = 0;
+    r.length   = i + 1;
+    
+    fp = [NSString pathWithComponents:[pc subarrayWithRange:r]];
+    if ([self fileExistsAtPath:fp isDirectory:&isDir]) {
+      if (!isDir) /* exists, but is a file */
+        return NO;
+      continue;
+    }
+    
+    if (![self createDirectoryAtPath:fp attributes:_a])
+      /* failed to create */
+      return NO;
+  }
+  return YES;
+}
+
 /* path modifications */
 
 - (NSString *)standardizePath:(NSString *)_path {
 /* datasources (work on folders) */
 
 - (EODataSource *)dataSourceAtPath:(NSString *)_path {
-  return
-    [[[NGFileFolderInfoDataSource alloc] initWithFolderPath:_path] autorelease];
+  return [[[NGFileFolderInfoDataSource alloc] initWithFolderPath:_path] 
+           autorelease];
 }
 
 - (EODataSource *)dataSource {
index 6743cb602edd6a9c7b64d0aae2c7341a3c641194..af4e48d8b395e91206aefb422fb867df85e09a11 100644 (file)
@@ -1,7 +1,7 @@
 /*
-  Copyright (C) 2000-2003 SKYRIX Software AG
+  Copyright (C) 2000-2004 SKYRIX Software AG
 
-  This file is part of OGo
+  This file is part of OpenGroupware.org.
 
   OGo is free software; you can redistribute it and/or modify it under
   the terms of the GNU Lesser General Public License as published by the
@@ -18,7 +18,6 @@
   Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA
   02111-1307, USA.
 */
-// $Id$
 
 #ifndef __NSFileManager_Extensions_H__
 #define __NSFileManager_Extensions_H__
@@ -27,6 +26,9 @@
 #include <NGExtensions/NGFileManager.h>
 
 @interface NSFileManager(ExtendedFileManager) < NGFileManagerDataSources >
+
+- (BOOL)createDirectoriesAtPath:(NSString *)_p attributes:(NSDictionary *)_a;
+
 @end
 
 #endif /* __NSFileManager_Extensions_H__ */
index c2c9a8e5543a7af32132870641769fefbe2daf16..596f871cff79cce0f7f59a813d2306c41f3c9f65 100644 (file)
@@ -1,5 +1,5 @@
 # version
 
-SUBMINOR_VERSION:=113
+SUBMINOR_VERSION:=114
 
 # v4.2.72 requires libEOControl v4.2.39