From 37ed5af7ed92dbe656738a82f464432251e10a45 Mon Sep 17 00:00:00 2001 From: znek Date: Fri, 15 Oct 2004 12:31:54 +0000 Subject: [PATCH] Proper escaping git-svn-id: http://svn.opengroupware.org/SOGo/trunk@399 d1b88da0-ebda-0310-925b-ed51d893ca5b --- OGoContentStore/ChangeLog | 9 + OGoContentStore/GNUmakefile | 52 +- OGoContentStore/OCSFolder.m | 26 +- OGoContentStore/OCSStringFormatter.h | 41 ++ OGoContentStore/OCSStringFormatter.m | 65 ++ .../OGoContentStore.xcode/project.pbxproj | 677 ++++++++++++++++++ OGoContentStore/Version | 6 +- 7 files changed, 842 insertions(+), 34 deletions(-) create mode 100644 OGoContentStore/OCSStringFormatter.h create mode 100644 OGoContentStore/OCSStringFormatter.m create mode 100644 OGoContentStore/OGoContentStore.xcode/project.pbxproj diff --git a/OGoContentStore/ChangeLog b/OGoContentStore/ChangeLog index 3a79d72d..28fb3096 100644 --- a/OGoContentStore/ChangeLog +++ b/OGoContentStore/ChangeLog @@ -1,3 +1,12 @@ +2004-10-15 Marcus Mueller + + * v0.9.11 + + * OCSStringFormatter.[hm]: new class to format strings according to + Database requirements (escaping etc.). + + * OCSFolder.m: uses new OCSStringFormatter now. + 2004-09-25 Helge Hess * fixed compilation on MacOSX (v0.9.10) diff --git a/OGoContentStore/GNUmakefile b/OGoContentStore/GNUmakefile index 5f58301d..d69c3574 100644 --- a/OGoContentStore/GNUmakefile +++ b/OGoContentStore/GNUmakefile @@ -11,33 +11,35 @@ TYPEMODELS_DIR = $(GNUSTEP_USER_ROOT)/Library/OCSTypeModels/ libOGoContentStore_HEADER_FILES_DIR = . libOGoContentStore_HEADER_FILES_INSTALL_DIR = /OGoContentStore -libOGoContentStore_HEADER_FILES += \ - NSURL+OCS.h \ - EOAdaptorChannel+OCS.h \ +libOGoContentStore_HEADER_FILES += \ + NSURL+OCS.h \ + EOAdaptorChannel+OCS.h \ \ - OCSContext.h \ - OCSFieldInfo.h \ - OCSFolder.h \ - OCSFolderManager.h \ - OCSFolderType.h \ - OCSChannelManager.h \ - OCSFieldExtractor.h \ - OCSiCalFieldExtractor.h \ - -libOGoContentStore_OBJC_FILES += \ - NSURL+OCS.m \ - EOAdaptorChannel+OCS.m \ - EOQualifier+OCS.m \ + OCSContext.h \ + OCSFieldInfo.h \ + OCSFolder.h \ + OCSFolderManager.h \ + OCSFolderType.h \ + OCSChannelManager.h \ + OCSFieldExtractor.h \ + OCSiCalFieldExtractor.h \ + OCSStringFormatter.h \ + +libOGoContentStore_OBJC_FILES += \ + NSURL+OCS.m \ + EOAdaptorChannel+OCS.m \ + EOQualifier+OCS.m \ \ - OCSContext.m \ - OCSFieldInfo.m \ - OCSFolder.m \ - OCSFolderManager.m \ - OCSFolderType.m \ - OCSChannelManager.m \ - OCSFieldExtractor.m \ - OCSiCalFieldExtractor.m \ - OCSContactFieldExtractor.m + OCSContext.m \ + OCSFieldInfo.m \ + OCSFolder.m \ + OCSFolderManager.m \ + OCSFolderType.m \ + OCSChannelManager.m \ + OCSFieldExtractor.m \ + OCSiCalFieldExtractor.m \ + OCSContactFieldExtractor.m \ + OCSStringFormatter.m \ libOGoContentStore_TYPEMODELS += \ appointment.ocs \ diff --git a/OGoContentStore/OCSFolder.m b/OGoContentStore/OCSFolder.m index 9d38bacb..adedbf24 100644 --- a/OGoContentStore/OCSFolder.m +++ b/OGoContentStore/OCSFolder.m @@ -28,6 +28,7 @@ #include "NSURL+OCS.h" #include "EOAdaptorChannel+OCS.h" #include "EOQualifier+OCS.h" +#include "OCSStringFormatter.h" #include "common.h" @implementation OCSFolder @@ -35,11 +36,23 @@ static BOOL debugOn = NO; static BOOL doLogStore = NO; +static Class NSStringClass = Nil; +static Class NSNumberClass = Nil; +static Class NSCalendarDateClass = Nil; + +static OCSStringFormatter *stringFormatter = nil; + + (void)initialize { NSUserDefaults *ud = [NSUserDefaults standardUserDefaults]; - debugOn = [ud boolForKey:@"OCSFolderDebugEnabled"]; - doLogStore = [ud boolForKey:@"OCSFolderStoreDebugEnabled"]; + debugOn = [ud boolForKey:@"OCSFolderDebugEnabled"]; + doLogStore = [ud boolForKey:@"OCSFolderStoreDebugEnabled"]; + + NSStringClass = [NSString class]; + NSNumberClass = [NSNumber class]; + NSCalendarDateClass = [NSCalendarDate class]; + + stringFormatter = [OCSStringFormatter sharedFormatter]; } - (id)initWithPath:(NSString *)_path primaryKey:(id)_folderId @@ -216,13 +229,13 @@ static BOOL doLogStore = NO; if (![_value isNotNull]) return @"NULL"; - if ([_value isKindOfClass:[NSString class]]) - return [NSString stringWithFormat:@"'%@'", _value]; + if ([_value isKindOfClass:NSStringClass]) + return [stringFormatter stringByFormattingString:_value]; - if ([_value isKindOfClass:[NSNumber class]]) + if ([_value isKindOfClass:NSNumberClass]) return [_value stringValue]; - if ([_value isKindOfClass:[NSCalendarDate class]]) { + if ([_value isKindOfClass:NSCalendarDateClass]) { /* be smart ... convert to timestamp */ return [NSString stringWithFormat:@"%i", [_value timeIntervalSince1970]]; } @@ -333,7 +346,6 @@ static BOOL doLogStore = NO; } /* run */ -#warning TODO: properly escape SQL specials! error = nil; nowDate = [NSCalendarDate date]; diff --git a/OGoContentStore/OCSStringFormatter.h b/OGoContentStore/OCSStringFormatter.h new file mode 100644 index 00000000..2a25e49b --- /dev/null +++ b/OGoContentStore/OCSStringFormatter.h @@ -0,0 +1,41 @@ +/* + Copyright (C) 2000-2004 SKYRIX Software AG + + This file is part of OGo + + 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 + Free Software Foundation; either version 2, or (at your option) any + later version. + + OGo is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with OGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ +// $Id$ + + +#ifndef __OCSStringFormatter_H_ +#define __OCSStringFormatter_H_ + + +#import +#include + + +@interface OCSStringFormatter : NSObject < NGStringEscaping > +{ +} + ++ (id)sharedFormatter; +- (NSString *)stringByFormattingString:(NSString *)_s; + +@end + +#endif /* __OCSStringFormatter_H_ */ diff --git a/OGoContentStore/OCSStringFormatter.m b/OGoContentStore/OCSStringFormatter.m new file mode 100644 index 00000000..ed43411d --- /dev/null +++ b/OGoContentStore/OCSStringFormatter.m @@ -0,0 +1,65 @@ +/* + Copyright (C) 2000-2004 SKYRIX Software AG + + This file is part of OGo + + 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 + Free Software Foundation; either version 2, or (at your option) any + later version. + + OGo is distributed in the hope that it will be useful, but WITHOUT ANY + WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public + License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with OGo; see the file COPYING. If not, write to the + Free Software Foundation, 59 Temple Place - Suite 330, Boston, MA + 02111-1307, USA. +*/ +// $Id$ + + +#import "OCSStringFormatter.h" + + +@implementation OCSStringFormatter + +static NSCharacterSet *escapeSet = nil; + ++ (void)initialize { + static BOOL didInit = NO; + + if(didInit) + return; + + didInit = YES; + escapeSet = + [[NSCharacterSet characterSetWithCharactersInString:@"\\'"] retain]; +} + ++ (id)sharedFormatter { + static id sharedInstance = nil; + if(!sharedInstance) { + sharedInstance = [[self alloc] init]; + } + return sharedInstance; +} + +- (NSString *)stringByFormattingString:(NSString *)_s { + NSString *s; + + s = [_s stringByEscapingCharactersFromSet:escapeSet + usingStringEscaping:self]; + return [NSString stringWithFormat:@"'%@'", s]; +} + +- (NSString *)stringByEscapingString:(NSString *)_s { + if([_s isEqualToString:@"\\"]) { + return @"\\\\"; /* easy ;-) */ + } + return @"\\'"; +} + +@end diff --git a/OGoContentStore/OGoContentStore.xcode/project.pbxproj b/OGoContentStore/OGoContentStore.xcode/project.pbxproj new file mode 100644 index 00000000..6bf03552 --- /dev/null +++ b/OGoContentStore/OGoContentStore.xcode/project.pbxproj @@ -0,0 +1,677 @@ +// !$*UTF8*$! +{ + archiveVersion = 1; + classes = { + }; + objectVersion = 39; + objects = { + AD0CF943071FE16800E72147 = { + children = ( + AD0CF976071FE18800E72147, + AD0CF94F071FE18800E72147, + AD0CF950071FE18800E72147, + AD0CF94C071FE18800E72147, + AD0CF984071FE18800E72147, + AD0CF987071FE1B200E72147, + AD0CF98D071FE1D400E72147, + AD0CF977071FE18800E72147, + AD0CF9B9071FE1FA00E72147, + AD0CF990071FE1F000E72147, + AD0CF98A071FE1C000E72147, + AD0CF958071FE18800E72147, + ); + isa = PBXGroup; + refType = 4; + sourceTree = ""; + }; + AD0CF945071FE16800E72147 = { + buildSettings = { + COPY_PHASE_STRIP = NO; + }; + isa = PBXBuildStyle; + name = Development; + }; + AD0CF946071FE16800E72147 = { + buildSettings = { + COPY_PHASE_STRIP = YES; + }; + isa = PBXBuildStyle; + name = Deployment; + }; + AD0CF947071FE16800E72147 = { + buildSettings = { + }; + buildStyles = ( + AD0CF945071FE16800E72147, + AD0CF946071FE16800E72147, + ); + hasScannedForEncodings = 0; + isa = PBXProject; + mainGroup = AD0CF943071FE16800E72147; + projectDirPath = ""; + targets = ( + ); + }; + AD0CF94B071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = text; + path = appointment.ocs; + refType = 4; + sourceTree = ""; + }; + AD0CF94C071FE18800E72147 = { + fileEncoding = 5; + indentWidth = 8; + isa = PBXFileReference; + lastKnownFileType = text; + path = ChangeLog; + refType = 4; + sourceTree = ""; + tabWidth = 8; + usesTabs = 1; + }; + AD0CF94D071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = common.h; + refType = 4; + sourceTree = ""; + }; + AD0CF94E071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = text; + path = contact.ocs; + refType = 4; + sourceTree = ""; + }; + AD0CF94F071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = text; + path = COPYING; + refType = 4; + sourceTree = ""; + }; + AD0CF950071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = text; + path = COPYRIGHT; + refType = 4; + sourceTree = ""; + }; + AD0CF951071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = "EOAdaptorChannel+OCS.h"; + refType = 4; + sourceTree = ""; + }; + AD0CF952071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = "EOAdaptorChannel+OCS.m"; + refType = 4; + sourceTree = ""; + }; + AD0CF953071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = "EOQualifier+OCS.h"; + refType = 4; + sourceTree = ""; + }; + AD0CF954071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = "EOQualifier+OCS.m"; + refType = 4; + sourceTree = ""; + }; + AD0CF955071FE18800E72147 = { + explicitFileType = sourcecode.make; + fileEncoding = 5; + indentWidth = 8; + isa = PBXFileReference; + path = GNUmakefile; + refType = 4; + sourceTree = ""; + tabWidth = 8; + }; + AD0CF956071FE18800E72147 = { + explicitFileType = sourcecode.make; + fileEncoding = 5; + indentWidth = 8; + isa = PBXFileReference; + path = GNUmakefile.postamble; + refType = 4; + sourceTree = ""; + tabWidth = 8; + }; + AD0CF957071FE18800E72147 = { + explicitFileType = sourcecode.make; + fileEncoding = 5; + indentWidth = 8; + isa = PBXFileReference; + path = GNUmakefile.preamble; + refType = 4; + sourceTree = ""; + tabWidth = 8; + }; + AD0CF958071FE18800E72147 = { + children = ( + AD0CF959071FE18800E72147, + AD0CF95A071FE18800E72147, + AD0CF95B071FE18800E72147, + ); + isa = PBXGroup; + path = misc; + refType = 4; + sourceTree = ""; + }; + AD0CF959071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = text; + path = icaltest.ical; + refType = 4; + sourceTree = ""; + }; + AD0CF95A071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = text; + path = iNetOrgPerson.txt; + refType = 4; + sourceTree = ""; + }; + AD0CF95B071FE18800E72147 = { + children = ( + AD0CF95C071FE18800E72147, + AD0CF95D071FE18800E72147, + AD0CF95E071FE18800E72147, + ); + isa = PBXGroup; + path = test1; + refType = 4; + sourceTree = ""; + }; + AD0CF95C071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = common.h; + refType = 4; + sourceTree = ""; + }; + AD0CF95D071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = text; + path = GNUmakefile; + refType = 4; + sourceTree = ""; + }; + AD0CF95E071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = test1.m; + refType = 4; + sourceTree = ""; + }; + AD0CF95F071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = "NSURL+OCS.h"; + refType = 4; + sourceTree = ""; + }; + AD0CF960071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = "NSURL+OCS.m"; + refType = 4; + sourceTree = ""; + }; + AD0CF961071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = ocs_cat.m; + refType = 4; + sourceTree = ""; + }; + AD0CF962071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = ocs_ls.m; + refType = 4; + sourceTree = ""; + }; + AD0CF963071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = ocs_mkdir.m; + refType = 4; + sourceTree = ""; + }; + AD0CF964071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = ocs_recreatequick.m; + refType = 4; + sourceTree = ""; + }; + AD0CF965071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = OCSChannelManager.h; + refType = 4; + sourceTree = ""; + }; + AD0CF966071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = OCSChannelManager.m; + refType = 4; + sourceTree = ""; + }; + AD0CF967071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = OCSContactFieldExtractor.m; + refType = 4; + sourceTree = ""; + }; + AD0CF968071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = OCSContext.h; + refType = 4; + sourceTree = ""; + }; + AD0CF969071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = OCSContext.m; + refType = 4; + sourceTree = ""; + }; + AD0CF96A071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = OCSFieldExtractor.h; + refType = 4; + sourceTree = ""; + }; + AD0CF96B071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = OCSFieldExtractor.m; + refType = 4; + sourceTree = ""; + }; + AD0CF96C071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = OCSFieldInfo.h; + refType = 4; + sourceTree = ""; + }; + AD0CF96D071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = OCSFieldInfo.m; + refType = 4; + sourceTree = ""; + }; + AD0CF96E071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = OCSFolder.h; + refType = 4; + sourceTree = ""; + }; + AD0CF96F071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = OCSFolder.m; + refType = 4; + sourceTree = ""; + }; + AD0CF970071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = OCSFolderManager.h; + refType = 4; + sourceTree = ""; + }; + AD0CF971071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = OCSFolderManager.m; + refType = 4; + sourceTree = ""; + }; + AD0CF972071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = OCSFolderType.h; + refType = 4; + sourceTree = ""; + }; + AD0CF973071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = OCSFolderType.m; + refType = 4; + sourceTree = ""; + }; + AD0CF974071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = OCSiCalFieldExtractor.h; + refType = 4; + sourceTree = ""; + }; + AD0CF975071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = OCSiCalFieldExtractor.m; + refType = 4; + sourceTree = ""; + }; + AD0CF976071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = text; + path = README; + refType = 4; + sourceTree = ""; + }; + AD0CF977071FE18800E72147 = { + children = ( + AD0CF97E071FE18800E72147, + AD0CF97D071FE18800E72147, + AD0CF978071FE18800E72147, + AD0CF979071FE18800E72147, + AD0CF97A071FE18800E72147, + AD0CF97B071FE18800E72147, + AD0CF97C071FE18800E72147, + AD0CF97F071FE18800E72147, + AD0CF980071FE18800E72147, + AD0CF981071FE18800E72147, + AD0CF982071FE18800E72147, + AD0CF983071FE18800E72147, + ); + isa = PBXGroup; + name = SQL; + path = sql; + refType = 4; + sourceTree = ""; + }; + AD0CF978071FE18800E72147 = { + fileEncoding = 5; + indentWidth = 8; + isa = PBXFileReference; + lastKnownFileType = text; + path = "appointment-create.psql"; + refType = 4; + sourceTree = ""; + tabWidth = 8; + usesTabs = 1; + }; + AD0CF979071FE18800E72147 = { + fileEncoding = 5; + indentWidth = 8; + isa = PBXFileReference; + lastKnownFileType = text; + path = "folderinfo-create.psql"; + refType = 4; + sourceTree = ""; + tabWidth = 8; + usesTabs = 1; + }; + AD0CF97A071FE18800E72147 = { + fileEncoding = 5; + indentWidth = 8; + isa = PBXFileReference; + lastKnownFileType = text; + path = "foldertablecreate-helge-privcal.psql"; + refType = 4; + sourceTree = ""; + tabWidth = 8; + usesTabs = 1; + }; + AD0CF97B071FE18800E72147 = { + fileEncoding = 5; + indentWidth = 8; + isa = PBXFileReference; + lastKnownFileType = text; + path = "foldertablecreate-root.psql"; + refType = 4; + sourceTree = ""; + tabWidth = 8; + usesTabs = 1; + }; + AD0CF97C071FE18800E72147 = { + fileEncoding = 5; + indentWidth = 8; + isa = PBXFileReference; + lastKnownFileType = text; + path = "foldertablecreate-test-contacts.psql"; + refType = 4; + sourceTree = ""; + tabWidth = 8; + usesTabs = 1; + }; + AD0CF97D071FE18800E72147 = { + fileEncoding = 5; + indentWidth = 8; + isa = PBXFileReference; + lastKnownFileType = text.script.sh; + path = "generate-folderinfo-sql-for-users.sh"; + refType = 4; + sourceTree = ""; + tabWidth = 8; + usesTabs = 1; + }; + AD0CF97E071FE18800E72147 = { + fileEncoding = 5; + isa = PBXFileReference; + lastKnownFileType = text; + path = README; + refType = 4; + sourceTree = ""; + }; + AD0CF97F071FE18800E72147 = { + fileEncoding = 5; + indentWidth = 8; + isa = PBXFileReference; + lastKnownFileType = text; + path = "register-agenor-helge-privcal.psql"; + refType = 4; + sourceTree = ""; + tabWidth = 8; + usesTabs = 1; + }; + AD0CF980071FE18800E72147 = { + fileEncoding = 5; + indentWidth = 8; + isa = PBXFileReference; + lastKnownFileType = text; + path = "register-agenor-test-contacts.psql"; + refType = 4; + sourceTree = ""; + tabWidth = 8; + usesTabs = 1; + }; + AD0CF981071FE18800E72147 = { + fileEncoding = 5; + indentWidth = 8; + isa = PBXFileReference; + lastKnownFileType = text; + path = "testapt-agenor-helge-privcal.psql"; + refType = 4; + sourceTree = ""; + tabWidth = 8; + usesTabs = 1; + }; + AD0CF982071FE18800E72147 = { + fileEncoding = 5; + indentWidth = 8; + isa = PBXFileReference; + lastKnownFileType = text; + path = "testapt-hh.psql"; + refType = 4; + sourceTree = ""; + tabWidth = 8; + usesTabs = 1; + }; + AD0CF983071FE18800E72147 = { + fileEncoding = 5; + indentWidth = 8; + isa = PBXFileReference; + lastKnownFileType = text; + path = "testcontact-agenor-test-contact.psql"; + refType = 4; + sourceTree = ""; + tabWidth = 8; + usesTabs = 1; + }; + AD0CF984071FE18800E72147 = { + explicitFileType = sourcecode.make; + fileEncoding = 5; + indentWidth = 8; + isa = PBXFileReference; + path = Version; + refType = 4; + sourceTree = ""; + tabWidth = 8; + }; + AD0CF987071FE1B200E72147 = { + children = ( + AD0CF955071FE18800E72147, + AD0CF957071FE18800E72147, + AD0CF956071FE18800E72147, + ); + isa = PBXGroup; + name = Makefiles; + refType = 4; + sourceTree = ""; + }; + AD0CF98A071FE1C000E72147 = { + children = ( + AD0CF961071FE18800E72147, + AD0CF962071FE18800E72147, + AD0CF963071FE18800E72147, + AD0CF964071FE18800E72147, + ); + isa = PBXGroup; + name = Tools; + refType = 4; + sourceTree = ""; + }; + AD0CF98D071FE1D400E72147 = { + children = ( + AD0CF94E071FE18800E72147, + AD0CF94B071FE18800E72147, + ); + isa = PBXGroup; + name = Mappings; + refType = 4; + sourceTree = ""; + }; + AD0CF990071FE1F000E72147 = { + children = ( + AD0CF94D071FE18800E72147, + AD0CF966071FE18800E72147, + AD0CF967071FE18800E72147, + AD0CF969071FE18800E72147, + AD0CF96B071FE18800E72147, + AD0CF96D071FE18800E72147, + AD0CF96F071FE18800E72147, + AD0CF971071FE18800E72147, + AD0CF973071FE18800E72147, + AD0CF975071FE18800E72147, + AD0CF9CD071FE4A400E72147, + AD0CF960071FE18800E72147, + AD0CF952071FE18800E72147, + AD0CF954071FE18800E72147, + ); + isa = PBXGroup; + name = Classes; + refType = 4; + sourceTree = ""; + }; + AD0CF9B9071FE1FA00E72147 = { + children = ( + AD0CF965071FE18800E72147, + AD0CF968071FE18800E72147, + AD0CF96A071FE18800E72147, + AD0CF96C071FE18800E72147, + AD0CF96E071FE18800E72147, + AD0CF970071FE18800E72147, + AD0CF972071FE18800E72147, + AD0CF974071FE18800E72147, + AD0CF9CC071FE4A400E72147, + AD0CF95F071FE18800E72147, + AD0CF951071FE18800E72147, + AD0CF953071FE18800E72147, + ); + isa = PBXGroup; + name = Headers; + path = ""; + refType = 4; + sourceTree = ""; + }; + AD0CF9CC071FE4A400E72147 = { + fileEncoding = 4; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.h; + path = OCSStringFormatter.h; + refType = 4; + sourceTree = ""; + }; + AD0CF9CD071FE4A400E72147 = { + fileEncoding = 5; + indentWidth = 2; + isa = PBXFileReference; + lastKnownFileType = sourcecode.c.objc; + path = OCSStringFormatter.m; + refType = 4; + sourceTree = ""; + }; + }; + rootObject = AD0CF947071FE16800E72147; +} diff --git a/OGoContentStore/Version b/OGoContentStore/Version index 49e22761..77dfcdc5 100644 --- a/OGoContentStore/Version +++ b/OGoContentStore/Version @@ -2,6 +2,8 @@ MAJOR_VERSION=0 MINOR_VERSION=9 -SUBMINOR_VERSION:=10 +SUBMINOR_VERSION:=11 -# v0.9.7 requires libGDLAccess v1.1.35 +# v0.9.11 requires libFoundation v1.0.63 +# v0.9.11 requires libNGExtensions v4.3.125 +# v0.9.7 requires libGDLAccess v1.1.35 -- 2.39.5