ObjFW  Check-in [915bfc7431]

Overview
Comment:OFLocale: Rename a few methods
Downloads: Tarball | ZIP archive | SQL archive
Timelines: family | ancestors | descendants | both | trunk
Files: files | file ages | folders
SHA3-256: 915bfc7431c95903ec2375233a57bbda4768fb6b5e778091beebac9acf962061
User & Date: js on 2022-09-29 20:27:57
Other Links: manifest | tags
Context
2022-09-29
21:26
OFException: Provide stack trace addresses check-in: f93fae010f user: js tags: trunk
20:27
OFLocale: Rename a few methods check-in: 915bfc7431 user: js tags: trunk
2022-09-28
22:05
OFHTTPClientDelegate: Improve a method name check-in: 4b1045c2d1 user: js tags: trunk
Changes

Modified src/OFASPrintF.m from [31044637f2] to [882db55cea].

578
579
580
581
582
583
584
585

586
587
588
589
590
591
592
578
579
580
581
582
583
584

585
586
587
588
589
590
591
592







-
+







			return false;

		/*
		 * If there's no asprintf_l, we have no other choice than to
		 * use this ugly hack to replace the locale's decimal point
		 * back to ".".
		 */
		point = [OFLocale decimalPoint];
		point = [OFLocale decimalSeparator];

		if (!ctx->useLocale && point != nil && ![point isEqual: @"."]) {
			void *pool = objc_autoreleasePoolPush();
			char *tmp2;

			@try {
				OFMutableString *tmpStr = [OFMutableString

Modified src/OFLocale.h from [560bb77e15] to [ca12b9c93f].

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
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

115
116

117
118

119
120

121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139

140
141
142
143

144
145

146
147

148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164

165
166

167
168

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
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
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
115

116
117

118
119

120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138

139
140
141
142

143
144

145
146

147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163

164
165

166
167

168
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







-
+

-
+






-
-
+
+

-
+



-
+



-
+


-
+



-
+












-
+

-
+













-
+



-
+

-
+


-
+

-
+

-
+

-
+


















-
+



-
+

-
+

-
+
















-
+

-
+

-
+


















-
+







 * @class OFLocale OFLocale.h ObjFW/OFLocale.h
 *
 * @brief A class for querying the locale and retrieving localized strings.
 */
OF_SUBCLASSING_RESTRICTED
@interface OFLocale: OFObject
{
	OFString *_Nullable _language, *_Nullable _territory;
	OFString *_Nullable _languageCode, *_Nullable _countryCode;
	OFStringEncoding _encoding;
	OFString *_decimalPoint;
	OFString *_decimalSeparator;
	OFMutableArray OF_GENERIC(OFDictionary OF_GENERIC(OFString *, id) *)
	    *_localizedStrings;
}

#ifdef OF_HAVE_CLASS_PROPERTIES
@property (class, readonly, nullable, nonatomic) OFLocale *currentLocale;
@property (class, readonly, nullable, nonatomic) OFString *language;
@property (class, readonly, nullable, nonatomic) OFString *territory;
@property (class, readonly, nullable, nonatomic) OFString *languageCode;
@property (class, readonly, nullable, nonatomic) OFString *countryCode;
@property (class, readonly, nonatomic) OFStringEncoding encoding;
@property (class, readonly, nullable, nonatomic) OFString *decimalPoint;
@property (class, readonly, nullable, nonatomic) OFString *decimalSeparator;
#endif

/**
 * @brief The language of the locale for messages.
 * @brief The language code of the locale for messages.
 *
 * If the language is unknown, it is `nil`.
 */
@property OF_NULLABLE_PROPERTY (readonly, nonatomic) OFString *language;
@property OF_NULLABLE_PROPERTY (readonly, nonatomic) OFString *languageCode;

/**
 * @brief The territory of the locale for messages.
 * @brief The country code of the locale for messages.
 *
 * If the territory is unknown, it is `nil`.
 */
@property OF_NULLABLE_PROPERTY (readonly, nonatomic) OFString *territory;
@property OF_NULLABLE_PROPERTY (readonly, nonatomic) OFString *countryCode;

/**
 * @brief The native 8-bit string encoding of the locale for messages.
 *
 * This is useful to encode strings correctly for passing them to operating
 * system calls.
 *
 * If the native 8-bit encoding is unknown, UTF-8 is assumed.
 */
@property (readonly, nonatomic) OFStringEncoding encoding;

/**
 * @brief The decimal point of the system's locale.
 * @brief The decimal separator of the locale.
 */
@property (readonly, nonatomic) OFString *decimalPoint;
@property (readonly, nonatomic) OFString *decimalSeparator;

/**
 * @brief Returns the current OFLocale.
 *
 * @warning If you don't use @ref OFApplication, this might be `nil`! In this
 *	    case, you need to manually allocate an instance and call
 *	    @ref init once.
 *
 * @return The current OFLocale instance
 */
+ (nullable OFLocale *)currentLocale;

/**
 * @brief Returns the language of the locale.
 * @brief Returns the language code of the locale.
 *
 * If the language is unknown, `nil` is returned.
 *
 * @return The language of the locale.
 * @return The language code of the locale.
 */
+ (nullable OFString *)language;
+ (nullable OFString *)languageCode;

/**
 * @brief Returns the territory of the locale.
 * @brief Returns the country code of the locale.
 *
 * If the territory is unknown, `nil` is returned.
 * If the country is unknown, `nil` is returned.
 *
 * @return The territory of the locale.
 * @return The country code of the locale.
 */
+ (nullable OFString *)territory;
+ (nullable OFString *)countryCode;

/**
 * @brief Returns the native 8-bit string encoding for the locale.
 *
 * This is useful to encode strings correctly for passing them to operating
 * system calls.
 *
 * If the native 8-bit encoding is unknown, UTF-8 is assumed.
 *
 * @return The native 8-bit string encoding for the locale
 */
+ (OFStringEncoding)encoding;

/**
 * @brief Returns the decimal point of the system's locale.
 *
 * @return The decimal point of the system's locale
 */
+ (nullable OFString *)decimalPoint;
+ (nullable OFString *)decimalSeparator;

#ifdef OF_HAVE_FILES
/**
 * @brief Adds a directory to scan for language files.
 * @brief Adds a directory to scan for localizations.
 *
 * @param path The path to the directory to scan for language files
 * @param path The path to the directory to scan for localizations
 */
+ (void)addLanguageDirectory: (OFString *)path;
+ (void)addLocalizationDirectory: (OFString *)path;
#endif

/**
 * @brief Initializes the current OFLocale.
 *
 * @warning This sets the locale via `setlocale()`!
 *
 * @warning You should never call this yourself, except if you do not use
 *	    @ref OFApplication. In this case, you need to allocate exactly one
 *	    instance of OFLocale, which will become the current locale, and
 *	    call this method.
 */
- (instancetype)init;

#ifdef OF_HAVE_FILES
/**
 * @brief Adds a directory to scan for language files.
 * @brief Adds a directory to scan for localizations.
 *
 * @param path The path to the directory to scan for language files
 * @param path The path to the directory to scan for localizations 
 */
- (void)addLanguageDirectory: (OFString *)path;
- (void)addLocalizationDirectory: (OFString *)path;
#endif

/**
 * @brief Returns the localized string for the specified ID, using the fallback
 *	  string if it cannot be looked up or is missing.
 *
 * @note This takes a variadic argument, terminated by `nil`, that consists of
 *	 pairs of variable names and variable values, which will be replaced
 *	 inside the localized string. For example, you can pass
 *	 `@"name", @"foo", nil`, causing `%[name]` to be replaced with `foo` in
 *	 the localized string.
 *
 * @note Generally, you want to use @ref OF_LOCALIZED instead, which also takes
 *	 care of the `nil` sentinel automatically.
 *
 * @param ID The ID for the localized string
 * @param fallback The fallback to use in case the localized string cannot be
 *		   looked up or is missing. This can also be an array and use
 *		   plural scripting, just like with the JSON language files.
 *		   plural scripting, just like with the JSON localization files.
 * @return The localized string
 */
- (OFString *)localizedStringForID: (OFConstantString *)ID
			  fallback: (id)fallback, ... OF_SENTINEL;

/**
 * @brief Returns the localized string for the specified ID, using the fallback
202
203
204
205
206
207
208
209

210
211
212
213
214
215
216
217
218
219
220
221
222
202
203
204
205
206
207
208

209
210
211
212
213
214
215
216
217
218
219
220
221
222







-
+













 *
 * @note Generally, you want to use @ref OF_LOCALIZED instead, which also takes
 *	 care of the `nil` sentinel automatically.
 *
 * @param ID The ID for the localized string
 * @param fallback The fallback to use in case the localized string cannot be
 *		   looked up or is missing. This can also be an array and use
 *		   plural scripting, just like with the JSON language files.
 *		   plural scripting, just like with the JSON localization files.
 * @param arguments A va_list of arguments, consisting of pairs of variable
 *		    names and values to replace in the localized string,
 *		    terminated with `nil`
 * @return The localized string
 * @throw OFInvalidFormatException The string (either the fallback or the
 *				   localized one) contains an invalid format
 */
- (OFString *)localizedStringForID: (OFConstantString *)ID
			  fallback: (id)fallback
			 arguments: (va_list)arguments;
@end

OF_ASSUME_NONNULL_END

Modified src/OFLocale.m from [ccac2d9a08] to [e8b5569b76].

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







-
+








static OFLocale *currentLocale = nil;
static OFDictionary *operatorPrecedences = nil;

#ifndef OF_AMIGAOS
static void
parseLocale(char *locale, OFStringEncoding *encoding,
    OFString **language, OFString **territory)
    OFString **languageCode, OFString **countryCode)
{
	locale = OFStrDup(locale);

	@try {
		OFStringEncoding enc = OFStringEncodingASCII;
		char *tmp;

61
62
63
64
65
66
67
68

69
70
71
72
73
74




75
76
77
78
79



80
81
82
83
84
85
86
61
62
63
64
65
66
67

68
69
70
71



72
73
74
75
76
77



78
79
80
81
82
83
84
85
86
87







-
+



-
-
-
+
+
+
+


-
-
-
+
+
+







					*encoding = OFStringEncodingParseName(
					    [OFString stringWithCString: tmp
							       encoding: enc]);
			} @catch (OFInvalidArgumentException *e) {
			}
		}

		/* Territory */
		/* Country code */
		if ((tmp = strrchr(locale, '_')) != NULL) {
			*tmp++ = '\0';

			if (territory != NULL)
				*territory = [OFString stringWithCString: tmp
								encoding: enc];
			if (countryCode != NULL)
				*countryCode = [OFString
				    stringWithCString: tmp
					     encoding: enc];
		}

		if (language != NULL)
			*language = [OFString stringWithCString: locale
						       encoding: enc];
		if (languageCode != NULL)
			*languageCode = [OFString stringWithCString: locale
							   encoding: enc];
	} @finally {
		OFFreeMemory(locale);
	}
}
#endif

static bool
299
300
301
302
303
304
305
306
307


308
309
310
311
312
313
314
300
301
302
303
304
305
306


307
308
309
310
311
312
313
314
315







-
-
+
+








	[string makeImmutable];

	return string;
}

@implementation OFLocale
@synthesize language = _language, territory = _territory, encoding = _encoding;
@synthesize decimalPoint = _decimalPoint;
@synthesize languageCode = _languageCode, countryCode = _countryCode;
@synthesize encoding = _encoding, decimalSeparator = _decimalSeparator;

+ (void)initialize
{
	OFNumber *one, *two, *three, *four;

	if (self != [OFLocale class])
		return;
336
337
338
339
340
341
342
343

344
345

346
347
348

349
350

351
352
353
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
381
382
383

384
385
386
387

388
389
390
391
392
393
394
395
396
397
398
399
400
401

402
403
404


405
406
407
408
409
410
411
337
338
339
340
341
342
343

344
345

346
347
348

349
350

351
352
353
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
381
382
383

384
385
386
387

388
389
390
391
392
393
394
395
396
397
398
399
400
401

402
403


404
405
406
407
408
409
410
411
412







-
+

-
+


-
+

-
+







-
+

-
+



-
+

-
+
















-
+



-
+













-
+

-
-
+
+







}

+ (OFLocale *)currentLocale
{
	return currentLocale;
}

+ (OFString *)language
+ (OFString *)languageCode
{
	return currentLocale.language;
	return currentLocale.languageCode;
}

+ (OFString *)territory
+ (OFString *)countryCode
{
	return currentLocale.territory;
	return currentLocale.countryCode;
}

+ (OFStringEncoding)encoding
{
	return currentLocale.encoding;
}

+ (OFString *)decimalPoint
+ (OFString *)decimalSeparator
{
	return currentLocale.decimalPoint;
	return currentLocale.decimalSeparator;
}

#ifdef OF_HAVE_FILES
+ (void)addLanguageDirectory: (OFString *)path
+ (void)addLocalizationDirectory: (OFString *)path
{
	[currentLocale addLanguageDirectory: path];
	[currentLocale addLocalizationDirectory: path];
}
#endif

- (instancetype)init
{
	self = [super init];

	@try {
#ifndef OF_AMIGAOS
		char *locale, *messagesLocale = NULL;

		if (currentLocale != nil)
			@throw [OFInitializationFailedException
			    exceptionWithClass: self.class];

		_encoding = OFStringEncodingUTF8;
		_decimalPoint = @".";
		_decimalSeparator = @".";
		_localizedStrings = [[OFMutableArray alloc] init];

		if ((locale = setlocale(LC_ALL, "")) != NULL)
			_decimalPoint = [[OFString alloc]
			_decimalSeparator = [[OFString alloc]
			    initWithCString: localeconv()->decimal_point
				   encoding: _encoding];

# ifdef LC_MESSAGES
		messagesLocale = setlocale(LC_MESSAGES, "");
# endif
		if (messagesLocale == NULL)
			messagesLocale = locale;

		if (messagesLocale != NULL) {
			void *pool = objc_autoreleasePoolPush();

			parseLocale(messagesLocale, &_encoding,
			    &_language, &_territory);
			    &_languageCode, &_countryCode);

			[_language retain];
			[_territory retain];
			[_languageCode retain];
			[_countryCode retain];

			objc_autoreleasePoolPop(pool);
		}
#else
		void *pool = objc_autoreleasePoolPush();
		char buffer[32];
		struct Locale *locale;
435
436
437
438
439
440
441
442

443
444
445
446
447
448
449

450
451
452
453
454
455

456
457
458

459
460
461
462

463
464
465
466


467
468
469
470
471
472
473
436
437
438
439
440
441
442

443
444
445
446
447
448
449

450
451
452
453
454
455

456
457
458

459
460
461
462

463
464
465


466
467
468
469
470
471
472
473
474







-
+






-
+





-
+


-
+



-
+


-
-
+
+







		} else
			_encoding = OFStringEncodingISO8859_1;

		/*
		 * Get it via localeconv() instead of from the Locale struct,
		 * to make sure we and printf etc. have the same expectations.
		 */
		_decimalPoint = [[OFString alloc]
		_decimalSeparator = [[OFString alloc]
		    initWithCString: localeconv()->decimal_point
			   encoding: _encoding];

		_localizedStrings = [[OFMutableArray alloc] init];

		if (GetVar("Language", buffer, sizeof(buffer), 0) > 0)
			_language = [[OFString alloc]
			_languageCode = [[OFString alloc]
			    initWithCString: buffer
				   encoding: _encoding];

		if ((locale = OpenLocale(NULL)) != NULL) {
			@try {
				uint32_t territory;
				uint32_t countryCode;
				size_t length;

				territory =
				countryCode =
				    OFToBigEndian32(locale->loc_CountryCode);

				for (length = 0; length < 4; length++)
					if (((char *)&territory)[length] == 0)
					if (((char *)&countryCode)[length] == 0)
						break;

				_territory = [[OFString alloc]
				    initWithCString: (char *)&territory
				_countryCode = [[OFString alloc]
				    initWithCString: (char *)&countryCode
					   encoding: _encoding
					     length: length];
			} @finally {
				CloseLocale(locale);
			}
		}

481
482
483
484
485
486
487
488
489
490



491
492
493
494
495
496
497

498
499
500

501
502
503

504
505
506
507
508

509
510
511
512
513
514
515
516
517
518


519
520
521


522
523
524
525





526
527

528
529
530
531
532
533


534
535
536

537
538
539
540
541
542
543
482
483
484
485
486
487
488



489
490
491
492
493
494
495
496
497

498
499
500

501
502
503

504
505
506
507
508

509
510
511
512
513
514
515
516
517


518
519
520


521
522
523



524
525
526
527
528
529

530
531
532
533
534


535
536
537
538

539
540
541
542
543
544
545
546







-
-
-
+
+
+






-
+


-
+


-
+




-
+








-
-
+
+

-
-
+
+

-
-
-
+
+
+
+
+

-
+




-
-
+
+


-
+







	currentLocale = self;

	return self;
}

- (void)dealloc
{
	[_language release];
	[_territory release];
	[_decimalPoint release];
	[_languageCode release];
	[_countryCode release];
	[_decimalSeparator release];
	[_localizedStrings release];

	[super dealloc];
}

#ifdef OF_HAVE_FILES
- (void)addLanguageDirectory: (OFString *)path
- (void)addLocalizationDirectory: (OFString *)path
{
	void *pool;
	OFString *mapPath, *language, *territory, *languageFile;
	OFString *mapPath, *languageCode, *countryCode, *localizationFile;
	OFDictionary *map;

	if (_language == nil)
	if (_languageCode == nil)
		return;

	pool = objc_autoreleasePoolPush();

	mapPath = [path stringByAppendingPathComponent: @"languages.json"];
	mapPath = [path stringByAppendingPathComponent: @"localizations.json"];
	@try {
		map = [[OFString stringWithContentsOfFile: mapPath]
		     objectByParsingJSON];
	} @catch (OFOpenItemFailedException *e) {
		objc_autoreleasePoolPop(pool);
		return;
	}

	language = _language.lowercaseString;
	territory = _territory.lowercaseString;
	languageCode = _languageCode.lowercaseString;
	countryCode = _countryCode.lowercaseString;

	if (territory == nil)
		territory = @"";
	if (countryCode == nil)
		countryCode = @"";

	languageFile = [[map objectForKey: language] objectForKey: territory];
	if (languageFile == nil)
		languageFile = [[map objectForKey: language] objectForKey: @""];
	localizationFile = [[map objectForKey: languageCode]
	    objectForKey: countryCode];
	if (localizationFile == nil)
		localizationFile = [[map objectForKey: languageCode]
		    objectForKey: @""];

	if (languageFile == nil) {
	if (localizationFile == nil) {
		objc_autoreleasePoolPop(pool);
		return;
	}

	languageFile = [path stringByAppendingPathComponent:
	    [languageFile stringByAppendingString: @".json"]];
	localizationFile = [path stringByAppendingPathComponent:
	    [localizationFile stringByAppendingString: @".json"]];

	[_localizedStrings addObject: [[OFString stringWithContentsOfFile:
	    languageFile] objectByParsingJSON]];
	    localizationFile] objectByParsingJSON]];

	objc_autoreleasePoolPop(pool);
}
#endif

- (OFString *)localizedStringForID: (OFConstantString *)ID
			  fallback: (id)fallback, ...

Modified src/OFString.m from [0e44856721] to [66ea400d53].

2446
2447
2448
2449
2450
2451
2452
2453

2454
2455
2456

2457
2458
2459
2460
2461
2462
2463
2446
2447
2448
2449
2450
2451
2452

2453
2454
2455

2456
2457
2458
2459
2460
2461
2462
2463







-
+


-
+







#ifdef HAVE_STRTOF_L
	const char *UTF8String = self.UTF8String;
#else
	/*
	 * If we have no strtof_l, we have no other choice but to replace "."
	 * with the locale's decimal point.
	 */
	OFString *decimalPoint = [OFLocale decimalPoint];
	OFString *decimalSeparator = [OFLocale decimalSeparator];
	const char *UTF8String = [self
	    stringByReplacingOccurrencesOfString: @"."
				      withString: decimalPoint].UTF8String;
				      withString: decimalSeparator].UTF8String;
#endif
	char *endPtr = NULL;
	float value;

	errno = 0;
#ifdef HAVE_STRTOF_L
	value = strtof_l(UTF8String, &endPtr, cLocale);
2499
2500
2501
2502
2503
2504
2505
2506

2507
2508
2509

2510
2511
2512
2513
2514
2515
2516
2499
2500
2501
2502
2503
2504
2505

2506
2507
2508

2509
2510
2511
2512
2513
2514
2515
2516







-
+


-
+







#ifdef HAVE_STRTOD_L
	const char *UTF8String = self.UTF8String;
#else
	/*
	 * If we have no strtod_l, we have no other choice but to replace "."
	 * with the locale's decimal point.
	 */
	OFString *decimalPoint = [OFLocale decimalPoint];
	OFString *decimalSeparator = [OFLocale decimalSeparator];
	const char *UTF8String = [self
	    stringByReplacingOccurrencesOfString: @"."
				      withString: decimalPoint].UTF8String;
				      withString: decimalSeparator].UTF8String;
#endif
	char *endPtr = NULL;
	double value;

	errno = 0;
#ifdef HAVE_STRTOD_L
	value = strtod_l(UTF8String, &endPtr, cLocale);

Modified tests/OFLocaleTests.m from [08f116fb95] to [a51f4edb4e].

20
21
22
23
24
25
26
27
28


29
30
31


32
33
34
35
36
37


38
39
40
41
20
21
22
23
24
25
26


27
28
29


30
31
32
33
34
35


36
37
38
39
40
41







-
-
+
+

-
-
+
+




-
-
+
+




@implementation TestsAppDelegate (OFLocaleTests)
- (void)localeTests
{
	void *pool = objc_autoreleasePoolPush();

	[OFStdOut setForegroundColor: [OFColor lime]];

	[OFStdOut writeFormat: @"[OFLocale] Language: %@\n",
	    [OFLocale language]];
	[OFStdOut writeFormat: @"[OFLocale] Language code: %@\n",
	    [OFLocale languageCode]];

	[OFStdOut writeFormat: @"[OFLocale] Territory: %@\n",
	    [OFLocale territory]];
	[OFStdOut writeFormat: @"[OFLocale] Country code: %@\n",
	    [OFLocale countryCode]];

	[OFStdOut writeFormat: @"[OFLocale] Encoding: %@\n",
	    OFStringEncodingName([OFLocale encoding])];

	[OFStdOut writeFormat: @"[OFLocale] Decimal point: %@\n",
	    [OFLocale decimalPoint]];
	[OFStdOut writeFormat: @"[OFLocale] Decimal separator: %@\n",
	    [OFLocale decimalSeparator]];

	objc_autoreleasePoolPop(pool);
}
@end

Modified utils/ofarc/Makefile from [957c305108] to [482a60034a].

1
2
3
4
5
6
7
8
9
10


11
12
13
14
15
16
17
18
19
20
21
22





23
24
25
26
27
1
2
3
4
5
6
7
8


9
10
11
12
13
14
15
16
17





18
19
20
21
22
23
24
25
26
27








-
-
+
+







-
-
-
-
-
+
+
+
+
+





include ../../extra.mk

PROG = ofarc${PROG_SUFFIX}
SRCS = GZIPArchive.m	\
       LHAArchive.m	\
       OFArc.m		\
       TarArchive.m	\
       ZIPArchive.m
DATA = lang/de.json		\
       lang/languages.json
DATA = localization/de.json		\
       localization/localizations.json

include ../../buildsys.mk

PACKAGE_NAME = ofarc

${PROG}: ${LIBOBJFW_DEP_LVL2} ${LIBOBJFWRT_DEP_LVL2}

CPPFLAGS += -I../../src					\
	    -I../../src/runtime				\
	    -I../../src/exceptions			\
	    -I../..					\
	    -DLANGUAGE_DIR=\"${datadir}/ofarc/lang\"
CPPFLAGS += -I../../src							\
	    -I../../src/runtime						\
	    -I../../src/exceptions					\
	    -I../..							\
	    -DLOCALIZATION_DIR=\"${datadir}/ofarc/localization\"
LIBS := -L../../src -lobjfw						\
	-L../../src/runtime -L../../src/runtime/linklib ${RUNTIME_LIBS}	\
	${LIBS}
LD = ${OBJC}
LDFLAGS += ${LDFLAGS_RPATH}

Modified utils/ofarc/OFArc.m from [7c199387c6] to [92125fd380].

203
204
205
206
207
208
209
210

211

212

213
214
215
216
217
218
219
203
204
205
206
207
208
209

210
211
212

213
214
215
216
217
218
219
220







-
+

+
-
+







	/* Dropped after parsing options */
	sandbox.allowsUnveil = true;

	[OFApplication of_activateSandbox: sandbox];
#endif

#ifndef OF_AMIGAOS
	[OFLocale addLanguageDirectory: @LANGUAGE_DIR];
	[OFLocale addLocalizationDirectory: @LOCALIZATION_DIR];
#else
	[OFLocale addLocalizationDirectory:
	[OFLocale addLanguageDirectory: @"PROGDIR:/share/ofarc/lang"];
	    @"PROGDIR:/share/ofarc/localization"];
#endif

	optionsParser = [OFOptionsParser parserWithOptions: options];
	while ((option = [optionsParser nextOption]) != '\0') {
		switch (option) {
		case 'f':
			if (_overwrite < 0)

Name change from utils/ofarc/lang/de.json to utils/ofarc/localization/de.json.

Name change from utils/ofarc/lang/languages.json to utils/ofarc/localization/localizations.json.

Modified utils/ofdns/Makefile from [c6c2ac1b61] to [94aeff9904].

1
2
3
4
5
6


7
8
9
10
11
12
13
14
15
16
17
18





19
20
21
22
23
1
2
3
4


5
6
7
8
9
10
11
12
13





14
15
16
17
18
19
20
21
22
23




-
-
+
+







-
-
-
-
-
+
+
+
+
+





include ../../extra.mk

PROG = ofdns${PROG_SUFFIX}
SRCS = OFDNS.m
DATA = lang/de.json		\
       lang/languages.json
DATA = localization/de.json		\
       localization/localizations.json

include ../../buildsys.mk

PACKAGE_NAME = ofdns

${PROG}: ${LIBOBJFW_DEP_LVL2} ${LIBOBJFWRT_DEP_LVL2}

CPPFLAGS += -I../../src					\
	    -I../../src/runtime				\
	    -I../../src/exceptions			\
	    -I../..					\
	    -DLANGUAGE_DIR=\"${datadir}/ofdns/lang\"
CPPFLAGS += -I../../src							\
	    -I../../src/runtime						\
	    -I../../src/exceptions					\
	    -I../..							\
	    -DLOCALIZATION_DIR=\"${datadir}/ofdns/localization\"
LIBS := -L../../src -lobjfw						\
	-L../../src/runtime -L../../src/runtime/linklib ${RUNTIME_LIBS}	\
	${LIBS}
LD = ${OBJC}
LDFLAGS += ${LDFLAGS_RPATH}

Modified utils/ofdns/OFDNS.m from [4408352570] to [7740440ce7].

95
96
97
98
99
100
101
102

103

104

105
106
107
108
109
110
111
95
96
97
98
99
100
101

102
103
104

105
106
107
108
109
110
111
112







-
+

+
-
+







	OFUnichar option;
	OFArray OF_GENERIC(OFString *) *remainingArguments;
	OFDNSResolver *resolver;
	OFDNSClass DNSClass;

#ifdef OF_HAVE_FILES
# ifndef OF_AMIGAOS
	[OFLocale addLanguageDirectory: @LANGUAGE_DIR];
	[OFLocale addLocalizationDirectory: @LOCALIZATION_DIR];
# else
	[OFLocale addLocalizationDirectory:
	[OFLocale addLanguageDirectory: @"PROGDIR:/share/ofdns/lang"];
	    @"PROGDIR:/share/ofdns/localization"];
# endif
#endif

#ifdef OF_HAVE_SANDBOX
	OFSandbox *sandbox = [[OFSandbox alloc] init];
	@try {
		sandbox.allowsStdIO = true;

Name change from utils/ofdns/lang/de.json to utils/ofdns/localization/de.json.

Name change from utils/ofdns/lang/languages.json to utils/ofdns/localization/localizations.json.

Modified utils/ofhash/Makefile from [4405db897f] to [41087b215e].

1
2
3
4
5
6


7
8
9
10
11
12
13
14
15
16
17
18





19
20
21
22
23
1
2
3
4


5
6
7
8
9
10
11
12
13





14
15
16
17
18
19
20
21
22
23




-
-
+
+







-
-
-
-
-
+
+
+
+
+





include ../../extra.mk

PROG = ofhash${PROG_SUFFIX}
SRCS = OFHash.m
DATA = lang/de.json		\
       lang/languages.json
DATA = localization/de.json		\
       localization/localizations.json

include ../../buildsys.mk

PACKAGE_NAME = ofhash

${PROG}: ${LIBOBJFW_DEP_LVL2} ${LIBOBJFWRT_DEP_LVL2}

CPPFLAGS += -I../../src					\
	    -I../../src/runtime				\
	    -I../../src/exceptions			\
	    -I../..					\
	    -DLANGUAGE_DIR=\"${datadir}/ofhash/lang\"
CPPFLAGS += -I../../src							\
	    -I../../src/runtime						\
	    -I../../src/exceptions					\
	    -I../..							\
	    -DLOCALIZATION_DIR=\"${datadir}/ofhash/localization\"
LIBS := -L../../src -lobjfw						\
	-L../../src/runtime -L../../src/runtime/linklib ${RUNTIME_LIBS}	\
	${LIBS}
LD = ${OBJC}
LDFLAGS += ${LDFLAGS_RPATH}

Modified utils/ofhash/OFHash.m from [1e29e681a3] to [9cab35b0cf].

91
92
93
94
95
96
97
98

99

100

101
102
103
104
105
106
107
91
92
93
94
95
96
97

98
99
100

101
102
103
104
105
106
107
108







-
+

+
-
+







	OFSHA1Hash *SHA1Hash = nil;
	OFSHA224Hash *SHA224Hash = nil;
	OFSHA256Hash *SHA256Hash = nil;
	OFSHA384Hash *SHA384Hash = nil;
	OFSHA512Hash *SHA512Hash = nil;

#ifndef OF_AMIGAOS
	[OFLocale addLanguageDirectory: @LANGUAGE_DIR];
	[OFLocale addLocalizationDirectory: @LOCALIZATION_DIR];
#else
	[OFLocale addLocalizationDirectory:
	[OFLocale addLanguageDirectory: @"PROGDIR:/share/ofhash/lang"];
	    @"PROGDIR:/share/ofhash/localization"];
#endif

	while ((option = [optionsParser nextOption]) != '\0') {
		switch (option) {
		case '?':
			if (optionsParser.lastLongOption != nil)
				[OFStdErr writeLine:
130
131
132
133
134
135
136
137

138
139
140
141
142
143
144
131
132
133
134
135
136
137

138
139
140
141
142
143
144
145







-
+







		sandbox.allowsStdIO = true;
		sandbox.allowsReadingFiles = true;
		sandbox.allowsUserDatabaseReading = true;

		for (OFString *path in optionsParser.remainingArguments)
			[sandbox unveilPath: path permissions: @"r"];

		[sandbox unveilPath: @LANGUAGE_DIR permissions: @"r"];
		[sandbox unveilPath: @LOCALIZATION_DIR permissions: @"r"];

		[OFApplication of_activateSandbox: sandbox];
	} @finally {
		[sandbox release];
	}
#endif

Name change from utils/ofhash/lang/de.json to utils/ofhash/localization/de.json.

Name change from utils/ofhash/lang/languages.json to utils/ofhash/localization/localizations.json.

Modified utils/ofhttp/Makefile from [a12779af52] to [a53c9301a9].

1
2
3
4
5
6
7


8
9
10
11
12
13
14
15
16
17
18
19
20
21







22
23
24
25
26
27
1
2
3
4
5


6
7
8
9
10
11
12
13
14







15
16
17
18
19
20
21
22
23
24
25
26
27





-
-
+
+







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






include ../../extra.mk

PROG = ofhttp${PROG_SUFFIX}
SRCS = OFHTTP.m		\
       ProgressBar.m
DATA = lang/de.json		\
       lang/languages.json
DATA = localization/de.json		\
       localization/localizations.json

include ../../buildsys.mk

PACKAGE_NAME = ofhttp

${PROG}: ${LIBOBJFW_DEP_LVL2} ${LIBOBJFWRT_DEP_LVL2}

CPPFLAGS += -I../../src					\
	    -I../../src/runtime				\
	    -I../../src/exceptions			\
	    -I../../src/tls				\
	    -I../..					\
	    -DLANGUAGE_DIR='"${datadir}/ofhttp/lang"'	\
	    -DLIB_PREFIX='"${LIB_PREFIX}"'		\
CPPFLAGS += -I../../src							\
	    -I../../src/runtime						\
	    -I../../src/exceptions					\
	    -I../../src/tls						\
	    -I../..							\
	    -DLOCALIZATION_DIR='"${datadir}/ofhttp/localization"'	\
	    -DLIB_PREFIX='"${LIB_PREFIX}"'				\
	    -DLIB_SUFFIX='"${LIB_SUFFIX}"'
LIBS := -L../../src -L../../src/tls ${OFHTTP_LIBS} -lobjfw		\
	-L../../src/runtime -L../../src/runtime/linklib ${RUNTIME_LIBS}	\
	${LIBS}
LD = ${OBJC}
LDFLAGS += ${LDFLAGS_RPATH}

Modified utils/ofhttp/OFHTTP.m from [84e58d6177] to [2267fb0c48].

447
448
449
450
451
452
453
454

455

456

457
458
459
460
461
462
463
447
448
449
450
451
452
453

454
455
456

457
458
459
460
461
462
463
464







-
+

+
-
+







	/* Dropped after parsing options */
	sandbox.allowsUnveil = true;

	[OFApplication of_activateSandbox: sandbox];
#endif

#ifndef OF_AMIGAOS
	[OFLocale addLanguageDirectory: @LANGUAGE_DIR];
	[OFLocale addLocalizationDirectory: @LOCALIZATION_DIR];
#else
	[OFLocale addLocalizationDirectory:
	[OFLocale addLanguageDirectory: @"PROGDIR:/share/ofhttp/lang"];
	    @"PROGDIR:/share/ofhttp/localization"];
#endif

	optionsParser = [OFOptionsParser parserWithOptions: options];
	while ((option = [optionsParser nextOption]) != '\0') {
		switch (option) {
		case 'b':
			[self setBody: optionsParser.argument];

Name change from utils/ofhttp/lang/de.json to utils/ofhttp/localization/de.json.

Name change from utils/ofhttp/lang/languages.json to utils/ofhttp/localization/localizations.json.