From: helge Date: Tue, 29 Jun 2004 16:00:39 +0000 (+0000) Subject: git-svn-id: http://svn.opengroupware.org/SOGo/trunk@77 d1b88da0-ebda-0310-925b-ed51d8... X-Git-Url: https://err.no/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=b23b2275d5f9c7150fb0eceeeffd493721e1b4e6;p=scalable-opengroupware.org git-svn-id: http://svn.opengroupware.org/SOGo/trunk@77 d1b88da0-ebda-0310-925b-ed51d893ca5b --- diff --git a/OGoContentStore/GNUmakefile b/OGoContentStore/GNUmakefile index e79f9b01..dc7ed786 100644 --- a/OGoContentStore/GNUmakefile +++ b/OGoContentStore/GNUmakefile @@ -4,7 +4,7 @@ include $(GNUSTEP_MAKEFILES)/common.make include ./Version LIBRARY_NAME = libOGoContentStore -TOOL_NAME = ocs_ls +TOOL_NAME = ocs_ls ocs_mkdir libOGoContentStore_HEADER_FILES += \ NSURL+OCS.h \ @@ -28,8 +28,8 @@ libOGoContentStore_OBJC_FILES += \ OCSFolderType.m \ OCSChannelManager.m \ -ocs_ls_OBJC_FILES += \ - ocs_ls.m +ocs_ls_OBJC_FILES += ocs_ls.m +ocs_mkdir_OBJC_FILES += ocs_mkdir.m -include GNUmakefile.preamble include $(GNUSTEP_MAKEFILES)/library.make diff --git a/OGoContentStore/GNUmakefile.preamble b/OGoContentStore/GNUmakefile.preamble index d4882dd7..176803b0 100644 --- a/OGoContentStore/GNUmakefile.preamble +++ b/OGoContentStore/GNUmakefile.preamble @@ -4,11 +4,14 @@ libOGoContentStore_LIBRARIES_DEPEND_UPON += \ -lGDLAccess \ -lEOControl -ocs_ls_TOOL_LIBS += \ +OCS_TOOL_LIBS += \ -lOGoContentStore \ -lGDLAccess \ -lNGExtensions -lEOControl +ocs_ls_TOOL_LIBS += $(OCS_TOOL_LIBS) +ocs_mkdir_TOOL_LIBS += $(OCS_TOOL_LIBS) + ADDITIONAL_INCLUDE_DIRS += -I. -I.. ifeq ($(FOUNDATION_LIB),apple) diff --git a/OGoContentStore/OCSFolderManager.h b/OGoContentStore/OCSFolderManager.h index dc2117e3..7fc7339e 100644 --- a/OGoContentStore/OCSFolderManager.h +++ b/OGoContentStore/OCSFolderManager.h @@ -32,7 +32,7 @@ model and manage the tables required for a folder. */ -@class NSString, NSArray, NSURL, NSDictionary; +@class NSString, NSArray, NSURL, NSDictionary, NSException; @class OCSChannelManager, OCSFolder, OCSFolderType; @interface OCSFolderManager : NSObject @@ -67,6 +67,8 @@ - (OCSFolder *)folderAtPath:(NSString *)_path; +- (NSException *)createFolderOfType:(NSString *)_type atPath:(NSString *)_path; + /* folder types */ - (OCSFolderType *)folderTypeWithName:(NSString *)_name; diff --git a/OGoContentStore/OCSFolderManager.m b/OGoContentStore/OCSFolderManager.m index 560544f4..bbdef2a0 100644 --- a/OGoContentStore/OCSFolderManager.m +++ b/OGoContentStore/OCSFolderManager.m @@ -536,6 +536,13 @@ static const char *OCSPathColumnPattern = "c_path%i"; return [self folderForRecord:record]; } +- (NSException *)createFolderOfType:(NSString *)_type atPath:(NSString *)_path{ + // TODO: implement folder create + return [NSException exceptionWithName:@"NotYetImplemented" + reason:@"no money, no time, ..." + userInfo:nil]; +} + /* folder types */ - (OCSFolderType *)folderTypeWithName:(NSString *)_name { diff --git a/OGoContentStore/ocs_mkdir.m b/OGoContentStore/ocs_mkdir.m new file mode 100644 index 00000000..faa72c86 --- /dev/null +++ b/OGoContentStore/ocs_mkdir.m @@ -0,0 +1,105 @@ +// $Id$ + +#import + +@class NSUserDefaults; +@class OCSFolderManager; + +@interface Tool : NSObject +{ + NSUserDefaults *ud; + OCSFolderManager *folderManager; +} + ++ (int)run; + +@end + +#include +#include +#include "common.h" + +@implementation Tool + +- (id)init { + if ((self = [super init])) { + self->ud = [[NSUserDefaults standardUserDefaults] retain]; + self->folderManager = [[OCSFolderManager defaultFolderManager] retain]; + } + return self; +} +- (void)dealloc { + [self->ud release]; + [self->folderManager release]; + [super dealloc]; +} + +/* operation */ + +- (int)runOnPath:(NSString *)_path type:(NSString *)_type { + NSException *error; + + [self logWithFormat:@"mkdir %@ at path: '%@'", _type, _path]; + + if ([self->folderManager folderExistsAtPath:_path]) { + [self logWithFormat:@"folder already exist at path: '%@'", _path]; + return 1; + } + + if ((error = [self->folderManager createFolderOfType:_type atPath:_path])) { + [self logWithFormat:@"creation of folder %@ at %@ failed: %@", + _type, _path, error]; + return 1; + } + + if ([self->folderManager folderExistsAtPath:_path]) + [self logWithFormat:@"CREATED."]; + else + [self logWithFormat:@"cannot find fresh folder?"]; + + return 0; +} + +- (int)run { + NSEnumerator *e; + NSString *type; + NSString *path; + + [self logWithFormat:@"manager: %@", self->folderManager]; + + if (![self->folderManager canConnect]) { + [self logWithFormat:@"cannot connect folder-info database!"]; + return 1; + } + + e = [[[NSProcessInfo processInfo] argumentsWithoutDefaults] + objectEnumerator]; + [e nextObject]; // skip tool name + + type = [[[e nextObject] copy] autorelease]; + + while ((path = [e nextObject])) + [self runOnPath:path type:type]; + + return 0; +} ++ (int)run { + return [(Tool *)[[[self alloc] init] autorelease] run]; +} + +@end /* Tool */ + +int main(int argc, char **argv, char **env) { + NSAutoreleasePool *pool; + int rc; + + pool = [[NSAutoreleasePool alloc] init]; +#if LIB_FOUNDATION_LIBRARY + [NSProcessInfo initializeWithArguments:argv count:argc environment:env]; +#endif + + rc = [Tool run]; + + [pool release]; + return rc; +}