--- /dev/null
+SOPE Installation Guide
+=======================
+
+TODO: write install guide for SOPE 3.3.
+
+Prerequisites
+=============
+
+sope-xml
+- libxml2/libxml2-dev
+
+sope-core
+- autoconf
+
+sope-ldap
+- openldap2/openldap2-dev
+
+sope-gdl1
+- postgresql-dev
2004-08-20 Helge Hess <helge.hess@opengroupware.org>
+ * common.make: updated for new SOPE 3.3 hierarchy
+
* updated Version to 4.3
2004-08-16 Marcus Mueller <znek@mulle-kybernetik.com>
2004-08-20 Helge Hess <helge.hess@opengroupware.org>
+ * XmlExt.subproj/GNUmakefile: added include path for "inline" SOPE 3.3
+ compilation (v4.3.104)
+
* moved to SOPE 4.3 (v4.3.103)
2004-08-16 Helge Hess <helge.hess@skyrix.com>
ifneq ($(GNUSTEP_BUILD_DIR),)
RELBUILD_DIR_SxCore=$(GNUSTEP_BUILD_DIR)/..
-RELBUILD_DIR_SxXml=$(GNUSTEP_BUILD_DIR)/../../skyrix-xml
+RELBUILD_DIR_SxXml=$(GNUSTEP_BUILD_DIR)/../../sope-xml
libNGExtensions_LIB_DIRS += \
-L$(RELBUILD_DIR_SxCore)/EOControl/$(GNUSTEP_OBJ_DIR_NAME) \
else
libNGExtensions_LIB_DIRS += \
-L../EOControl/$(GNUSTEP_OBJ_DIR) \
- -L../../skyrix-xml/DOM/$(GNUSTEP_OBJ_DIR)
+ -L../../sope-xml/DOM/$(GNUSTEP_OBJ_DIR)
endif
libNGExtensions_LIBRARIES_DEPEND_UPON += -lEOControl -lDOM -lSaxObjC -lz
# $Id$
-SUBMINOR_VERSION:=103
+SUBMINOR_VERSION:=104
# v4.2.72 requires libEOControl v4.2.39
XmlExt_OBJC_FILES = \
DOMNode+EOQualifier.m
-ADDITIONAL_INCLUDE_DIRS += -I. -I.. -I../NGExtensions/ -I../..
+ADDITIONAL_INCLUDE_DIRS += \
+ -I. -I.. \
+ -I../NGExtensions/ \
+ -I../../../sope-xml/ \
+ -I../..
-include GNUmakefile.preamble
include $(GNUSTEP_MAKEFILES)/subproject.make
ifneq ($(GNUSTEP_BUILD_DIR),)
RELBUILD_DIR_SxCore=$(GNUSTEP_BUILD_DIR)/..
-RELBUILD_DIR_SxXml=$(GNUSTEP_BUILD_DIR)/../../skyrix-xml
+RELBUILD_DIR_SxXml=$(GNUSTEP_BUILD_DIR)/../../sope-xml
libNGStreams_LIB_DIRS += \
-L$(GNUSTEP_OBJ_DIR) \
-# $Id$
-
PROJECTLEAD=helge.hess@opengroupware.org
ADDITIONAL_INCLUDE_DIRS += \
-I.. -I../NGStreams/ \
- -I../../skyrix-xml
+ -I../../sope-xml
ADDITIONAL_LIB_DIRS += \
- -L./$(GNUSTEP_OBJ_DIR) \
- \
- -L../../skyrix-xml/SaxObjC/$(GNUSTEP_OBJ_DIR) \
- -L../../skyrix-xml/DOM/$(GNUSTEP_OBJ_DIR) \
- -L../../skyrix-xml/XmlRpc/$(GNUSTEP_OBJ_DIR)
-
-AUTODOC_COPYRIGHT = "SKYRIX Software AG"
-AUTODOC_SxVERSION = "4.2"
-AUTODOC_TEMPLATE = "../Documentation/AutoDocTemplate.html"
-
-AUTODOC_FLAGS = \
- -copyright $(AUTODOC_COPYRIGHT) \
- -format html \
- -typedirs \
- -copydocs \
- -tree \
- -allclasses \
- -define-SxVersion $(AUTODOC_SxVERSION) \
- -template $(AUTODOC_TEMPLATE)
+ -L./$(GNUSTEP_OBJ_DIR) \
+ -L../../sope-xml/SaxObjC/$(GNUSTEP_OBJ_DIR) \
+ -L../../sope-xml/DOM/$(GNUSTEP_OBJ_DIR) \
+ -L../../sope-xml/XmlRpc/$(GNUSTEP_OBJ_DIR)
ifeq ($(FOUNDATION_LIB),nx)
ADDITIONAL_LDFLAGS += -framework Foundation
+2004-08-20 Helge Hess <helge.hess@opengroupware.org>
+
+ * moved samples to sope-mime, sope-ldap, sope-ical
+
2004-08-17 Helge Hess <helge.hess@opengroupware.org>
* subclassing.m: fixed a compiler warning
include $(GNUSTEP_MAKEFILES)/common.make
TOOL_NAME = \
- mime2xml \
- imapls \
encoding \
fmdls \
testdirenum \
bmlookup \
test_qpdecode \
eoqual \
- ldapls \
- ldap2dsml \
- ldapchkpwd \
- imapquota \
testsock \
httpu_notify \
- ical2 \
- ical3 \
parserule \
testurl \
TOOL_NAME += subclassing
endif
-imapquota_OBJC_FILES = ImapQuotaTool.m ImapTool.m imapquota.m
-imapget_OBJC_FILES = ImapTool.m imapget.m
-mime2xml_OBJC_FILES = Mime2XmlTool.m mime2xml.m
-imapls_OBJC_FILES = ImapTool.m ImapListTool.m imapls.m
encoding_OBJC_FILES = EncodingTool.m encoding.m
subclassing_OBJC_FILES = subclassing.m
fmdls_OBJC_FILES = fmdls.m
testdirenum_OBJC_FILES = testdirenum.m
test_qpdecode_OBJC_FILES = test_qpdecode.m
eoqual_OBJC_FILES = eoqual.m EOQualTool.m
-ldapls_OBJC_FILES = ldapls.m
-ldap2dsml_OBJC_FILES = ldap2dsml.m
-ldapchkpwd_OBJC_FILES = ldapchkpwd.m
testsock_OBJC_FILES = testsock.m
parserule_OBJC_FILES = parserule.m
httpu_notify_OBJC_FILES = httpu_notify.m
testurl_OBJC_FILES = testurl.m
-ical2_OBJC_FILES = ical2.m
-ical3_OBJC_FILES = ical3.m
-
-#TOOL_NAME = #pwd-check
-#pwd-check_OBJC_FILES = pwd-check.m
-
-ldapls_TOOL_LIBS += -lNGLdap
-ldap2dsml_TOOL_LIBS += -lNGLdap
-ldapchkpwd_TOOL_LIBS += -lNGLdap
-
-ical2_TOOL_LIBS += -lNGiCal -lSaxObjC
-ical3_TOOL_LIBS += -lNGiCal -lSaxObjC
-
-include GNUmakefile.preamble
include $(GNUSTEP_MAKEFILES)/tool.make
-include GNUmakefile.postamble
ADDITIONAL_INCLUDE_DIRS += \
-I.. \
- -I../NGMime \
-I../NGStreams \
-I../NGExtensions \
-L../EOControl/$(GNUSTEP_OBJ_DIR) \
-L../NGExtensions/$(GNUSTEP_OBJ_DIR) \
-L../NGStreams/$(GNUSTEP_OBJ_DIR) \
- -L../NGMime/$(GNUSTEP_OBJ_DIR) \
- -L../NGLdap/$(GNUSTEP_OBJ_DIR) \
- -L../NGiCal/$(GNUSTEP_OBJ_DIR) \
-
ADDITIONAL_TOOL_LIBS += \
- -lNGMime -lNGStreams -lNGExtensions -lEOControl \
+ -lNGStreams -lNGExtensions -lEOControl \
-lDOM -lSaxObjC
-
--- /dev/null
+2004-08-17 Helge Hess <helge.hess@opengroupware.org>
+
+ * subclassing.m: fixed a compiler warning
+
+2004-07-09 Helge Hess <helge.hess@skyrix.com>
+
+ * bmlookup.m: major code cleanups, improved output
+
+2004-06-27 Helge Hess <helge.hess@opengroupware.org>
+
+ * ldap2dsml.m: fixed a compile warning
+
+2004-06-21 Helge Hess <helge.hess@opengroupware.org>
+
+ * common.h: fixed compatibility with gstep-base
+
+2004-06-17 Helge Hess <helge.hess@opengroupware.org>
+
+ * added 'testurl' to test NSURL for the Cocoa Foundation bug wrt the
+ trailing suffix in -path
+
+2004-05-09 Helge Hess <helge.hess@opengroupware.org>
+
+ * subclassing.m: added support for Apple runtime
+
+2004-04-12 Helge Hess <helge.hess@opengroupware.org>
+
+ * ImapListTool, ImapTool.m, imapls.m: minor code cleanups
+
+2004-01-19 Helge Hess <helge.hess@opengroupware.org>
+
+ * ldapls.m: minor fixes (moved NSAutoreleasePool to correct place)
+
+2004-01-11 Helge Hess <helge.hess@opengroupware.org>
+
+ * minor cleanups to log messages
+
+2003-10-12 Helge Hess <helge@opengroupware.org>
+
+ * EOQualTool.m: fix: returned value in a void method
+
+ * GNUmakefile (TOOL_NAME): do not compile subclassing.m on
+ MacOSX
+
+ * EncodingTool.m: fixed compilation on MacOSX
+
+2003-05-15 Helge Hess <helge.hess@skyrix.com>
+
+ * added parserule for testing parsing of NGRule objects
+
+2003-05-14 Helge Hess <helge.hess@skyrix.com>
+
+ * some gcc 3.3 warnings fixed
+
+2003-04-03 Helge Hess <helge.hess@skyrix.com>
+
+ * GNUmakefile: added ldapchkpwd tool
+
+ * ldap2dsml.m: added autorelease-pool to main()
+
+2003-04-01 GNUstep User <helge.hess@skyrix.com>
+
+ * ImapListTool.m: do not use NSFileIdentifier constant
+
+ * EncodingTool.m: removed some undeclared encodings when compiling for
+ GNUstep Base
+
+2003-02-12 Helge Hess <helge.hess@skyrix.com>
+
+ * added ical2.m, ical3.m - examples for NGiCal
+
+2003-01-30 Helge Hess <helge.hess@skyrix.com>
+
+ * added httpu_notify, a small tool to send out HTTP-over-UDP
+ NOTIFY notifications
+
+2003-01-08 Helge Hess <helge.hess@skyrix.com>
+
+ * testsock.m: improved test code
+
+2003-01-07 Helge Hess <helge.hess@skyrix.com>
+
+ * subclassing.m, ImapQuotaTool.m, imapquota.m: fixed compilation
+ warnings
+
+ * moved in testsock.m from NGStreams
+
+ * changes for improved compilation on MacOSX, replaced RETAIN macros
+ with methods
+
+Fri Dec 27 10:54:40 2002 Helge Hess <helge.hess@skyrix.com>
+
+ * Mime2XmlTool.m: fixed a protocol warning
+
+Mon Dec 23 15:36:01 2002 Helge Hess <helge.hess@skyrix.com>
+
+ * ImapListTool.m: pass correct filemanager as a parameter
+
+2002-12-08 Helge Hess <helge.hess@skyrix.com>
+
+ * testdirenum.m: cleanups
+
+Tue Dec 17 15:07:40 2002 <jan@skyrix.com>
+
+ * imapquota.m: add quota test
+
+2002-11-21 Jan Reichmann <jr@skyrix.com>
+
+ * added Imap-Super class, improve imapls
+
+2002-11-21 Helge Hess <helge.hess@skyrix.com>
+
+ * added ldapls, ldap2dsml as examples for NGLdap
+
+2002-11-15 Helge Hess <helge.hess@skyrix.com>
+
+ * EOQualTool.m: added test for complex cast
+
+2002-10-29 Helge Hess <helge.hess@skyrix.com>
+
+ * EOQualTool.m: added support for parsing SQL using the new EOSQLParser
+
+2002-10-25 Helge Hess <helge.hess@skyrix.com>
+
+ * added eoqual tool for parsing EOQualifier's (useful for syntax
+ checks)
+
+ * created ChangeLog
+
--- /dev/null
+# $Id$
+
+include $(GNUSTEP_MAKEFILES)/common.make
+
+TOOL_NAME = \
+ ical2 \
+ ical3 \
+
+ical2_OBJC_FILES = ical2.m
+ical3_OBJC_FILES = ical3.m
+
+ical2_TOOL_LIBS += -lNGiCal -lSaxObjC
+ical3_TOOL_LIBS += -lNGiCal -lSaxObjC
+
+-include GNUmakefile.preamble
+include $(GNUSTEP_MAKEFILES)/tool.make
+-include GNUmakefile.postamble
--- /dev/null
+# $Id$
+
+ADDITIONAL_INCLUDE_DIRS += \
+ -I.. \
+ -I../NGStreams \
+ -I../NGExtensions \
+
+ADDITIONAL_LIB_DIRS += \
+ -L../EOControl/$(GNUSTEP_OBJ_DIR) \
+ -L../NGExtensions/$(GNUSTEP_OBJ_DIR) \
+ -L../NGStreams/$(GNUSTEP_OBJ_DIR) \
+ -L../NGiCal/$(GNUSTEP_OBJ_DIR) \
+
+
+ADDITIONAL_TOOL_LIBS += \
+ -lNGStreams -lNGExtensions -lEOControl \
+ -lDOM -lSaxObjC
+
--- /dev/null
+# $Id$
+
+This directory contains sample programs for the skyrix-core libraries.
+
+Tools
+=====
+
+mime2xml - read a MIME file and output the structure as XML
+
+imapls - list IMAP4 server directories, sample for NGImap4FileManager
+
+bmlookup - perform resource lookups using the NGExtensions NGBundleManager
+ class
+
+fmdls - list directories using the NGFileManager directory-datasource
+ implementation
+
+subclassing - test runtime subclassing in the Objective-C runtime
+ (NGObjCRuntime in NGExtensions)
+
+testdirenum - test the NGDirectoryEnumerator
+
+ldapls - an 'ls' for LDAP directories
+ldap2dsml - return the output of an LDAP server as DSML (directory service
+ markup language)
+ldapchkpwd - check whether a login/password combo would be authenticated
--- /dev/null
+/*
+ Copyright (C) 2000-2003 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: ical2.m 4 2004-08-20 17:04:31Z helge $
+
+#import <Foundation/Foundation.h>
+#include <SaxObjC/SaxObjC.h>
+
+@interface iCal2Tool : NSObject
+{
+ id<NSObject,SaxXMLReader> parser;
+ SaxObjectDecoder *sax;
+}
+
+- (int)runWithArguments:(NSArray *)_args;
+
+@end
+
+@implementation iCal2Tool
+
+- (id)init {
+ if ((self = [super init])) {
+ self->parser =
+ [[[SaxXMLReaderFactory standardXMLReaderFactory]
+ createXMLReaderForMimeType:@"text/calendar"]
+ retain];
+ if (self->parser == nil) {
+ NSLog(@"%s: did not find a parser for text/calendar !",
+ __PRETTY_FUNCTION__);
+ [self release];
+ return nil;
+ }
+
+ /* ensure that NGiCal.xmap can be found ! (Library/SaxMappings) */
+ self->sax = [[SaxObjectDecoder alloc] initWithMappingNamed:@"NGiCal"];
+ if (self->sax == nil) {
+ NSLog(@"could not create the iCal SAX handler !");
+ [self release];
+ return nil;
+ }
+
+ [self->parser setContentHandler:self->sax];
+ [self->parser setErrorHandler:self->sax];
+ }
+ return self;
+}
+- (void)dealloc {
+ [self->sax release];
+ [self->parser release];
+ [super dealloc];
+}
+
+/* parsing */
+
+- (id)parseFile:(NSString *)_path {
+ if ([_path length] == 0) return nil;
+
+ _path = [@"file://" stringByAppendingString:_path];
+
+ [self->parser parseFromSystemId:_path];
+
+ return [self->sax rootObject];
+}
+
+- (void)printParsedObject:(id)_object {
+ NSLog(@"component: %@", _object);
+#if 0
+ NSLog(@" subcomponents: %@", [_object subComponents]);
+
+ printf("%s", [[_object icalString] cString]);
+#endif
+}
+
+/* run */
+
+- (int)runWithArguments:(NSArray *)_args {
+ NSEnumerator *args;
+ NSString *arg;
+
+ args = [_args objectEnumerator];
+ [args nextObject]; // process name ...
+
+ while ((arg = [args nextObject])) {
+ NSAutoreleasePool *pool2;
+
+ if ([arg hasPrefix:@"-"]) { /* consume defaults */
+ [args nextObject];
+ continue;
+ }
+
+ pool2 = [[NSAutoreleasePool alloc] init];
+ {
+ id component;
+
+ NS_DURING
+ component = [self parseFile:arg];
+ NS_HANDLER
+ abort();
+ NS_ENDHANDLER;
+
+ if (component == nil)
+ NSLog(@"could not parse file: '%@'", arg);
+ else
+ [self printParsedObject:component];
+ }
+ [pool2 release];
+ }
+ return 0;
+}
+
+@end /* iCal2Tool */
+
+int main(int argc, char **argv, char **env) {
+ NSAutoreleasePool *pool;
+ iCal2Tool *tool;
+ int rc;
+
+#if LIB_FOUNDATION_LIBRARY
+ [NSProcessInfo initializeWithArguments:argv count:argc environment:env];
+#endif
+
+ pool = [[NSAutoreleasePool alloc] init];
+
+ if ((tool = [[iCal2Tool alloc] init])) {
+ NS_DURING
+ rc = [tool runWithArguments:[[NSProcessInfo processInfo] arguments]];
+ NS_HANDLER
+ abort();
+ NS_ENDHANDLER;
+
+ [tool release];
+ }
+ else
+ rc = 1;
+
+ [pool release];
+ return rc;
+}
--- /dev/null
+/*
+ Copyright (C) 2000-2003 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: ical3.m 4 2004-08-20 17:04:31Z helge $
+
+#import <Foundation/Foundation.h>
+
+@class EOQualifier, NSString, EOSortOrdering;
+
+@interface iCal3Tool : NSObject
+{
+ EOQualifier *qualifier;
+ NSString *entityName;
+ NSArray *sortOrderings;
+}
+
+- (int)runWithArguments:(NSArray *)_args;
+
+@end
+
+#include <NGiCal/iCalDataSource.h>
+#include <NGiCal/iCalObject.h>
+#include <EOControl/EOQualifier.h>
+#include <EOControl/EOSortOrdering.h>
+#include "common.h"
+
+@implementation iCal3Tool
+
+- (id)init {
+ if ((self = [super init])) {
+ NSUserDefaults *ud;
+ id tmp;
+
+ /* collect options */
+ ud = [NSUserDefaults standardUserDefaults];
+
+ self->entityName = [[ud stringForKey:@"entity"] copy];
+
+ if ((tmp = [ud objectForKey:@"qualifier"]))
+ self->qualifier = [[EOQualifier alloc] initWithPropertyList:tmp];
+
+ if ((tmp = [ud objectForKey:@"sort"])) {
+ if ((tmp = [[EOSortOrdering alloc] initWithPropertyList:tmp])) {
+ self->sortOrderings = [[NSArray alloc] initWithObjects:tmp,nil];
+ [tmp release];
+ }
+ }
+ }
+ return self;
+}
+- (void)dealloc {
+ [self->sortOrderings release];
+ [self->qualifier release];
+ [self->entityName release];
+ [super dealloc];
+}
+
+/* run */
+
+- (void)printObject:(id)_object {
+ printf("object: %s\n", [[_object description] cString]);
+}
+
+- (int)runWithArguments:(NSArray *)_args {
+ NSEnumerator *args;
+ NSString *arg;
+
+ /* begin processing */
+
+ args = [_args objectEnumerator];
+ [args nextObject]; // process name ...
+
+ while ((arg = [args nextObject])) {
+ NSAutoreleasePool *pool2;
+
+ if ([arg hasPrefix:@"-"]) { /* consume defaults */
+ [args nextObject];
+ continue;
+ }
+
+ pool2 = [[NSAutoreleasePool alloc] init];
+ {
+ iCalDataSource *ds;
+ EOFetchSpecification *fspec;
+ NSArray *objs;
+ iCalObject *obj;
+
+ /* setup fetch specification */
+
+ fspec = [[[EOFetchSpecification alloc] init] autorelease];
+ [fspec setEntityName:self->entityName];
+ [fspec setQualifier:self->qualifier];
+
+ /* setup datasource */
+
+ ds = [[[iCalDataSource alloc] initWithPath:arg] autorelease];
+ [ds setFetchSpecification:fspec];
+
+ /* perform fetch */
+
+ if ((objs = [ds fetchObjects]) == nil) {
+ /* fetch failed */
+
+ NSLog(@"fetch on ical file failed: %@", arg);
+ }
+ else {
+ /* process results */
+ NSEnumerator *e;
+
+ e = [objs objectEnumerator];
+ while ((obj = [e nextObject])) {
+ [self printObject:obj];
+ }
+ }
+ }
+ [pool2 release];
+ }
+ return 0;
+}
+
+@end /* iCal3Tool */
+
+int main(int argc, char **argv, char **env) {
+ NSAutoreleasePool *pool;
+ iCal3Tool *tool;
+ int rc;
+
+#if LIB_FOUNDATION_LIBRARY
+ [NSProcessInfo initializeWithArguments:argv count:argc environment:env];
+#endif
+
+ pool = [[NSAutoreleasePool alloc] init];
+
+ if ((tool = [[iCal3Tool alloc] init])) {
+ NS_DURING
+ rc = [tool runWithArguments:[[NSProcessInfo processInfo] arguments]];
+ NS_HANDLER
+ abort();
+ NS_ENDHANDLER;
+
+ [tool release];
+ }
+ else
+ rc = 1;
+
+ [pool release];
+ return rc;
+}
--- /dev/null
+2004-08-20 Helge Hess <helge.hess@opengroupware.org>
+
+ * moved in NGLdap samples from sope-core
+
+2004-06-27 Helge Hess <helge.hess@opengroupware.org>
+
+ * ldap2dsml.m: fixed a compile warning
+
+2004-06-21 Helge Hess <helge.hess@opengroupware.org>
+
+ * common.h: fixed compatibility with gstep-base
+
+2004-01-19 Helge Hess <helge.hess@opengroupware.org>
+
+ * ldapls.m: minor fixes (moved NSAutoreleasePool to correct place)
+
+2004-01-11 Helge Hess <helge.hess@opengroupware.org>
+
+ * minor cleanups to log messages
+
+2003-05-14 Helge Hess <helge.hess@skyrix.com>
+
+ * some gcc 3.3 warnings fixed
+
+2003-04-03 Helge Hess <helge.hess@skyrix.com>
+
+ * GNUmakefile: added ldapchkpwd tool
+
+ * ldap2dsml.m: added autorelease-pool to main()
+
+2002-11-21 Helge Hess <helge.hess@skyrix.com>
+
+ * added ldapls, ldap2dsml as examples for NGLdap
--- /dev/null
+# $Id$
+
+include $(GNUSTEP_MAKEFILES)/common.make
+
+TOOL_NAME = \
+ ldapls \
+ ldap2dsml \
+ ldapchkpwd \
+ imapquota \
+
+ldapls_OBJC_FILES = ldapls.m
+ldap2dsml_OBJC_FILES = ldap2dsml.m
+ldapchkpwd_OBJC_FILES = ldapchkpwd.m
+
+#TOOL_NAME = #pwd-check
+#pwd-check_OBJC_FILES = pwd-check.m
+
+ldapls_TOOL_LIBS += -lNGLdap
+ldap2dsml_TOOL_LIBS += -lNGLdap
+ldapchkpwd_TOOL_LIBS += -lNGLdap
+
+-include GNUmakefile.preamble
+include $(GNUSTEP_MAKEFILES)/tool.make
+-include GNUmakefile.postamble
--- /dev/null
+# $Id$
+
+ADDITIONAL_INCLUDE_DIRS += \
+ -I.. \
+ -I../NGStreams \
+ -I../NGExtensions \
+
+ADDITIONAL_LIB_DIRS += \
+ -L../EOControl/$(GNUSTEP_OBJ_DIR) \
+ -L../NGExtensions/$(GNUSTEP_OBJ_DIR) \
+ -L../NGStreams/$(GNUSTEP_OBJ_DIR) \
+ -L../NGLdap/$(GNUSTEP_OBJ_DIR) \
+
+ADDITIONAL_TOOL_LIBS += \
+ -lNGStreams -lNGExtensions -lEOControl \
+ -lDOM -lSaxObjC
+
--- /dev/null
+# $Id$
+
+This directory contains sample programs for the skyrix-core libraries.
+
+Tools
+=====
+
+mime2xml - read a MIME file and output the structure as XML
+
+imapls - list IMAP4 server directories, sample for NGImap4FileManager
+
+bmlookup - perform resource lookups using the NGExtensions NGBundleManager
+ class
+
+fmdls - list directories using the NGFileManager directory-datasource
+ implementation
+
+subclassing - test runtime subclassing in the Objective-C runtime
+ (NGObjCRuntime in NGExtensions)
+
+testdirenum - test the NGDirectoryEnumerator
+
+ldapls - an 'ls' for LDAP directories
+ldap2dsml - return the output of an LDAP server as DSML (directory service
+ markup language)
+ldapchkpwd - check whether a login/password combo would be authenticated
--- /dev/null
+/*
+ Copyright (C) 2000-2003 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: ldap2dsml.m 4 2004-08-20 17:04:31Z helge $
+
+#import <Foundation/NSObject.h>
+#import <SaxObjC/SaxXMLReader.h>
+#import <NGLdap/NGLdapAttribute.h>
+#import <NGLdap/NGLdapEntry.h>
+#import <NGLdap/NGLdapConnection.h>
+#include "common.h"
+
+@interface DSMLSaxProducer : NSObject
+{
+ id<NSObject,SaxContentHandler> contentHandler;
+ id<NSObject,SaxErrorHandler> errorHandler;
+}
+
+- (void)setContentHandler:(id<NSObject,SaxContentHandler>)_handler;
+- (void)setErrorHandler:(id<NSObject,SaxErrorHandler>)_handler;
+
+- (void)produceOnConnection:(NGLdapConnection *)_con dn:(NSString *)_dn;
+
+@end
+
+static NSString *XMLNS_DSML = @"http://wwww.dsml.org/DSML";
+
+@implementation DSMLSaxProducer
+
+- (void)dealloc {
+ [self->errorHandler release];
+ [self->contentHandler release];
+ [super dealloc];
+}
+
+- (void)setContentHandler:(id<NSObject,SaxContentHandler>)_handler {
+ ASSIGN(self->contentHandler, _handler);
+}
+- (void)setErrorHandler:(id<NSObject,SaxErrorHandler>)_handler {
+ ASSIGN(self->errorHandler, _handler);
+}
+
+- (void)_produceAttribute:(NGLdapAttribute *)_attribute
+ ofEntry:(NGLdapEntry *)_entry
+{
+ SaxAttributes *attrs;
+
+ attrs = [[SaxAttributes alloc] init];
+
+ [attrs addAttribute:@"name" uri:XMLNS_DSML rawName:@"name"
+ type:@"CDATA"
+ value:[_attribute attributeName]];
+
+ [self->contentHandler
+ startElement:@"attr"
+ namespace:XMLNS_DSML
+ rawName:@"attr"
+ attributes:attrs];
+
+ [attrs release]; attrs = nil;
+
+ /* encode values */
+ {
+ NSEnumerator *values;
+ NSString *value;
+
+ values = [_attribute stringValueEnumerator];
+ while ((value = [values nextObject])) {
+ unsigned len;
+ unichar *chars;
+
+ if ((len = [value length]) == 0)
+ continue;
+
+ chars = calloc(len + 1, sizeof(unichar));
+ [value getCharacters:chars];
+
+ [self->contentHandler
+ startElement:@"value"
+ namespace:XMLNS_DSML
+ rawName:@"value"
+ attributes:nil];
+
+ [self->contentHandler characters:chars length:len];
+
+ if (chars) free(chars);
+
+ [self->contentHandler
+ endElement:@"value"
+ namespace:XMLNS_DSML
+ rawName:@"value"];
+ }
+ }
+
+ [self->contentHandler
+ endElement:@"attr"
+ namespace:XMLNS_DSML
+ rawName:@"attr"];
+}
+
+- (void)_produceObjectClassOfEntry:(NGLdapEntry *)_entry {
+ NGLdapAttribute *attr;
+
+ if ((attr = [_entry attributeWithName:@"objectclass"]) == nil)
+ return;
+
+ [self->contentHandler
+ startElement:@"objectclass"
+ namespace:XMLNS_DSML
+ rawName:@"objectclass"
+ attributes:nil];
+
+ /* encode values */
+ {
+ NSEnumerator *values;
+ NSString *value;
+
+ values = [attr stringValueEnumerator];
+ while ((value = [values nextObject])) {
+ unsigned len;
+ unichar *chars;
+
+ if ((len = [value length]) == 0)
+ continue;
+
+ chars = calloc(len + 1, sizeof(unichar));
+ [value getCharacters:chars];
+
+ [self->contentHandler
+ startElement:@"objectclass"
+ namespace:XMLNS_DSML
+ rawName:@"objectclass"
+ attributes:nil];
+
+ [self->contentHandler characters:chars length:len];
+
+ if (chars) free(chars);
+
+ [self->contentHandler
+ endElement:@"objectclass"
+ namespace:XMLNS_DSML
+ rawName:@"objectclass"];
+ }
+ }
+
+ [self->contentHandler
+ endElement:@"objectclass"
+ namespace:XMLNS_DSML
+ rawName:@"objectclass"];
+}
+
+- (void)_produceEntry:(NGLdapEntry *)_entry {
+ SaxAttributes *attrs;
+ NSEnumerator *names;
+ NSString *cname;
+
+ attrs = [[SaxAttributes alloc] init];
+
+ [attrs addAttribute:@"dn" uri:XMLNS_DSML rawName:@"dn"
+ type:@"CDATA"
+ value:[_entry dn]];
+
+ [self->contentHandler
+ startElement:@"entry"
+ namespace:XMLNS_DSML
+ rawName:@"entry"
+ attributes:attrs];
+
+ [attrs release]; attrs = nil;
+
+ /* attributes */
+
+ [self _produceObjectClassOfEntry:_entry];
+
+ names = [[_entry attributeNames] objectEnumerator];
+ while ((cname = [names nextObject])) {
+ NGLdapAttribute *attr;
+
+ if ([cname isEqualToString:@"objectclass"])
+ continue;
+
+ if ((attr = [_entry attributeWithName:cname]))
+ [self _produceAttribute:attr ofEntry:_entry];
+ }
+
+ [self->contentHandler
+ endElement:@"entry"
+ namespace:XMLNS_DSML
+ rawName:@"entry"];
+}
+
+- (void)_produceEntries:(NSEnumerator *)_entries {
+ NGLdapEntry *entry;
+
+ [self->contentHandler
+ startElement:@"directory-entries"
+ namespace:XMLNS_DSML
+ rawName:@"directory-entries"
+ attributes:nil];
+
+ while ((entry = [_entries nextObject]))
+ [self _produceEntry:entry];
+
+ [self->contentHandler
+ endElement:@"directory-entries"
+ namespace:XMLNS_DSML
+ rawName:@"directory-entries"];
+}
+
+- (void)produceOnConnection:(NGLdapConnection *)_con dn:(NSString *)_dn {
+ [self->contentHandler startDocument];
+ [self->contentHandler startPrefixMapping:@"" uri:XMLNS_DSML];
+
+ [self->contentHandler
+ startElement:@"dsml"
+ namespace:XMLNS_DSML
+ rawName:@"dsml"
+ attributes:nil];
+
+ [self _produceEntries:[_con flatSearchAtBaseDN:_dn
+ qualifier:nil
+ attributes:nil]];
+
+ [self->contentHandler endElement:@"dsml" namespace:XMLNS_DSML rawName:@"dsml"];
+
+ [self->contentHandler endPrefixMapping:@""];
+ [self->contentHandler endDocument];
+}
+
+@end /* DSMLSaxProducer */
+
+#import <SaxObjC/SaxDefaultHandler.h>
+
+@interface DSMLSaxOutputter : SaxDefaultHandler
+{
+ int level;
+}
+@end
+
+@implementation DSMLSaxOutputter
+
+- (void)startElement:(NSString *)_localName
+ namespace:(NSString *)_ns
+ rawName:(NSString *)_rawName
+ attributes:(id<SaxAttributes>)_attrs
+{
+ int i, count;
+
+ level++;
+ for (i = 0; i < level; i++)
+ printf(" ");
+ printf("<dsml:%s", [_localName cString]);
+
+ if (level <= 1) {
+ printf(" xmlns:dsml='%s'", [_ns cString]);
+ }
+
+ for (i = 0, count = [_attrs count]; i < count; i++) {
+ printf(" %s='%s'",
+ [[_attrs nameAtIndex:i] cString],
+ [[_attrs valueAtIndex:i] cString]);
+ }
+
+ printf(">\n");
+}
+
+- (void)endElement:(NSString *)_localName
+ namespace:(NSString *)_ns
+ rawName:(NSString *)_rawName
+{
+ int i;
+ for (i = 0; i < level; i++)
+ printf(" ");
+ printf("</dsml:%s>\n", [_localName cString]);
+ level--;
+}
+
+- (void)characters:(unichar *)_chars length:(int)_len {
+ int i;
+ NSString *s;
+
+ for (i = 0; i < level + 1; i++)
+ printf(" ");
+
+ s = [[NSString alloc] initWithCharacters:_chars length:_len];
+ printf("%s\n", [s cString]);
+ [s release];
+}
+
+@end /* DSMLSaxOutputter */
+
+#import <Foundation/Foundation.h>
+
+int main(int argc, char **argv, char **env) {
+ NSAutoreleasePool *pool;
+ NSUserDefaults *ud;
+ NSArray *args;
+ DSMLSaxProducer *cpu;
+ DSMLSaxOutputter *out;
+
+ pool = [[NSAutoreleasePool alloc] init];
+#if LIB_FOUNDATION_LIBRARY
+ [NSProcessInfo initializeWithArguments:argv count:argc environment:env];
+#endif
+
+ args = [[NSProcessInfo processInfo] arguments];
+ if ([args count] < 1) {
+ NSLog(@"usage: %@ <files>", [args objectAtIndex:0]);
+ exit(1);
+ }
+ else if ([args count] == 1)
+ args = [args arrayByAddingObject:@"."];
+
+ ud = [NSUserDefaults standardUserDefaults];
+
+ cpu = [[DSMLSaxProducer alloc] init];
+ out = [[DSMLSaxOutputter alloc] init];
+ [cpu setContentHandler:out];
+ [cpu setErrorHandler:out];
+
+#if 0
+ fm = [[NGLdapFileManager alloc]
+ initWithHostName:[ud stringForKey:@"LDAPHost"]
+ port:0
+ bindDN:[ud stringForKey:@"LDAPBindDN"]
+ credentials:[ud stringForKey:@"LDAPPassword"]
+ rootDN:[ud stringForKey:@"LDAPRootDN"]];
+ fm = [fm autorelease];
+#endif
+
+ {
+ NGLdapConnection *con;
+
+ con = [[NGLdapConnection alloc]
+ initWithHostName:[ud stringForKey:@"LDAPHost"]
+ port:0];
+ [con bindWithMethod:@"simple"
+ binddn:[ud stringForKey:@"LDAPBindDN"]
+ credentials:[ud stringForKey:@"LDAPPassword"]];
+
+ [cpu produceOnConnection:con
+ dn:[ud stringForKey:@"LDAPRootDN"]];
+
+ [con release];
+ }
+ [pool release];
+ exit(0);
+ return 0;
+}
--- /dev/null
+/*
+ Copyright (C) 2000-2003 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: ldapchkpwd.m 4 2004-08-20 17:04:31Z helge $
+
+#import <EOControl/EOControl.h>
+#import <NGLdap/NGLdapConnection.h>
+#include "common.h"
+
+int main(int argc, char **argv, char **env) {
+ NSAutoreleasePool *pool;
+ NSUserDefaults *ud;
+ NSArray *args;
+ BOOL ok = NO;
+
+#if LIB_FOUNDATION_LIBRARY
+ [NSProcessInfo initializeWithArguments:argv count:argc environment:env];
+#endif
+
+ pool = [[NSAutoreleasePool alloc] init];
+
+ args = [[NSProcessInfo processInfo] arguments];
+ if ([args count] < 3) {
+ NSLog(@"usage: %@ <user> <password>", [args objectAtIndex:0]);
+ exit(1);
+ }
+
+ ud = [NSUserDefaults standardUserDefaults];
+
+ ok = [NGLdapConnection checkPassword:[args objectAtIndex:2]
+ ofLogin:[args objectAtIndex:1]
+ atBaseDN:[ud stringForKey:@"LDAPRootDN"]
+ onHost:[ud stringForKey:@"LDAPHost"]
+ port:0];
+ if (ok)
+ printf("authenticated successfully.\n");
+ else
+ printf("did not authenticate !\n");
+
+ [pool release];
+
+ exit(0);
+ return 0;
+}
--- /dev/null
+/*
+ Copyright (C) 2000-2004 SKYRIX Software AG
+
+ 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
+ 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: ldapls.m 4 2004-08-20 17:04:31Z helge $
+
+#include <EOControl/EOControl.h>
+#include <NGLdap/NGLdapFileManager.h>
+#include "common.h"
+
+int main(int argc, char **argv, char **env) {
+ NSAutoreleasePool *pool;
+ NSUserDefaults *ud;
+ NSArray *args;
+ NSFileManager *fm;
+ unsigned i;
+ BOOL doDeep = NO;
+
+ pool = [[NSAutoreleasePool alloc] init];
+#if LIB_FOUNDATION_LIBRARY
+ [NSProcessInfo initializeWithArguments:argv count:argc environment:env];
+#endif
+
+ args = [[NSProcessInfo processInfo] arguments];
+ if ([args count] < 1) {
+ NSLog(@"usage: %@ <files>", [args objectAtIndex:0]);
+ exit(1);
+ }
+ else if ([args count] == 1)
+ args = [args arrayByAddingObject:@"."];
+
+ ud = [NSUserDefaults standardUserDefaults];
+
+ fm = [[NGLdapFileManager alloc]
+ initWithHostName:[ud stringForKey:@"LDAPHost"]
+ port:0
+ bindDN:[ud stringForKey:@"LDAPBindDN"]
+ credentials:[ud stringForKey:@"LDAPPassword"]
+ rootDN:[ud stringForKey:@"LDAPRootDN"]];
+ fm = [fm autorelease];
+
+ if (fm == nil) {
+ NSLog(@"could not open LDAP connection (got no filemanager).");
+ exit(2);
+ }
+
+ // NSLog(@"LDAP: %@", fm);
+
+ for (i = 1; i < [args count]; i++) {
+ NSString *path;
+ BOOL isDir;
+
+ path = [args objectAtIndex:i];
+
+ if ([path hasPrefix:@"-r"]) {
+ doDeep = YES;
+ continue;
+ }
+
+ if ([path hasPrefix:@"-"]) {
+ i++;
+ continue;
+ }
+
+ if (![fm fileExistsAtPath:path isDirectory:&isDir]) {
+ NSLog(@"file/directory does not exist: %@", path);
+ continue;
+ }
+
+ if (isDir) {
+ NSArray *dirContents;
+ unsigned i, count;
+ NSString *mid;
+
+ dirContents = doDeep
+ ? [fm subpathsAtPath:path]
+ : [fm directoryContentsAtPath:path];
+
+ for (i = 0, count = [dirContents count]; i < count; i++) {
+ NSString *cpath, *apath;
+ NSDictionary *info;
+ NSString *owner;
+ NSString *date;
+
+ cpath = [dirContents objectAtIndex:i];
+ apath = [path stringByAppendingPathComponent:cpath];
+
+ info = [fm fileAttributesAtPath:apath
+ traverseLink:NO];
+
+ mid = [[info objectForKey:@"NSFileIdentifier"] description];
+ if ([mid length] > 39) {
+ mid = [mid substringToIndex:37];
+ mid = [mid stringByAppendingString:@"..."];
+ }
+
+ owner = [info objectForKey:NSFileOwnerAccountName];
+ date = [[info objectForKey:NSFileModificationDate] description];
+
+ if (owner == nil)
+ owner = @"-";
+ if (date == nil)
+ date = @"-";
+
+ /* id uid date name */
+ printf("%-34s %20s %-32s %s",
+ [mid cString],
+ [owner cString],
+ [date cString],
+ [apath cString]);
+
+ if ([[info objectForKey:NSFileType]
+ isEqualToString:NSFileTypeDirectory])
+ printf("/\n");
+ else
+ printf("\n");
+ }
+ }
+ else {
+ /* a file */
+ NSData *contents;
+ NSString *s;
+
+ if ((contents = [fm contentsAtPath:path]) == nil) {
+ NSLog(@"could not get content of record: '%@'", path);
+ }
+ else {
+ s = [[NSString alloc] initWithData:contents
+ encoding:[NSString defaultCStringEncoding]];
+ printf("%s\n", [s cString]);
+ [s release];
+ }
+ }
+ }
+
+ [pool release];
+
+ exit(0);
+ return 0;
+}
+++ /dev/null
-include $(GNUSTEP_MAKEFILES)/common.make
-
-PACKAGE_NAME=sope-mime
-VERSION=4.3.0
-
-SUBPROJECTS = \
- NGMime
-
-include $(GNUSTEP_MAKEFILES)/aggregate.make
--- /dev/null
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL. It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it. You can use it for
+your libraries, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library. If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+\f
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software. To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+ Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs. This
+license, the GNU Library General Public License, applies to certain
+designated libraries. This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+ The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it. Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program. However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+ Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries. We
+concluded that weaker conditions might promote sharing better.
+
+ However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves. This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them. (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.) The hope is that this
+will lead to faster development of free libraries.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+ Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+\f
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License"). Each licensee is
+addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+\f
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+\f
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+\f
+ 6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ c) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ d) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+\f
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+\f
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+\f
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+\f
+ Appendix: How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
--- /dev/null
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL. It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it. You can use it for
+your libraries, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library. If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+\f
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software. To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+ Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs. This
+license, the GNU Library General Public License, applies to certain
+designated libraries. This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+ The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it. Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program. However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+ Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries. We
+concluded that weaker conditions might promote sharing better.
+
+ However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves. This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them. (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.) The hope is that this
+will lead to faster development of free libraries.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+ Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+\f
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License"). Each licensee is
+addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+\f
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+\f
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+\f
+ 6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ c) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ d) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+\f
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+\f
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+\f
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+\f
+ Appendix: How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
2004-08-20 Helge Hess <helge.hess@opengroupware.org>
- * moved to sope-mime top
+ * moved to sope-mime
* moved to SOPE 4.3 (v4.3.172)
--- /dev/null
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ Version 2, June 1991
+
+ Copyright (C) 1991 Free Software Foundation, Inc.
+ 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA
+ Everyone is permitted to copy and distribute verbatim copies
+ of this license document, but changing it is not allowed.
+
+[This is the first released version of the library GPL. It is
+ numbered 2 because it goes with version 2 of the ordinary GPL.]
+
+ Preamble
+
+ The licenses for most software are designed to take away your
+freedom to share and change it. By contrast, the GNU General Public
+Licenses are intended to guarantee your freedom to share and change
+free software--to make sure the software is free for all its users.
+
+ This license, the Library General Public License, applies to some
+specially designated Free Software Foundation software, and to any
+other libraries whose authors decide to use it. You can use it for
+your libraries, too.
+
+ When we speak of free software, we are referring to freedom, not
+price. Our General Public Licenses are designed to make sure that you
+have the freedom to distribute copies of free software (and charge for
+this service if you wish), that you receive source code or can get it
+if you want it, that you can change the software or use pieces of it
+in new free programs; and that you know you can do these things.
+
+ To protect your rights, we need to make restrictions that forbid
+anyone to deny you these rights or to ask you to surrender the rights.
+These restrictions translate to certain responsibilities for you if
+you distribute copies of the library, or if you modify it.
+
+ For example, if you distribute copies of the library, whether gratis
+or for a fee, you must give the recipients all the rights that we gave
+you. You must make sure that they, too, receive or can get the source
+code. If you link a program with the library, you must provide
+complete object files to the recipients so that they can relink them
+with the library, after making changes to the library and recompiling
+it. And you must show them these terms so they know their rights.
+
+ Our method of protecting your rights has two steps: (1) copyright
+the library, and (2) offer you this license which gives you legal
+permission to copy, distribute and/or modify the library.
+
+ Also, for each distributor's protection, we want to make certain
+that everyone understands that there is no warranty for this free
+library. If the library is modified by someone else and passed on, we
+want its recipients to know that what they have is not the original
+version, so that any problems introduced by others will not reflect on
+the original authors' reputations.
+\f
+ Finally, any free program is threatened constantly by software
+patents. We wish to avoid the danger that companies distributing free
+software will individually obtain patent licenses, thus in effect
+transforming the program into proprietary software. To prevent this,
+we have made it clear that any patent must be licensed for everyone's
+free use or not licensed at all.
+
+ Most GNU software, including some libraries, is covered by the ordinary
+GNU General Public License, which was designed for utility programs. This
+license, the GNU Library General Public License, applies to certain
+designated libraries. This license is quite different from the ordinary
+one; be sure to read it in full, and don't assume that anything in it is
+the same as in the ordinary license.
+
+ The reason we have a separate public license for some libraries is that
+they blur the distinction we usually make between modifying or adding to a
+program and simply using it. Linking a program with a library, without
+changing the library, is in some sense simply using the library, and is
+analogous to running a utility program or application program. However, in
+a textual and legal sense, the linked executable is a combined work, a
+derivative of the original library, and the ordinary General Public License
+treats it as such.
+
+ Because of this blurred distinction, using the ordinary General
+Public License for libraries did not effectively promote software
+sharing, because most developers did not use the libraries. We
+concluded that weaker conditions might promote sharing better.
+
+ However, unrestricted linking of non-free programs would deprive the
+users of those programs of all benefit from the free status of the
+libraries themselves. This Library General Public License is intended to
+permit developers of non-free programs to use free libraries, while
+preserving your freedom as a user of such programs to change the free
+libraries that are incorporated in them. (We have not seen how to achieve
+this as regards changes in header files, but we have achieved it as regards
+changes in the actual functions of the Library.) The hope is that this
+will lead to faster development of free libraries.
+
+ The precise terms and conditions for copying, distribution and
+modification follow. Pay close attention to the difference between a
+"work based on the library" and a "work that uses the library". The
+former contains code derived from the library, while the latter only
+works together with the library.
+
+ Note that it is possible for a library to be covered by the ordinary
+General Public License rather than by this special one.
+\f
+ GNU LIBRARY GENERAL PUBLIC LICENSE
+ TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
+
+ 0. This License Agreement applies to any software library which
+contains a notice placed by the copyright holder or other authorized
+party saying it may be distributed under the terms of this Library
+General Public License (also called "this License"). Each licensee is
+addressed as "you".
+
+ A "library" means a collection of software functions and/or data
+prepared so as to be conveniently linked with application programs
+(which use some of those functions and data) to form executables.
+
+ The "Library", below, refers to any such software library or work
+which has been distributed under these terms. A "work based on the
+Library" means either the Library or any derivative work under
+copyright law: that is to say, a work containing the Library or a
+portion of it, either verbatim or with modifications and/or translated
+straightforwardly into another language. (Hereinafter, translation is
+included without limitation in the term "modification".)
+
+ "Source code" for a work means the preferred form of the work for
+making modifications to it. For a library, complete source code means
+all the source code for all modules it contains, plus any associated
+interface definition files, plus the scripts used to control compilation
+and installation of the library.
+
+ Activities other than copying, distribution and modification are not
+covered by this License; they are outside its scope. The act of
+running a program using the Library is not restricted, and output from
+such a program is covered only if its contents constitute a work based
+on the Library (independent of the use of the Library in a tool for
+writing it). Whether that is true depends on what the Library does
+and what the program that uses the Library does.
+
+ 1. You may copy and distribute verbatim copies of the Library's
+complete source code as you receive it, in any medium, provided that
+you conspicuously and appropriately publish on each copy an
+appropriate copyright notice and disclaimer of warranty; keep intact
+all the notices that refer to this License and to the absence of any
+warranty; and distribute a copy of this License along with the
+Library.
+
+ You may charge a fee for the physical act of transferring a copy,
+and you may at your option offer warranty protection in exchange for a
+fee.
+\f
+ 2. You may modify your copy or copies of the Library or any portion
+of it, thus forming a work based on the Library, and copy and
+distribute such modifications or work under the terms of Section 1
+above, provided that you also meet all of these conditions:
+
+ a) The modified work must itself be a software library.
+
+ b) You must cause the files modified to carry prominent notices
+ stating that you changed the files and the date of any change.
+
+ c) You must cause the whole of the work to be licensed at no
+ charge to all third parties under the terms of this License.
+
+ d) If a facility in the modified Library refers to a function or a
+ table of data to be supplied by an application program that uses
+ the facility, other than as an argument passed when the facility
+ is invoked, then you must make a good faith effort to ensure that,
+ in the event an application does not supply such function or
+ table, the facility still operates, and performs whatever part of
+ its purpose remains meaningful.
+
+ (For example, a function in a library to compute square roots has
+ a purpose that is entirely well-defined independent of the
+ application. Therefore, Subsection 2d requires that any
+ application-supplied function or table used by this function must
+ be optional: if the application does not supply it, the square
+ root function must still compute square roots.)
+
+These requirements apply to the modified work as a whole. If
+identifiable sections of that work are not derived from the Library,
+and can be reasonably considered independent and separate works in
+themselves, then this License, and its terms, do not apply to those
+sections when you distribute them as separate works. But when you
+distribute the same sections as part of a whole which is a work based
+on the Library, the distribution of the whole must be on the terms of
+this License, whose permissions for other licensees extend to the
+entire whole, and thus to each and every part regardless of who wrote
+it.
+
+Thus, it is not the intent of this section to claim rights or contest
+your rights to work written entirely by you; rather, the intent is to
+exercise the right to control the distribution of derivative or
+collective works based on the Library.
+
+In addition, mere aggregation of another work not based on the Library
+with the Library (or with a work based on the Library) on a volume of
+a storage or distribution medium does not bring the other work under
+the scope of this License.
+
+ 3. You may opt to apply the terms of the ordinary GNU General Public
+License instead of this License to a given copy of the Library. To do
+this, you must alter all the notices that refer to this License, so
+that they refer to the ordinary GNU General Public License, version 2,
+instead of to this License. (If a newer version than version 2 of the
+ordinary GNU General Public License has appeared, then you can specify
+that version instead if you wish.) Do not make any other change in
+these notices.
+\f
+ Once this change is made in a given copy, it is irreversible for
+that copy, so the ordinary GNU General Public License applies to all
+subsequent copies and derivative works made from that copy.
+
+ This option is useful when you wish to copy part of the code of
+the Library into a program that is not a library.
+
+ 4. You may copy and distribute the Library (or a portion or
+derivative of it, under Section 2) in object code or executable form
+under the terms of Sections 1 and 2 above provided that you accompany
+it with the complete corresponding machine-readable source code, which
+must be distributed under the terms of Sections 1 and 2 above on a
+medium customarily used for software interchange.
+
+ If distribution of object code is made by offering access to copy
+from a designated place, then offering equivalent access to copy the
+source code from the same place satisfies the requirement to
+distribute the source code, even though third parties are not
+compelled to copy the source along with the object code.
+
+ 5. A program that contains no derivative of any portion of the
+Library, but is designed to work with the Library by being compiled or
+linked with it, is called a "work that uses the Library". Such a
+work, in isolation, is not a derivative work of the Library, and
+therefore falls outside the scope of this License.
+
+ However, linking a "work that uses the Library" with the Library
+creates an executable that is a derivative of the Library (because it
+contains portions of the Library), rather than a "work that uses the
+library". The executable is therefore covered by this License.
+Section 6 states terms for distribution of such executables.
+
+ When a "work that uses the Library" uses material from a header file
+that is part of the Library, the object code for the work may be a
+derivative work of the Library even though the source code is not.
+Whether this is true is especially significant if the work can be
+linked without the Library, or if the work is itself a library. The
+threshold for this to be true is not precisely defined by law.
+
+ If such an object file uses only numerical parameters, data
+structure layouts and accessors, and small macros and small inline
+functions (ten lines or less in length), then the use of the object
+file is unrestricted, regardless of whether it is legally a derivative
+work. (Executables containing this object code plus portions of the
+Library will still fall under Section 6.)
+
+ Otherwise, if the work is a derivative of the Library, you may
+distribute the object code for the work under the terms of Section 6.
+Any executables containing that work also fall under Section 6,
+whether or not they are linked directly with the Library itself.
+\f
+ 6. As an exception to the Sections above, you may also compile or
+link a "work that uses the Library" with the Library to produce a
+work containing portions of the Library, and distribute that work
+under terms of your choice, provided that the terms permit
+modification of the work for the customer's own use and reverse
+engineering for debugging such modifications.
+
+ You must give prominent notice with each copy of the work that the
+Library is used in it and that the Library and its use are covered by
+this License. You must supply a copy of this License. If the work
+during execution displays copyright notices, you must include the
+copyright notice for the Library among them, as well as a reference
+directing the user to the copy of this License. Also, you must do one
+of these things:
+
+ a) Accompany the work with the complete corresponding
+ machine-readable source code for the Library including whatever
+ changes were used in the work (which must be distributed under
+ Sections 1 and 2 above); and, if the work is an executable linked
+ with the Library, with the complete machine-readable "work that
+ uses the Library", as object code and/or source code, so that the
+ user can modify the Library and then relink to produce a modified
+ executable containing the modified Library. (It is understood
+ that the user who changes the contents of definitions files in the
+ Library will not necessarily be able to recompile the application
+ to use the modified definitions.)
+
+ b) Accompany the work with a written offer, valid for at
+ least three years, to give the same user the materials
+ specified in Subsection 6a, above, for a charge no more
+ than the cost of performing this distribution.
+
+ c) If distribution of the work is made by offering access to copy
+ from a designated place, offer equivalent access to copy the above
+ specified materials from the same place.
+
+ d) Verify that the user has already received a copy of these
+ materials or that you have already sent this user a copy.
+
+ For an executable, the required form of the "work that uses the
+Library" must include any data and utility programs needed for
+reproducing the executable from it. However, as a special exception,
+the source code distributed need not include anything that is normally
+distributed (in either source or binary form) with the major
+components (compiler, kernel, and so on) of the operating system on
+which the executable runs, unless that component itself accompanies
+the executable.
+
+ It may happen that this requirement contradicts the license
+restrictions of other proprietary libraries that do not normally
+accompany the operating system. Such a contradiction means you cannot
+use both them and the Library together in an executable that you
+distribute.
+\f
+ 7. You may place library facilities that are a work based on the
+Library side-by-side in a single library together with other library
+facilities not covered by this License, and distribute such a combined
+library, provided that the separate distribution of the work based on
+the Library and of the other library facilities is otherwise
+permitted, and provided that you do these two things:
+
+ a) Accompany the combined library with a copy of the same work
+ based on the Library, uncombined with any other library
+ facilities. This must be distributed under the terms of the
+ Sections above.
+
+ b) Give prominent notice with the combined library of the fact
+ that part of it is a work based on the Library, and explaining
+ where to find the accompanying uncombined form of the same work.
+
+ 8. You may not copy, modify, sublicense, link with, or distribute
+the Library except as expressly provided under this License. Any
+attempt otherwise to copy, modify, sublicense, link with, or
+distribute the Library is void, and will automatically terminate your
+rights under this License. However, parties who have received copies,
+or rights, from you under this License will not have their licenses
+terminated so long as such parties remain in full compliance.
+
+ 9. You are not required to accept this License, since you have not
+signed it. However, nothing else grants you permission to modify or
+distribute the Library or its derivative works. These actions are
+prohibited by law if you do not accept this License. Therefore, by
+modifying or distributing the Library (or any work based on the
+Library), you indicate your acceptance of this License to do so, and
+all its terms and conditions for copying, distributing or modifying
+the Library or works based on it.
+
+ 10. Each time you redistribute the Library (or any work based on the
+Library), the recipient automatically receives a license from the
+original licensor to copy, distribute, link with or modify the Library
+subject to these terms and conditions. You may not impose any further
+restrictions on the recipients' exercise of the rights granted herein.
+You are not responsible for enforcing compliance by third parties to
+this License.
+\f
+ 11. If, as a consequence of a court judgment or allegation of patent
+infringement or for any other reason (not limited to patent issues),
+conditions are imposed on you (whether by court order, agreement or
+otherwise) that contradict the conditions of this License, they do not
+excuse you from the conditions of this License. If you cannot
+distribute so as to satisfy simultaneously your obligations under this
+License and any other pertinent obligations, then as a consequence you
+may not distribute the Library at all. For example, if a patent
+license would not permit royalty-free redistribution of the Library by
+all those who receive copies directly or indirectly through you, then
+the only way you could satisfy both it and this License would be to
+refrain entirely from distribution of the Library.
+
+If any portion of this section is held invalid or unenforceable under any
+particular circumstance, the balance of the section is intended to apply,
+and the section as a whole is intended to apply in other circumstances.
+
+It is not the purpose of this section to induce you to infringe any
+patents or other property right claims or to contest validity of any
+such claims; this section has the sole purpose of protecting the
+integrity of the free software distribution system which is
+implemented by public license practices. Many people have made
+generous contributions to the wide range of software distributed
+through that system in reliance on consistent application of that
+system; it is up to the author/donor to decide if he or she is willing
+to distribute software through any other system and a licensee cannot
+impose that choice.
+
+This section is intended to make thoroughly clear what is believed to
+be a consequence of the rest of this License.
+
+ 12. If the distribution and/or use of the Library is restricted in
+certain countries either by patents or by copyrighted interfaces, the
+original copyright holder who places the Library under this License may add
+an explicit geographical distribution limitation excluding those countries,
+so that distribution is permitted only in or among countries not thus
+excluded. In such case, this License incorporates the limitation as if
+written in the body of this License.
+
+ 13. The Free Software Foundation may publish revised and/or new
+versions of the Library General Public License from time to time.
+Such new versions will be similar in spirit to the present version,
+but may differ in detail to address new problems or concerns.
+
+Each version is given a distinguishing version number. If the Library
+specifies a version number of this License which applies to it and
+"any later version", you have the option of following the terms and
+conditions either of that version or of any later version published by
+the Free Software Foundation. If the Library does not specify a
+license version number, you may choose any version ever published by
+the Free Software Foundation.
+\f
+ 14. If you wish to incorporate parts of the Library into other free
+programs whose distribution conditions are incompatible with these,
+write to the author to ask for permission. For software which is
+copyrighted by the Free Software Foundation, write to the Free
+Software Foundation; we sometimes make exceptions for this. Our
+decision will be guided by the two goals of preserving the free status
+of all derivatives of our free software and of promoting the sharing
+and reuse of software generally.
+
+ NO WARRANTY
+
+ 15. BECAUSE THE LIBRARY IS LICENSED FREE OF CHARGE, THERE IS NO
+WARRANTY FOR THE LIBRARY, TO THE EXTENT PERMITTED BY APPLICABLE LAW.
+EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR
+OTHER PARTIES PROVIDE THE LIBRARY "AS IS" WITHOUT WARRANTY OF ANY
+KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE
+IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
+PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE
+LIBRARY IS WITH YOU. SHOULD THE LIBRARY PROVE DEFECTIVE, YOU ASSUME
+THE COST OF ALL NECESSARY SERVICING, REPAIR OR CORRECTION.
+
+ 16. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
+WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY
+AND/OR REDISTRIBUTE THE LIBRARY AS PERMITTED ABOVE, BE LIABLE TO YOU
+FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
+CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE THE
+LIBRARY (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA BEING
+RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD PARTIES OR A
+FAILURE OF THE LIBRARY TO OPERATE WITH ANY OTHER SOFTWARE), EVEN IF
+SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF SUCH
+DAMAGES.
+
+ END OF TERMS AND CONDITIONS
+\f
+ Appendix: How to Apply These Terms to Your New Libraries
+
+ If you develop a new library, and you want it to be of the greatest
+possible use to the public, we recommend making it free software that
+everyone can redistribute and change. You can do so by permitting
+redistribution under these terms (or, alternatively, under the terms of the
+ordinary General Public License).
+
+ To apply these terms, attach the following notices to the library. It is
+safest to attach them to the start of each source file to most effectively
+convey the exclusion of warranty; and each file should have at least the
+"copyright" line and a pointer to where the full notice is found.
+
+ <one line to give the library's name and a brief idea of what it does.>
+ Copyright (C) <year> <name of author>
+
+ This library is free software; you can redistribute it and/or
+ modify it under the terms of the GNU Library General Public
+ License as published by the Free Software Foundation; either
+ version 2 of the License, or (at your option) any later version.
+
+ This library 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
+ Library General Public License for more details.
+
+ You should have received a copy of the GNU Library General Public
+ License along with this library; if not, write to the Free
+ Software Foundation, Inc., 59 Temple Place - Suite 330, Boston,
+ MA 02111-1307, USA
+
+Also add information on how to contact you by electronic and paper mail.
+
+You should also get your employer (if you work as a programmer) or your
+school, if any, to sign a "copyright disclaimer" for the library, if
+necessary. Here is a sample; alter the names:
+
+ Yoyodyne, Inc., hereby disclaims all copyright interest in the
+ library `Frob' (a library for tweaking knobs) written by James Random Hacker.
+
+ <signature of Ty Coon>, 1 April 1990
+ Ty Coon, President of Vice
+
+That's all there is to it!
--- /dev/null
+2004-08-20 Helge Hess <helge.hess@opengroupware.org>
+
+ * moved in NGMime samples from sope-core
+
+2004-06-21 Helge Hess <helge.hess@opengroupware.org>
+
+ * common.h: fixed compatibility with gstep-base
+
+2004-04-12 Helge Hess <helge.hess@opengroupware.org>
+
+ * ImapListTool, ImapTool.m, imapls.m: minor code cleanups
+
+2003-05-14 Helge Hess <helge.hess@skyrix.com>
+
+ * some gcc 3.3 warnings fixed
+
+2003-04-01 GNUstep User <helge.hess@skyrix.com>
+
+ * ImapListTool.m: do not use NSFileIdentifier constant
+
+2003-01-07 Helge Hess <helge.hess@skyrix.com>
+
+ * ImapQuotaTool.m, imapquota.m: fixed compilation warnings
+
+Fri Dec 27 10:54:40 2002 Helge Hess <helge.hess@skyrix.com>
+
+ * Mime2XmlTool.m: fixed a protocol warning
+
+Mon Dec 23 15:36:01 2002 Helge Hess <helge.hess@skyrix.com>
+
+ * ImapListTool.m: pass correct filemanager as a parameter
+
+Tue Dec 17 15:07:40 2002 <jan@skyrix.com>
+
+ * imapquota.m: add quota test
+
+2002-11-21 Jan Reichmann <jr@skyrix.com>
+
+ * added Imap-Super class, improve imapls
--- /dev/null
+# $Id$
+
+include $(GNUSTEP_MAKEFILES)/common.make
+
+TOOL_NAME = \
+ mime2xml \
+ imapls \
+ encoding \
+ fmdls \
+ testdirenum \
+ bmlookup \
+ test_qpdecode \
+ eoqual \
+ ldapls \
+ ldap2dsml \
+ ldapchkpwd \
+ imapquota \
+ testsock \
+ httpu_notify \
+ ical2 \
+ ical3 \
+ parserule \
+ testurl \
+
+ifneq ($(OBJC_RUNTIME_LIB),apple)
+TOOL_NAME += subclassing
+endif
+
+imapquota_OBJC_FILES = ImapQuotaTool.m ImapTool.m imapquota.m
+imapget_OBJC_FILES = ImapTool.m imapget.m
+mime2xml_OBJC_FILES = Mime2XmlTool.m mime2xml.m
+imapls_OBJC_FILES = ImapTool.m ImapListTool.m imapls.m
+encoding_OBJC_FILES = EncodingTool.m encoding.m
+subclassing_OBJC_FILES = subclassing.m
+fmdls_OBJC_FILES = fmdls.m
+bmlookup_OBJC_FILES = bmlookup.m
+testdirenum_OBJC_FILES = testdirenum.m
+test_qpdecode_OBJC_FILES = test_qpdecode.m
+eoqual_OBJC_FILES = eoqual.m EOQualTool.m
+ldapls_OBJC_FILES = ldapls.m
+ldap2dsml_OBJC_FILES = ldap2dsml.m
+ldapchkpwd_OBJC_FILES = ldapchkpwd.m
+testsock_OBJC_FILES = testsock.m
+parserule_OBJC_FILES = parserule.m
+httpu_notify_OBJC_FILES = httpu_notify.m
+testurl_OBJC_FILES = testurl.m
+
+ical2_OBJC_FILES = ical2.m
+ical3_OBJC_FILES = ical3.m
+
+#TOOL_NAME = #pwd-check
+#pwd-check_OBJC_FILES = pwd-check.m
+
+ldapls_TOOL_LIBS += -lNGLdap
+ldap2dsml_TOOL_LIBS += -lNGLdap
+ldapchkpwd_TOOL_LIBS += -lNGLdap
+
+ical2_TOOL_LIBS += -lNGiCal -lSaxObjC
+ical3_TOOL_LIBS += -lNGiCal -lSaxObjC
+
+-include GNUmakefile.preamble
+include $(GNUSTEP_MAKEFILES)/tool.make
+-include GNUmakefile.postamble
--- /dev/null
+# $Id$
+
+ADDITIONAL_INCLUDE_DIRS += \
+ -I.. \
+ -I../NGMime \
+ -I../NGStreams \
+ -I../NGExtensions \
+
+ADDITIONAL_LIB_DIRS += \
+ -L../EOControl/$(GNUSTEP_OBJ_DIR) \
+ -L../NGExtensions/$(GNUSTEP_OBJ_DIR) \
+ -L../NGStreams/$(GNUSTEP_OBJ_DIR) \
+ -L../NGMime/$(GNUSTEP_OBJ_DIR) \
+ -L../NGLdap/$(GNUSTEP_OBJ_DIR) \
+ -L../NGiCal/$(GNUSTEP_OBJ_DIR) \
+
+
+ADDITIONAL_TOOL_LIBS += \
+ -lNGMime -lNGStreams -lNGExtensions -lEOControl \
+ -lDOM -lSaxObjC
+
--- /dev/null
+/*
+ Copyright (C) 2000-2004 SKYRIX Software AG
+
+ 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
+ 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: ImapListTool.h 4 2004-08-20 17:04:31Z helge $
+
+#ifndef __ImapListTool_H__
+#define __ImapListTool_H__
+
+#import "ImapTool.h"
+
+@class NSArray;
+
+/*
+ Supported Args:
+ -statistics YES|NO (print statistics, parsing time, memory)
+ -datasource YES|NO (use datasource or directoryContentsAtPath:)
+ -preloops <int> (loop n-times before running the actual fetch)
+*/
+
+@interface ImapListTool : ImapTool
+{
+ BOOL useDataSource;
+ int preloops;
+ BOOL stats;
+}
+
+- (int)runWithArguments:(NSArray *)_args;
+
+@end
+
+#endif /* __ImapListTool_H__ */
--- /dev/null
+/*
+ Copyright (C) 2000-2004 SKYRIX Software AG
+
+ 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
+ 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: ImapListTool.m 4 2004-08-20 17:04:31Z helge $
+
+#include "ImapListTool.h"
+#include "common.h"
+#include <NGImap4/NGImap4.h>
+#include <EOControl/EOControl.h>
+#include <NGImap4/NGImap4FileManager.h>
+#include <NGImap4/NGImap4Message.h>
+
+@implementation ImapListTool
+
+/* output */
+
+- (BOOL)outputResultsAsList:(NSArray *)dirContents
+ fileManager:(NGImap4FileManager *)fm part:(NSString *)_part
+{
+ unsigned i, count;
+ NSString *path = [fm currentDirectoryPath];
+
+ for (i = 0, count = [dirContents count]; i < count; i++) {
+ NSString *cpath, *apath;
+ NSDictionary *info;
+ NSString *mid;
+
+ if (!self->useDataSource) {
+ cpath = [dirContents objectAtIndex:i];
+ apath = [path stringByAppendingPathComponent:cpath];
+
+ info = [fm fileAttributesAtPath:apath
+ traverseLink:NO];
+ }
+ else {
+ info = [dirContents objectAtIndex:i];
+ cpath = [NSString stringWithFormat:@"%u", [(id)info uid]];
+ apath = [path stringByAppendingPathComponent:cpath];
+ //cpath = [info valueForKey:@"NSFileName"];
+ //apath = [info valueForKey:@"NSFilePath"];
+ }
+
+ mid = [[info valueForKey:@"NSFileIdentifier"] description];
+ if ([mid length] > 39) {
+ mid = [mid substringToIndex:37];
+ mid = [mid stringByAppendingString:@"..."];
+ }
+
+ /* id uid date name */
+ if (_part) {
+ printf("%10d ",
+ [[fm contentsAtPath:[info valueForKey:@"NSFilePath"]
+ part:_part] length]);
+ }
+ printf("%-40s %8s %8i %-32s %s",
+ [mid cString],
+ [[info valueForKey:NSFileOwnerAccountName] cString],
+ [[info valueForKey:NSFileSize] intValue],
+ [[[info valueForKey:NSFileModificationDate]
+ description] cString],
+ [apath cString]);
+
+ if ([[info valueForKey:NSFileType]
+ isEqualToString:NSFileTypeDirectory])
+ printf("/\n");
+ else
+ printf("\n");
+
+
+ }
+ return YES;
+}
+
+- (BOOL)outputResultsAsXML:(NSArray *)_dirContents
+ fileManager:(NGFileManager *)_fm
+{
+ NSLog(@"XML output not implemented ...");
+ return NO;
+}
+
+- (BOOL)outputResults:(NSArray *)dirContents
+ fileManager:(NGImap4FileManager *)fm part:(NSString *)_part
+{
+ NSUserDefaults *ud = [NSUserDefaults standardUserDefaults];
+ NSAutoreleasePool *pool;
+ NSString *out;
+ BOOL result;
+
+ pool = [[NSAutoreleasePool alloc] init];
+
+ out = [ud stringForKey:@"out"];
+ if ([out length] == 0)
+ result = YES;
+ else if ([out isEqualToString:@"xml"])
+ result = [self outputResultsAsXML:dirContents fileManager:fm];
+ else if ([out isEqualToString:@"ls"])
+ result = [self outputResultsAsList:dirContents fileManager:fm part:_part];
+ else {
+ NSLog(@"unknown output module: %@", out);
+ result = NO;
+ }
+ [pool release];
+ return result;
+}
+
+/* ops */
+
+- (void)processFile:(NSString *)path fileManager:(NGImap4FileManager *)fm
+ part:(NSString *)_part
+{
+ /* a file */
+ NSData *contents;
+ NSString *s;
+
+ if (_part) {
+ if ((contents = [fm contentsAtPath:path part:_part]) == nil) {
+ NSLog(@"could not get content of message: '%@'", path);
+ }
+ else {
+ s = [[NSString alloc] initWithData:contents
+ encoding:[NSString defaultCStringEncoding]];
+ printf("%s\n", [s cString]);
+ [s release];
+ }
+ }
+ else {
+ NGImap4Message *contents;
+
+ if ((contents = [fm messageAtPath:path]) == nil) {
+ NSLog(@"could not get message at path: '%@'", path);
+ }
+ else {
+#if 0
+ s = [[NSString alloc] initWithData:contents
+ encoding:[NSString defaultCStringEncoding]];
+ printf("%s\n", [s cString]);
+ [s release];
+#else
+ printf("%s\n", [[contents description] cString]);
+ printf("%s\n", [[[contents bodyStructure] description] cString]);
+
+#endif
+ }
+ }
+}
+
+- (void)processFolder:(NSString *)path fileManager:(NGImap4FileManager *)fm
+ part:(NSString *)_part
+{
+ NSAutoreleasePool *pool;
+ NSTimeInterval startTime, endTime;
+ unsigned int startSize, endSize;
+ NSProcessInfo *pi = [NSProcessInfo processInfo];
+ NSArray *dirContents;
+ unsigned i;
+ EODataSource *ds;
+
+ if (![fm changeCurrentDirectoryPath:path]) {
+ NSLog(@"%s: could not change to directory: '%@'", path);
+ }
+
+ ds = self->useDataSource
+ ? [(id<NGFileManagerDataSources>)fm dataSourceAtPath:path]
+ : nil;
+
+ /* pre fetches */
+
+ for (i = 0; i < self->preloops; i++ ) {
+ NSAutoreleasePool *pool;
+
+ startTime = [[NSDate date] timeIntervalSince1970];
+ startSize = [pi virtualMemorySize];
+
+ /* fetch */
+
+ pool = [[NSAutoreleasePool alloc] init];
+ {
+ ds = self->useDataSource
+ ? [(id<NGFileManagerDataSources>)fm dataSourceAtPath:path]
+ : nil;
+
+ dirContents = (!self->useDataSource)
+ ? [fm directoryContentsAtPath:path]
+ : [ds fetchObjects];
+ }
+ [pool release];
+
+ /* statistics */
+
+ endSize = [pi virtualMemorySize];
+ endTime = [[NSDate date] timeIntervalSince1970];
+
+ if (self->stats) {
+ fprintf(stderr,
+ "parsing time [%2i]: %.3fs, "
+ "vmem-diff: %8i (%4iK,%4iM), vmem: %8i (%4iK,%4iM))\n",
+ i, (endTime-startTime),
+ (endSize - startSize),
+ (endSize - startSize) / 1024,
+ (endSize - startSize) / 1024 / 1024,
+ endSize, endSize/1024, endSize/1024/1024);
+ }
+ }
+
+ /* actual fetch */
+
+ startTime = [[NSDate date] timeIntervalSince1970];
+ startSize = [pi virtualMemorySize];
+
+ pool = [[NSAutoreleasePool alloc] init];
+
+ ds = self->useDataSource
+ ? [(id<NGFileManagerDataSources>)fm dataSourceAtPath:path]
+ : nil;
+
+ dirContents = (!self->useDataSource)
+ ? [fm directoryContentsAtPath:path]
+ : [ds fetchObjects];
+
+ dirContents = [dirContents retain];
+ [pool release];
+ dirContents = [dirContents autorelease];
+
+ /* statistics */
+
+ endSize = [pi virtualMemorySize];
+ endTime = [[NSDate date] timeIntervalSince1970];
+
+ if (self->stats) {
+ fprintf(stderr,
+ "parsing time: %.3fs, "
+ "vmem-diff: %8i (%4iK,%4iM), vmem: %8i (%4iK,%4iM))\n",
+ (endTime-startTime),
+ (endSize - startSize),
+ (endSize - startSize) / 1024,
+ (endSize - startSize) / 1024 / 1024,
+ endSize, endSize/1024, endSize/1024/1024);
+ }
+
+ /* output */
+ [self outputResults:dirContents fileManager:fm part:_part];
+}
+
+/*
+ path /INBOX/1233?part=1.2
+*/
+
+
+- (void)processPath:(NSString *)path fileManager:(NGImap4FileManager *)fm {
+ BOOL isDir;
+ NSArray *array;
+ NSString *part;
+
+ array = [path componentsSeparatedByString:@"?"];
+
+ if ([array count] > 1) {
+ path = [array objectAtIndex:0];
+ part = [[[array objectAtIndex:1] componentsSeparatedByString:@"="]
+ lastObject];
+ }
+ else
+ part = nil;
+
+ if (![fm fileExistsAtPath:path isDirectory:&isDir]) {
+ NSLog(@"file/directory does not exist: %@", path);
+ return;
+ }
+
+ if (isDir) {
+ [self processFolder:path fileManager:fm part:part];
+ }
+ else {
+ [self processFile:path fileManager:fm part:part];
+ }
+}
+
+/* tool operation */
+
+- (int)usage {
+ fprintf(stderr, "usage: imapls <pathes>?part=<part>\n");
+ fprintf(stderr, "usage: imapls <pathes>\n");
+ fprintf(stderr, " -url <url>\n");
+ fprintf(stderr, " -user <login>\n");
+ fprintf(stderr, " -password <pwd>\n");
+ fprintf(stderr, " -host <host>\n");
+ fprintf(stderr, " -datasource YES|NO\n");
+ fprintf(stderr, " -out ls|xml\n");
+ fprintf(stderr, " -statistics YES|NO\n");
+ fprintf(stderr, " -preloops <n>\n");
+ return 1;
+}
+
+- (int)runWithArguments:(NSArray *)_args {
+ NGImap4FileManager *fm;
+ NSUserDefaults *ud;
+ int i;
+
+ _args = [_args subarrayWithRange:NSMakeRange(1, [_args count] - 1)];
+ if ([_args count] == 0)
+ return [self usage];
+
+ ud = [NSUserDefaults standardUserDefaults];
+
+ self->useDataSource = [ud boolForKey:@"datasource"];
+ self->stats = [ud boolForKey:@"statistics"];
+ self->preloops = [ud integerForKey:@"preloops"];
+
+ if ((fm = [self fileManager]) == nil) {
+ NSLog(@"could not open IMAP connection (got no filemanager)");
+ return 2;
+ }
+
+#if 1
+ NSLog(@"IMAP: %@", fm);
+#endif
+
+ for (i = 0; i < [_args count]; i++) {
+ [self processPath:[_args objectAtIndex:i] fileManager:fm];
+ }
+
+ return 0;
+}
+
+@end /* ImapListTool */
--- /dev/null
+/*
+ Copyright (C) 2000-2003 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: ImapQuotaTool.h 4 2004-08-20 17:04:31Z helge $
+
+
+#include "ImapTool.h"
+
+@class NSString, NSDictionary;
+
+@interface ImapQuotaTool : ImapTool
+{
+}
+
+- (NSDictionary *)getQuotaRoot:(NSString *)_folder;
+
+@end
--- /dev/null
+/*
+ Copyright (C) 2000-2003 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: ImapQuotaTool.m 4 2004-08-20 17:04:31Z helge $
+
+#include <NGImap4/NGImap4Client.h>
+#include <NGImap4/NGImap4FileManager.h>
+#include <NGImap4/NGImap4Context.h>
+#include "common.h"
+#include "ImapQuotaTool.h"
+
+@implementation ImapQuotaTool
+
+- (NSDictionary *)getQuotaRoot:(NSString *)_folder {
+ NGImap4FileManager *fm;
+ NGImap4Client *client;
+
+ fm = [self fileManager];
+ client = [[fm imapContext] client];
+
+ return [[client getQuotaRoot:_folder] objectForKey:@"quotas"];
+
+}
+
+@end /* ImapQuotaTool */
--- /dev/null
+/*
+ Copyright (C) 2000-2003 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: ImapTool.h 4 2004-08-20 17:04:31Z helge $
+
+#ifndef __ImapTool_H__
+#define __ImapTool_H__
+
+#import <Foundation/NSObject.h>
+
+@class NGImap4FileManager;
+
+@interface ImapTool : NSObject
+{
+ NGImap4FileManager *fileManager;
+}
+- (void)flush;
+- (NGImap4FileManager *)fileManager;
+
+@end
+
+#endif /* __ImapTool_H__ */
--- /dev/null
+/*
+ Copyright (C) 2000-2004 SKYRIX Software AG
+
+ 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
+ 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: ImapTool.m 4 2004-08-20 17:04:31Z helge $
+
+#include "ImapTool.h"
+#include <NGImap4/NGImap4FileManager.h>
+#include "common.h"
+
+@implementation ImapTool
+
+- (void)flush {
+ [self->fileManager release]; self->fileManager = nil;
+}
+
+- (NGImap4FileManager *)fileManager {
+ NSUserDefaults *ud;
+ NSString *pwd, *user, *host;
+ id url;
+
+ if (self->fileManager)
+ return self->fileManager;
+
+ ud = [NSUserDefaults standardUserDefaults];
+
+ if ((url = [ud stringForKey:@"url"]))
+ url = [NSURL URLWithString:url];
+
+ if ((user = [ud stringForKey:@"user"]) == nil)
+ user = [url user];
+ if ((pwd = [ud stringForKey:@"password"]) == nil)
+ pwd = [url password];
+ if ((host = [ud stringForKey:@"host"]) == nil)
+ host = [(NSURL *)url host];
+
+ self->fileManager = [[NGImap4FileManager alloc] initWithUser:user
+ password:pwd
+ host:host];
+ if (self->fileManager == nil) {
+ if (user == nil) NSLog(@"missing login.");
+ if (pwd == nil) NSLog(@"missing password.");
+ if (host == nil) NSLog(@"missing host.");
+ }
+
+ return self->fileManager;
+}
+
+@end /* ImapTool */
--- /dev/null
+# $Id$
+
+This directory contains sample programs for the skyrix-core libraries.
+
+Tools
+=====
+
+mime2xml - read a MIME file and output the structure as XML
+
+imapls - list IMAP4 server directories, sample for NGImap4FileManager
+
+bmlookup - perform resource lookups using the NGExtensions NGBundleManager
+ class
+
+fmdls - list directories using the NGFileManager directory-datasource
+ implementation
+
+subclassing - test runtime subclassing in the Objective-C runtime
+ (NGObjCRuntime in NGExtensions)
+
+testdirenum - test the NGDirectoryEnumerator
+
+ldapls - an 'ls' for LDAP directories
+ldap2dsml - return the output of an LDAP server as DSML (directory service
+ markup language)
+ldapchkpwd - check whether a login/password combo would be authenticated
--- /dev/null
+/*
+ Copyright (C) 2000-2003 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: imap_tool.m 4 2004-08-20 17:04:31Z helge $
+
+
+#include "common.h"
+#include "NGImap4.h"
+
+
+int main(int argc, char **argv, char **env) {
+ NSAutoreleasePool *pool;
+
+#if LIB_FOUNDATION_LIBRARY
+ [NSProcessInfo initializeWithArguments:argv count:argc environment:env];
+#endif
+
+ pool = [[NSAutoreleasePool alloc] init];
+
+ {
+ NSString *login, *pwd, *host;
+ NSUserDefaults *ud;
+ NGImap4Client *client;
+
+ ud = [NSUserDefaults standardUserDefaults];
+
+ if (!(login = [ud stringForKey:@"login"])) {
+ login = @"j";
+ }
+ if (!(pwd = [ud stringForKey:@"pwd"])) {
+ pwd = @"system";
+ }
+ if (!(host = [ud stringForKey:@"host"])) {
+ host = @"defiant";
+ }
+
+ client = [NGImap4Client clientWithHost:host];
+
+ [client login:login password:pwd];
+ NSLog(@"client %@", client);
+
+ {
+ int cnt = 0;
+
+ while (1) {
+ NSString *action;
+ NSString *arg;
+ id result;
+
+ action = [ud stringForKey:
+ [NSString stringWithFormat:@"action_%d", cnt]];
+ arg = [ud stringForKey:
+ [NSString stringWithFormat:@"arg_%d", cnt]];
+
+ if (![action length])
+ break;
+
+ if ([action isEqualToString:@"select"]) {
+ result = [client select:arg];
+ }
+ else if ([action isEqualToString:@"thread"]) {
+ result = [client threadBySubject:[arg boolValue] charset:nil];
+ }
+ else if ([action isEqualToString:@"list"]) {
+ result = [client list:arg pattern:@"*"];
+ }
+ else if ([action isEqualToString:@"fetch"]) {
+ NSArray *args;
+
+ args = [arg componentsSeparatedByString:@":"];
+ result = [client fetchFrom:[[args objectAtIndex:0] intValue]
+ to:[[args objectAtIndex:1] intValue]
+ parts:[args subarrayWithRange:
+ NSMakeRange(2,[args count] - 2)]];
+ }
+ NSLog(@"action %d: %@:%@ : %@", cnt, action, arg,
+ result);
+ cnt++;
+ }
+ }
+ }
+ [pool release];
+ return 0;
+}
+
--- /dev/null
+/*
+ Copyright (C) 2000-2004 SKYRIX Software AG
+
+ 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
+ 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: imapls.m 4 2004-08-20 17:04:31Z helge $
+
+/*
+ scan through imap folders/messages using the NGImap4FileManager
+*/
+
+#include "ImapListTool.h"
+#include "common.h"
+
+int main(int argc, char **argv, char **env) {
+ NSAutoreleasePool *pool;
+ ImapListTool *tool;
+ int res;
+
+ pool = [NSAutoreleasePool new];
+#if LIB_FOUNDATION_LIBRARY
+ [NSProcessInfo initializeWithArguments:argv count:argc environment:env];
+#endif
+
+ tool = [[ImapListTool alloc] init];
+ res = [tool runWithArguments:
+ [[NSProcessInfo processInfo] argumentsWithoutDefaults]];
+ [tool release];
+
+ [pool release];
+ exit(0);
+ /* static linking */
+ [NGExtensions class];
+ return 0;
+}
--- /dev/null
+/*
+ Copyright (C) 2000-2003 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: imapquota.m 4 2004-08-20 17:04:31Z helge $
+
+
+#import "ImapQuotaTool.h"
+#include "common.h"
+
+int main(int argc, char **argv, char **env) {
+ NSAutoreleasePool *pool;
+ ImapTool *tool;
+ int res = 0;
+
+ pool = [NSAutoreleasePool new];
+
+#if LIB_FOUNDATION_LIBRARY
+ [NSProcessInfo initializeWithArguments:argv count:argc environment:env];
+#endif
+
+ tool = [[ImapQuotaTool alloc] init];
+
+ {
+ NSString *str;
+
+ str = [[NSUserDefaults standardUserDefaults] objectForKey:@"path"];
+ NSLog(@"quota for path: %@", str);
+ NSLog(@"result %@", [tool getQuotaRoot:str]);
+ }
+ [tool release];
+
+ [pool release];
+ exit(res);
+ /* static linking */
+ [NGExtensions class];
+ return res;
+}
# $Id$
-
ADDITIONAL_INCLUDE_DIRS += -I../.. -I..
+ADDITIONAL_INCLUDE_DIRS += $(shell xml2-config --cflags)
ifneq ($(GNUSTEP_BUILD_DIR),)
ADDITIONAL_LIB_DIRS += \
ADDITIONAL_LIB_DIRS += -L../SaxObjC/$(GNUSTEP_OBJ_DIR)
endif
-libxml_INCLUDE_DIR := $(shell xml2-config --cflags)
libxml_LIBS := $(shell xml2-config --libs)
-ADDITIONAL_INCLUDE_DIRS += $(libxml_INCLUDE_DIR)
-
-
libxmlSAXDriver_BUNDLE_LIBS += -lSaxObjC $(libxml_LIBS)
ifeq ($(GNUSTEP_TARGET_OS),cygwin32)
# $Id: README 1 2004-08-20 11:17:52Z znek $
+
WebObjects
==========