Pārlūkot izejas kodu

Solve null-termination problems (with SA_NSDataExtensions)

IRCClient should no longer have any issues with null termination
of strings (expecting terminated strings and not getting them,
or vice versa).
master
achmizs pirms 10 gadiem
vecāks
revīzija
cf25915c92

+ 1
- 0
.gitignore Parādīt failu

*.ipa *.ipa


libirc* libirc*
NSData*


*~ *~

+ 20
- 4
IRCClient.xcodeproj/project.pbxproj Parādīt failu

objects = { objects = {


/* Begin PBXBuildFile section */ /* Begin PBXBuildFile section */
8657E6DD1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.h in Headers */ = {isa = PBXBuildFile; fileRef = 8657E6DB1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.h */; };
8657E6DE1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = 8657E6DC1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.m */; };
866EF0101C25FF07006303A1 /* libircclient.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 866EF00F1C25FF07006303A1 /* libircclient.a */; }; 866EF0101C25FF07006303A1 /* libircclient.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 866EF00F1C25FF07006303A1 /* libircclient.a */; };
868374A91C24E774005B97E5 /* IRCClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 868374A81C24E774005B97E5 /* IRCClient.h */; settings = {ATTRIBUTES = (Public, ); }; }; 868374A91C24E774005B97E5 /* IRCClient.h in Headers */ = {isa = PBXBuildFile; fileRef = 868374A81C24E774005B97E5 /* IRCClient.h */; settings = {ATTRIBUTES = (Public, ); }; };
86B6232C1C21FD7C00D6E3AF /* README in Resources */ = {isa = PBXBuildFile; fileRef = 86B6232B1C21FD7C00D6E3AF /* README */; }; 86B6232C1C21FD7C00D6E3AF /* README in Resources */ = {isa = PBXBuildFile; fileRef = 86B6232B1C21FD7C00D6E3AF /* README */; };
/* End PBXBuildFile section */ /* End PBXBuildFile section */


/* Begin PBXFileReference section */ /* Begin PBXFileReference section */
8657E6DB1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSData+SA_NSDataExtensions.h"; sourceTree = "<group>"; };
8657E6DC1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSData+SA_NSDataExtensions.m"; sourceTree = "<group>"; };
866EF00F1C25FF07006303A1 /* libircclient.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libircclient.a; sourceTree = "<group>"; }; 866EF00F1C25FF07006303A1 /* libircclient.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; path = libircclient.a; sourceTree = "<group>"; };
868374A81C24E774005B97E5 /* IRCClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IRCClient.h; sourceTree = "<group>"; }; 868374A81C24E774005B97E5 /* IRCClient.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = IRCClient.h; sourceTree = "<group>"; };
86B6232B1C21FD7C00D6E3AF /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = "<group>"; }; 86B6232B1C21FD7C00D6E3AF /* README */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text; path = README; sourceTree = "<group>"; };
/* End PBXFrameworksBuildPhase section */ /* End PBXFrameworksBuildPhase section */


/* Begin PBXGroup section */ /* Begin PBXGroup section */
8657E6DA1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions */ = {
isa = PBXGroup;
children = (
8657E6DB1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.h */,
8657E6DC1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.m */,
);
path = "NSData+SA_NSDataExtensions";
sourceTree = "<group>";
};
86D7849F1C24C39F00C7458D /* libircclient */ = { 86D7849F1C24C39F00C7458D /* libircclient */ = {
isa = PBXGroup; isa = PBXGroup;
children = ( children = (
children = ( children = (
868374A81C24E774005B97E5 /* IRCClient.h */, 868374A81C24E774005B97E5 /* IRCClient.h */,
86D7849F1C24C39F00C7458D /* libircclient */, 86D7849F1C24C39F00C7458D /* libircclient */,
8657E6DA1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions */,
86B6232B1C21FD7C00D6E3AF /* README */, 86B6232B1C21FD7C00D6E3AF /* README */,
86F2EFE81C21F73600B033A4 /* IRCClient */, 86F2EFE81C21F73600B033A4 /* IRCClient */,
86F2EFE71C21F73600B033A4 /* Products */, 86F2EFE71C21F73600B033A4 /* Products */,
86D784A61C24C39F00C7458D /* libirc_errors.h in Headers */, 86D784A61C24C39F00C7458D /* libirc_errors.h in Headers */,
86F2EFF91C21F81900B033A4 /* IRCClientChannel.h in Headers */, 86F2EFF91C21F81900B033A4 /* IRCClientChannel.h in Headers */,
86F2EFFB1C21F81900B033A4 /* IRCClientChannelDelegate.h in Headers */, 86F2EFFB1C21F81900B033A4 /* IRCClientChannelDelegate.h in Headers */,
8657E6DD1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.h in Headers */,
86F2EFFC1C21F81900B033A4 /* IRCClientSession.h in Headers */, 86F2EFFC1C21F81900B033A4 /* IRCClientSession.h in Headers */,
86D784A71C24C39F00C7458D /* libirc_events.h in Headers */, 86D784A71C24C39F00C7458D /* libirc_events.h in Headers */,
86D784A91C24C39F00C7458D /* libirc_rfcnumeric.h in Headers */, 86D784A91C24C39F00C7458D /* libirc_rfcnumeric.h in Headers */,
buildActionMask = 2147483647; buildActionMask = 2147483647;
files = ( files = (
86F2EFFD1C21F81900B033A4 /* IRCClientSession.m in Sources */, 86F2EFFD1C21F81900B033A4 /* IRCClientSession.m in Sources */,
8657E6DE1C29F4C700BD4E50 /* NSData+SA_NSDataExtensions.m in Sources */,
86F2EFFA1C21F81900B033A4 /* IRCClientChannel.m in Sources */, 86F2EFFA1C21F81900B033A4 /* IRCClientChannel.m in Sources */,
); );
runOnlyForDeploymentPostprocessing = 0; runOnlyForDeploymentPostprocessing = 0;
"DEBUG=1", "DEBUG=1",
"$(inherited)", "$(inherited)",
); );
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_TREAT_WARNINGS_AS_ERRORS = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
GCC_WARN_ABOUT_MISSING_NEWLINE = YES; GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
ENABLE_STRICT_OBJC_MSGSEND = YES; ENABLE_STRICT_OBJC_MSGSEND = YES;
GCC_C_LANGUAGE_STANDARD = gnu99; GCC_C_LANGUAGE_STANDARD = gnu99;
GCC_NO_COMMON_BLOCKS = YES; GCC_NO_COMMON_BLOCKS = YES;
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_TREAT_WARNINGS_AS_ERRORS = NO;
GCC_WARN_64_TO_32_BIT_CONVERSION = YES; GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
GCC_WARN_ABOUT_MISSING_NEWLINE = YES; GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
DYLIB_CURRENT_VERSION = 2.0; DYLIB_CURRENT_VERSION = 2.0;
DYLIB_INSTALL_NAME_BASE = "@rpath"; DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_VERSION = A; FRAMEWORK_VERSION = A;
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_TREAT_WARNINGS_AS_ERRORS = NO;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
GCC_WARN_ABOUT_MISSING_NEWLINE = YES; GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;
DYLIB_CURRENT_VERSION = 2.0; DYLIB_CURRENT_VERSION = 2.0;
DYLIB_INSTALL_NAME_BASE = "@rpath"; DYLIB_INSTALL_NAME_BASE = "@rpath";
FRAMEWORK_VERSION = A; FRAMEWORK_VERSION = A;
GCC_TREAT_WARNINGS_AS_ERRORS = YES;
GCC_TREAT_WARNINGS_AS_ERRORS = NO;
GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES; GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS = YES;
GCC_WARN_ABOUT_MISSING_NEWLINE = YES; GCC_WARN_ABOUT_MISSING_NEWLINE = YES;
GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES; GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED = YES;

+ 17
- 16
IRCClient/IRCClientChannel.m Parādīt failu



#import "IRCClientChannel.h" #import "IRCClientChannel.h"
#import "IRCClientChannel_Private.h" #import "IRCClientChannel_Private.h"
#import "NSData+SA_NSDataExtensions.h"


/*********************************************/ /*********************************************/
#pragma mark IRCClientChannel private category #pragma mark IRCClientChannel private category


- (int)part - (int)part
{ {
return irc_cmd_part(_irc_session, _name.bytes);
return irc_cmd_part(_irc_session, _name.SA_terminatedCString);
} }


- (int)invite:(NSString *)nick - (int)invite:(NSString *)nick
{ {
return irc_cmd_invite(_irc_session, nick.UTF8String, _name.bytes);
return irc_cmd_invite(_irc_session, nick.UTF8String, _name.SA_terminatedCString);
} }


- (int)refreshNames - (int)refreshNames
{ {
return irc_cmd_names(_irc_session, _name.bytes);
return irc_cmd_names(_irc_session, _name.SA_terminatedCString);
} }


- (void)setChannelTopic:(NSString *)newTopic - (void)setChannelTopic:(NSString *)newTopic
{ {
irc_cmd_topic(_irc_session, _name.bytes, [newTopic cStringUsingEncoding:_encoding]);
irc_cmd_topic(_irc_session, _name.SA_terminatedCString, [newTopic cStringUsingEncoding:_encoding]);
} }


- (int)setMode:(NSString *)mode params:(NSString *)params - (int)setMode:(NSString *)mode params:(NSString *)params
if(params != nil && params.length > 0) if(params != nil && params.length > 0)
[modeString appendFormat:@" %@", params]; [modeString appendFormat:@" %@", params];
return irc_cmd_channel_mode(_irc_session, _name.bytes, modeString.UTF8String);
return irc_cmd_channel_mode(_irc_session, _name.SA_terminatedCString, modeString.UTF8String);
} }


- (int)message:(NSString *)message - (int)message:(NSString *)message
{ {
return irc_cmd_msg(_irc_session, _name.bytes, [message cStringUsingEncoding:_encoding]);
return irc_cmd_msg(_irc_session, _name.SA_terminatedCString, [message cStringUsingEncoding:_encoding]);
} }


- (int)action:(NSString *)action - (int)action:(NSString *)action
{ {
return irc_cmd_me(_irc_session, _name.bytes, [action cStringUsingEncoding:_encoding]);
return irc_cmd_me(_irc_session, _name.SA_terminatedCString, [action cStringUsingEncoding:_encoding]);
} }


- (int)notice:(NSString *)notice - (int)notice:(NSString *)notice
{ {
return irc_cmd_notice(_irc_session, _name.bytes, [notice cStringUsingEncoding:_encoding]);
return irc_cmd_notice(_irc_session, _name.SA_terminatedCString, [notice cStringUsingEncoding:_encoding]);
} }


- (int)kick:(NSString *)nick reason:(NSString *)reason - (int)kick:(NSString *)nick reason:(NSString *)reason
{ {
return irc_cmd_kick(_irc_session, nick.UTF8String, _name.bytes, [reason cStringUsingEncoding:_encoding]);
return irc_cmd_kick(_irc_session, nick.UTF8String, _name.SA_terminatedCString, [reason cStringUsingEncoding:_encoding]);
} }


- (int)ctcpRequest:(NSData *)request - (int)ctcpRequest:(NSData *)request
{ {
return irc_cmd_ctcp_request(_irc_session, _name.bytes, request.bytes);
return irc_cmd_ctcp_request(_irc_session, _name.SA_terminatedCString, request.SA_terminatedCString);
} }


/****************************/ /****************************/


- (void)userParted:(NSString *)nick withReason:(NSData *)reason us:(BOOL)wasItUs - (void)userParted:(NSString *)nick withReason:(NSData *)reason us:(BOOL)wasItUs
{ {
NSString* reasonString = [[NSString alloc] initWithData:reason encoding:_encoding];
NSString* reasonString = [NSString stringWithCString:reason.SA_terminatedCString encoding:_encoding];
[_delegate userParted:nick withReason:reasonString us:wasItUs]; [_delegate userParted:nick withReason:reasonString us:wasItUs];
} }


{ {
_topic = topic; _topic = topic;
NSString* topicString = [[NSString alloc] initWithData:_topic encoding:_encoding];
NSString* topicString = [NSString stringWithCString:topic.SA_terminatedCString encoding:_encoding];
[_delegate topicSet:topicString by:nick]; [_delegate topicSet:topicString by:nick];
} }


- (void)userKicked:(NSString *)nick withReason:(NSData *)reason by:(NSString *)byNick us:(BOOL)wasItUs - (void)userKicked:(NSString *)nick withReason:(NSData *)reason by:(NSString *)byNick us:(BOOL)wasItUs
{ {
NSString* reasonString = [[NSString alloc] initWithData:reason encoding:_encoding];
NSString* reasonString = [NSString stringWithCString:reason.SA_terminatedCString encoding:_encoding];
[_delegate userKicked:nick withReason:reasonString by:byNick us:wasItUs]; [_delegate userKicked:nick withReason:reasonString by:byNick us:wasItUs];
} }


- (void)messageSent:(NSData *)message byUser:(NSString *)nick - (void)messageSent:(NSData *)message byUser:(NSString *)nick
{ {
NSString* messageString = [[NSString alloc] initWithData:message encoding:_encoding];
NSString* messageString = [NSString stringWithCString:message.SA_terminatedCString encoding:_encoding];
[_delegate messageSent:messageString byUser:nick]; [_delegate messageSent:messageString byUser:nick];
} }


- (void)noticeSent:(NSData *)notice byUser:(NSString *)nick - (void)noticeSent:(NSData *)notice byUser:(NSString *)nick
{ {
NSString* noticeString = [[NSString alloc] initWithData:notice encoding:_encoding];
NSString* noticeString = [NSString stringWithCString:notice.SA_terminatedCString encoding:_encoding];
[_delegate noticeSent:noticeString byUser:nick]; [_delegate noticeSent:noticeString byUser:nick];
} }


- (void)actionPerformed:(NSData *)action byUser:(NSString *)nick - (void)actionPerformed:(NSData *)action byUser:(NSString *)nick
{ {
NSString* actionString = [[NSString alloc] initWithData:action encoding:_encoding];
NSString* actionString = [NSString stringWithCString:action.SA_terminatedCString encoding:_encoding];
[_delegate actionPerformed:actionString byUser:nick]; [_delegate actionPerformed:actionString byUser:nick];
} }



+ 37
- 36
IRCClient/IRCClientSession.m Parādīt failu

#import "IRCClientSession.h" #import "IRCClientSession.h"
#import "IRCClientChannel.h" #import "IRCClientChannel.h"
#import "IRCClientChannel_Private.h" #import "IRCClientChannel_Private.h"
#import "NSData+SA_NSDataExtensions.h"
#include "string.h" #include "string.h"


#pragma mark - Callback function declarations #pragma mark - Callback function declarations


- (int)connect; - (int)connect;
{ {
return irc_connect(_irc_session, _server.UTF8String, (unsigned short) _port, (_password.length > 0 ? _password.bytes : NULL), _nickname.UTF8String, _username.UTF8String, _realname.UTF8String);
return irc_connect(_irc_session, _server.UTF8String, (unsigned short) _port, (_password.length > 0 ? _password.SA_terminatedCString : NULL), _nickname.UTF8String, _username.UTF8String, _realname.UTF8String);
} }


- (void)disconnect - (void)disconnect


- (int)sendRaw:(NSData *)message - (int)sendRaw:(NSData *)message
{ {
return irc_send_raw(_irc_session, message.bytes);
return irc_send_raw(_irc_session, message.SA_terminatedCString);
} }


- (int)quit:(NSData *)reason - (int)quit:(NSData *)reason
{ {
return irc_cmd_quit(_irc_session, reason.bytes);
return irc_cmd_quit(_irc_session, reason.SA_terminatedCString);
} }


- (int)join:(NSData *)channel key:(NSData *)key - (int)join:(NSData *)channel key:(NSData *)key
NSLog(@"Joining %@", channel); NSLog(@"Joining %@", channel);
if (!key || !key.length > 0) if (!key || !key.length > 0)
return irc_cmd_join(_irc_session, channel.bytes, NULL);
return irc_cmd_join(_irc_session, channel.SA_terminatedCString, NULL);


return irc_cmd_join(_irc_session, channel.bytes, key.bytes);
return irc_cmd_join(_irc_session, channel.SA_terminatedCString, key.SA_terminatedCString);
} }


- (int)list:(NSData *)channel - (int)list:(NSData *)channel
{ {
return irc_cmd_list(_irc_session, channel.bytes);
return irc_cmd_list(_irc_session, channel.SA_terminatedCString);
} }


- (int)userMode:(NSString *)mode - (int)userMode:(NSString *)mode


- (int)message:(NSData *)message to:(NSString *)target - (int)message:(NSData *)message to:(NSString *)target
{ {
return irc_cmd_msg(_irc_session, target.UTF8String, message.bytes);
return irc_cmd_msg(_irc_session, target.UTF8String, message.SA_terminatedCString);
} }


- (int)action:(NSData *)action to:(NSString *)target - (int)action:(NSData *)action to:(NSString *)target
{ {
return irc_cmd_me(_irc_session, target.UTF8String, action.bytes);
return irc_cmd_me(_irc_session, target.UTF8String, action.SA_terminatedCString);
} }


- (int)notice:(NSData *)notice to:(NSString *)target - (int)notice:(NSData *)notice to:(NSString *)target
{ {
return irc_cmd_notice(_irc_session, target.UTF8String, notice.bytes);
return irc_cmd_notice(_irc_session, target.UTF8String, notice.SA_terminatedCString);
} }


- (int)ctcpRequest:(NSData *)request target:(NSString *)target - (int)ctcpRequest:(NSData *)request target:(NSString *)target
{ {
return irc_cmd_ctcp_request(_irc_session, target.UTF8String, request.bytes);
return irc_cmd_ctcp_request(_irc_session, target.UTF8String, request.SA_terminatedCString);
} }


- (int)ctcpReply:(NSData *)reply target:(NSString *)target - (int)ctcpReply:(NSData *)reply target:(NSString *)target
{ {
return irc_cmd_ctcp_reply(_irc_session, target.UTF8String, reply.bytes);
return irc_cmd_ctcp_reply(_irc_session, target.UTF8String, reply.SA_terminatedCString);
} }


/****************************/ /****************************/
if(reason) if(reason)
{ {
reasonString = [[NSString alloc] initWithData:reason encoding:_encoding];
reasonString = [NSString stringWithCString:reason.SA_terminatedCString encoding:_encoding];
} }
[_delegate userQuit:nick withReason:reasonString]; [_delegate userQuit:nick withReason:reasonString];


- (void)privateMessageReceived:(NSData *)message fromUser:(NSString *)nick - (void)privateMessageReceived:(NSData *)message fromUser:(NSString *)nick
{ {
NSString* messageString = [[NSString alloc] initWithData:message encoding:_encoding];
NSString* messageString = [NSString stringWithCString:message.SA_terminatedCString encoding:_encoding];
[_delegate privateMessageReceived:messageString fromUser:nick]; [_delegate privateMessageReceived:messageString fromUser:nick];
} }


- (void)privateNoticeReceived:(NSData *)notice fromUser:(NSString *)nick - (void)privateNoticeReceived:(NSData *)notice fromUser:(NSString *)nick
{ {
NSString* noticeString = [[NSString alloc] initWithData:notice encoding:_encoding];
NSString* noticeString = [NSString stringWithCString:notice.SA_terminatedCString encoding:_encoding];
[_delegate privateNoticeReceived:noticeString fromUser:nick]; [_delegate privateNoticeReceived:noticeString fromUser:nick];
} }
- (void)CTCPRequestReceived:(NSData *)request fromUser:(NSString *)nick - (void)CTCPRequestReceived:(NSData *)request fromUser:(NSString *)nick
{ {
const char* the_nick = getNickFromNickUserHost(nick).UTF8String; const char* the_nick = getNickFromNickUserHost(nick).UTF8String;
const char* the_request = request.bytes;
const char* the_request = request.SA_terminatedCString;
if (strstr(the_request, "PING") == the_request) if (strstr(the_request, "PING") == the_request)
{ {
char* request_type = strtok(request_string, " "); char* request_type = strtok(request_string, " ");
char* request_body = strtok(NULL, " " ); char* request_body = strtok(NULL, " " );
[_delegate CTCPRequestReceived:[NSData dataWithBytes:request_body length:strlen(request_body)+1] ofType:[NSData dataWithBytes:request_type length:strlen(request_type)+1] fromUser:nick];
[_delegate CTCPRequestReceived:[NSData dataWithBytes:request_body length:strlen(request_body) + 1] ofType:[NSData dataWithBytes:request_type length:strlen(request_type) + 1] fromUser:nick];
free(request_string); free(request_string);
} }
else else
{ {
// An action in a private message // An action in a private message
NSString* actionString = [[NSString alloc] initWithData:action encoding:_encoding];
NSString* actionString = [NSString stringWithCString:action.SA_terminatedCString encoding:_encoding];
[_delegate privateCTCPActionReceived:actionString fromUser:nick]; [_delegate privateCTCPActionReceived:actionString fromUser:nick];
} }
} }
NSData *reason = nil; NSData *reason = nil;
if(count > 0) if(count > 0)
{ {
reason = [[NSData alloc] initWithBytes:params[0] length:strlen(params[0])];
reason = [[NSData alloc] initWithBytes:params[0] length:strlen(params[0]) + 1];
} }


[clientSession userQuit:nick withReason:reason]; [clientSession userQuit:nick withReason:reason];
if (count > 1) if (count > 1)
{ {
reason = [NSData dataWithBytes:params[1] length:strlen(params[1])+1];
reason = [NSData dataWithBytes:params[1] length:strlen(params[1])];
} }
[clientSession userParted:nick channel:channelName withReason:reason]; [clientSession userParted:nick channel:channelName withReason:reason];
if (count > 1) if (count > 1)
{ {
topic = [NSData dataWithBytes:params[1] length:strlen(params[1])];
topic = [NSData dataWithBytes:params[1] length:strlen(params[1]) + 1];
} }
[clientSession topicSet:topic forChannel:channelName by:nick]; [clientSession topicSet:topic forChannel:channelName by:nick];
{ {
IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session); IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session);
NSString *byNick = @(origin); NSString *byNick = @(origin);
NSData *channelName = [NSData dataWithBytes:params[0] length:strlen(params[0])];
NSData *channelName = [NSData dataWithBytes:params[0] length:strlen(params[0]) + 1];
NSString *nick = nil; NSString *nick = nil;
NSData *reason = nil; NSData *reason = nil;
if (count > 2) if (count > 2)
{ {
reason = [NSData dataWithBytes:params[2] length:strlen(params[2])];
reason = [NSData dataWithBytes:params[2] length:strlen(params[2]) + 1];
} }
[clientSession userKicked:nick fromChannel:channelName by:byNick withReason:reason]; [clientSession userKicked:nick fromChannel:channelName by:byNick withReason:reason];
{ {
IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session); IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session);
NSString *nick = @(origin); NSString *nick = @(origin);
NSData *channelName = [NSData dataWithBytes:params[0] length:strlen(params[0])];
NSData *channelName = [NSData dataWithBytes:params[0] length:strlen(params[0]) + 1];
NSData *message = nil; NSData *message = nil;
if (count > 1) if (count > 1)
{ {
message = [NSData dataWithBytes:params[1] length:strlen(params[1])];
message = [NSData dataWithBytes:params[1] length:strlen(params[1]) + 1];
} }


[clientSession messageSent:message toChannel:channelName byUser:nick]; [clientSession messageSent:message toChannel:channelName byUser:nick];


if (count > 1) if (count > 1)
{ {
message = [NSData dataWithBytes:params[1] length:strlen(params[1])];
message = [NSData dataWithBytes:params[1] length:strlen(params[1]) + 1];
} }
[clientSession privateMessageReceived:message fromUser:nick]; [clientSession privateMessageReceived:message fromUser:nick];
if (count > 1) if (count > 1)
{ {
notice = [NSData dataWithBytes:params[1] length:strlen(params[1])];
notice = [NSData dataWithBytes:params[1] length:strlen(params[1]) + 1];
} }
[clientSession privateNoticeReceived:notice fromUser:nick]; [clientSession privateNoticeReceived:notice fromUser:nick];
{ {
IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session); IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session);
NSString *nick = @(origin); NSString *nick = @(origin);
NSData *channelName = [NSData dataWithBytes:params[0] length:strlen(params[0])];
NSData *channelName = [NSData dataWithBytes:params[0] length:strlen(params[0]) + 1];
NSData *notice = nil; NSData *notice = nil;
if (count > 1) if (count > 1)
{ {
notice = [NSData dataWithBytes:params[1] length:strlen(params[1])];
notice = [NSData dataWithBytes:params[1] length:strlen(params[1]) + 1];
} }


[clientSession noticeSent:notice toChannel:channelName byUser:nick]; [clientSession noticeSent:notice toChannel:channelName byUser:nick];
{ {
IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session); IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session);
NSString *nick = @(origin); NSString *nick = @(origin);
NSData *channelName = [NSData dataWithBytes:params[1] length:strlen(params[1])];
NSData *channelName = [NSData dataWithBytes:params[1] length:strlen(params[1]) + 1];
[clientSession invitedToChannel:channelName by:nick]; [clientSession invitedToChannel:channelName by:nick];
} }
{ {
IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session); IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session);
NSString *nick = @(origin); NSString *nick = @(origin);
NSData* request = [NSData dataWithBytes:params[0] length:strlen(params[0])];
NSData* request = [NSData dataWithBytes:params[0] length:strlen(params[0]) + 1];
[clientSession CTCPRequestReceived:request fromUser:nick]; [clientSession CTCPRequestReceived:request fromUser:nick];
} }
IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session); IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session);
NSString *nick = @(origin); NSString *nick = @(origin);
NSData *reply = [NSData dataWithBytes:params[0] length:strlen(params[0])];
NSData *reply = [NSData dataWithBytes:params[0] length:strlen(params[0]) + 1];
[clientSession CTCPReplyReceived:reply fromUser:nick]; [clientSession CTCPReplyReceived:reply fromUser:nick];
} }
IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session); IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session);
NSString *nick = @(origin); NSString *nick = @(origin);
NSData *target = [NSData dataWithBytes:params[0] length:strlen(params[0])];
NSData *action = [NSData dataWithBytes:params[1] length:strlen(params[1])];
NSData *target = [NSData dataWithBytes:params[0] length:strlen(params[0]) + 1];
NSData *action = [NSData dataWithBytes:params[1] length:strlen(params[1]) + 1];
[clientSession CTCPActionPerformed:action byUser:nick atTarget:target]; [clientSession CTCPActionPerformed:action byUser:nick atTarget:target];
} }
static void onUnknownEvent(irc_session_t *session, const char *event, const char *origin, const char **params, unsigned int count) static void onUnknownEvent(irc_session_t *session, const char *event, const char *origin, const char **params, unsigned int count)
{ {
IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session); IRCClientSession *clientSession = (__bridge IRCClientSession *) irc_get_ctx(session);
NSData *eventString = [NSData dataWithBytes:event length:strlen(event)];
NSData *eventString = [NSData dataWithBytes:event length:strlen(event) + 1];
NSString *sender = nil; NSString *sender = nil;
if (origin != NULL) if (origin != NULL)
NSMutableArray *paramsArray = [[NSMutableArray alloc] init]; NSMutableArray *paramsArray = [[NSMutableArray alloc] init];
for (unsigned int i = 0; i < count; i++) for (unsigned int i = 0; i < count; i++)
[paramsArray addObject:[NSData dataWithBytes:params[i] length:strlen(params[i])]];
[paramsArray addObject:[NSData dataWithBytes:params[i] length:strlen(params[i]) + 1]];
[clientSession unknownEventReceived:eventString from:sender params:[paramsArray copy]]; [clientSession unknownEventReceived:eventString from:sender params:[paramsArray copy]];
} }
NSMutableArray *paramsArray = [[NSMutableArray alloc] init]; NSMutableArray *paramsArray = [[NSMutableArray alloc] init];
for (unsigned int i = 0; i < count; i++) for (unsigned int i = 0; i < count; i++)
[paramsArray addObject:[NSData dataWithBytes:params[i] length:strlen(params[i])]];
[paramsArray addObject:[NSData dataWithBytes:params[i] length:strlen(params[i]) + 1]];
[clientSession numericEventReceived:eventNumber from:sender params:[paramsArray copy]]; [clientSession numericEventReceived:eventNumber from:sender params:[paramsArray copy]];
} }

Notiek ielāde…
Atcelt
Saglabāt