Index: ChangeLog
==================================================================
--- ChangeLog
+++ ChangeLog
@@ -1,8 +1,24 @@
Legend:
* Changes of existing features or bugfixes.
+ New features.
+
+ObjFW 0.5.4 -> ObjFW 0.6, 27.02.2012
+ The differences between 0.5.4 and 0.6 are too big to list them all. However,
+ the major new features are:
+ * OFString, OFArray, OFDictionary, OFSet and OFCountedSet are now class
+ clusters.
+ + Serialization and deserialization of objects into/from XML and JSON.
+ + New class OFIntrospection for introspecting classes.
+ + New class OFProcess for working with and controlling child processes.
+ * Lots of OFXMLParser and OFXMLElement improvements.
+ + OFHTTPRequests can have a delegate now for status updates and processing
+ data as soon as it arrives.
+ + There are several backends for OFStreamObserver now, including kqueue, poll
+ and select.
+ + SOCKS5 support for OFTCPSockets (client only).
+ * Several API changes.
ObjFW 0.5.3 -> ObjFW 0.5.4, 30.08.2011
* The blocks runtime is now working correctly.
* Documentation fixes.
* -framework works with objfw-compile now.
Index: Info.plist
==================================================================
--- Info.plist
+++ Info.plist
@@ -15,10 +15,10 @@
CFBundlePackageType
FMWK
CFBundleSignature
OBJFW
CFBundleVersion
- 0.6-dev
+ 0.6
CFBundleShortVersionString
- 0.6-dev
+ 0.6
Index: PLATFORMS
==================================================================
--- PLATFORMS
+++ PLATFORMS
@@ -6,31 +6,33 @@
+--------------------------+--------------+----------------------+---------+
| FreeBSD 8.0 | x86 | | old GNU |
+--------------------------+--------------+----------------------+---------+
| Haiku r41078 | x86 | GCC 4.4.4 | old GNU |
+--------------------------+--------------+----------------------+---------+
- | Linux 2.6.* | x86 | GCC 4.4.1 | old GNU |
- | Linux 2.6.* | x86 | GCC 4.6 | GNU |
- | Linux 2.6.* | x86 | LLVM/Clang r83252 | old GNU |
- | Linux 2.6.* | x86_64 | GCC 4.4.1 | old GNU |
+ | Linux 2.6.* / 3.* | x86 | GCC 4.4.1 | old GNU |
+ | Linux 2.6.* / 3.* | x86 | GCC 4.6 | GNU |
+ | Linux 2.6.* / 3.* | x86 | LLVM/Clang r83252 | old GNU |
+ | Linux 2.6.* / 3.* | x86_64 | GCC 4.4.1 | old GNU |
| Maemo 5 | arm | GCC 4.5.1 | old GNU |
+--------------------------+--------------+----------------------+---------+
- | iPhone OS 2.2.1 - 4.2 | arm | GCC 4.2 | Apple |
+ | iPhone OS 2.2.1 - 5.0 | arm | GCC 4.2 | Apple |
| Mac OS X 10.5 | ppc | GCC 4.0 + 4.2 | Apple |
| Mac OS X 10.5 | ppc64 | GCC 4.0 + 4.2 | Apple |
- | Mac OS X 10.5 - 10.6 | x86 | GCC 4.0 + 4.2 | Apple |
- | Mac OS X 10.5 - 10.6 | x86_64 | GCC 4.0 + 4.2 | Apple |
+ | Mac OS X 10.5 - 10.7 | x86 | GCC 4.0 + 4.2 | Apple |
+ | Mac OS X 10.5 - 10.7 | x86_64 | GCC 4.0 + 4.2 | Apple |
+--------------------------+--------------+----------------------+---------+
| MirBSD 10uAB - 10uAD | x86 | GCC 4.4.2 | old GNU |
| MirBSD 10uAD | x86 | LLVM/Clang r90573 | old GNU |
+--------------------------+--------------+----------------------+---------+
| NetBSD 4.0 | x86 | GCC 4.1.2 prerelease | old GNU |
| NetBSD 5.1 | x86_64 | GCC 4.1.3 prerelease | old GNU |
| NetBSD 5.1 | x86_64 | GCC 4.6 | GNU |
| NetBSD 5.1 | x86_64 | LLVM/Clang r134860 | old GNU |
+ | NetBSD 5.99.56 | x86_64 | GCC 4.5.3 | old GNU |
+ | NetBSD 5.99.56 | x86_64 | LLVM/Clang 2.9 | old GNU |
+--------------------------+--------------+----------------------+---------+
- | OpenBSD 4.6 - 4.7 | x86_64 | GCC 4.2.1 - 4.2.4 | old GNU |
+ | OpenBSD 4.6 - 5.0 | x86_64 | GCC 4.2.1 - 4.2.4 | old GNU |
+--------------------------+--------------+----------------------+---------+
| OpenSolaris 2009.06 | x86 | | old GNU |
| OpenSolaris 2009.06 | x86_64 | | old GNU |
+--------------------------+--------------+----------------------+---------+
| QNX 6.5.0 | x86 | GCC 4.6.1 | GNU |
Index: configure.ac
==================================================================
--- configure.ac
+++ configure.ac
@@ -1,6 +1,6 @@
-AC_INIT(ObjFW, 0.6-dev, js@webkeks.org)
+AC_INIT(ObjFW, 0.6, js@webkeks.org)
AC_CONFIG_SRCDIR(src)
AS_IF([test x"$host" = x"psp"], [
OBJCFLAGS="-G0 $OBJCFLAGS"
LIBS="$LIBS -lpspdebug -lpspdisplay -lpspge -lpspctrl -lpspsdk -lc"
@@ -475,24 +475,10 @@
])
AC_CHECK_FUNC(localtime_r, [
AC_DEFINE(HAVE_LOCALTIME_R, 1, [Whether we have localtime_r])
])
-AC_MSG_CHECKING(for tm_gmtoff in struct tm)
-AC_TRY_COMPILE([
- #define _GNU_SOURCE
- #include
-], [
- struct tm tm;
- tm.tm_gmtoff = 0;
-], [
- AC_DEFINE(STRUCT_TM_HAS_TM_GMTOFF, 1, [Whether struct tm has tm_gmtoff])
- AC_MSG_RESULT(yes)
-], [
- AC_MSG_RESULT(no)
-])
-
AC_CHECK_FUNC(kqueue, [
AC_DEFINE(HAVE_KQUEUE, 1, [Whether we have kqueue])
AC_SUBST(OFSTREAMOBSERVER_KQUEUE_M, "OFStreamObserver_kqueue.m")
])
AC_CHECK_HEADER(poll.h, [
Index: src/OFApplication.h
==================================================================
--- src/OFApplication.h
+++ src/OFApplication.h
@@ -59,12 +59,15 @@
* signal-safe operations like setting a variable or calling a
* signal-safe function!
*/
- (void)applicationDidReceiveSIGINT;
+#ifndef _WIN32
/**
* \brief A method which is called when the application received a SIGHUP.
+ *
+ * This signal is not available on Windows.
*
* \warning You are not allowed to send any messages inside this method, as
* message dispatching is not signal-safe! You are only allowed to do
* signal-safe operations like setting a variable or calling a
* signal-safe function!
@@ -71,10 +74,12 @@
*/
- (void)applicationDidReceiveSIGHUP;
/**
* \brief A method which is called when the application received a SIGUSR1.
+ *
+ * This signal is not available on Windows.
*
* \warning You are not allowed to send any messages inside this method, as
* message dispatching is not signal-safe! You are only allowed to do
* signal-safe operations like setting a variable or calling a
* signal-safe function!
@@ -81,17 +86,20 @@
*/
- (void)applicationDidReceiveSIGUSR1;
/**
* \brief A method which is called when the application received a SIGUSR2.
+ *
+ * This signal is not available on Windows.
*
* \warning You are not allowed to send any messages inside this method, as
* message dispatching is not signal-safe! You are only allowed to do
* signal-safe operations like setting a variable or calling a
* signal-safe function!
*/
- (void)applicationDidReceiveSIGUSR2;
+#endif
@end
/**
* \brief Represents the application as an object.
*/
@@ -103,13 +111,15 @@
int *argc;
char ***argv;
@public
id delegate;
void (*SIGINTHandler)(id, SEL);
+#ifndef _WIN32
void (*SIGHUPHandler)(id, SEL);
void (*SIGUSR1Handler)(id, SEL);
void (*SIGUSR2Handler)(id, SEL);
+#endif
}
#ifdef OF_HAVE_PROPERTIES
@property (readonly, assign) OFString *programName;
@property (readonly, assign) OFArray *arguments;
Index: src/OFApplication.m
==================================================================
--- src/OFApplication.m
+++ src/OFApplication.m
@@ -16,12 +16,15 @@
#include "config.h"
#define OF_APPLICATION_M
+#include
#include
#include
+
+#include
#import "OFApplication.h"
#import "OFString.h"
#import "OFArray.h"
#import "OFDictionary.h"
@@ -53,13 +56,15 @@
{ \
app->sig##Handler(app->delegate, \
@selector(applicationDidReceive##sig)); \
}
SIGNAL_HANDLER(SIGINT)
+#ifndef _WIN32
SIGNAL_HANDLER(SIGHUP)
SIGNAL_HANDLER(SIGUSR1)
SIGNAL_HANDLER(SIGUSR2)
+#endif
#undef SIGNAL_HANDLER
int
of_application_main(int *argc, char **argv[], Class cls)
{
@@ -258,13 +263,15 @@
@selector(applicationDidReceive##sig)]) \
signal(sig, handle##sig); \
else \
signal(sig, SIG_DFL);
REGISTER_SIGNAL(SIGINT)
+#ifndef _WIN32
REGISTER_SIGNAL(SIGHUP)
REGISTER_SIGNAL(SIGUSR1)
REGISTER_SIGNAL(SIGUSR2)
+#endif
#undef REGISTER_SIGNAL
}
- (void)run
{
Index: src/OFArray.h
==================================================================
--- src/OFArray.h
+++ src/OFArray.h
@@ -11,10 +11,17 @@
* Alternatively, it may be distributed under the terms of the GNU General
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
+
+#ifndef __STDC_LIMIT_MACROS
+# define __STDC_LIMIT_MACROS
+#endif
+#ifndef __STDC_CONSTANT_MACROS
+# define __STDC_CONSTANT_MACROS
+#endif
#include
#import "OFObject.h"
#import "OFCollection.h"
Index: src/OFAutoreleasePool.h
==================================================================
--- src/OFAutoreleasePool.h
+++ src/OFAutoreleasePool.h
@@ -37,14 +37,12 @@
*
* \param object The object to add to the autorelease pool
*/
+ (void)addObject: (id)object;
-/// \cond internal
+ (void)_releaseAll;
- (void)_addObject: (id)object;
-/// \endcond
/**
* \brief Releases all objects in the autorelease pool.
*
* This does not free the memory allocated to store pointers to the objects in
Index: src/OFDate.m
==================================================================
--- src/OFDate.m
+++ src/OFDate.m
@@ -248,16 +248,10 @@
if (of_strptime([string UTF8String], [format UTF8String],
&tm) == NULL)
@throw [OFInvalidFormatException
exceptionWithClass: isa];
-#ifdef STRUCT_TM_HAS_TM_GMTOFF
- if (tm.tm_gmtoff != 0)
- @throw [OFInvalidFormatException
- exceptionWithClass: isa];
-#endif
-
/* Years */
seconds = (int64_t)(tm.tm_year - 70) * 31536000;
/* Days of leap years, excluding the year to look at */
seconds += (((tm.tm_year + 1899) / 4) - 492) * 86400;
seconds -= (((tm.tm_year + 1899) / 100) - 19) * 86400;
Index: src/OFDictionary.h
==================================================================
--- src/OFDictionary.h
+++ src/OFDictionary.h
@@ -11,10 +11,17 @@
* Alternatively, it may be distributed under the terms of the GNU General
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
+
+#ifndef __STDC_LIMIT_MACROS
+# define __STDC_LIMIT_MACROS
+#endif
+#ifndef __STDC_CONSTANT_MACROS
+# define __STDC_CONSTANT_MACROS
+#endif
#include
#import "OFObject.h"
#import "OFCollection.h"
Index: src/OFFile.h
==================================================================
--- src/OFFile.h
+++ src/OFFile.h
@@ -11,10 +11,17 @@
* Alternatively, it may be distributed under the terms of the GNU General
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
+
+#ifndef __STDC_LIMIT_MACROS
+# define __STDC_LIMIT_MACROS
+#endif
+#ifndef __STDC_CONSTANT_MACROS
+# define __STDC_CONSTANT_MACROS
+#endif
#include
#import "OFSeekableStream.h"
Index: src/OFHTTPRequest.h
==================================================================
--- src/OFHTTPRequest.h
+++ src/OFHTTPRequest.h
@@ -280,15 +280,13 @@
@property (readonly) short statusCode;
@property (readonly, copy) OFDictionary *headers;
@property (readonly, retain) OFDataArray *data;
#endif
-/// \cond internal
- initWithStatusCode: (short)status
headers: (OFDictionary*)headers
data: (OFDataArray*)data;
-/// \endcond
/**
* \brief Returns the state code of the result of the HTTP request.
*
* \return The status code of the result of the HTTP request
Index: src/OFMutableString.h
==================================================================
--- src/OFMutableString.h
+++ src/OFMutableString.h
@@ -12,13 +12,10 @@
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
-#include
-#include
-
#import "OFString.h"
/**
* \brief A class for storing and modifying strings.
*/
Index: src/OFMutableString.m
==================================================================
--- src/OFMutableString.m
+++ src/OFMutableString.m
@@ -17,10 +17,12 @@
#include "config.h"
#include
#include
#include
+
+#include
#import "OFString.h"
#import "OFMutableString_UTF8.h"
#import "OFAutoreleasePool.h"
Index: src/OFNumber.h
==================================================================
--- src/OFNumber.h
+++ src/OFNumber.h
@@ -11,10 +11,17 @@
* Alternatively, it may be distributed under the terms of the GNU General
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
+
+#ifndef __STDC_LIMIT_MACROS
+# define __STDC_LIMIT_MACROS
+#endif
+#ifndef __STDC_CONSTANT_MACROS
+# define __STDC_CONSTANT_MACROS
+#endif
#include
#import "OFObject.h"
#import "OFSerialization.h"
Index: src/OFPlugin.h
==================================================================
--- src/OFPlugin.h
+++ src/OFPlugin.h
@@ -32,12 +32,12 @@
{
of_plugin_handle_t handle;
}
/**
- * \brief Loads an OFPlugin from a file.
+ * \brief Loads a plugin from a file.
*
- * \param path Path to the OFPlugin file. The suffix is appended automatically.
- * \return The loaded OFPlugin
+ * \param path Path to the plugin file. The suffix is appended automatically.
+ * \return The loaded plugin
*/
-+ pluginFromFile: (OFString*)path;
++ (id)pluginFromFile: (OFString*)path;
@end
Index: src/OFPlugin.m
==================================================================
--- src/OFPlugin.m
+++ src/OFPlugin.m
@@ -35,11 +35,11 @@
# define dlsym(handle, symbol) GetProcAddress(handle, symbol)
# define dlclose(handle) FreeLibrary(handle)
#endif
@implementation OFPlugin
-+ pluginFromFile: (OFString*)path
++ (id)pluginFromFile: (OFString*)path
{
OFAutoreleasePool *pool;
OFMutableString *file;
of_plugin_handle_t handle;
OFPlugin *(*initPlugin)();
Index: src/OFProcess.h
==================================================================
--- src/OFProcess.h
+++ src/OFProcess.h
@@ -12,13 +12,18 @@
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
-#ifndef _WIN32
-# include
+#ifndef __STDC_LIMIT_MACROS
+# define __STDC_LIMIT_MACROS
+#endif
+#ifndef __STDC_CONSTANT_MACROS
+# define __STDC_CONSTANT_MACROS
#endif
+
+#include
#import "OFStream.h"
#ifdef _WIN32
# include
Index: src/OFProcess.m
==================================================================
--- src/OFProcess.m
+++ src/OFProcess.m
@@ -87,11 +87,14 @@
switch ((pid = fork())) {
case 0:;
OFString **cArray = [arguments cArray];
size_t i, count = [arguments count];
- char **argv = alloca((count + 2) * sizeof(char*));
+ char **argv;
+
+ argv = [self allocMemoryForNItems: count + 2
+ ofSize: sizeof(char*)];
argv[0] = (char*)[programName cStringWithEncoding:
OF_STRING_ENCODING_NATIVE];
for (i = 0; i < count; i++)
Index: src/OFSeekableStream.h
==================================================================
--- src/OFSeekableStream.h
+++ src/OFSeekableStream.h
@@ -11,10 +11,17 @@
* Alternatively, it may be distributed under the terms of the GNU General
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
+
+#ifndef __STDC_LIMIT_MACROS
+# define __STDC_LIMIT_MACROS
+#endif
+#ifndef __STDC_CONSTANT_MACROS
+# define __STDC_CONSTANT_MACROS
+#endif
#include
#import "OFStream.h"
Index: src/OFSet.h
==================================================================
--- src/OFSet.h
+++ src/OFSet.h
@@ -11,10 +11,17 @@
* Alternatively, it may be distributed under the terms of the GNU General
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
+
+#ifndef __STDC_LIMIT_MACROS
+# define __STDC_LIMIT_MACROS
+#endif
+#ifndef __STDC_CONSTANT_MACROS
+# define __STDC_CONSTANT_MACROS
+#endif
#include
#import "OFObject.h"
#import "OFCollection.h"
Index: src/OFStream.h
==================================================================
--- src/OFStream.h
+++ src/OFStream.h
@@ -11,10 +11,17 @@
* Alternatively, it may be distributed under the terms of the GNU General
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
+
+#ifndef __STDC_LIMIT_MACROS
+# define __STDC_LIMIT_MACROS
+#endif
+#ifndef __STDC_CONSTANT_MACROS
+# define __STDC_CONSTANT_MACROS
+#endif
#include
#import "OFObject.h"
#import "OFString.h"
@@ -812,13 +819,11 @@
/**
* \brief Closes the stream.
*/
- (void)close;
-/// \cond internal
- (size_t)_readNBytes: (size_t)length
intoBuffer: (void*)buffer;
- (void)_writeNBytes: (size_t)length
fromBuffer: (const void*)buffer;
- (BOOL)_isWaitingForDelimiter;
-/// \endcond
@end
Index: src/OFStreamObserver.h
==================================================================
--- src/OFStreamObserver.h
+++ src/OFStreamObserver.h
@@ -176,17 +176,15 @@
* \param timeout The time to wait for an event, in milliseconds
* \return A boolean whether events occurred during the timeinterval
*/
- (BOOL)observeWithTimeout: (int)timeout;
-/// \cond internal
- (void)_addFileDescriptorForReading: (int)fd;
- (void)_addFileDescriptorForWriting: (int)fd;
- (void)_removeFileDescriptorForReading: (int)fd;
- (void)_removeFileDescriptorForWriting: (int)fd;
- (void)_processQueue;
- (BOOL)_processCache;
-/// \endcond
@end
@interface OFObject (OFStreamObserverDelegate)
@end
Index: src/OFStreamObserver_select.h
==================================================================
--- src/OFStreamObserver_select.h
+++ src/OFStreamObserver_select.h
@@ -11,10 +11,17 @@
* Alternatively, it may be distributed under the terms of the GNU General
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
+
+#ifndef __STDC_LIMIT_MACROS
+# define __STDC_LIMIT_MACROS
+#endif
+#ifndef __STDC_CONSTANT_MACROS
+# define __STDC_CONSTANT_MACROS
+#endif
#ifdef OF_HAVE_SYS_SELECT_H
# include
#endif
Index: src/OFString+JSONValue.m
==================================================================
--- src/OFString+JSONValue.m
+++ src/OFString+JSONValue.m
@@ -94,11 +94,11 @@
skipWhitespaces(pointer, stop);
skipComment(pointer, stop);
}
}
-static OF_INLINE uint16_t
+static inline uint16_t
parseUnicodeEscape(const char *pointer, const char *stop)
{
uint16_t ret = 0;
char i;
@@ -123,11 +123,11 @@
}
return ret;
}
-static OF_INLINE OFString*
+static inline OFString*
parseString(const char *restrict *pointer, const char *stop)
{
char *buffer;
size_t i = 0;
@@ -257,11 +257,11 @@
free(buffer);
return nil;
}
-static OF_INLINE OFMutableArray*
+static inline OFMutableArray*
parseArray(const char *restrict *pointer, const char *stop)
{
OFMutableArray *array = [OFMutableArray array];
if (++(*pointer) >= stop)
@@ -299,11 +299,11 @@
(*pointer)++;
return array;
}
-static OF_INLINE OFMutableDictionary*
+static inline OFMutableDictionary*
parseDictionary(const char *restrict *pointer, const char *stop)
{
OFMutableDictionary *dictionary = [OFMutableDictionary dictionary];
if (++(*pointer) >= stop)
@@ -351,11 +351,11 @@
(*pointer)++;
return dictionary;
}
-static OF_INLINE OFNumber*
+static inline OFNumber*
parseNumber(const char *restrict *pointer, const char *stop)
{
BOOL hasDecimal = NO;
size_t i;
OFString *string;
Index: src/OFString.h
==================================================================
--- src/OFString.h
+++ src/OFString.h
@@ -12,11 +12,17 @@
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
-#include
+#ifndef __STDC_LIMIT_MACROS
+# define __STDC_LIMIT_MACROS
+#endif
+#ifndef __STDC_CONSTANT_MACROS
+# define __STDC_CONSTANT_MACROS
+#endif
+
#include
#include
#import "OFObject.h"
#import "OFSerialization.h"
Index: src/OFString.m
==================================================================
--- src/OFString.m
+++ src/OFString.m
@@ -20,14 +20,10 @@
#include
#include
#include
-#ifdef _WIN32
-# include
-#endif
-
#import "OFString.h"
#import "OFString_UTF8.h"
#import "OFArray.h"
#import "OFDictionary.h"
#import "OFFile.h"
@@ -1469,37 +1465,42 @@
return new;
}
- (BOOL)hasPrefix: (OFString*)prefix
{
- OFAutoreleasePool *pool;
of_unichar_t *tmp;
const of_unichar_t *prefixString;
size_t prefixLength;
int compare;
if ((prefixLength = [prefix length]) > [self length])
return NO;
- tmp = alloca(prefixLength * sizeof(of_unichar_t));
- [self getCharacters: tmp
- inRange: of_range(0, prefixLength)];
-
- pool = [[OFAutoreleasePool alloc] init];
-
- prefixString = [prefix unicodeString];
- compare = memcmp(tmp, prefixString,
- prefixLength * sizeof(of_unichar_t));
-
- [pool release];
+ tmp = [self allocMemoryForNItems: prefixLength
+ ofSize: sizeof(of_unichar_t)];
+ @try {
+ OFAutoreleasePool *pool;
+
+ [self getCharacters: tmp
+ inRange: of_range(0, prefixLength)];
+
+ pool = [[OFAutoreleasePool alloc] init];
+
+ prefixString = [prefix unicodeString];
+ compare = memcmp(tmp, prefixString,
+ prefixLength * sizeof(of_unichar_t));
+
+ [pool release];
+ } @finally {
+ [self freeMemory: tmp];
+ }
return !compare;
}
- (BOOL)hasSuffix: (OFString*)suffix
{
- OFAutoreleasePool *pool;
of_unichar_t *tmp;
const of_unichar_t *suffixString;
size_t length, suffixLength;
int compare;
@@ -1506,21 +1507,29 @@
if ((suffixLength = [suffix length]) > [self length])
return NO;
length = [self length];
- tmp = alloca(suffixLength * sizeof(of_unichar_t));
- [self getCharacters: tmp
- inRange: of_range(length - suffixLength, suffixLength)];
-
- pool = [[OFAutoreleasePool alloc] init];
-
- suffixString = [suffix unicodeString];
- compare = memcmp(tmp, suffixString,
- suffixLength * sizeof(of_unichar_t));
-
- [pool release];
+ tmp = [self allocMemoryForNItems: suffixLength
+ ofSize: sizeof(of_unichar_t)];
+ @try {
+ OFAutoreleasePool *pool;
+
+ [self getCharacters: tmp
+ inRange: of_range(length - suffixLength,
+ suffixLength)];
+
+ pool = [[OFAutoreleasePool alloc] init];
+
+ suffixString = [suffix unicodeString];
+ compare = memcmp(tmp, suffixString,
+ suffixLength * sizeof(of_unichar_t));
+
+ [pool release];
+ } @finally {
+ [self freeMemory: tmp];
+ }
return !compare;
}
- (OFArray*)componentsSeparatedByString: (OFString*)delimiter
Index: src/OFString_UTF8.m
==================================================================
--- src/OFString_UTF8.m
+++ src/OFString_UTF8.m
@@ -18,10 +18,12 @@
#include
#include
#include
#include
+
+#include
#import "OFString_UTF8.h"
#import "OFMutableString_UTF8.h"
#import "OFArray.h"
#import "OFAutoreleasePool.h"
Index: src/OFTCPSocket+SOCKS5.h
==================================================================
--- src/OFTCPSocket+SOCKS5.h
+++ src/OFTCPSocket+SOCKS5.h
@@ -23,10 +23,8 @@
#ifdef __cplusplus
}
#endif
@interface OFTCPSocket (SOCKS5)
-/// \cond internal
- (void)_SOCKS5ConnectToHost: (OFString*)host
port: (uint16_t)port;
-/// \endcond
@end
Index: src/OFTCPSocket.h
==================================================================
--- src/OFTCPSocket.h
+++ src/OFTCPSocket.h
@@ -11,10 +11,17 @@
* Alternatively, it may be distributed under the terms of the GNU General
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
+
+#ifndef __STDC_LIMIT_MACROS
+# define __STDC_LIMIT_MACROS
+#endif
+#ifndef __STDC_CONSTANT_MACROS
+# define __STDC_CONSTANT_MACROS
+#endif
#ifndef _WIN32
# include
# include
# include
Index: src/asprintf.h
==================================================================
--- src/asprintf.h
+++ src/asprintf.h
@@ -13,10 +13,17 @@
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
#import "objfw-defs.h"
+
+#ifndef __STDC_LIMIT_MACROS
+# define __STDC_LIMIT_MACROS
+#endif
+#ifndef __STDC_CONSTANT_MACROS
+# define __STDC_CONSTANT_MACROS
+#endif
#ifndef OF_HAVE_ASPRINTF
# include
# ifdef __cplusplus
Index: src/base64.h
==================================================================
--- src/base64.h
+++ src/base64.h
@@ -13,10 +13,17 @@
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
#import "objfw-defs.h"
+
+#ifndef __STDC_LIMIT_MACROS
+# define __STDC_LIMIT_MACROS
+#endif
+#ifndef __STDC_CONSTANT_MACROS
+# define __STDC_CONSTANT_MACROS
+#endif
#ifdef OF_OBJFW_RUNTIME
# import
#else
# import
Index: src/macros.h
==================================================================
--- src/macros.h
+++ src/macros.h
@@ -14,17 +14,10 @@
* file.
*/
#import "OFObject.h"
-#ifndef __STDC_LIMIT_MACROS
-# define __STDC_LIMIT_MACROS
-#endif
-#ifndef __STDC_CONSTANT_MACROS
-# define __STDC_CONSTANT_MACROS
-#endif
-
#include
#include
#if defined(OF_APPLE_RUNTIME) || defined(OF_GNU_RUNTIME)
# import
Index: src/of_asprintf.h
==================================================================
--- src/of_asprintf.h
+++ src/of_asprintf.h
@@ -11,10 +11,17 @@
* Alternatively, it may be distributed under the terms of the GNU General
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
+
+#ifndef __STDC_LIMIT_MACROS
+# define __STDC_LIMIT_MACROS
+#endif
+#ifndef __STDC_CONSTANT_MACROS
+# define __STDC_CONSTANT_MACROS
+#endif
#include
#import "macros.h"
Index: src/of_strptime.h
==================================================================
--- src/of_strptime.h
+++ src/of_strptime.h
@@ -11,10 +11,17 @@
* Alternatively, it may be distributed under the terms of the GNU General
* Public License, either version 2 or 3, which can be found in the file
* LICENSE.GPLv2 or LICENSE.GPLv3 respectively included in the packaging of this
* file.
*/
+
+#ifndef __STDC_LIMIT_MACROS
+# define __STDC_LIMIT_MACROS
+#endif
+#ifndef __STDC_CONSTANT_MACROS
+# define __STDC_CONSTANT_MACROS
+#endif
#include
#ifdef __cplusplus
extern "C" {
Index: utils/objfw-compile
==================================================================
--- utils/objfw-compile
+++ utils/objfw-compile
@@ -84,11 +84,11 @@
exit 1
fi
shift
- if ! echo "$1" | grep "^[0-9]\+\.[0-9]\+" >/dev/null
+ if ! echo "$1" | grep "^[0-9]\+\.[0-9]\+$" >/dev/null
then
echo "$1 is not a valid library version!"
exit 1
fi
Index: utils/objfw-config.in
==================================================================
--- utils/objfw-config.in
+++ utils/objfw-config.in
@@ -35,11 +35,11 @@
LIBS="-L${libdir} -lobjfw @LIBS@"
PLUGIN_CFLAGS="@PLUGIN_CFLAGS@"
PLUGIN_LDFLAGS="@PLUGIN_LDFLAGS@"
PLUGIN_SUFFIX="@PLUGIN_SUFFIX@"
PROG_SUFFIX="@EXEEXT@"
-VERSION="0.6-dev"
+VERSION="0.6"
show_help() {
cat <<__EOF__
objfw-config: Available arguments are: