ObjFW  Diff

Differences From Artifact [72e6419d11]:

To Artifact [7b484f195b]:


28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
28
29
30
31
32
33
34







35
36
37
38
39
40
41







-
-
-
-
-
-
-








#import "OFInvalidArgumentException.h"
#import "OFInvalidFormatException.h"
#import "OFOutOfMemoryException.h"

#import "macros.h"

#define ADD_STR_HASH(str)			\
	tmp = [str hash];			\
	OF_HASH_ADD(hash, tmp >> 24);		\
	OF_HASH_ADD(hash, (tmp >> 16) & 0xFF);	\
	OF_HASH_ADD(hash, (tmp >> 8) & 0xFF);	\
	OF_HASH_ADD(hash, tmp & 0xFF);

static OF_INLINE OFString*
resolve_relative_path(OFString *path)
{
	OFAutoreleasePool *pool = [[OFAutoreleasePool alloc] init];
	OFMutableArray *array;
	OFString *ret;
	BOOL done = NO;
361
362
363
364
365
366
367
368

369
370
371
372
373
374
375
376
377




378
379
380
381
382
383





384
385
386
387
388
389
390
354
355
356
357
358
359
360

361
362
363
364






365
366
367
368






369
370
371
372
373
374
375
376
377
378
379
380







-
+



-
-
-
-
-
-
+
+
+
+
-
-
-
-
-
-
+
+
+
+
+







		return NO;

	return YES;
}

- (uint32_t)hash
{
	uint32_t hash, tmp;
	uint32_t hash;

	OF_HASH_INIT(hash);

	ADD_STR_HASH(scheme);
	ADD_STR_HASH(host);

	OF_HASH_ADD(hash, (port >> 8) & 0xFF);
	OF_HASH_ADD(hash, port & 0xFF);

	OF_HASH_ADD_INT32(hash, [scheme hash]);
	OF_HASH_ADD_INT32(hash, [host hash]);
	OF_HASH_ADD_INT16(hash, port);
	OF_HASH_ADD_INT32(hash, [user hash]);
	ADD_STR_HASH(user);
	ADD_STR_HASH(password);
	ADD_STR_HASH(path);
	ADD_STR_HASH(parameters);
	ADD_STR_HASH(query);
	ADD_STR_HASH(fragment);
	OF_HASH_ADD_INT32(hash, [password hash]);
	OF_HASH_ADD_INT32(hash, [path hash]);
	OF_HASH_ADD_INT32(hash, [parameters hash]);
	OF_HASH_ADD_INT32(hash, [query hash]);
	OF_HASH_ADD_INT32(hash, [fragment hash]);

	OF_HASH_FINALIZE(hash);

	return hash;
}

- copy