ObjIRC  Diff

Differences From Artifact [9205d72fe3]:

To Artifact [9f27229e45]:


39
40
41
42
43
44
45
46
47
48
49
50
51

52
53
54


55
56
57

58
59


60

61

62
63
64
65
66
67


68
69
70
71
72
73
74
75
76
77
78
79
80
39
40
41
42
43
44
45


46
47
48

49
50


51
52

53
54
55


56
57
58
59

60
61
62




63
64
65
66
67



68
69
70
71
72
73
74







-
-



-
+

-
-
+
+
-


+
-
-
+
+

+
-
+


-
-
-
-
+
+



-
-
-







+ (instancetype)IRCUserWithString: (OFString *)string
{
	return [[[self alloc] initWithString: string] autorelease];
}

- (instancetype)initWithString: (OFString *)string
{
	char *tmp2 = NULL;

	self = [super init];

	@try {
		char *tmp;
		size_t pos;

		tmp2 = OFStrDup(string.UTF8String);

		pos = [string rangeOfString: @"@"].location;
		if (pos == OFNotFound)
		if ((tmp = strchr(tmp2, '@')) == NULL)
			@throw [OFInvalidFormatException exception];

		_hostname = [[string substringFromIndex: pos + 1] copy];
		*tmp = '\0';
		_hostname = [[OFString alloc] initWithUTF8String: tmp + 1];

		string = [string substringToIndex: pos];

		pos = [string rangeOfString: @"!"].location;
		if ((tmp = strchr(tmp2, '!')) == NULL)
		if (pos == OFNotFound)
			@throw [OFInvalidFormatException exception];

		*tmp = '\0';
		_username = [[OFString alloc] initWithUTF8String: tmp + 1];

		_nickname = [[OFString alloc] initWithUTF8String: tmp2];
		_username = [[string substringFromIndex: pos + 1] copy];
		_nickname = [[string substringToIndex: pos] copy];
	} @catch (id e) {
		[self release];
		@throw e;
	} @finally {
		if (tmp2 != NULL)
			free(tmp2);
	}

	return self;
}

- (void)dealloc
{