Modified README.md
from [711c05e9ce]
to [b12bc1a9ce].
︙ | | |
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
|
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
|
-
+
|
<h1 id="first-app">Writing your first application with ObjFW</h1>
To create your first, empty application, you can use `objfw-new`:
$ objfw-new --app MyFirstApp
This creates a file `MyFirstApp.m`. The `-[applicationDidFinishLaunching]`
This creates a file `MyFirstApp.m`. The `-[applicationDidFinishLaunching:]`
method is called as soon as ObjFW finished all initialization. Use this as
the entry point to your own code. For example, you could add the following
line there to create a "Hello World":
[OFStdOut writeLine: @"Hello World!"];
You can compile your new app using `objfw-compile`:
|
︙ | | |
Modified build-aux/m4/buildsys.m4
from [0e90ccf38e]
to [8a265c0c72].
1
2
3
4
5
6
7
8
9
10
|
1
2
3
4
5
6
7
8
9
10
|
-
+
|
dnl
dnl Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2016, 2017,
dnl 2018, 2020, 2021
dnl 2018, 2020, 2021, 2022
dnl Jonathan Schleifer <js@nil.im>
dnl
dnl https://fossil.nil.im/buildsys
dnl
dnl Permission to use, copy, modify, and/or distribute this software for any
dnl purpose with or without fee is hereby granted, provided that the above
dnl copyright notice and this permission notice is present in all copies.
|
︙ | | |
Modified buildsys.mk.in
from [2dfee6e012]
to [e067a2f2b2].
1
2
3
4
5
6
7
8
9
10
|
1
2
3
4
5
6
7
8
9
10
|
-
+
|
#
# Copyright (c) 2007, 2008, 2009, 2010, 2011, 2012, 2013, 2014, 2015, 2016,
# 2017, 2018, 2020, 2021
# 2017, 2018, 2020, 2021, 2022
# Jonathan Schleifer <js@nil.im>
#
# https://fossil.nil.im/buildsys
#
# Permission to use, copy, modify, and/or distribute this software for any
# purpose with or without fee is hereby granted, provided that the above
# copyright notice and this permission notice is present in all copies.
|
︙ | | |
Modified generators/library/LibraryGenerator.m
from [9e464281b0]
to [5f9c6926df].
︙ | | |
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
|
-
+
|
include: funcArray] autorelease];
[linkLibGenerator generate];
[glueGenerator generate];
[funcArrayGenerator generate];
}
- (void)applicationDidFinishLaunching
- (void)applicationDidFinishLaunching: (OFNotification *)notification
{
[self generateInDirectory: @"../../src"];
[self generateInDirectory: @"../../src/runtime"];
[OFApplication terminate];
}
@end
|
Modified generators/unicode/TableGenerator.m
from [c1835e042f]
to [f18304006d].
︙ | | |
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
|
-
+
|
[self release];
@throw e;
}
return self;
}
- (void)applicationDidFinishLaunching
- (void)applicationDidFinishLaunching: (OFNotification *)notification
{
OFHTTPRequest *request;
[OFStdOut writeString: @"Downloading UnicodeData.txt…"];
_state = stateUnicodeData;
request = [OFHTTPRequest requestWithURI:
[OFURI URIWithString: unicodeDataURI]];
|
︙ | | |
Modified src/Makefile
from [db6617eb38]
to [4123892971].
︙ | | |
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
|
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
|
+
-
+
-
|
OFSubarray.m \
OFUTF8String.m \
${LIBBASES_M} \
${RUNTIME_AUTORELEASE_M} \
${RUNTIME_INSTANCE_M} \
${UNICODE_M}
SRCS_FILES += OFFileURIHandler.m
SRCS_SOCKETS += OFAsyncIPSocketConnector.m \
SRCS_SOCKETS += OFDNSResolverSettings.m \
OFDNSResolverSettings.m \
${OF_EPOLL_KERNEL_EVENT_OBSERVER_M} \
OFHTTPURIHandler.m \
OFHostAddressResolver.m \
OFIPSocketAsyncConnector.m \
OFKernelEventObserver.m \
${OF_KQUEUE_KERNEL_EVENT_OBSERVER_M} \
${OF_POLL_KERNEL_EVENT_OBSERVER_M} \
${OF_SELECT_KERNEL_EVENT_OBSERVER_M} \
OFTCPSocketSOCKS5Connector.m
SRCS_WINDOWS += platform/Windows/OFWin32ConsoleStdIOStream.m \
versioninfo.rc
|
︙ | | |
Modified src/OFApplication.h
from [d7b817478b]
to [df94634a83].
︙ | | |
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
+
+
+
+
+
+
|
@class OFArray OF_GENERIC(ObjectType);
@class OFDictionary OF_GENERIC(KeyType, ObjectType);
@class OFMutableArray OF_GENERIC(ObjectType);
@class OFMutableDictionary OF_GENERIC(KeyType, ObjectType);
@class OFSandbox;
@class OFString;
/**
* @brief A notification that will be sent when the application did finish
* launching.
*/
extern const OFNotificationName OFApplicationDidFinishLaunchingNotification;
/**
* @brief A notification that will be sent when the application will terminate.
*/
extern const OFNotificationName OFApplicationWillTerminateNotification;
/**
* @brief Specify the class to be used as the application delegate.
|
︙ | | |
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
|
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
|
-
+
|
* @interface MyAppDelegate: OFObject <OFApplicationDelegate>
* @end
*
* // In MyAppDelegate.m:
* OF_APPLICATION_DELEGATE(MyAppDelegate)
*
* @implementation MyAppDelegate
* - (void)applicationDidFinishLaunching
* - (void)applicationDidFinishLaunching: (OFNotification *)notification
* {
* [OFApplication terminate];
* }
* @end
* @endcode
*/
#define OF_APPLICATION_DELEGATE(class_) \
|
︙ | | |
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
|
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
|
+
+
+
-
+
+
+
+
-
+
|
*
* @note Signals are not available on AmigaOS!
*/
@protocol OFApplicationDelegate <OFObject>
/**
* @brief A method which is called when the application was initialized and is
* running now.
*
* @param notification A notification with name
* OFApplicationDidFinishLaunchingNotification
*/
- (void)applicationDidFinishLaunching;
- (void)applicationDidFinishLaunching: (OFNotification *)notification;
@optional
/**
* @brief A method which is called when the application will terminate.
*
* @param notification A notification with name
* OFApplicationWillTerminateNotification
*/
- (void)applicationWillTerminate;
- (void)applicationWillTerminate: (OFNotification *)notification;
/**
* @brief A method which is called when the application received a SIGINT.
*
* @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
|
︙ | | |
Modified src/OFApplication.m
from [c3e00228c4]
to [d6f9eb583b].
︙ | | |
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
|
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
|
+
+
-
-
-
+
+
-
-
+
+
+
+
|
andArgumentValues: (char **[])argv
andWideArgumentCount: (int)wargc
andWideArgumentValues: (wchar_t *[])wargv;
#endif
- (void)of_run;
@end
const OFNotificationName OFApplicationDidFinishLaunchingNotification =
@"OFApplicationDidFinishLaunchingNotification";
const OFNotificationName OFApplicationWillTerminateNotification =
@"OFApplicationWillTerminateNotification";
static OFApplication *app = nil;
static void
atexitHandler(void)
{
id <OFApplicationDelegate> delegate = app.delegate;
[[OFNotificationCenter defaultCenter]
postNotificationName: OFApplicationWillTerminateNotification
OFNotification *notification = [OFNotification
notificationWithName: OFApplicationWillTerminateNotification
object: app];
if ([delegate respondsToSelector: @selector(applicationWillTerminate)])
[delegate applicationWillTerminate];
if ([delegate respondsToSelector: @selector(applicationWillTerminate:)])
[delegate applicationWillTerminate: notification];
[delegate release];
[[OFNotificationCenter defaultCenter] postNotification: notification];
#if defined(OF_HAVE_THREADS) && defined(OF_HAVE_SOCKETS) && \
defined(OF_AMIGAOS) && !defined(OF_MORPHOS)
OFSocketDeinit();
#endif
}
|
︙ | | |
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
|
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
|
+
+
+
+
+
+
+
+
-
+
+
|
#undef REGISTER_SIGNAL
}
- (void)of_run
{
void *pool = objc_autoreleasePoolPush();
OFRunLoop *runLoop;
OFNotification *notification;
#ifdef OF_HAVE_THREADS
[OFThread of_createMainThread];
runLoop = [OFRunLoop currentRunLoop];
#else
runLoop = [[[OFRunLoop alloc] init] autorelease];
#endif
[OFRunLoop of_setMainRunLoop: runLoop];
objc_autoreleasePoolPop(pool);
/*
* Note: runLoop is still valid after the release of the pool, as
* of_setMainRunLoop: retained it. However, we only have a weak
* reference to it now, whereas we had a strong reference before.
*/
pool = objc_autoreleasePoolPush();
notification = [OFNotification
notificationWithName: OFApplicationDidFinishLaunchingNotification
object: app];
[[OFNotificationCenter defaultCenter] postNotification: notification];
[_delegate applicationDidFinishLaunching];
[_delegate applicationDidFinishLaunching: notification];
objc_autoreleasePoolPop(pool);
[runLoop run];
}
- (void)terminate
{
|
︙ | | |
Renamed and modified
src/OFIPSocketAsyncConnector.h
[248ffd2ce4]
to src/OFAsyncIPSocketConnector.h
[00aff2415e].
︙ | | |
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
-
+
-
+
|
#import "OFDNSResolver.h"
#import "OFRunLoop.h"
#import "OFRunLoop+Private.h"
OF_ASSUME_NONNULL_BEGIN
@protocol OFIPSocketAsyncConnecting
@protocol OFAsyncIPSocketConnecting
- (bool)of_createSocketForAddress: (const OFSocketAddress *)address
errNo: (int *)errNo;
- (bool)of_connectSocketToAddress: (const OFSocketAddress *)address
errNo: (int *)errNo;
- (void)of_closeSocket;
@end
@interface OFIPSocketAsyncConnector: OFObject <OFRunLoopConnectDelegate,
@interface OFAsyncIPSocketConnector: OFObject <OFRunLoopConnectDelegate,
OFDNSResolverHostDelegate>
{
id _socket;
OFString *_host;
uint16_t _port;
id _Nullable _delegate;
id _Nullable _block;
|
︙ | | |
Renamed and modified
src/OFIPSocketAsyncConnector.m
[ca32b06485]
to src/OFAsyncIPSocketConnector.m
[b9084cfb8c].
︙ | | |
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
-
+
-
+
|
* file.
*/
#include "config.h"
#include <errno.h>
#import "OFIPSocketAsyncConnector.h"
#import "OFAsyncIPSocketConnector.h"
#import "OFData.h"
#import "OFTCPSocket.h"
#import "OFThread.h"
#import "OFTimer.h"
#import "OFConnectIPSocketFailedException.h"
#import "OFInvalidFormatException.h"
@implementation OFIPSocketAsyncConnector
@implementation OFAsyncIPSocketConnector
- (instancetype)initWithSocket: (id)sock
host: (OFString *)host
port: (uint16_t)port
delegate: (id)delegate
block: (id)block
{
self = [super init];
|
︙ | | |
Modified src/OFCondition.m
from [6291bb097b]
to [28f8553bac].
︙ | | |
15
16
17
18
19
20
21
22
23
24
25
26
27
28
|
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
+
|
#include "config.h"
#include <errno.h>
#import "OFCondition.h"
#import "OFDate.h"
#import "OFString.h"
#import "OFBroadcastConditionFailedException.h"
#import "OFConditionStillWaitingException.h"
#import "OFInitializationFailedException.h"
#import "OFSignalConditionFailedException.h"
#import "OFWaitForConditionFailedException.h"
|
︙ | | |
Modified src/OFDDPSocket.m
from [11bd6fb256]
to [d532fdd70f].
︙ | | |
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
42
43
44
45
46
47
48
49
50
51
52
53
54
55
|
-
-
-
-
|
unsigned int flags;
struct at_addr address, router;
unsigned short netStart, netEnd;
at_nvestr_t zoneName;
};
#endif
#ifndef ATPROTO_BASE
# define ATPROTO_BASE 0
#endif
@implementation OFDDPSocket
@dynamic delegate;
- (OFSocketAddress)bindToNetwork: (uint16_t)network
node: (uint8_t)node
port: (uint8_t)port
protocolType: (uint8_t)protocolType
|
︙ | | |
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
|
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
-
+
-
+
+
+
+
|
@throw [OFInvalidArgumentException exception];
if (_socket != OFInvalidSocketHandle)
@throw [OFAlreadyConnectedException exceptionWithSocket: self];
address = OFSocketAddressMakeAppleTalk(network, node, port);
#ifdef OF_MACOS
#if defined(OF_MACOS)
if ((_socket = socket(address.sockaddr.at.sat_family,
SOCK_RAW | SOCK_CLOEXEC, protocolType)) == OFInvalidSocketHandle)
#else
#elif defined(OF_WINDOWS)
if ((_socket = socket(address.sockaddr.at.sat_family,
SOCK_DGRAM | SOCK_CLOEXEC, ATPROTO_BASE + protocolType)) ==
OFInvalidSocketHandle)
#else
if ((_socket = socket(address.sockaddr.at.sat_family,
SOCK_DGRAM | SOCK_CLOEXEC, 0)) == OFInvalidSocketHandle)
#endif
@throw [OFBindDDPSocketFailedException
exceptionWithNetwork: network
node: node
port: port
protocolType: protocolType
socket: self
|
︙ | | |
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
|
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
|
+
-
-
+
+
+
+
-
-
+
+
+
|
ssize_t ret;
uint8_t protocolType;
struct iovec iov[2] = {
{ &protocolType, 1 },
{ buffer, length }
};
struct msghdr msg = {
.msg_name = (sender != NULL
.msg_name = (struct sockaddr *)&sender->sockaddr,
.msg_namelen = (socklen_t)sizeof(sender->sockaddr),
? (struct sockaddr *)&sender->sockaddr : NULL),
.msg_namelen = (sender != NULL
? (socklen_t)sizeof(sender->sockaddr) : 0),
.msg_iov = iov,
.msg_iovlen = 2
};
if (_socket == OFInvalidSocketHandle)
@throw [OFNotOpenException exceptionWithObject: self];
if ((ret = recvmsg(_socket, &msg, 0)) < 0)
@throw [OFReadFailedException
exceptionWithObject: self
requestedLength: length
errNo: OFSocketErrNo()];
if (ret < 1 || protocolType != _protocolType)
@throw [OFReadFailedException exceptionWithObject: self
requestedLength: length
errNo: ENOMSG];
if (sender != NULL) {
sender->length = msg.msg_namelen;
sender->family = OFSocketAddressFamilyAppleTalk;
sender->length = msg.msg_namelen;
sender->family = OFSocketAddressFamilyAppleTalk;
}
return ret - 1;
}
- (void)sendBuffer: (const void *)buffer
length: (size_t)length
receiver: (const OFSocketAddress *)receiver
|
︙ | | |
Modified src/OFDNSResolver.m
from [982d647b8f]
to [9048cbfc52].
︙ | | |
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
|
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
|
+
-
+
|
if (context == nil)
return true;
if (context->_TCPSocket != nil) {
if ([_TCPQueries objectForKey: context->_TCPSocket] != context)
return true;
} else if (sender == NULL ||
} else if (!OFSocketAddressEqual(sender, &context->_usedNameServer))
!OFSocketAddressEqual(sender, &context->_usedNameServer))
return true;
[context->_cancelTimer invalidate];
[context->_cancelTimer release];
context->_cancelTimer = nil;
[_queries removeObjectForKey: ID];
|
︙ | | |
Modified src/OFDNSResolverSettings.m
from [bdd49f7898]
to [1a84838633].
︙ | | |
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
|
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
|
-
-
+
|
} @catch (OFOpenItemFailedException *e) {
objc_autoreleasePoolPop(pool);
return;
}
staticHosts = [OFMutableDictionary dictionary];
/* Use ISO 8859-1 to ignore any potential non-UTF-8 comments. */
while ((line =
[file readLineWithEncoding: OFStringEncodingISO8859_1]) != nil) {
[file readLineWithEncoding: [OFLocale encoding]]) != nil) {
OFArray *components, *hosts;
size_t pos;
OFString *address;
pos = [line rangeOfString: @"#"].location;
if (pos != OFNotFound)
line = [line substringToIndex: pos];
|
︙ | | |
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
|
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
|
-
-
+
|
objc_autoreleasePoolPop(pool);
return;
}
if (nameServers == nil)
nameServers = [OFMutableArray array];
/* Use ISO 8859-1 to ignore any potential non-UTF-8 comments. */
while ((line =
[file readLineWithEncoding: OFStringEncodingISO8859_1]) != nil) {
[file readLineWithEncoding: [OFLocale encoding]]) != nil) {
void *pool2 = objc_autoreleasePoolPush();
size_t pos;
OFArray *components, *arguments;
OFString *option;
pos = [line indexOfCharacterFromSet: commentCharacters];
if (pos != OFNotFound)
|
︙ | | |
Modified src/OFDatagramSocket.h
from [777d90d4d3]
to [81b28eb069].
︙ | | |
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
|
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
|
-
+
|
* address of the sender
* @return The length of the received datagram
* @throw OFReadFailedException Receiving failed
* @throw OFNotOpenException The socket is not open
*/
- (size_t)receiveIntoBuffer: (void *)buffer
length: (size_t)length
sender: (OFSocketAddress *)sender;
sender: (nullable OFSocketAddress *)sender;
/**
* @brief Asynchronously receives a datagram and stores it into the specified
* buffer.
*
* If the buffer is too small, the datagram is truncated.
*
|
︙ | | |
Modified src/OFDatagramSocket.m
from [946605e073]
to [ea19c6b109].
︙ | | |
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
|
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
|
+
-
+
-
+
+
-
+
+
+
-
-
-
-
+
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
-
-
-
+
+
+
+
|
sender: (OFSocketAddress *)sender
{
ssize_t ret;
if (_socket == OFInvalidSocketHandle)
@throw [OFNotOpenException exceptionWithObject: self];
if (sender != NULL)
sender->length = (socklen_t)sizeof(sender->sockaddr);
sender->length = (socklen_t)sizeof(sender->sockaddr);
#ifndef OF_WINDOWS
if ((ret = recvfrom(_socket, buffer, length, 0,
(struct sockaddr *)&sender->sockaddr, &sender->length)) < 0)
(sender != NULL ? (struct sockaddr *)&sender->sockaddr : NULL),
(sender != NULL ? &sender->length : NULL))) < 0)
@throw [OFReadFailedException
exceptionWithObject: self
requestedLength: length
errNo: OFSocketErrNo()];
#else
if (length > INT_MAX)
@throw [OFOutOfRangeException exception];
if ((ret = recvfrom(_socket, buffer, (int)length, 0,
(struct sockaddr *)&sender->sockaddr, &sender->length)) < 0)
(sender != NULL ? (struct sockaddr *)&sender->sockaddr : NULL),
(sender != NULL ? &sender->length : NULL))) < 0)
@throw [OFReadFailedException
exceptionWithObject: self
requestedLength: length
errNo: OFSocketErrNo()];
#endif
if (sender != NULL) {
switch (((struct sockaddr *)&sender->sockaddr)->sa_family) {
case AF_INET:
sender->family = OFSocketAddressFamilyIPv4;
break;
switch (((struct sockaddr *)&sender->sockaddr)->sa_family) {
case AF_INET:
sender->family = OFSocketAddressFamilyIPv4;
break;
#ifdef OF_HAVE_IPV6
case AF_INET6:
sender->family = OFSocketAddressFamilyIPv6;
break;
case AF_INET6:
sender->family = OFSocketAddressFamilyIPv6;
break;
#endif
#ifdef OF_HAVE_UNIX_SOCKETS
case AF_UNIX:
sender->family = OFSocketAddressFamilyUNIX;
break;
case AF_UNIX:
sender->family = OFSocketAddressFamilyUNIX;
break;
#endif
#ifdef OF_HAVE_IPX
case AF_IPX:
sender->family = OFSocketAddressFamilyIPX;
break;
case AF_IPX:
sender->family = OFSocketAddressFamilyIPX;
break;
#endif
#ifdef OF_HAVE_APPLETALK
case AF_APPLETALK:
sender->family = OFSocketAddressFamilyAppleTalk;
break;
case AF_APPLETALK:
sender->family = OFSocketAddressFamilyAppleTalk;
break;
#endif
default:
sender->family = OFSocketAddressFamilyUnknown;
break;
default:
sender->family = OFSocketAddressFamilyUnknown;
break;
}
}
return ret;
}
- (void)asyncReceiveIntoBuffer: (void *)buffer length: (size_t)length
{
|
︙ | | |
Modified src/OFMethodSignature.m
from [e6d0a405ec]
to [9c702fcecb].
︙ | | |
142
143
144
145
146
147
148
149
150
151
152
153
154
155
|
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
|
+
+
+
+
|
(*type)++;
(*length)--;
return alignment;
}
static size_t
#if defined(__clang__) && __clang_major__ == 3 && __clang_minor__ <= 7
/* Work around an ICE in Clang 3.7.0 on Windows/x86 */
__attribute__((__optnone__))
#endif
alignmentOfEncoding(const char **type, size_t *length, bool inStruct)
{
size_t alignment;
if (*length == 0)
@throw [OFInvalidFormatException exception];
|
︙ | | |
Modified src/OFStdIOStream.m
from [bc85c7051b]
to [9ab60802c8].
︙ | | |
126
127
128
129
130
131
132
133
134
135
136
137
138
139
|
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
|
+
+
+
|
date = [OFDate date];
dateString = [date localDateStringWithFormat: @"%Y-%m-%d %H:%M:%S"];
#ifdef OF_HAVE_FILES
me = [OFApplication programName].lastPathComponent;
#else
me = [OFApplication programName];
#endif
if (me == nil)
me = @"?";
msg = [[[OFString alloc] initWithFormat: format
arguments: arguments] autorelease];
[OFStdErr writeFormat: @"[%@.%03d %@(%d)] %@\n", dateString,
date.microsecond / 1000, me, getpid(), msg];
|
︙ | | |
Modified src/OFTCPSocket.m
from [246d2d6fc1]
to [bab73573da].
︙ | | |
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
|
+
-
|
#include <string.h>
#ifdef HAVE_FCNTL_H
# include <fcntl.h>
#endif
#import "OFTCPSocket.h"
#import "OFAsyncIPSocketConnector.h"
#import "OFDNSResolver.h"
#import "OFData.h"
#import "OFDate.h"
#import "OFIPSocketAsyncConnector.h"
#import "OFRunLoop.h"
#import "OFRunLoop+Private.h"
#import "OFSocket.h"
#import "OFSocket+Private.h"
#import "OFString.h"
#import "OFTCPSocketSOCKS5Connector.h"
#import "OFThread.h"
|
︙ | | |
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
|
-
+
|
static const OFRunLoopMode connectRunLoopMode =
@"OFTCPSocketConnectRunLoopMode";
static OFString *defaultSOCKS5Host = nil;
static uint16_t defaultSOCKS5Port = 1080;
@interface OFTCPSocket () <OFIPSocketAsyncConnecting>
@interface OFTCPSocket () <OFAsyncIPSocketConnecting>
@end
@interface OFTCPSocketConnectDelegate: OFObject <OFTCPSocketDelegate>
{
@public
bool _done;
id _exception;
|
︙ | | |
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
|
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
|
-
+
|
#endif
] autorelease];
host = _SOCKS5Host;
port = _SOCKS5Port;
} else
delegate = _delegate;
[[[[OFIPSocketAsyncConnector alloc]
[[[[OFAsyncIPSocketConnector alloc]
initWithSocket: self
host: host
port: port
delegate: delegate
block: NULL
] autorelease] startWithRunLoopMode: runLoopMode];
|
︙ | | |
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
|
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
|
-
+
|
port: port
delegate: nil
block: block] autorelease];
host = _SOCKS5Host;
port = _SOCKS5Port;
}
[[[[OFIPSocketAsyncConnector alloc]
[[[[OFAsyncIPSocketConnector alloc]
initWithSocket: self
host: host
port: port
delegate: delegate
block: (delegate == nil ? block : NULL)] autorelease]
startWithRunLoopMode: runLoopMode];
|
︙ | | |
Modified src/exceptions/OFBindDDPSocketFailedException.m
from [f28f7b74d9]
to [10cafd22cd].
︙ | | |
70
71
72
73
74
75
76
77
78
79
80
81
82
|
70
71
72
73
74
75
76
77
78
79
80
81
82
|
-
+
|
return self;
}
- (OFString *)description
{
return [OFString stringWithFormat:
@"Binding to port %" @PRIx8 @" of node %" @PRIx8 @" on network "
@"%" PRIx16 @" with protocol type " @PRIx8 @" failed in socket of "
@"%" PRIx16 @" with protocol type %" @PRIx8 @" failed in socket of "
@"type %@: %@",
_port, _node, _network, _protocolType, [_socket class],
OFStrError(_errNo)];
}
@end
|
Modified src/macros.h
from [f1f0c6d274]
to [f91adbff97].
︙ | | |
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
|
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
|
+
+
-
-
+
+
-
|
do { \
if OF_UNLIKELY (!(cond)) \
objc_error("ObjFWRT @ " __FILE__ ":" \
OF_STRINGIFY(__LINE__), \
"Failed to ensure condition:\n" #cond); \
} while(0)
#else
@class OFConstantString;
extern void OFLog(OFConstantString *_Nonnull, ...);
# define OFEnsure(cond) \
do { \
if OF_UNLIKELY (!(cond)) { \
fprintf(stderr, "Failed to ensure condition " \
"in " __FILE__ ":%d:\n" #cond "\n", \
OFLog(@"Failed to ensure condition in " \
@__FILE__ ":%d: " @#cond, __LINE__); \
__LINE__); \
abort(); \
} \
} while (0)
#endif
#define OF_UNRECOGNIZED_SELECTOR OFMethodNotFound(self, _cmd);
#if __has_feature(objc_arc)
|
︙ | | |
Modified src/platform/AmigaOS/OFPlainThread.m
from [70ea6c25e9]
to [c57285f4e8].
︙ | | |
16
17
18
19
20
21
22
23
24
25
26
27
28
29
|
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
|
+
|
#include "config.h"
#include <assert.h>
#include <errno.h>
#import "OFPlainThread.h"
#import "OFData.h"
#import "OFString.h"
#import "OFTLSKey.h"
#include <dos/dostags.h>
#include <proto/dos.h>
#include <proto/exec.h>
#ifndef OF_MORPHOS
|
︙ | | |
Modified src/runtime/amiga-end.m
from [0cdcd50b7f]
to [103c98442e].
︙ | | |
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
|
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
|
-
+
-
+
+
+
+
+
+
-
+
|
* file.
*/
#include "config.h"
#include "platform.h"
#ifdef OF_MORPHOS
#if defined(OF_MORPHOS)
__asm__ (
".section .eh_frame, \"aw\"\n"
" .long 0\n"
".section .ctors, \"aw\"\n"
" .long 0"
);
#else
#elif defined(OF_AMIGAOS_M68K)
__asm__ (
".section .list___EH_FRAME_BEGINS__, \"aw\"\n"
" .long 0\n"
".section .dlist___EH_FRAME_OBJECTS__, \"aw\"\n"
" .long 0\n"
".section .list___CTOR_LIST__, \"aw\"\n"
""
" .long 0"
);
#endif
|
Modified src/runtime/amiga-library.m
from [8a6730d0a3]
to [56f25f5e02].
︙ | | |
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
|
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
|
-
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
|
.rt_Init = &init_table,
#ifdef OF_MORPHOS
.rt_Revision = OBJFWRT_LIB_MINOR,
.rt_Tags = NULL,
#endif
};
#ifdef OF_MORPHOS
#if defined(OF_MORPHOS)
__asm__ (
".section .eh_frame, \"aw\"\n"
".globl __EH_FRAME_BEGIN__\n"
".type __EH_FRAME_BEGIN__, @object\n"
"__EH_FRAME_BEGIN__:\n"
".section .ctors, \"aw\"\n"
".globl __CTOR_LIST__\n"
".type __CTOR_LIST__, @object\n"
"__CTOR_LIST__:\n"
".section .text"
);
#elif defined(OF_AMIGAOS_M68K)
__asm__ (
".section .list___EH_FRAME_BEGINS__, \"aw\"\n"
".globl __EH_FRAME_BEGIN__\n"
".type __EH_FRAME_BEGIN__, @object\n"
"__EH_FRAME_BEGINS__:\n"
".section .dlist___EH_FRAME_OBJECTS__, \"aw\"\n"
".globl __EH_FRAME_OBJECTS__\n"
".type __EH_FRAME_OBJECTS__, @object\n"
"__EH_FRAME_OBJECTS__:\n"
".section .list___CTOR_LIST__, \"aw\"\n"
".globl ___CTOR_LIST__\n"
".type ___CTOR_LIST__, @object\n"
"___CTOR_LIST__:\n"
".section .text"
);
#endif
|
Modified src/runtime/class.m
from [bcbf47b312]
to [4cb79aa414].
︙ | | |
776
777
778
779
780
781
782
783
784
785
786
787
788
789
|
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
|
+
+
+
+
|
class->methodList = methodList;
objc_updateDTable(class);
}
Method
#if defined(__clang__) && __clang_major__ == 3 && __clang_minor__ <= 7
/* Work around an ICE in Clang 3.7.0 on Windows/x86 */
__attribute__((__optnone__))
#endif
class_getInstanceMethod(Class class, SEL selector)
{
Method method;
Class superclass;
if (class == Nil)
return NULL;
|
︙ | | |
Modified tests/OFIPXSocketTests.m
from [59b38899e7]
to [abf65b2714].
︙ | | |
25
26
27
28
29
30
31
32
33
34
35
36
37
38
|
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
|
+
|
- (void)IPXSocketTests
{
const unsigned char zeroNode[IPX_NODE_LEN] = { 0 };
void *pool = objc_autoreleasePoolPush();
OFIPXSocket *sock;
OFSocketAddress address1, address2;
char buffer[5];
unsigned char node1[IPX_NODE_LEN], node2[IPX_NODE_LEN];
TEST(@"+[socket]", (sock = [OFIPXSocket socket]))
@try {
TEST(@"-[bindToNetwork:node:port:packetType:]",
R(address1 = [sock bindToNetwork: 0
node: zeroNode
|
︙ | | |
63
64
65
66
67
68
69
70
71
72
73
74
75
|
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
+
+
+
-
-
+
+
|
TEST(@"-[sendBuffer:length:receiver:]",
R([sock sendBuffer: "Hello" length: 5 receiver: &address1]))
TEST(@"-[receiveIntoBuffer:length:sender:]",
[sock receiveIntoBuffer: buffer length: 5 sender: &address2] == 5 &&
memcmp(buffer, "Hello", 5) == 0 &&
R(OFSocketAddressGetIPXNode(&address1, node1)) &&
R(OFSocketAddressGetIPXNode(&address2, node2)) &&
memcmp(node1, node2, IPX_NODE_LEN) == 0 &&
OFSocketAddressEqual(&address1, &address2) &&
OFSocketAddressHash(&address1) == OFSocketAddressHash(&address2))
OFSocketAddressIPXPort(&address1) ==
OFSocketAddressIPXPort(&address2))
objc_autoreleasePoolPop(pool);
}
@end
|
Modified tests/OFSocketTests.m
from [0766971ff5]
to [efb70d49d6].
︙ | | |
111
112
113
114
115
116
117
118
119
120
121
122
123
124
|
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
|
+
+
+
+
+
+
|
OFFromBigEndian16(addr.sockaddr.in6.sin6_port) == 1234)
TEST(@"Parsing an IPv6 #5",
R(addr = OFSocketAddressParseIP(@"::aaAa", 1234)) &&
COMPARE_V6(addr, 0, 0, 0, 0, 0, 0, 0, 0xAAAA) &&
OFFromBigEndian16(addr.sockaddr.in6.sin6_port) == 1234)
TEST(@"Parsing an IPv6 #6",
R(addr = OFSocketAddressParseIP(@"fd00::1%123", 1234)) &&
COMPARE_V6(addr, 0xFD00, 0, 0, 0, 0, 0, 0, 1) &&
OFFromBigEndian16(addr.sockaddr.in6.sin6_port) == 1234 &&
addr.sockaddr.in6.sin6_scope_id == 123)
EXPECT_EXCEPTION(@"Refusing invalid IPv6 #1", OFInvalidFormatException,
OFSocketAddressParseIP(@"1:::2", 1234))
EXPECT_EXCEPTION(@"Refusing invalid IPv6 #2", OFInvalidFormatException,
OFSocketAddressParseIP(@"1: ::2", 1234))
EXPECT_EXCEPTION(@"Refusing invalid IPv6 #3", OFInvalidFormatException,
|
︙ | | |
142
143
144
145
146
147
148
149
150
151
152
153
154
155
|
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
|
+
+
|
EXPECT_EXCEPTION(@"Refusing invalid IPv6 #9", OFInvalidFormatException,
OFSocketAddressParseIP(@"1:2:3:4:5:6:7::", 1234))
EXPECT_EXCEPTION(@"Refusing invalid IPv6 #10", OFInvalidFormatException,
OFSocketAddressParseIP(@"1:2", 1234))
TEST(@"Port of an IPv6 address", OFSocketAddressIPPort(&addr) == 1234)
addr.sockaddr.in6.sin6_scope_id = 0;
SET_V6(addr, 0, 0, 0, 0, 0, 0, 0, 0)
TEST(@"Converting an IPv6 to a string #1",
[OFSocketAddressString(&addr) isEqual: @"::"])
SET_V6(addr, 0, 0, 0, 0, 0, 0, 0, 1)
TEST(@"Converting an IPv6 to a string #2",
|
︙ | | |
Modified tests/TestsAppDelegate.m
from [9a4aeebd6d]
to [38bbd5a2a3].
︙ | | |
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
|
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
|
-
+
|
if (OFStdOut.hasTerminal) {
[OFStdOut writeString: @"\r"];
[OFStdOut reset];
[OFStdOut eraseLine];
}
}
- (void)applicationDidFinishLaunching
- (void)applicationDidFinishLaunching: (OFNotification *)notification
{
#if defined(OF_IOS) && defined(OF_HAVE_FILES)
CFBundleRef mainBundle = CFBundleGetMainBundle();
CFURLRef resourcesURL = CFBundleCopyResourcesDirectoryURL(mainBundle);
UInt8 resourcesPath[PATH_MAX];
if (!CFURLGetFileSystemRepresentation(resourcesURL, true, resourcesPath,
|
︙ | | |
Modified tests/terminal/TerminalTests.m
from [695364c6d5]
to [98d7249eb5].
︙ | | |
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
|
-
+
|
@interface TerminalTests: OFObject <OFApplicationDelegate>
@end
OF_APPLICATION_DELEGATE(TerminalTests)
@implementation TerminalTests
- (void)applicationDidFinishLaunching
- (void)applicationDidFinishLaunching: (OFNotification *)notification
{
OFArray *colors = [OFArray arrayWithObjects:
[OFColor black], [OFColor silver], [OFColor grey], [OFColor white],
[OFColor maroon], [OFColor red], [OFColor purple],
[OFColor fuchsia], [OFColor green], [OFColor lime], [OFColor olive],
[OFColor yellow], [OFColor navy], [OFColor blue], [OFColor teal],
[OFColor aqua], nil];
|
︙ | | |
Modified utils/objfw-new/NewApp.m
from [a817ca083b]
to [47a07d5858].
︙ | | |
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
|
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
|
-
+
+
|
@"\n"
@"@interface %@: OFObject <OFApplicationDelegate>\n"
@"@end\n"
@"\n"
@"OF_APPLICATION_DELEGATE(%@)\n"
@"\n"
@"@implementation %@\n"
@"- (void)applicationDidFinishLaunching\n"
@"- (void)applicationDidFinishLaunching: "
@"(OFNotification *)notification\n"
@"{\n"
@" [OFApplication terminate];\n"
@"}\n"
@"@end\n",
name, name, name];
[file close];
}
|
Modified utils/objfw-new/ObjFWNew.m
from [efa3835453]
to [e1d195ab36].
︙ | | |
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
|
-
+
|
[OFStdErr writeFormat: @"Usage: %@ --app|--class name\n",
[OFApplication programName]];
[OFApplication terminateWithStatus: 1];
}
@implementation ObjFWNew
- (void)applicationDidFinishLaunching
- (void)applicationDidFinishLaunching: (OFNotification *)notification
{
bool app, class;
OFString *superclass = nil, *name;
OFMutableArray OF_GENERIC(OFString *) *properties = nil;
const OFOptionsParserOption options[] = {
{ 'a', @"app", 0, &app, NULL },
{ 'c', @"class", 0, &class, NULL },
|
︙ | | |
Modified utils/ofarc/OFArc.m
from [92125fd380]
to [1abc9749ff].
︙ | | |
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
|
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
|
-
+
|
[expandedFiles addObject: file];
}
[archive addFiles: expandedFiles];
}
@implementation OFArc
- (void)applicationDidFinishLaunching
- (void)applicationDidFinishLaunching: (OFNotification *)notification
{
OFString *outputDir, *encodingString, *type;
const OFOptionsParserOption options[] = {
{ 'a', @"append", 0, NULL, NULL },
{ 'c', @"create", 0, NULL, NULL },
{ 'C', @"directory", 1, NULL, &outputDir },
{ 'E', @"encoding", 1, NULL, &encodingString },
|
︙ | | |
Modified utils/ofdns/OFDNS.m
from [7740440ce7]
to [32af1e7083].
︙ | | |
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
|
-
+
|
_errors++;
}
if (_inFlight == 0)
[OFApplication terminateWithStatus: _errors];
}
- (void)applicationDidFinishLaunching
- (void)applicationDidFinishLaunching: (OFNotification *)notification
{
OFString *DNSClassString, *server;
const OFOptionsParserOption options[] = {
{ 'c', @"class", 1, NULL, &DNSClassString },
{ 'h', @"help", 0, NULL, NULL },
{ 's', @"server", 1, NULL, &server },
{ 't', @"type", 1, NULL, NULL },
|
︙ | | |
Modified utils/ofhash/OFHash.m
from [9cab35b0cf]
to [8b4892a5e2].
︙ | | |
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
|
-
+
|
for (size_t i = 0; i < digestSize; i++)
[OFStdOut writeFormat: @"%02x", digest[i]];
[OFStdOut writeFormat: @" %@\n", path];
}
@implementation OFHash
- (void)applicationDidFinishLaunching
- (void)applicationDidFinishLaunching: (OFNotification *)notification
{
int exitStatus = 0;
bool calculateMD5, calculateRIPEMD160, calculateSHA1, calculateSHA224;
bool calculateSHA256, calculateSHA384, calculateSHA512;
const OFOptionsParserOption options[] = {
{ '\0', @"md5", 0, &calculateMD5, NULL },
{ '\0', @"ripemd160", 0, &calculateRIPEMD160, NULL },
|
︙ | | |
Modified utils/ofhttp/OFHTTP.m
from [36f1e9db6a]
to [4bdf3b8ffc].
︙ | | |
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
|
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
|
-
+
|
[OFStdErr writeLine: OF_LOCALIZED(@"invalid_input_proxy",
@"%[prog]: Proxy must to be in format host:port!",
@"prog", [OFApplication programName])];
[OFApplication terminateWithStatus: 1];
}
}
- (void)applicationDidFinishLaunching
- (void)applicationDidFinishLaunching: (OFNotification *)notification
{
OFString *outputPath;
const OFOptionsParserOption options[] = {
{ 'b', @"body", 1, NULL, NULL },
{ 'c', @"continue", 0, &_continue, NULL },
{ 'f', @"force", 0, &_force, NULL },
{ 'h', @"help", 0, NULL, NULL },
|
︙ | | |
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
|
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
|
-
+
|
OFString *range;
if (size > ULLONG_MAX)
@throw [OFOutOfRangeException exception];
_resumedFrom = (unsigned long long)size;
range = [OFString stringWithFormat: @"bytes=%jd-",
range = [OFString stringWithFormat: @"bytes=%ju-",
_resumedFrom];
[clientHeaders setObject: range forKey: @"Range"];
} @catch (OFGetItemAttributesFailedException *e) {
}
}
if (!_quiet) {
|
︙ | | |