]> err.no Git - scalable-opengroupware.org/commitdiff
Proper escaping
authorznek <znek@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Fri, 15 Oct 2004 12:31:54 +0000 (12:31 +0000)
committerznek <znek@d1b88da0-ebda-0310-925b-ed51d893ca5b>
Fri, 15 Oct 2004 12:31:54 +0000 (12:31 +0000)
git-svn-id: http://svn.opengroupware.org/SOGo/trunk@399 d1b88da0-ebda-0310-925b-ed51d893ca5b

OGoContentStore/ChangeLog
OGoContentStore/GNUmakefile
OGoContentStore/OCSFolder.m
OGoContentStore/OCSStringFormatter.h [new file with mode: 0644]
OGoContentStore/OCSStringFormatter.m [new file with mode: 0644]
OGoContentStore/OGoContentStore.xcode/project.pbxproj [new file with mode: 0644]
OGoContentStore/Version

index 3a79d72d9e5378d5982f5c8cfd4cf600fb4f22ce..28fb309679f6e7dcfcf1a2e6a7521c034c806895 100644 (file)
@@ -1,3 +1,12 @@
+2004-10-15  Marcus Mueller  <znek@mulle-kybernetik.com>
+
+       * 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  <helge.hess@opengroupware.org>
 
        * fixed compilation on MacOSX (v0.9.10)
index 5f58301da5ea08c35bf0139aa6d4569a34980468..d69c35744b39fc70a2cec1e3214edba147e0adb3 100644 (file)
@@ -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 \
index 9d38bacbc7654436d253fbb4801869f6952f221a..adedbf24cb90cd5dc3e17a342f54aefb22f4d408 100644 (file)
@@ -28,6 +28,7 @@
 #include "NSURL+OCS.h"
 #include "EOAdaptorChannel+OCS.h"
 #include "EOQualifier+OCS.h"
+#include "OCSStringFormatter.h"
 #include "common.h"
 
 @implementation OCSFolder
 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 (file)
index 0000000..2a25e49
--- /dev/null
@@ -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 <Foundation/Foundation.h>
+#include <NGExtensions/NSString+Escaping.h>
+
+
+@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 (file)
index 0000000..ed43411
--- /dev/null
@@ -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 (file)
index 0000000..6bf0355
--- /dev/null
@@ -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 = "<group>";
+               };
+               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 = "<group>";
+               };
+               AD0CF94C071FE18800E72147 = {
+                       fileEncoding = 5;
+                       indentWidth = 8;
+                       isa = PBXFileReference;
+                       lastKnownFileType = text;
+                       path = ChangeLog;
+                       refType = 4;
+                       sourceTree = "<group>";
+                       tabWidth = 8;
+                       usesTabs = 1;
+               };
+               AD0CF94D071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.h;
+                       path = common.h;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF94E071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = text;
+                       path = contact.ocs;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF94F071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = text;
+                       path = COPYING;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF950071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = text;
+                       path = COPYRIGHT;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF951071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.h;
+                       path = "EOAdaptorChannel+OCS.h";
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF952071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.objc;
+                       path = "EOAdaptorChannel+OCS.m";
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF953071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.h;
+                       path = "EOQualifier+OCS.h";
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF954071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.objc;
+                       path = "EOQualifier+OCS.m";
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF955071FE18800E72147 = {
+                       explicitFileType = sourcecode.make;
+                       fileEncoding = 5;
+                       indentWidth = 8;
+                       isa = PBXFileReference;
+                       path = GNUmakefile;
+                       refType = 4;
+                       sourceTree = "<group>";
+                       tabWidth = 8;
+               };
+               AD0CF956071FE18800E72147 = {
+                       explicitFileType = sourcecode.make;
+                       fileEncoding = 5;
+                       indentWidth = 8;
+                       isa = PBXFileReference;
+                       path = GNUmakefile.postamble;
+                       refType = 4;
+                       sourceTree = "<group>";
+                       tabWidth = 8;
+               };
+               AD0CF957071FE18800E72147 = {
+                       explicitFileType = sourcecode.make;
+                       fileEncoding = 5;
+                       indentWidth = 8;
+                       isa = PBXFileReference;
+                       path = GNUmakefile.preamble;
+                       refType = 4;
+                       sourceTree = "<group>";
+                       tabWidth = 8;
+               };
+               AD0CF958071FE18800E72147 = {
+                       children = (
+                               AD0CF959071FE18800E72147,
+                               AD0CF95A071FE18800E72147,
+                               AD0CF95B071FE18800E72147,
+                       );
+                       isa = PBXGroup;
+                       path = misc;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF959071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = text;
+                       path = icaltest.ical;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF95A071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = text;
+                       path = iNetOrgPerson.txt;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF95B071FE18800E72147 = {
+                       children = (
+                               AD0CF95C071FE18800E72147,
+                               AD0CF95D071FE18800E72147,
+                               AD0CF95E071FE18800E72147,
+                       );
+                       isa = PBXGroup;
+                       path = test1;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF95C071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.h;
+                       path = common.h;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF95D071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = text;
+                       path = GNUmakefile;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF95E071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.objc;
+                       path = test1.m;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF95F071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.h;
+                       path = "NSURL+OCS.h";
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF960071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.objc;
+                       path = "NSURL+OCS.m";
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF961071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.objc;
+                       path = ocs_cat.m;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF962071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.objc;
+                       path = ocs_ls.m;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF963071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.objc;
+                       path = ocs_mkdir.m;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF964071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.objc;
+                       path = ocs_recreatequick.m;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF965071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.h;
+                       path = OCSChannelManager.h;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF966071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.objc;
+                       path = OCSChannelManager.m;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF967071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.objc;
+                       path = OCSContactFieldExtractor.m;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF968071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.h;
+                       path = OCSContext.h;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF969071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.objc;
+                       path = OCSContext.m;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF96A071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.h;
+                       path = OCSFieldExtractor.h;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF96B071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.objc;
+                       path = OCSFieldExtractor.m;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF96C071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.h;
+                       path = OCSFieldInfo.h;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF96D071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.objc;
+                       path = OCSFieldInfo.m;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF96E071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.h;
+                       path = OCSFolder.h;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF96F071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.objc;
+                       path = OCSFolder.m;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF970071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.h;
+                       path = OCSFolderManager.h;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF971071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.objc;
+                       path = OCSFolderManager.m;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF972071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.h;
+                       path = OCSFolderType.h;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF973071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.objc;
+                       path = OCSFolderType.m;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF974071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.h;
+                       path = OCSiCalFieldExtractor.h;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF975071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.objc;
+                       path = OCSiCalFieldExtractor.m;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF976071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = text;
+                       path = README;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF977071FE18800E72147 = {
+                       children = (
+                               AD0CF97E071FE18800E72147,
+                               AD0CF97D071FE18800E72147,
+                               AD0CF978071FE18800E72147,
+                               AD0CF979071FE18800E72147,
+                               AD0CF97A071FE18800E72147,
+                               AD0CF97B071FE18800E72147,
+                               AD0CF97C071FE18800E72147,
+                               AD0CF97F071FE18800E72147,
+                               AD0CF980071FE18800E72147,
+                               AD0CF981071FE18800E72147,
+                               AD0CF982071FE18800E72147,
+                               AD0CF983071FE18800E72147,
+                       );
+                       isa = PBXGroup;
+                       name = SQL;
+                       path = sql;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF978071FE18800E72147 = {
+                       fileEncoding = 5;
+                       indentWidth = 8;
+                       isa = PBXFileReference;
+                       lastKnownFileType = text;
+                       path = "appointment-create.psql";
+                       refType = 4;
+                       sourceTree = "<group>";
+                       tabWidth = 8;
+                       usesTabs = 1;
+               };
+               AD0CF979071FE18800E72147 = {
+                       fileEncoding = 5;
+                       indentWidth = 8;
+                       isa = PBXFileReference;
+                       lastKnownFileType = text;
+                       path = "folderinfo-create.psql";
+                       refType = 4;
+                       sourceTree = "<group>";
+                       tabWidth = 8;
+                       usesTabs = 1;
+               };
+               AD0CF97A071FE18800E72147 = {
+                       fileEncoding = 5;
+                       indentWidth = 8;
+                       isa = PBXFileReference;
+                       lastKnownFileType = text;
+                       path = "foldertablecreate-helge-privcal.psql";
+                       refType = 4;
+                       sourceTree = "<group>";
+                       tabWidth = 8;
+                       usesTabs = 1;
+               };
+               AD0CF97B071FE18800E72147 = {
+                       fileEncoding = 5;
+                       indentWidth = 8;
+                       isa = PBXFileReference;
+                       lastKnownFileType = text;
+                       path = "foldertablecreate-root.psql";
+                       refType = 4;
+                       sourceTree = "<group>";
+                       tabWidth = 8;
+                       usesTabs = 1;
+               };
+               AD0CF97C071FE18800E72147 = {
+                       fileEncoding = 5;
+                       indentWidth = 8;
+                       isa = PBXFileReference;
+                       lastKnownFileType = text;
+                       path = "foldertablecreate-test-contacts.psql";
+                       refType = 4;
+                       sourceTree = "<group>";
+                       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 = "<group>";
+                       tabWidth = 8;
+                       usesTabs = 1;
+               };
+               AD0CF97E071FE18800E72147 = {
+                       fileEncoding = 5;
+                       isa = PBXFileReference;
+                       lastKnownFileType = text;
+                       path = README;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF97F071FE18800E72147 = {
+                       fileEncoding = 5;
+                       indentWidth = 8;
+                       isa = PBXFileReference;
+                       lastKnownFileType = text;
+                       path = "register-agenor-helge-privcal.psql";
+                       refType = 4;
+                       sourceTree = "<group>";
+                       tabWidth = 8;
+                       usesTabs = 1;
+               };
+               AD0CF980071FE18800E72147 = {
+                       fileEncoding = 5;
+                       indentWidth = 8;
+                       isa = PBXFileReference;
+                       lastKnownFileType = text;
+                       path = "register-agenor-test-contacts.psql";
+                       refType = 4;
+                       sourceTree = "<group>";
+                       tabWidth = 8;
+                       usesTabs = 1;
+               };
+               AD0CF981071FE18800E72147 = {
+                       fileEncoding = 5;
+                       indentWidth = 8;
+                       isa = PBXFileReference;
+                       lastKnownFileType = text;
+                       path = "testapt-agenor-helge-privcal.psql";
+                       refType = 4;
+                       sourceTree = "<group>";
+                       tabWidth = 8;
+                       usesTabs = 1;
+               };
+               AD0CF982071FE18800E72147 = {
+                       fileEncoding = 5;
+                       indentWidth = 8;
+                       isa = PBXFileReference;
+                       lastKnownFileType = text;
+                       path = "testapt-hh.psql";
+                       refType = 4;
+                       sourceTree = "<group>";
+                       tabWidth = 8;
+                       usesTabs = 1;
+               };
+               AD0CF983071FE18800E72147 = {
+                       fileEncoding = 5;
+                       indentWidth = 8;
+                       isa = PBXFileReference;
+                       lastKnownFileType = text;
+                       path = "testcontact-agenor-test-contact.psql";
+                       refType = 4;
+                       sourceTree = "<group>";
+                       tabWidth = 8;
+                       usesTabs = 1;
+               };
+               AD0CF984071FE18800E72147 = {
+                       explicitFileType = sourcecode.make;
+                       fileEncoding = 5;
+                       indentWidth = 8;
+                       isa = PBXFileReference;
+                       path = Version;
+                       refType = 4;
+                       sourceTree = "<group>";
+                       tabWidth = 8;
+               };
+               AD0CF987071FE1B200E72147 = {
+                       children = (
+                               AD0CF955071FE18800E72147,
+                               AD0CF957071FE18800E72147,
+                               AD0CF956071FE18800E72147,
+                       );
+                       isa = PBXGroup;
+                       name = Makefiles;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF98A071FE1C000E72147 = {
+                       children = (
+                               AD0CF961071FE18800E72147,
+                               AD0CF962071FE18800E72147,
+                               AD0CF963071FE18800E72147,
+                               AD0CF964071FE18800E72147,
+                       );
+                       isa = PBXGroup;
+                       name = Tools;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF98D071FE1D400E72147 = {
+                       children = (
+                               AD0CF94E071FE18800E72147,
+                               AD0CF94B071FE18800E72147,
+                       );
+                       isa = PBXGroup;
+                       name = Mappings;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF990071FE1F000E72147 = {
+                       children = (
+                               AD0CF94D071FE18800E72147,
+                               AD0CF966071FE18800E72147,
+                               AD0CF967071FE18800E72147,
+                               AD0CF969071FE18800E72147,
+                               AD0CF96B071FE18800E72147,
+                               AD0CF96D071FE18800E72147,
+                               AD0CF96F071FE18800E72147,
+                               AD0CF971071FE18800E72147,
+                               AD0CF973071FE18800E72147,
+                               AD0CF975071FE18800E72147,
+                               AD0CF9CD071FE4A400E72147,
+                               AD0CF960071FE18800E72147,
+                               AD0CF952071FE18800E72147,
+                               AD0CF954071FE18800E72147,
+                       );
+                       isa = PBXGroup;
+                       name = Classes;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF9B9071FE1FA00E72147 = {
+                       children = (
+                               AD0CF965071FE18800E72147,
+                               AD0CF968071FE18800E72147,
+                               AD0CF96A071FE18800E72147,
+                               AD0CF96C071FE18800E72147,
+                               AD0CF96E071FE18800E72147,
+                               AD0CF970071FE18800E72147,
+                               AD0CF972071FE18800E72147,
+                               AD0CF974071FE18800E72147,
+                               AD0CF9CC071FE4A400E72147,
+                               AD0CF95F071FE18800E72147,
+                               AD0CF951071FE18800E72147,
+                               AD0CF953071FE18800E72147,
+                       );
+                       isa = PBXGroup;
+                       name = Headers;
+                       path = "";
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF9CC071FE4A400E72147 = {
+                       fileEncoding = 4;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.h;
+                       path = OCSStringFormatter.h;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+               AD0CF9CD071FE4A400E72147 = {
+                       fileEncoding = 5;
+                       indentWidth = 2;
+                       isa = PBXFileReference;
+                       lastKnownFileType = sourcecode.c.objc;
+                       path = OCSStringFormatter.m;
+                       refType = 4;
+                       sourceTree = "<group>";
+               };
+       };
+       rootObject = AD0CF947071FE16800E72147;
+}
index 49e227611d018d5f3035075a44fe5c9709c0f434..77dfcdc55efa4d681211b60854aa4c4eb3258c6a 100644 (file)
@@ -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