diff --git a/GNUmakefile b/GNUmakefile index 657c45b..20d8e85 100644 --- a/GNUmakefile +++ b/GNUmakefile @@ -95,6 +95,32 @@ testPostgres_LIB_DIRS += -L./$(GNUSTEP_OBJ_DIR) testPostgres_TOOL_LIBS += -lSQLClient endif +ifneq ($(JDBC),) +ifeq ($(LINKSQLCLIENT),1) +BUNDLE_NAME += JDBC +JDBC_OBJC_FILES = JDBC.m +JDBC_LIB_DIRS = -L./$(GNUSTEP_OBJ_DIR) $(JDBC_VM_LIBDIRS) +JDBC_BUNDLE_LIBS += -lSQLClient $(JDBC_VM_LIBS) +JDBC_PRINCIPAL_CLASS = SQLClientJDBC +else +BUNDLE_NAME += JDBC +JDBC_OBJC_FILES = JDBC.m +JDBC_LIB_DIRS = -L./$(GNUSTEP_OBJ_DIR) $(JDBC_VM_LIBDIRS) +JDBC_BUNDLE_LIBS += $(JDBC_VM_LIBS) +JDBC_PRINCIPAL_CLASS = SQLClientJDBC +BUNDLE_NAME += JDBC_libs +JDBC_libs_OBJC_FILES = JDBC.m +JDBC_libs_LIB_DIRS = -L./$(GNUSTEP_OBJ_DIR) $(JDBC_VM_LIBDIRS) +JDBC_libs_BUNDLE_LIBS += -lSQLClient -lPerformance \ +-lgnustep-base -lobjc $(JDBC_VM_LIBS) +JDBC_libs_PRINCIPAL_CLASS = SQLClientJDBC_libs +endif +TEST_TOOL_NAME += testJDBC +testJDBC_OBJC_FILES = testJDBC.m +testJDBC_LIB_DIRS += -L./$(GNUSTEP_OBJ_DIR) +testJDBC_TOOL_LIBS += -lSQLClient +endif + ifneq ($(MYSQL),) ifeq ($(LINKSQLCLIENT),1) BUNDLE_NAME += MySQL diff --git a/JDBC.m b/JDBC.m new file mode 100644 index 0000000..7e7f912 --- /dev/null +++ b/JDBC.m @@ -0,0 +1,1186 @@ +/* -*-objc-*- */ + +/** Implementation of SQLClientJDBC for GNUStep + Copyright (C) 2006 Free Software Foundation, Inc. + + Written by: Richard Frith-Macdonald + Date: August 2006 + + This file is part of the SQLClient Library. + + 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 USA. + + $Date: 2006-06-04 10:19:28 +0100 (Sun, 04 Jun 2006) $ $Revision: 23028 $ + */ + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "config.h" +#include "SQLClient.h" + +#include + +/* SQLClientJVM shamelessly stolen from JIGS ... written by Nicola Pero + * and copyright the Free Software Foundation. + */ + +@interface SQLClientJVM : NSObject +{ +} ++ (void) startVirtualMachineWithClassPath: (NSString *)classPath + libraryPath: (NSString *)libraryPath; ++ (void) destroyVirtualMachine; ++ (BOOL) isVirtualMachineRunning; ++ (NSString *) defaultClassPath; ++ (NSString *) defaultLibraryPath; ++ (void) attachCurrentThread; ++ (void) detachCurrentThread; ++ (void) registerJavaVM: (JavaVM *)javaVMHandle; +@end + +/* + * A fast function to get the (JNIEnv *) variable. + */ +static JNIEnv *SQLClientJNIEnv (); + +static JavaVM *SQLClientJavaVM = NULL; + +/* + * Return the (JNIEnv *) associated with the current thread, + * or NULL if no java virtual machine is running (or if the thread + * is not attached to the JVM). + * + * NB: This function performs a call. Better use your (JNIEnv *) if + * you already have it. + * + */ +JNIEnv *SQLClientJNIEnv () +{ + JNIEnv *penv; + + if ((*SQLClientJavaVM)->GetEnv (SQLClientJavaVM, (void **)&penv, + JNI_VERSION_1_2) == JNI_OK) + { + return penv; + } + else + { + return NULL; + } +} + +@implementation SQLClientJVM (GNUstepInternals) ++ (void) _attachCurrentThread: (NSNotification *)not +{ + [self attachCurrentThread]; +} + ++ (void) _detachCurrentThread: (NSNotification *)not +{ + [self detachCurrentThread]; +} +@end + +@implementation SQLClientJVM + ++ (void) startVirtualMachineWithClassPath: (NSString *)classPath + libraryPath: (NSString *)libraryPath +{ + JavaVMInitArgs jvm_args; + JavaVMOption options[2]; + jint result; + JNIEnv *env; + NSDictionary *environment = [[NSProcessInfo processInfo] environment]; + NSString *path; + NSNotificationCenter *nc = [NSNotificationCenter defaultCenter]; + + if (SQLClientJavaVM != NULL) + { + [NSException raise: NSGenericException + format: @"Only one Java Virtual Machine " + @"can be running at each time"]; + } + + // If we don't pass these options, it assumes they are really @"" + if (classPath == nil) + { + classPath = [environment objectForKey: @"CLASSPATH"]; + if (classPath == nil) + { + classPath = @""; + } + } + if (libraryPath == nil) + { + libraryPath = [environment objectForKey: @"LD_LIBRARY_PATH"]; + if (libraryPath == nil) + { + libraryPath = @""; + } + } + + jvm_args.nOptions = 2; + + path = [NSString stringWithFormat: @"-Djava.class.path=%@", + classPath]; + options[0].optionString = (char *)[path cString]; + + path = [NSString stringWithFormat: @"-Djava.library.path=%@", + libraryPath]; + options[1].optionString = (char *)[path cString]; + + jvm_args.version = 0x00010002; + jvm_args.options = options; + jvm_args.ignoreUnrecognized = JNI_TRUE; + + result = JNI_CreateJavaVM (&SQLClientJavaVM, (void **)&env, &jvm_args); + + if (result < 0) + { + [NSException raise: NSGenericException + format: @"Could not start Java Virtual Machine"]; + } + + /* Whenever a thread start or ends, we want to automatically attach + or detach it to/from the JVM */ + [nc addObserver: self selector: @selector (_attachCurrentThread:) + name: NSThreadDidStartNotification object: nil]; + + [nc addObserver: self selector: @selector (_detachCurrentThread:) + name: NSThreadWillExitNotification object: nil]; + + return; +} + ++ (void) destroyVirtualMachine +{ + jint result; + + if (SQLClientJavaVM == NULL) + { + [NSException raise: NSGenericException + format: @"destroyJVM called without a JVM running"]; + } + result = (*SQLClientJavaVM)->DestroyJavaVM (SQLClientJavaVM); + if (result < 0) + { + [NSException raise: NSGenericException + format: @"Could not destroy Java Virtual Machine"]; + } + else + { + SQLClientJavaVM = NULL; + } +} + ++ (BOOL) isVirtualMachineRunning +{ + if (SQLClientJavaVM == NULL) + { + return NO; + } + else + { + return YES; + } +} + ++ (NSString *) defaultClassPath +{ + NSDictionary *environment = [[NSProcessInfo processInfo] environment]; + + return [environment objectForKey: @"CLASSPATH"]; +} + ++ (NSString *) defaultLibraryPath +{ + NSDictionary *environment = [[NSProcessInfo processInfo] environment]; + + return [environment objectForKey: @"LD_LIBRARY_PATH"]; +} + ++ (void) attachCurrentThread +{ + static int count = 0; + JNIEnv *env; + JavaVMAttachArgs args; + jint result; + + if (SQLClientJavaVM == NULL) + { + /* No JVM - nothing to do */ + return; + } + + if (SQLClientJNIEnv () != NULL) + { + /* The thread is already attached */ + return; + } + + { + CREATE_AUTORELEASE_POOL (pool); + + args.version = JNI_VERSION_1_2; + args.name = (char *)[[NSString stringWithFormat: + @"GNUstepThread-%d", count] cString]; + args.group = NULL; + + result = (*SQLClientJavaVM)->AttachCurrentThread + (SQLClientJavaVM, (void **)&env, &args); + + RELEASE (pool); + } + + if (result < 0) + { + [NSException raise: NSGenericException + format: @"Could not attach thread to the Java VM"]; + } + + count++; + if (count > 100000) + { + /* Duplicated names shouldn't cause any problem */ + count = 0; + } + return; +} + ++ (void) detachCurrentThread +{ + jint result; + + if (SQLClientJavaVM == NULL) + { + /* No JVM - nothing to do */ + return; + } + + if (SQLClientJNIEnv () == NULL) + { + /* The thread is not attached */ + return; + } + + result = (*SQLClientJavaVM)->DetachCurrentThread (SQLClientJavaVM); + + if (result < 0) + { + [NSException raise: NSGenericException + format: @"Could not detach thread from the Java VM"]; + } + + return; +} + ++ (void) registerJavaVM: (JavaVM *)javaVMHandle +{ + if (javaVMHandle == NULL) + { + [NSException raise: NSInvalidArgumentException + format: @"Trying to register a NULL Java VM"]; + } + + if (SQLClientJavaVM != NULL) + { + if (javaVMHandle == SQLClientJavaVM) + { + return; + } + else + { + [NSException raise: NSGenericException + format: @"Trying to register a Java VM " + @"while one is already running"]; + } + } + + SQLClientJavaVM = javaVMHandle; + + // Safety check. If javaVMHandle is invalid, the following will crash + // your app. The app would crash anyway later on, so it's better to crash + // it here, where it is easier to debug. + SQLClientJNIEnv (); + + return; +} + +@end + +static jstring +JStringFromNSString (JNIEnv *env, NSString *string) +{ + jstring javaString; + int length = [string length]; + + /* We allocate strings of up to 10k on the stack - others using + malloc. */ + if (length < 10000) + { + unichar uniString[length]; + + // Get a unicode representation of the string in the buffer + [string getCharacters: uniString]; + + // Create a java string using the buffer + javaString = (*env)->NewString (env, uniString, length); + // NB: if javaString is NULL, an exception has been thrown. + } + else + { + unichar *uniString; + + uniString = malloc (sizeof (unichar) * length); + [string getCharacters: uniString]; + javaString = (*env)->NewString (env, uniString, length); + free (uniString); + } + + return javaString; +} + +static NSString* +NSStringFromJString (JNIEnv *env, jstring string) +{ + unichar *uniString; + jsize length; + NSString *gnustepString; + + // Get a Unicode string from the jstring + uniString = (unichar *)(*env)->GetStringChars (env, string, NULL); + if (uniString == NULL) + { + // OutOfMemoryError thrown + return NULL; + } + + // Get the Unicode string length + length = (*env)->GetStringLength (env, string); + + // Create a GNUstep string from the Unicode string + gnustepString = [NSString stringWithCharacters: uniString length: length]; + + // Release the temporary string + (*env)->ReleaseStringChars (env, string, uniString); + + return gnustepString; +} + + +@interface SQLClientJDBC : SQLClient +@end + +@interface SQLClientJDBC(Embedded) +- (NSData*) dataFromBLOB: (const char *)blob; +- (NSDate*) dbToDateFromBuffer: (char*)b length: (int)l; +@end + +static NSDate *future = nil; +static NSNull *null = nil; + +@implementation SQLClientJDBC + ++ (void) initialize +{ + if (future == nil) + { + future = [NSCalendarDate dateWithString: @"9999-01-01 00:00:00 +0000" + calendarFormat: @"%Y-%m-%d %H:%M:%S %z" + locale: nil]; + RETAIN(future); + null = [NSNull null]; + RETAIN(null); + + [SQLClientJVM startVirtualMachineWithClassPath: nil libraryPath: nil]; + } +} + +- (BOOL) backendConnect +{ + if (extra == 0) + { + connected = NO; + if ([self database] != nil) + { + NSString *dbase = [self database]; + NSRange r; + + [[self class] purgeConnections: nil]; + + r = [dbase rangeOfString: @":"]; + if (r.length > 0) + { + NSString *url; + NSString *cname; + JNIEnv *env; + jclass jc; + jmethodID jm; + jobject jo; + + url = [dbase substringFromIndex: NSMaxRange(r)]; + cname = [dbase substringToIndex: r.location]; + + env = SQLClientJNIEnv(); + if (env == 0) + { + [self debug: @"Connect to '%@' failed to set up Java runtime", + [self name]]; + return NO; + } + + /* Ensure the driver for the database is loaded. + */ + jc = (*env)->FindClass(env, [cname UTF8String]); + if (jc == 0) + { + [self debug: @"Connect to '%@' failed to load driver '%@'", + [self name], cname]; + return NO; + } + + /* Get the driver manager class. + */ + jc = (*env)->FindClass(env, "java.sql.DriverManager"); + if (jc == 0) + { + [self debug: @"Connect to '%@' failed to load DriverManager", + [self name]]; + return NO; + } + + /* Get the method to get a connection. + */ + jm = (*env)->GetStaticMethodID(env, jc, "getConnection", + "(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;)" + "Ljava/sql/Connection"); + if (jm == 0) + { + [self debug: @"Connect to '%@' failed to get connect method", + [self name]]; + return NO; + } + + /* Get the new connection object + */ + jo = (void*)(*env)->CallStaticObjectMethod(env, jc, jm, + JStringFromNSString(env, url), + JStringFromNSString(env, [self user]), + JStringFromNSString(env, [self password])); + if (jo == 0) + { + [self debug: @"Connect to '%@' failed to get connection", + [self name]]; + return NO; + } + + /* Make a reference so it can't be garbage collected. + */ + extra = (void*)(*env)->NewGlobalRef(env, jo) + if (extra == 0) + { + [self debug: @"Connect to '%@' failed to get global ref", + [self name]]; + return NO; + } + else + { + connected = YES; + } + } + else + { + [self debug: @"Connect to '%@' using '%@' has no class", + [self name], [self database]]; + return NO; + } + } + else + { + [self debug: + @"Connect to '%@' with no user/password/database configured", + [self name]]; + } + } + return connected; +} + +- (void) backendDisconnect +{ +#if 0 + if (extra != 0) + { + NS_DURING + { + if ([self isInTransaction] == YES) + { + [self rollback]; + } + + if ([self debugging] > 0) + { + [self debug: @"Disconnecting client %@", [self clientName]]; + } + PQfinish(extra); + extra = 0; + if ([self debugging] > 0) + { + [self debug: @"Disconnected client %@", [self clientName]]; + } + } + NS_HANDLER + { + extra = 0; + [self debug: @"Error disconnecting from database (%@): %@", + [self clientName], localException]; + } + NS_ENDHANDLER + connected = NO; + } +#endif +} + +- (void) backendExecute: (NSArray*)info +{ +#if 0 + CREATE_AUTORELEASE_POOL(arp); + PGresult *result = 0; + NSString *stmt = [info objectAtIndex: 0]; + + if ([stmt length] == 0) + { + RELEASE (arp); + [NSException raise: NSInternalInconsistencyException + format: @"Statement produced null string"]; + } + + NS_DURING + { + const char *statement; + unsigned length; + + /* + * Ensure we have a working connection. + */ + if ([self backendConnect] == NO) + { + [NSException raise: SQLException + format: @"Unable to connect to '%@' to execute statement %@", + [self name], stmt]; + } + + statement = (char*)[stmt UTF8String]; + length = strlen(statement); + statement = [self insertBLOBs: info + intoStatement: statement + length: length + withMarker: "'?'''?'" + length: 7 + giving: &length]; + + result = PQexec(extra, statement); + if (result == 0 || PQresultStatus(result) == PGRES_FATAL_ERROR) + { + NSString *str; + const char *cstr; + + if (result == 0) + { + cstr = PQerrorMessage(extra); + } + else + { + cstr = PQresultErrorMessage(result); + } + str = [NSString stringWithUTF8String: cstr]; + [self backendDisconnect]; + [NSException raise: SQLException format: @"%@ %@", str, stmt]; + } + if (PQresultStatus(result) != PGRES_COMMAND_OK) + { + [NSException raise: SQLException format: @"%s", + PQresultErrorMessage(result)]; + } + } + NS_HANDLER + { + NSString *n = [localException name]; + + if ([n isEqual: SQLConnectionException] == YES) + { + [self backendDisconnect]; + } + if ([self debugging] > 0) + { + [self debug: @"Error executing statement:\n%@\n%@", + stmt, localException]; + } + if (result != 0) + { + PQclear(result); + } + RETAIN (localException); + RELEASE (arp); + AUTORELEASE (localException); + [localException raise]; + } + NS_ENDHANDLER + if (result != 0) + { + PQclear(result); + } + DESTROY(arp); + #endif +} + +static unsigned int trim(char *str) +{ + char *start = str; + + while (isspace(*str)) + { + str++; + } + if (str != start) + { + strcpy(start, str); + } + str = start; + while (*str != '\0') + { + str++; + } + while (str > start && isspace(str[-1])) + { + *--str = '\0'; + } + return (str - start); +} + +- (NSMutableArray*) backendQuery: (NSString*)stmt +{ + NSMutableArray *records = nil; +#if 0 + CREATE_AUTORELEASE_POOL(arp); + PGresult *result = 0; + + if ([stmt length] == 0) + { + RELEASE (arp); + [NSException raise: NSInternalInconsistencyException + format: @"Statement produced null string"]; + } + + NS_DURING + { + char *statement; + + /* + * Ensure we have a working connection. + */ + if ([self backendConnect] == NO) + { + [NSException raise: SQLException + format: @"Unable to connect to '%@' to run query %@", + [self name], stmt]; + } + + statement = (char*)[stmt UTF8String]; + result = PQexec(extra, statement); + if (result == 0 || PQresultStatus(result) == PGRES_FATAL_ERROR) + { + NSString *str; + const char *cstr; + + if (result == 0) + { + cstr = PQerrorMessage(extra); + } + else + { + cstr = PQresultErrorMessage(result); + } + str = [NSString stringWithUTF8String: cstr]; + [self backendDisconnect]; + [NSException raise: SQLException format: @"%@", str]; + } + if (PQresultStatus(result) == PGRES_TUPLES_OK) + { + int recordCount = PQntuples(result); + int fieldCount = PQnfields(result); + NSString *keys[fieldCount]; + int types[fieldCount]; + int modifiers[fieldCount]; + int formats[fieldCount]; + int i; + + for (i = 0; i < fieldCount; i++) + { + keys[i] = [NSString stringWithUTF8String: PQfname(result, i)]; + types[i] = PQftype(result, i); + modifiers[i] = PQfmod(result, i); + formats[i] = PQfformat(result, i); + } + + records = [[NSMutableArray alloc] initWithCapacity: recordCount]; + for (i = 0; i < recordCount; i++) + { + SQLRecord *record; + id values[fieldCount]; + int j; + + for (j = 0; j < fieldCount; j++) + { + id v = null; + + if (PQgetisnull(result, i, j) == 0) + { + char *p = PQgetvalue(result, i, j); + int size = PQgetlength(result, i, j); + + if ([self debugging] > 1) + { + [self debug: @"%@ type:%d mod:%d size: %d\n", + keys[j], types[j], modifiers[j], size]; + } + if (formats[j] == 0) // Text + { + switch (types[j]) + { + case 1082: // Date + case 1083: // Time + case 1114: // Timestamp without time zone. + case 1184: // Timestamp with time zone. + v = [self dbToDateFromBuffer: p + length: trim(p)]; + break; + + case 16: // BOOL + if (*p == 't') + { + v = @"YES"; + } + else + { + v = @"NO"; + } + break; + + case 17: // BYTEA + v = [self dataFromBLOB: p]; + break; + + default: + trim(p); + v = [NSString stringWithUTF8String: p]; + break; + } + } + else // Binary + { + NSLog(@"Binary data treated as NSNull " + @"in %@ type:%d mod:%d size:%d\n", + keys[j], types[j], modifiers[j], size); + } + } + values[j] = v; + } + record = [SQLRecord newWithValues: values + keys: keys + count: fieldCount]; + [records addObject: record]; + RELEASE(record); + } + } + else + { + [NSException raise: SQLException format: @"%s", + PQresultErrorMessage(result)]; + } + } + NS_HANDLER + { + NSString *n = [localException name]; + + if ([n isEqual: SQLConnectionException] == YES) + { + [self backendDisconnect]; + } + if ([self debugging] > 0) + { + [self debug: @"Error executing statement:\n%@\n%@", + stmt, localException]; + } + if (result != 0) + { + PQclear(result); + } + DESTROY(records); + RETAIN (localException); + RELEASE (arp); + AUTORELEASE (localException); + [localException raise]; + } + NS_ENDHANDLER + DESTROY(arp); + if (result != 0) + { + PQclear(result); + } +#endif + return AUTORELEASE(records); +} + +- (unsigned) copyEscapedBLOB: (NSData*)blob into: (void*)buf +{ + unsigned length = 0; +#if 0 + const unsigned char *src = [blob bytes]; + unsigned sLen = [blob length]; + unsigned char *ptr = (unsigned char*)buf; + unsigned i; + + ptr[length++] = '\''; + for (i = 0; i < sLen; i++) + { + unsigned char c = src[i]; + + if (c < 32 || c > 126) + { + ptr[length] = '\\'; + ptr[length+1] = '\\'; + ptr[length + 4] = (c & 7) + '0'; + c >>= 3; + ptr[length + 3] = (c & 7) + '0'; + c >>= 3; + ptr[length + 2] = (c & 7) + '0'; + length += 5; + } + else if (c == '\\') + { + if (standardEscaping == NO) + { + ptr[length++] = '\\'; + ptr[length++] = '\\'; + } + ptr[length++] = '\\'; + ptr[length++] = '\\'; + } + else if (c == '\'') + { + ptr[length++] = '\''; + ptr[length++] = '\''; + } + else + { + ptr[length++] = c; + } + } + ptr[length++] = '\''; +#endif + return length; +} + +- (unsigned) lengthOfEscapedBLOB: (NSData*)blob +{ + unsigned int sLen = [blob length]; + unsigned int length = sLen + 2; +#if 0 + unsigned char *src = (unsigned char*)[blob bytes]; + unsigned int i; + + for (i = 0; i < sLen; i++) + { + unsigned char c = src[i]; + + if (c < 32 || c > 126) + { + length += 4; + } + else if (c == '\\') + { + if (standardEscaping == NO) + { + length += 2; + } + length += 1; + } + else if (c == '\'') + { + length += 1; + } + } +#endif + return length; +} + +- (NSData *) dataFromBLOB: (const char *)blob +{ + NSMutableData *md = nil; +#if 0 + unsigned sLen = strlen(blob == 0 ? "" : blob); + unsigned dLen = 0; + unsigned char *dst; + unsigned i; + + for (i = 0; i < sLen; i++) + { + unsigned c = blob[i]; + + dLen++; + if (c == '\\') + { + c = blob[++i]; + if (c != '\\') + { + i += 2; // Skip 2 digits octal + } + } + } + md = [NSMutableData dataWithLength: dLen]; + dst = (unsigned char*)[md mutableBytes]; + + dLen = 0; + for (i = 0; i < sLen; i++) + { + unsigned c = blob[i]; + + if (c == '\\') + { + c = blob[++i]; + if (c != '\\') + { + c = c - '0'; + c <<= 3; + c += blob[++i] - '0'; + c <<= 3; + c += blob[++i] - '0'; + } + } + dst[dLen++] = c; + } +#endif + return md; +} + +- (NSDate*) dbToDateFromBuffer: (char*)b length: (int)l +{ + NSDate *d = nil; +#if 0 + char buf[l+32]; /* Allow space to expand buffer. */ + BOOL milliseconds = NO; + NSString *s; + int i; + + memcpy(buf, b, l); + b = buf; + /* + * Find end of string. + */ + for (i = 0; i < l; i++) + { + if (b[i] == '\0') + { + l = i; + break; + } + } + while (l > 0 && isspace(b[l-1])) + { + l--; + } + b[l] = '\0'; + + if (l == 10) + { + s = [NSString stringWithUTF8String: b]; + d = [NSCalendarDate dateWithString: s + calendarFormat: @"%Y-%m-%d" + locale: nil]; + } + else + { + int e; + + /* If it's a simple date (YYYY-MM-DD) append time for start of day. */ + if (l == 10) + { + strcat(b, " 00:00:00 +0000"); + l += 15; + } + + i = l; + while (i-- > 0) + { + if (b[i] == '+' || b[i] == '-') + { + break; + } + if (b[i] == ':' || b[i] == ' ') + { + i = 0; + break; /* No time zone found */ + } + } + if (i == 0) + { + /* A date and time without a timezone ... assume gmt */ + strcpy(b + l, " +0000"); + i = l + 1; + l += 6; + } + + e = i; + if (isdigit(b[i-1])) + { + /* + * Make space between seconds and timezone. + */ + memmove(&b[i+1], &b[i], l - i); + b[i++] = ' '; + b[++l] = '\0'; + } + + /* + * Ensure we have a four digit timezone value. + */ + if (isdigit(b[i+1]) && isdigit(b[i+2])) + { + if (b[i+3] == '\0') + { + // Two digit time zone ... append zero minutes + b[l++] = '0'; + b[l++] = '0'; + b[l] = '\0'; + } + else if (b[i+3] == ':') + { + // Zone with colon before minutes ... remove it + b[i+3] = b[i+4]; + b[i+4] = b[i+5]; + b[--l] = '\0'; + } + } + + /* FIXME ... horrible kludge for postgres returning timestamps with + fractional second information. Force it to 3 digit millisecond */ + while (i-- > 0) + { + if (b[i] == '.') + { + milliseconds = YES; + i++; + if (!isdigit(b[i])) + { + memmove(&b[i+3], &b[i], e-i); + l += 3; + memcpy(&b[i], "000", 3); + } + i++; + if (!isdigit(b[i])) + { + memmove(&b[i+2], &b[i], e-i); + l += 2; + memcpy(&b[i], "00", 2); + } + i++; + if (!isdigit(b[i])) + { + memmove(&b[i+1], &b[i], e-i); + l += 1; + memcpy(&b[i], "0", 1); + } + i++; + break; + } + } + if (i > 0 && i < e) + { + memmove(&b[i], &b[e], l - e); + l -= (e - i); + } + b[l] = '\0'; + if (l == 0) + { + return nil; + } + + s = [NSString stringWithUTF8String: b]; + if (milliseconds == YES) + { + d = [NSCalendarDate dateWithString: s + calendarFormat: @"%Y-%m-%d %H:%M:%S.%F %z" + locale: nil]; + } + else + { + d = [NSCalendarDate dateWithString: s + calendarFormat: @"%Y-%m-%d %H:%M:%S %z" + locale: nil]; + } + } +#endif + return d; +} + +- (void) dealloc +{ + [self backendDisconnect]; + [super dealloc]; +} + +- (NSString*) quoteString: (NSString *)s +{ +#if 0 + NSData *d = [s dataUsingEncoding: NSUTF8StringEncoding]; + unsigned l = [d length]; + unsigned char *to = NSZoneMalloc(NSDefaultMallocZone(), (l * 2) + 3); + +#ifdef HAVE_PQESCAPESTRINGCONN + int err; + + [self backendConnect]; + l = PQescapeStringConn(extra, (char*)(to + 1), [d bytes], l, &err); +#else + l = PQescapeString(to + 1, [d bytes], l); +#endif + to[0] = '\''; + to[l + 1] = '\''; + s = [[NSString alloc] initWithBytesNoCopy: to + length: l + 2 + encoding: NSUTF8StringEncoding + freeWhenDone: YES]; + s = AUTORELEASE(s); +#endif + return s; +} + +@end + diff --git a/config.h.in b/config.h.in index 6da910b..5f64f10 100644 --- a/config.h.in +++ b/config.h.in @@ -6,6 +6,9 @@ /* Define to 1 if you have the header file. */ #undef HAVE_INTTYPES_H +/* Define to 1 if you have the header file. */ +#undef HAVE_JNI_H + /* Define to 1 if you have the `ecpg' library (-lecpg). */ #undef HAVE_LIBECPG diff --git a/config.make.in b/config.make.in index 3267c14..8d3784c 100644 --- a/config.make.in +++ b/config.make.in @@ -1,5 +1,8 @@ ECPG=@ECPG@ +JDBC=@JDBC@ +JDBC_VM_LIBS=@JDBC_VM_LIBS@ +JDBC_VM_LIBDIRS=@JDBC_VM_LIBDIRS@ MYSQL=@MYSQL@ SQLITE=@SQLITE@ ORACLE_HOME=@ORACLE_HOME@ diff --git a/configure b/configure index fe2538e..5954408 100755 --- a/configure +++ b/configure @@ -1,6 +1,6 @@ #! /bin/sh # Guess values for system-dependent variables and create Makefiles. -# Generated by GNU Autoconf 2.59d. +# Generated by GNU Autoconf 2.60. # # Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, # 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. @@ -230,9 +230,9 @@ IFS=$as_save_IFS for as_shell in $as_candidate_shells $SHELL; do - # Try only shells which exist, to save several forks. - if test -f $as_shell && - { ($as_shell) 2> /dev/null <<\_ASEOF + # Try only shells that exist, to save several forks. + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { ("$as_shell") 2> /dev/null <<\_ASEOF # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh @@ -252,7 +252,7 @@ _ASEOF }; then CONFIG_SHELL=$as_shell as_have_required=yes - if { $as_shell 2> /dev/null <<\_ASEOF + if { "$as_shell" 2> /dev/null <<\_ASEOF # Be Bourne compatible if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then emulate sh @@ -457,7 +457,7 @@ test \$exitcode = 0") || { } -if (dirname -- /) >/dev/null 2>&1; then +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false @@ -645,6 +645,9 @@ OBJEXT CPP GREP EGREP +JDBC +JDBC_VM_LIBS +JDBC_VM_LIBDIRS MYSQL SQLITE POSTGRES @@ -1254,7 +1257,7 @@ fi if test "$ac_init_help" = "recursive"; then # If there are subdirs, report their specific --help. for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue - test -d $ac_dir || continue + test -d "$ac_dir" || continue ac_builddir=. case "$ac_dir" in @@ -1291,12 +1294,12 @@ ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix cd "$ac_dir" || { ac_status=$?; continue; } # Check for guested configure. - if test -f $ac_srcdir/configure.gnu; then + if test -f "$ac_srcdir/configure.gnu"; then echo && - $SHELL $ac_srcdir/configure.gnu --help=recursive - elif test -f $ac_srcdir/configure; then + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then echo && - $SHELL $ac_srcdir/configure --help=recursive + $SHELL "$ac_srcdir/configure" --help=recursive else echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 fi || ac_status=$? @@ -1308,7 +1311,7 @@ test -n "$ac_init_help" && exit $ac_status if $ac_init_version; then cat <<\_ACEOF configure -generated by GNU Autoconf 2.59d +generated by GNU Autoconf 2.60 Copyright (C) 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc. @@ -1322,7 +1325,7 @@ This file contains any messages produced by compilers while running configure, to aid debugging if configure makes a mistake. It was created by $as_me, which was -generated by GNU Autoconf 2.59d. Invocation command line was +generated by GNU Autoconf 2.60. Invocation command line was $ $0 $@ @@ -1382,7 +1385,6 @@ _ACEOF ac_configure_args= ac_configure_args0= ac_configure_args1= -ac_sep= ac_must_keep_next=false for ac_pass in 1 2 do @@ -1415,9 +1417,7 @@ do -* ) ac_must_keep_next=true ;; esac fi - ac_configure_args="$ac_configure_args$ac_sep'$ac_arg'" - # Get rid of the leading space. - ac_sep=" " + ac_configure_args="$ac_configure_args '$ac_arg'" ;; esac done @@ -1481,6 +1481,9 @@ _ASBOX for ac_var in $ac_subst_vars do eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac echo "$ac_var='\''$ac_val'\''" done | sort echo @@ -1495,6 +1498,9 @@ _ASBOX for ac_var in $ac_subst_files do eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac echo "$ac_var='\''$ac_val'\''" done | sort echo @@ -1581,8 +1587,8 @@ if test -r "$cache_file"; then { echo "$as_me:$LINENO: loading cache $cache_file" >&5 echo "$as_me: loading cache $cache_file" >&6;} case $cache_file in - [\\/]* | ?:[\\/]* ) . $cache_file;; - *) . ./$cache_file;; + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; esac fi else @@ -2044,36 +2050,37 @@ See \`config.log' for more details." >&2;} # Provide some information about the compiler. echo "$as_me:$LINENO: checking for C compiler version" >&5 ac_compiler=`set X $ac_compile; echo $2` -{ (eval echo "$as_me:$LINENO: \"$ac_compiler --version >&5\"") >&5 - (eval $ac_compiler --version >&5) 2>&5 +{ (ac_try="$ac_compiler --version >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler --version >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -v >&5\"") >&5 - (eval $ac_compiler -v >&5) 2>&5 +{ (ac_try="$ac_compiler -v >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -v >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } -{ (eval echo "$as_me:$LINENO: \"$ac_compiler -V >&5\"") >&5 - (eval $ac_compiler -V >&5) 2>&5 +{ (ac_try="$ac_compiler -V >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compiler -V >&5") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } - -# List of possible output files. We want to start from the most likely, -# but we have to check foo.exe before foo, because Cygwin `test -f' looks -# also for foo.exe. b.out is created by i960 compilers. -# As a last resort, we also try wildcards: `conftest.*' and `a.*'. -# But we are not allowed to rm a.*, and we do not want always remove -# conftest.*, so we will list them literally, when appropriate. -ac_outfiles="a_out.exe a.out conftest.exe conftest a.exe b.out" - -# The IRIX 6 linker writes into existing files which may not be -# executable, retaining their permissions. Remove them first so a -# subsequent execution test works. -rm -f $ac_outfiles conftest.* - cat >conftest.$ac_ext <<_ACEOF /* confdefs.h. */ _ACEOF @@ -2089,39 +2096,74 @@ main () return 0; } _ACEOF - ac_clean_files_save=$ac_clean_files -ac_clean_files="$ac_clean_files $ac_outfiles" - -# The following tests should remove their output except files matching conftest.*. +ac_clean_files="$ac_clean_files a.out a.exe b.out" # Try to create an executable without -o first, disregard a.out. # It will help us diagnose broken compilers, and finding out an intuition # of exeext. { echo "$as_me:$LINENO: checking for C compiler default output file name" >&5 echo $ECHO_N "checking for C compiler default output file name... $ECHO_C" >&6; } ac_link_default=`echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` +# +# List of possible output files, starting from the most likely. +# The algorithm is not robust to junk in `.', hence go to wildcards (a.*) +# only as a last resort. b.out is created by i960 compilers. +ac_files='a_out.exe a.exe conftest.exe a.out conftest a.* conftest.* b.out' +# +# The IRIX 6 linker writes into existing files which may not be +# executable, retaining their permissions. Remove them first so a +# subsequent execution test works. +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles -if { (eval echo "$as_me:$LINENO: \"$ac_link_default\"") >&5 - (eval $ac_link_default) 2>&5 +if { (ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link_default") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - for ac_file in $ac_outfiles a.* conftest.* NO + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files do test -f "$ac_file" || continue case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; - * ) break;; + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; esac done -if test "$ac_file" = NO; then - { { echo "$as_me:$LINENO: error: no output file found -See \`config.log' for more details." >&5 -echo "$as_me: error: no output file found -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - +test "$ac_cv_exeext" = no && ac_cv_exeext= else echo "$as_me: failed program was:" >&5 @@ -2134,8 +2176,10 @@ See \`config.log' for more details." >&2;} { (exit 77); exit 77; }; } fi +ac_exeext=$ac_cv_exeext { echo "$as_me:$LINENO: result: $ac_file" >&5 echo "${ECHO_T}$ac_file" >&6; } + # Check that the compiler produces executables we can run. If not, either # the compiler is broken, or we cross compile. { echo "$as_me:$LINENO: checking whether the C compiler works" >&5 @@ -2144,8 +2188,12 @@ echo $ECHO_N "checking whether the C compiler works... $ECHO_C" >&6; } # If not cross compiling, check that we can run a simple program. if test "$cross_compiling" != yes; then if { ac_try='./$ac_file' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -2167,9 +2215,10 @@ fi { echo "$as_me:$LINENO: result: yes" >&5 echo "${ECHO_T}yes" >&6; } -# Clean up; list also $ac_file, in case it matched a wildcard entry. -rm -f $ac_outfiles $ac_file - +rm -f a.out a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. { echo "$as_me:$LINENO: checking whether we are cross compiling" >&5 echo $ECHO_N "checking whether we are cross compiling... $ECHO_C" >&6; } { echo "$as_me:$LINENO: result: $cross_compiling" >&5 @@ -2177,64 +2226,72 @@ echo "${ECHO_T}$cross_compiling" >&6; } { echo "$as_me:$LINENO: checking for suffix of executables" >&5 echo $ECHO_N "checking for suffix of executables... $ECHO_C" >&6; } -if test "${ac_cv_exeext+set}" = set; then - echo $ECHO_N "(cached) $ECHO_C" >&6 -else - if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then - # If both `conftest.exe' and `conftest' are `present' (well, observable), - # catch `conftest.exe'. For instance with Cygwin, `ls conftest' will - # work properly (i.e., refer to `conftest.exe'), while it won't with `rm'. - for ac_file in conftest.exe conftest conftest.* NO; do - test -f "$ac_file" || continue - case $ac_file in - *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; - *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` - break;; - * ) break;; - esac - done - if test "$ac_file" = NO; then - { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: no output file found -See \`config.log' for more details." >&5 -echo "$as_me: error: cannot compute suffix of executables: no output file found -See \`config.log' for more details." >&2;} - { (exit 1); exit 1; }; } -fi - - # Clean up; list also $ac_file, in case it matched conftest.*. - rm -f $ac_outfiles $ac_file - + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done else { { echo "$as_me:$LINENO: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&5 echo "$as_me: error: cannot compute suffix of executables: cannot compile and link See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } - fi - -fi +rm -f conftest$ac_cv_exeext { echo "$as_me:$LINENO: result: $ac_cv_exeext" >&5 echo "${ECHO_T}$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext EXEEXT=$ac_cv_exeext ac_exeext=$EXEEXT - - -ac_clean_files=$ac_clean_files_save - { echo "$as_me:$LINENO: checking for suffix of object files" >&5 echo $ECHO_N "checking for suffix of object files... $ECHO_C" >&6; } if test "${ac_cv_objext+set}" = set; then echo $ECHO_N "(cached) $ECHO_C" >&6 else - rm -f conftest.o conftest.obj -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>&5 + cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; then @@ -2257,14 +2314,12 @@ See \`config.log' for more details." >&2;} { (exit 1); exit 1; }; } fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext fi { echo "$as_me:$LINENO: result: $ac_cv_objext" >&5 echo "${ECHO_T}$ac_cv_objext" >&6; } OBJEXT=$ac_cv_objext ac_objext=$OBJEXT - - -rm -f conftest.* { echo "$as_me:$LINENO: checking whether we are using the GNU C compiler" >&5 echo $ECHO_N "checking whether we are using the GNU C compiler... $ECHO_C" >&6; } if test "${ac_cv_c_compiler_gnu+set}" = set; then @@ -2289,23 +2344,36 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -2317,7 +2385,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_compiler_gnu=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_cv_c_compiler_gnu=$ac_compiler_gnu fi @@ -2351,23 +2419,36 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -2393,23 +2474,36 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -2436,23 +2530,36 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -2464,13 +2571,13 @@ sed 's/^/| /' conftest.$ac_ext >&5 fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext ac_c_werror_flag=$ac_save_c_werror_flag fi { echo "$as_me:$LINENO: result: $ac_cv_prog_cc_g" >&5 @@ -2535,6 +2642,11 @@ static char *f (char * (*g) (char **, int), char **p, ...) that's true only with -std. */ int osf4_cc_array ['\x00' == 0 ? 1 : -1]; +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + int test (int i, double x); struct s1 {int (*f) (int a);}; struct s2 {int (*f) (double a);}; @@ -2554,23 +2666,36 @@ for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ do CC="$ac_save_CC $ac_arg" rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -2582,7 +2707,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 fi -rm -f conftest.err conftest.$ac_objext +rm -f core conftest.err conftest.$ac_objext test "x$ac_cv_prog_cc_c89" != "xno" && break done rm -f conftest.$ac_ext @@ -2651,8 +2776,13 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -2690,8 +2820,13 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -2760,8 +2895,13 @@ cat >>conftest.$ac_ext <<_ACEOF #endif Syntax error _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -2799,8 +2939,13 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -2897,7 +3042,7 @@ case `"$ac_path_GREP" --version 2>&1` in # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done - rm -f conftest.*;; + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac @@ -2979,7 +3124,7 @@ case `"$ac_path_EGREP" --version 2>&1` in # 10*(2^10) chars as input seems more than enough test $ac_count -gt 10 && break done - rm -f conftest.*;; + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; esac @@ -3037,23 +3182,36 @@ main () } _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3065,7 +3223,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_header_stdc=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext if test $ac_cv_header_stdc = yes; then # SunOS 4.x string.h does not declare mem*, contrary to ANSI. @@ -3146,13 +3304,22 @@ main () } _ACEOF rm -f conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>&5 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && { ac_try='./conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3211,23 +3378,36 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3239,7 +3419,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_Header=no" fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_Header'}'` { echo "$as_me:$LINENO: result: $ac_res" >&5 @@ -3255,6 +3435,193 @@ done +for ac_header in jni.h +do +as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + { echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } +else + # Is the header compilable? +{ echo "$as_me:$LINENO: checking $ac_header usability" >&5 +echo $ECHO_N "checking $ac_header usability... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +$ac_includes_default +#include <$ac_header> +_ACEOF +rm -f conftest.$ac_objext +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } && + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; } && + { ac_try='test -s conftest.$ac_objext' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); }; }; then + ac_header_compiler=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_compiler=no +fi + +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 +echo "${ECHO_T}$ac_header_compiler" >&6; } + +# Is the header present? +{ echo "$as_me:$LINENO: checking $ac_header presence" >&5 +echo $ECHO_N "checking $ac_header presence... $ECHO_C" >&6; } +cat >conftest.$ac_ext <<_ACEOF +/* confdefs.h. */ +_ACEOF +cat confdefs.h >>conftest.$ac_ext +cat >>conftest.$ac_ext <<_ACEOF +/* end confdefs.h. */ +#include <$ac_header> +_ACEOF +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 + ac_status=$? + grep -v '^ *+' conftest.er1 >conftest.err + rm -f conftest.er1 + cat conftest.err >&5 + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } >/dev/null; then + if test -s conftest.err; then + ac_cpp_err=$ac_c_preproc_warn_flag + ac_cpp_err=$ac_cpp_err$ac_c_werror_flag + else + ac_cpp_err= + fi +else + ac_cpp_err=yes +fi +if test -z "$ac_cpp_err"; then + ac_header_preproc=yes +else + echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_header_preproc=no +fi + +rm -f conftest.err conftest.$ac_ext +{ echo "$as_me:$LINENO: result: $ac_header_preproc" >&5 +echo "${ECHO_T}$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in + yes:no: ) + { echo "$as_me:$LINENO: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&5 +echo "$as_me: WARNING: $ac_header: accepted by the compiler, rejected by the preprocessor!" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the compiler's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the compiler's result" >&2;} + ac_header_preproc=yes + ;; + no:yes:* ) + { echo "$as_me:$LINENO: WARNING: $ac_header: present but cannot be compiled" >&5 +echo "$as_me: WARNING: $ac_header: present but cannot be compiled" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: check for missing prerequisite headers?" >&5 +echo "$as_me: WARNING: $ac_header: check for missing prerequisite headers?" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: see the Autoconf documentation" >&5 +echo "$as_me: WARNING: $ac_header: see the Autoconf documentation" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&5 +echo "$as_me: WARNING: $ac_header: section \"Present But Cannot Be Compiled\"" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: proceeding with the preprocessor's result" >&5 +echo "$as_me: WARNING: $ac_header: proceeding with the preprocessor's result" >&2;} + { echo "$as_me:$LINENO: WARNING: $ac_header: in the future, the compiler will take precedence" >&5 +echo "$as_me: WARNING: $ac_header: in the future, the compiler will take precedence" >&2;} + + ;; +esac +{ echo "$as_me:$LINENO: checking for $ac_header" >&5 +echo $ECHO_N "checking for $ac_header... $ECHO_C" >&6; } +if { as_var=$as_ac_Header; eval "test \"\${$as_var+set}\" = set"; }; then + echo $ECHO_N "(cached) $ECHO_C" >&6 +else + eval "$as_ac_Header=\$ac_header_preproc" +fi +ac_res=`eval echo '${'$as_ac_Header'}'` + { echo "$as_me:$LINENO: result: $ac_res" >&5 +echo "${ECHO_T}$ac_res" >&6; } + +fi +if test `eval echo '${'$as_ac_Header'}'` = yes; then + cat >>confdefs.h <<_ACEOF +#define `echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + +if test "$ac_cv_header_jni_h" = "yes"; then + JDBC=yes + JDBC_VM_LIBS="-ljava -ljvm -lhpi" + jre_lib="$JAVA_HOME/jre/lib" + case "$GNUSTEP_HOST_CPU" in + ix86) JAVA_CPU=i386;; + x86_64) JAVA_CPU=amd64;; + *) JAVA_CPU=i386;; + esac + jre_cpu="$jre_lib/$JAVA_CPU" + JDBC_VM_LIBDIRS="-L$jre_cpu -L$jre_cpu/native_threads -L$jre_cpu/classic -L$jre_cpu/server" +else + JDBC= + JDBC_VM_LIBS= + JDBC_VM_LIBDIRS= + echo "*********************************************" + echo "Unable to locate jni header (is it installed)" + echo "*********************************************" +fi + + + + + for ac_header in mysql/mysql.h do as_ac_Header=`echo "ac_cv_header_$ac_header" | $as_tr_sh` @@ -3281,23 +3648,36 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3309,7 +3689,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } @@ -3324,8 +3704,13 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -3440,23 +3825,36 @@ return mysql_init (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3468,7 +3866,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_mysqlclient_mysql_init=no fi -rm -f conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -3519,23 +3917,36 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3547,7 +3958,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } @@ -3562,8 +3973,13 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -3678,23 +4094,36 @@ return sqlite3_open (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3706,7 +4135,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_sqlite3_sqlite3_open=no fi -rm -f conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -3760,23 +4189,36 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3788,7 +4230,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } @@ -3803,8 +4245,13 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -3911,23 +4358,36 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -3939,7 +4399,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } @@ -3954,8 +4414,13 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -4063,23 +4528,36 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4091,7 +4569,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } @@ -4106,8 +4584,13 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -4216,23 +4699,36 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4244,7 +4740,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } @@ -4259,8 +4755,13 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -4369,23 +4870,36 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4397,7 +4911,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } @@ -4412,8 +4926,13 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -4522,23 +5041,36 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4550,7 +5082,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } @@ -4565,8 +5097,13 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -4675,23 +5212,36 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4703,7 +5253,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } @@ -4718,8 +5268,13 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -4828,23 +5383,36 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -4856,7 +5424,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } @@ -4871,8 +5439,13 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -4981,23 +5554,36 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -5009,7 +5595,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } @@ -5024,8 +5610,13 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -5134,23 +5725,36 @@ $ac_includes_default #include <$ac_header> _ACEOF rm -f conftest.$ac_objext -if { (eval echo "$as_me:$LINENO: \"$ac_compile\"") >&5 - (eval $ac_compile) 2>conftest.er1 +if { (ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_compile") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest.$ac_objext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -5162,7 +5766,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_header_compiler=no fi -rm -f conftest.err conftest.$ac_objext conftest.$ac_ext +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext { echo "$as_me:$LINENO: result: $ac_header_compiler" >&5 echo "${ECHO_T}$ac_header_compiler" >&6; } @@ -5177,8 +5781,13 @@ cat >>conftest.$ac_ext <<_ACEOF /* end confdefs.h. */ #include <$ac_header> _ACEOF -if { (eval echo "$as_me:$LINENO: \"$ac_cpp conftest.$ac_ext\"") >&5 - (eval $ac_cpp conftest.$ac_ext) 2>conftest.er1 +if { (ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 @@ -5313,23 +5922,36 @@ return PQfformat (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -5341,7 +5963,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_pq_PQfformat=no fi -rm -f conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -5389,23 +6011,36 @@ return PQclear (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -5417,7 +6052,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_pq_PQclear=no fi -rm -f conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -5497,23 +6132,36 @@ return $ac_func (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -5525,7 +6173,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 eval "$as_ac_var=no" fi -rm -f conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext fi ac_res=`eval echo '${'$as_ac_var'}'` @@ -5571,23 +6219,36 @@ return ECPGconnect (); } _ACEOF rm -f conftest.$ac_objext conftest$ac_exeext -if { (eval echo "$as_me:$LINENO: \"$ac_link\"") >&5 - (eval $ac_link) 2>conftest.er1 +if { (ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_link") 2>conftest.er1 ac_status=$? grep -v '^ *+' conftest.er1 >conftest.err rm -f conftest.er1 cat conftest.err >&5 echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); } && - { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { ac_try='test -z "$ac_c_werror_flag" || test ! -s conftest.err' + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; } && { ac_try='test -s conftest$ac_exeext' - { (eval echo "$as_me:$LINENO: \"$ac_try\"") >&5 - (eval $ac_try) 2>&5 + { (case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval "echo \"\$as_me:$LINENO: $ac_try_echo\"") >&5 + (eval "$ac_try") 2>&5 ac_status=$? echo "$as_me:$LINENO: \$? = $ac_status" >&5 (exit $ac_status); }; }; then @@ -5599,7 +6260,7 @@ sed 's/^/| /' conftest.$ac_ext >&5 ac_cv_lib_ecpg_ECPGconnect=no fi -rm -f conftest.err conftest.$ac_objext \ +rm -f core conftest.err conftest.$ac_objext \ conftest$ac_exeext conftest.$ac_ext LIBS=$ac_check_lib_save_LIBS fi @@ -5634,6 +6295,14 @@ ORACLE_HOME= +if test "$JDBC" = "yes"; then + BUNDLE="The JDBC backend bundle will be built" +else + BUNDLE="The JDBC backend bundle will NOT be built" +fi +{ echo "$as_me:$LINENO: result: ${BUNDLE}" >&5 +echo "${ECHO_T}${BUNDLE}" >&6; } + if test "$MYSQL" = "yes"; then BUNDLE="The MySQL backend bundle will be built" else @@ -5737,8 +6406,8 @@ echo "$as_me: WARNING: Cache variable $ac_var contains a newline." >&2;} ;; t end s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ :end' >>confcache -if diff $cache_file confcache >/dev/null 2>&1; then :; else - if test -w $cache_file; then +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then test "x$cache_file" != "x/dev/null" && { echo "$as_me:$LINENO: updating cache $cache_file" >&5 echo "$as_me: updating cache $cache_file" >&6;} @@ -5977,7 +6646,7 @@ $as_unset CDPATH } -if (dirname -- /) >/dev/null 2>&1; then +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then as_dirname=dirname else as_dirname=false @@ -6060,7 +6729,7 @@ exec 6>&1 # values after options handling. ac_log=" This file was extended by $as_me, which was -generated by GNU Autoconf 2.59d. Invocation command line was +generated by GNU Autoconf 2.60. Invocation command line was CONFIG_FILES = $CONFIG_FILES CONFIG_HEADERS = $CONFIG_HEADERS @@ -6109,8 +6778,8 @@ _ACEOF cat >>$CONFIG_STATUS <<_ACEOF ac_cs_version="\\ config.status -configured by $0, generated by GNU Autoconf 2.59d, - with options \\"`echo "$ac_configure_args" | sed 's/[\\""\`\$]/\\\\&/g'`\\" +configured by $0, generated by GNU Autoconf 2.60, + with options \\"`echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`\\" Copyright (C) 2006 Free Software Foundation, Inc. This config.status script is free software; the Free Software Foundation @@ -6188,10 +6857,10 @@ fi _ACEOF cat >>$CONFIG_STATUS <<_ACEOF if \$ac_cs_recheck; then - echo "running CONFIG_SHELL=$SHELL $SHELL $0 " $ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 + echo "running CONFIG_SHELL=$SHELL $SHELL $0 "$ac_configure_args \$ac_configure_extra_args " --no-create --no-recursion" >&6 CONFIG_SHELL=$SHELL export CONFIG_SHELL - exec $SHELL "$0" $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + exec $SHELL "$0"$ac_configure_args \$ac_configure_extra_args --no-create --no-recursion fi _ACEOF @@ -6325,6 +6994,9 @@ OBJEXT!$OBJEXT$ac_delim CPP!$CPP$ac_delim GREP!$GREP$ac_delim EGREP!$EGREP$ac_delim +JDBC!$JDBC$ac_delim +JDBC_VM_LIBS!$JDBC_VM_LIBS$ac_delim +JDBC_VM_LIBDIRS!$JDBC_VM_LIBDIRS$ac_delim MYSQL!$MYSQL$ac_delim SQLITE!$SQLITE$ac_delim POSTGRES!$POSTGRES$ac_delim @@ -6336,7 +7008,7 @@ LIBOBJS!$LIBOBJS$ac_delim LTLIBOBJS!$LTLIBOBJS$ac_delim _ACEOF - if test `grep -c "$ac_delim\$" conf$$subs.sed` = 56; then + if test `sed -n "s/.*$ac_delim\$/X/p" conf$$subs.sed | grep -c X` = 59; then break elif $ac_last_try; then { { echo "$as_me:$LINENO: error: could not make $CONFIG_STATUS" >&5 @@ -6347,10 +7019,10 @@ echo "$as_me: error: could not make $CONFIG_STATUS" >&2;} fi done -ac_eof= -if grep '^CEOF$' conf$$subs.sed >/dev/null; then - ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF//p' conf$$subs.sed | sort -nru | sed 1q` - ac_eof=`expr 0$ac_eof + 1` +ac_eof=`sed -n '/^CEOF[0-9]*$/s/CEOF/0/p' conf$$subs.sed` +if test -n "$ac_eof"; then + ac_eof=`echo "$ac_eof" | sort -nru | sed 1q` + ac_eof=`expr $ac_eof + 1` fi cat >>$CONFIG_STATUS <<_ACEOF @@ -6564,7 +7236,7 @@ _ACEOF cat >>$CONFIG_STATUS <<\_ACEOF # If the template does not know about datarootdir, expand it. # FIXME: This hack should be removed a few years after 2.60. -ac_datarootdir_hack= +ac_datarootdir_hack=; ac_datarootdir_seen= case `sed -n '/datarootdir/ { p @@ -6576,7 +7248,7 @@ case `sed -n '/datarootdir/ { /@localedir@/p /@mandir@/p ' $ac_file_inputs` in -*datarootdir*) ;; +*datarootdir*) ac_datarootdir_seen=yes;; *@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) { echo "$as_me:$LINENO: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} @@ -6614,6 +7286,14 @@ s&@abs_top_builddir@&$ac_abs_top_builddir&;t t $ac_datarootdir_hack " $ac_file_inputs | sed -f "$tmp/subs-1.sed" >$tmp/out +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' "$tmp/out"`; test -z "$ac_out"; } && + { echo "$as_me:$LINENO: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&5 +echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined." >&2;} + rm -f "$tmp/stdin" case $ac_file in -) cat "$tmp/out"; rm -f "$tmp/out";; @@ -6624,18 +7304,6 @@ $ac_datarootdir_hack # # CONFIG_HEADER # - - # These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where - # NAME is the cpp macro being defined, VALUE is the value it is being given. - # PARAMS is the parameter list in the macro definition--in most cases, it's - # just an empty string. - # - ac_dA='s,^\([ ]*#[ ]*\)[^ ]*\([ ][ ]*' - ac_dB='\)[ (].*$,\1define\2' - ac_dC=' ' - ac_dD=' ,' - - ac_word_regexp=[_$as_cr_Letters][_$as_cr_alnum]* _ACEOF # Transform confdefs.h into a sed script `conftest.defines', that @@ -6649,6 +7317,15 @@ echo 's/$/ /' >conftest.defines # symbol, which is useless. But do not sort them, since the last # AC_DEFINE must be honored. ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +# These sed commands are passed to sed as "A NAME B PARAMS C VALUE D", where +# NAME is the cpp macro being defined, VALUE is the value it is being given. +# PARAMS is the parameter list in the macro definition--in most cases, it's +# just an empty string. +ac_dA='s,^\\([ #]*\\)[^ ]*\\([ ]*' +ac_dB='\\)[ (].*,\\1define\\2' +ac_dC=' ' +ac_dD=' ,' + uniq confdefs.h | sed -n ' t rset @@ -6658,9 +7335,8 @@ uniq confdefs.h | d :ok s/[\\&,]/\\&/g - s/[\\$`]/\\&/g - s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/${ac_dA}\1$ac_dB\2${ac_dC}\3$ac_dD/p - s/^\('"$ac_word_re"'\)[ ]*\(.*\)/${ac_dA}\1$ac_dB${ac_dC}\2$ac_dD/p + s/^\('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/ '"$ac_dA"'\1'"$ac_dB"'\2'"${ac_dC}"'\3'"$ac_dD"'/p + s/^\('"$ac_word_re"'\)[ ]*\(.*\)/'"$ac_dA"'\1'"$ac_dB$ac_dC"'\2'"$ac_dD"'/p ' >>conftest.defines # Remove the space that was appended to ease matching. @@ -6672,7 +7348,7 @@ echo 's/ $// s,^[ #]*u.*,/* & */,' >>conftest.defines # Break up conftest.defines: -ac_max_sed_lines=96 +ac_max_sed_lines=50 # First sed command is: sed -f defines.sed $ac_file_inputs >"$tmp/out1" # Second one is: sed -f defines.sed "$tmp/out1" >"$tmp/out2" @@ -6685,12 +7361,14 @@ ac_nxt='"$tmp/out2"' while : do # Write a here document: - echo ' # First, check the format of the line: - cat >"$tmp/defines.sed" <>$CONFIG_STATUS <<_ACEOF + # First, check the format of the line: + cat >"\$tmp/defines.sed" <<\\CEOF +/^[ ]*#[ ]*undef[ ][ ]*$ac_word_re[ ]*\$/b def +/^[ ]*#[ ]*define[ ][ ]*$ac_word_re[( ]/b def b -:def' >>$CONFIG_STATUS +:def +_ACEOF sed ${ac_max_sed_lines}q conftest.defines >>$CONFIG_STATUS echo 'CEOF sed -f "$tmp/defines.sed"' "$ac_in >$ac_out" >>$CONFIG_STATUS diff --git a/configure.ac b/configure.ac index bb98687..2cb696f 100644 --- a/configure.ac +++ b/configure.ac @@ -49,6 +49,30 @@ if test "$postgres_topdir" != "no"; then LIBD="$LIBD -L$postgres_topdir/lib" fi +AC_CHECK_HEADERS(jni.h) +if test "$ac_cv_header_jni_h" = "yes"; then + JDBC=yes + JDBC_VM_LIBS="-ljava -ljvm -lhpi" + jre_lib="$JAVA_HOME/jre/lib" + case "$GNUSTEP_HOST_CPU" in + ix86) JAVA_CPU=i386;; + x86_64) JAVA_CPU=amd64;; + *) JAVA_CPU=i386;; + esac + jre_cpu="$jre_lib/$JAVA_CPU" + JDBC_VM_LIBDIRS="-L$jre_cpu -L$jre_cpu/native_threads -L$jre_cpu/classic -L$jre_cpu/server" +else + JDBC= + JDBC_VM_LIBS= + JDBC_VM_LIBDIRS= + echo "*********************************************" + echo "Unable to locate jni header (is it installed)" + echo "*********************************************" +fi +AC_SUBST(JDBC) +AC_SUBST(JDBC_VM_LIBS) +AC_SUBST(JDBC_VM_LIBDIRS) + AC_CHECK_HEADERS(mysql/mysql.h) if test "$ac_cv_header_mysql_mysql_h" = "yes"; then MYSQL=yes @@ -228,6 +252,13 @@ AC_SUBST(INCD) AC_SUBST(LIBD) AC_SUBST(LIBS) +if test "$JDBC" = "yes"; then + BUNDLE="The JDBC backend bundle will be built" +else + BUNDLE="The JDBC backend bundle will NOT be built" +fi +AC_MSG_RESULT(${BUNDLE}) + if test "$MYSQL" = "yes"; then BUNDLE="The MySQL backend bundle will be built" else diff --git a/testJDBC.m b/testJDBC.m new file mode 100644 index 0000000..9d88e6d --- /dev/null +++ b/testJDBC.m @@ -0,0 +1,283 @@ +/** + Copyright (C) 2006 Free Software Foundation, Inc. + + Written by: Richard Frith-Macdonald + Date: August 2006 + + This file is part of the SQLClient Library. + + 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 USA. + + $Date: 2006-05-25 12:34:03 +0100 (Thu, 25 May 2006) $ $Revision: 22982 $ + */ + +#include +#include +#include "SQLClient.h" + +int +main() +{ + CREATE_AUTORELEASE_POOL(pool); + SQLClient *db; + NSUserDefaults *defs; + NSMutableArray *records; + SQLRecord *record; + unsigned char dbuf[256]; + unsigned int i; + NSData *data; + NSString *name; + + defs = [NSUserDefaults standardUserDefaults]; + [defs registerDefaults: + [NSDictionary dictionaryWithObjectsAndKeys: + [NSDictionary dictionaryWithObjectsAndKeys: + [NSDictionary dictionaryWithObjectsAndKeys: + @"org.postgresql.Driver:jdbc:postgresql://localhost/template1", + @"Database", + @"postgres", @"User", + @"postgres", @"Password", + @"JDBC", @"ServerType", + nil], + @"test", + nil], + @"SQLClientReferences", + nil] + ]; + + db = [SQLClient clientWithConfiguration: nil name: @"test"]; + + if ((name = [defs stringForKey: @"Producer"]) != nil) + { + NS_DURING + { + [db execute: @"CREATE TABLE Queue ( " + @"ID SERIAL, " + @"Consumer CHAR(40) NOT NULL, " + @"ServiceID INT NOT NULL, " + @"Status CHAR(1) DEFAULT 'Q' NOT NULL, " + @"Delivery TIMESTAMP DEFAULT CURRENT_TIMESTAMP NOT NULL, " + @"Reference CHAR(128), " + @"Destination CHAR(15) NOT NULL, " + @"Payload CHAR(250) DEFAULT '' NOT NULL" + @")", + nil]; + [db execute: + @"CREATE UNIQUE INDEX QueueIDX ON Queue (ID)", + nil]; + [db execute: + @"CREATE INDEX ServiceIDX ON Queue (ServiceID)", + nil]; + [db execute: + @"CREATE INDEX ConsumerIDX ON Queue (Consumer,Status,Delivery)", + nil]; + [db execute: + @"CREATE INDEX ReferenceIDX ON Queue (Reference,Consumer)", + nil]; + } + NS_HANDLER + { + NSLog(@"%@", localException); + } + NS_ENDHANDLER + NSLog(@"Start producing"); + for (i = 0; i < 100000; i++) + { + CREATE_AUTORELEASE_POOL(arp); + NSString *destination = [NSString stringWithFormat: @"%d", i]; + NSString *sid = [NSString stringWithFormat: @"%d", i%100]; + + [db execute: @"INSERT INTO Queue (Consumer, Destination, ServiceID, Payload) VALUES (", + [db quote: name], @", ", [db quote: destination], @", ", sid, @", ", + @"'helo there'", @")", nil]; + RELEASE(arp); + } + NSLog(@"End producing"); + } + else if ((name = [defs stringForKey: @"Consumer"]) != nil) + { + NSLog(@"Start consuming"); + for (i = 0; i < 100000;) + { + CREATE_AUTORELEASE_POOL(arp); + unsigned count; + int j; + + [db begin]; + records = [db query: @"SELECT * FROM Queue WHERE Consumer = ", + [db quote: name], + @" AND Status = 'Q' AND Delivery < CURRENT_TIMESTAMP", + @" ORDER BY Delivery LIMIT 1000 FOR UPDATE" , nil]; + count = [records count]; + if (count == 0) + { + [db commit]; + sleep(1); + [db begin]; + records = [db query: @"SELECT * FROM Queue WHERE Consumer = ", + [db quote: name], + @" AND Status = 'Q' AND Delivery < CURRENT_TIMESTAMP", + @" ORDER BY Delivery LIMIT 50 FOR UPDATE" , nil]; + count = [records count]; + if (count == 0) + { + break; + } + } + + for (j = 0; j < count; j++) + { + SQLRecord *record = [records objectAtIndex: j]; + NSString *reference = [record objectForKey: @"ID"]; + + [db execute: @"UPDATE Queue SET Status = 'S', Reference = ", + [db quote: reference], @" WHERE ID = ", + [record objectForKey: @"ID"], nil]; + + [db execute: @"UPDATE Queue SET Status = 'D'", + @" WHERE Consumer = ", [db quote: name], + @" AND Reference = ", [db quote: reference], + nil]; + } + [db commit]; + i += count; + RELEASE(arp); + } + NSLog(@"End consuming (%d records)", i); +/* + [db execute: @"DROP INDEX ReferenceIDX", nil]; + [db execute: @"DROP INDEX ServiceIDX", nil]; + [db execute: @"DROP INDEX ConsumerIDX", nil]; + [db execute: @"DROP INDEX QueueIDX", nil]; + [db execute: @"DROP TABLE Queue", nil]; +*/ + } + else + { + NSString *oddChars; + NSString *nonLatin; + id r0; + id r1; + + oddChars = @"'a\\b'c\r\nd'\\ed\\"; + nonLatin = [[NSString stringWithCString: "\"\\U2A11\""] propertyList]; + for (i = 0; i < 256; i++) + { + dbuf[i] = i; + } + data = [NSData dataWithBytes: dbuf length: i]; + + NS_DURING + [db execute: @"drop table xxx", nil]; + NS_HANDLER + NS_ENDHANDLER + + [db setDurationLogging: 0]; + + [db begin]; + [db execute: @"create table xxx ( " + @"k char(40), " + @"char1 char(1), " + @"boolval BOOL, " + @"intval int, " + @"when1 timestamp with time zone, " + @"when2 timestamp, " + @"b bytea" + @")", + nil]; + + [db execute: @"insert into xxx " + @"(k, char1, boolval, intval, when1, when2, b) " + @"values (" + @"'hello', " + @"'X', " + @"TRUE, " + @"1, " + @"CURRENT_TIMESTAMP, " + @"CURRENT_TIMESTAMP, ", + data, + @")", + nil]; + [db execute: @"insert into xxx " + @"(k, char1, boolval, intval, when1, when2, b) " + @"values (" + @"'hello', " + @"'X', " + @"TRUE, " + @"1, ", + [NSDate date], @", ", + [NSDate date], @", ", + [NSData dataWithBytes: "" length: 0], + @")", + nil]; + [db execute: @"insert into xxx " + @"(k, char1, boolval, intval, when1, when2, b) " + @"values (", + [db quote: oddChars], + @", ", + [db quote: nonLatin], + @",TRUE, " + @"1, ", + [NSDate date], @", ", + [NSDate date], @", ", + [NSData dataWithBytes: "" length: 0], + @")", + nil]; + [db commit]; + + r0 = [db cache: 1 query: @"select * from xxx", nil]; + r1 = [db cache: 1 query: @"select * from xxx", nil]; + NSCAssert([r0 lastObject] == [r1 lastObject], @"Cache failed"); + sleep(2); + records = [db cache: 1 query: @"select * from xxx", nil]; + NSCAssert([r0 lastObject] != [records lastObject], @"Lifetime failed"); + + [db execute: @"drop table xxx", nil]; + + if ([records count] != 3) + { + NSLog(@"Expected 3 records but got %u", [records count]); + } + else + { + record = [records objectAtIndex: 0]; + if ([[record objectForKey: @"b"] isEqual: data] == NO) + { + NSLog(@"Retrieved data does not match saved data %@ %@", + data, [record objectForKey: @"b"]); + } + record = [records objectAtIndex: 1]; + if ([[record objectForKey: @"b"] isEqual: [NSData data]] == NO) + { + NSLog(@"Retrieved empty data does not match saved data"); + } + record = [records objectAtIndex: 2]; + if ([[record objectForKey: @"char1"] isEqual: nonLatin] == NO) + { + NSLog(@"Retrieved non-latin does not match saved string"); + } + if ([[record objectForKey: @"k"] isEqual: oddChars] == NO) + { + NSLog(@"Retrieved odd chars does not match saved string"); + } + } + + NSLog(@"Records - %@", [GSCache class]); + } + + RELEASE(pool); + return 0; +} +