Misc minor bugfixes

git-svn-id: svn+ssh://svn.gna.org/svn/gnustep/libs/base/trunk@39422 72102866-910b-0410-8b05-ffd578937521
This commit is contained in:
rfm 2016-02-29 09:20:43 +00:00
parent 59d489fdc8
commit fbee572507
3 changed files with 105 additions and 79 deletions

View file

@ -1,7 +1,10 @@
2016-02-29 Richard Frith-Macdonald <rfm@gnu.org> 2016-02-29 Richard Frith-Macdonald <rfm@gnu.org>
* Based on testplant patch, fix bug with ownership when copying * Source/NSFileManager.m: Based on testplant patch, fix bug with
subdirectories. ownership when copying subdirectories.
* Source/NSTask.m OSX compatibility tweak .. raise an exception if
the task can't be launched.
* Source/NSNumberFormatter.m: Fixes for symbol indexes.
2016-02-26 Niels Grewe <niels.grewe@halbordnung.de> 2016-02-26 Niels Grewe <niels.grewe@halbordnung.de>

View file

@ -63,8 +63,8 @@
@interface NSDateFormatter (PrivateMethods) @interface NSDateFormatter (PrivateMethods)
- (void) _resetUDateFormat; - (void) _resetUDateFormat;
- (void) _setSymbols: (NSArray *) array : (NSInteger) symbol; - (void) _setSymbols: (NSArray *)array : (NSInteger)symbol;
- (NSArray *) _getSymbols: (NSInteger) symbol; - (NSArray *) _getSymbols: (NSInteger)symbol;
@end @end
static inline NSInteger static inline NSInteger
@ -297,7 +297,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
return _defaultBehavior; return _defaultBehavior;
} }
+ (void) setDefaultFormatterBehavior: (NSDateFormatterBehavior) behavior + (void) setDefaultFormatterBehavior: (NSDateFormatterBehavior)behavior
{ {
_defaultBehavior = behavior; _defaultBehavior = behavior;
} }
@ -307,7 +307,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
return internal->_behavior; return internal->_behavior;
} }
- (void) setFormatterBehavior: (NSDateFormatterBehavior) behavior - (void) setFormatterBehavior: (NSDateFormatterBehavior)behavior
{ {
internal->_behavior = behavior; internal->_behavior = behavior;
} }
@ -317,7 +317,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
return NO; // FIXME return NO; // FIXME
} }
- (void) setGeneratesCalendarDates: (BOOL) flag - (void) setGeneratesCalendarDates: (BOOL)flag
{ {
return; // FIXME return; // FIXME
} }
@ -331,7 +331,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
#endif #endif
} }
- (void) setLenient: (BOOL) flag - (void) setLenient: (BOOL)flag
{ {
#if GS_USE_ICU == 1 #if GS_USE_ICU == 1
udat_setLenient (internal->_formatter, flag); udat_setLenient (internal->_formatter, flag);
@ -408,7 +408,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
return NO; // FIXME return NO; // FIXME
} }
- (void) setDateFormat: (NSString *) string - (void) setDateFormat: (NSString *)string
{ {
#if GS_USE_ICU == 1 #if GS_USE_ICU == 1
UChar *pattern; UChar *pattern;
@ -430,7 +430,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
return internal->_dateStyle; return internal->_dateStyle;
} }
- (void) setDateStyle: (NSDateFormatterStyle) style - (void) setDateStyle: (NSDateFormatterStyle)style
{ {
internal->_dateStyle = style; internal->_dateStyle = style;
[self _resetUDateFormat]; [self _resetUDateFormat];
@ -441,7 +441,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
return internal->_timeStyle; return internal->_timeStyle;
} }
- (void) setTimeStyle: (NSDateFormatterStyle) style - (void) setTimeStyle: (NSDateFormatterStyle)style
{ {
internal->_timeStyle = style; internal->_timeStyle = style;
[self _resetUDateFormat]; [self _resetUDateFormat];
@ -452,7 +452,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
return [internal->_locale objectForKey: NSLocaleCalendar]; return [internal->_locale objectForKey: NSLocaleCalendar];
} }
- (void) setCalendar: (NSCalendar *) calendar - (void) setCalendar: (NSCalendar *)calendar
{ {
NSMutableDictionary *dict; NSMutableDictionary *dict;
NSLocale *locale; NSLocale *locale;
@ -474,7 +474,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
return nil; // FIXME return nil; // FIXME
} }
- (void) setDefaultDate: (NSDate *) date - (void) setDefaultDate: (NSDate *)date
{ {
return; // FIXME return; // FIXME
} }
@ -484,7 +484,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
return internal->_locale; return internal->_locale;
} }
- (void) setLocale: (NSLocale *) locale - (void) setLocale: (NSLocale *)locale
{ {
if (locale == internal->_locale) if (locale == internal->_locale)
return; return;
@ -499,7 +499,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
return internal->_tz; return internal->_tz;
} }
- (void) setTimeZone: (NSTimeZone *) tz - (void) setTimeZone: (NSTimeZone *)tz
{ {
if (tz == internal->_tz) if (tz == internal->_tz)
return; return;
@ -520,7 +520,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
#endif #endif
} }
- (void) setTwoDigitStartDate: (NSDate *) date - (void) setTwoDigitStartDate: (NSDate *)date
{ {
#if GS_USE_ICU == 1 #if GS_USE_ICU == 1
UErrorCode err = U_ZERO_ERROR; UErrorCode err = U_ZERO_ERROR;
@ -560,7 +560,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
#endif #endif
} }
- (void) setPMSymbol: (NSString *) string - (void) setPMSymbol: (NSString *)string
{ {
return; return;
} }
@ -574,7 +574,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
#endif #endif
} }
- (void) setWeekdaySymbols: (NSArray *) array - (void) setWeekdaySymbols: (NSArray *)array
{ {
#if GS_USE_ICU == 1 #if GS_USE_ICU == 1
[self _setSymbols: array : UDAT_WEEKDAYS]; [self _setSymbols: array : UDAT_WEEKDAYS];
@ -592,10 +592,10 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
#endif #endif
} }
- (void) setShortWeekdaySymbols: (NSArray *) array - (void) setShortWeekdaySymbols: (NSArray *)array
{ {
#if GS_USE_ICU == 1 #if GS_USE_ICU == 1
[self _getSymbols: UDAT_SHORT_WEEKDAYS]; [self _setSymbols: array : UDAT_SHORT_WEEKDAYS];
#else #else
return; return;
#endif #endif
@ -610,10 +610,10 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
#endif #endif
} }
- (void) setMonthSymbols: (NSArray *) array - (void) setMonthSymbols: (NSArray *)array
{ {
#if GS_USE_ICU == 1 #if GS_USE_ICU == 1
[self _getSymbols: UDAT_MONTHS]; [self _setSymbols: array : UDAT_MONTHS];
#else #else
return; return;
#endif #endif
@ -628,10 +628,10 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
#endif #endif
} }
- (void) setShortMonthSymbols: (NSArray *) array - (void) setShortMonthSymbols: (NSArray *)array
{ {
#if GS_USE_ICU == 1 #if GS_USE_ICU == 1
[self _getSymbols: UDAT_SHORT_MONTHS]; [self _setSymbols: array : UDAT_SHORT_MONTHS];
#else #else
return; return;
#endif #endif
@ -646,7 +646,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
#endif #endif
} }
- (void) setEraSymbols: (NSArray *) array - (void) setEraSymbols: (NSArray *)array
{ {
#if GS_USE_ICU == 1 #if GS_USE_ICU == 1
[self _setSymbols: array : UDAT_ERAS]; [self _setSymbols: array : UDAT_ERAS];
@ -660,7 +660,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
return nil; return nil;
} }
- (void) setGregorianStartDate: (NSDate *) date - (void) setGregorianStartDate: (NSDate *)date
{ {
return; return;
} }
@ -674,7 +674,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
#endif #endif
} }
- (void) setLongEraSymbols: (NSArray *) array - (void) setLongEraSymbols: (NSArray *)array
{ {
#if GS_USE_ICU == 1 #if GS_USE_ICU == 1
[self _setSymbols: array : UDAT_ERA_NAMES]; [self _setSymbols: array : UDAT_ERA_NAMES];
@ -693,7 +693,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
#endif #endif
} }
- (void) setQuarterSymbols: (NSArray *) array - (void) setQuarterSymbols: (NSArray *)array
{ {
#if GS_USE_ICU == 1 #if GS_USE_ICU == 1
[self _setSymbols: array : UDAT_QUARTERS]; [self _setSymbols: array : UDAT_QUARTERS];
@ -711,7 +711,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
#endif #endif
} }
- (void) setShortQuarterSymbols: (NSArray *) array - (void) setShortQuarterSymbols: (NSArray *)array
{ {
#if GS_USE_ICU == 1 #if GS_USE_ICU == 1
[self _setSymbols: array : UDAT_SHORT_QUARTERS]; [self _setSymbols: array : UDAT_SHORT_QUARTERS];
@ -729,7 +729,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
#endif #endif
} }
- (void) setStandaloneQuarterSymbols: (NSArray *) array - (void) setStandaloneQuarterSymbols: (NSArray *)array
{ {
#if GS_USE_ICU == 1 #if GS_USE_ICU == 1
[self _setSymbols: array : UDAT_STANDALONE_QUARTERS]; [self _setSymbols: array : UDAT_STANDALONE_QUARTERS];
@ -747,7 +747,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
#endif #endif
} }
- (void) setShortStandaloneQuarterSymbols: (NSArray *) array - (void) setShortStandaloneQuarterSymbols: (NSArray *)array
{ {
#if GS_USE_ICU == 1 #if GS_USE_ICU == 1
[self _setSymbols: array : UDAT_STANDALONE_SHORT_QUARTERS]; [self _setSymbols: array : UDAT_STANDALONE_SHORT_QUARTERS];
@ -765,7 +765,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
#endif #endif
} }
- (void) setShortStandaloneMonthSymbols: (NSArray *) array - (void) setShortStandaloneMonthSymbols: (NSArray *)array
{ {
#if GS_USE_ICU == 1 #if GS_USE_ICU == 1
[self _setSymbols: array : UDAT_STANDALONE_SHORT_MONTHS]; [self _setSymbols: array : UDAT_STANDALONE_SHORT_MONTHS];
@ -783,7 +783,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
#endif #endif
} }
- (void) setStandaloneMonthSymbols: (NSArray *) array - (void) setStandaloneMonthSymbols: (NSArray *)array
{ {
#if GS_USE_ICU == 1 #if GS_USE_ICU == 1
[self _setSymbols: array : UDAT_STANDALONE_MONTHS]; [self _setSymbols: array : UDAT_STANDALONE_MONTHS];
@ -801,7 +801,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
#endif #endif
} }
- (void) setVeryShortMonthSymbols: (NSArray *) array - (void) setVeryShortMonthSymbols: (NSArray *)array
{ {
#if GS_USE_ICU == 1 #if GS_USE_ICU == 1
[self _setSymbols: array : UDAT_NARROW_MONTHS]; [self _setSymbols: array : UDAT_NARROW_MONTHS];
@ -819,7 +819,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
#endif #endif
} }
- (void) setVeryShortStandaloneMonthSymbols: (NSArray *) array - (void) setVeryShortStandaloneMonthSymbols: (NSArray *)array
{ {
#if GS_USE_ICU == 1 #if GS_USE_ICU == 1
[self _setSymbols: array : UDAT_STANDALONE_NARROW_MONTHS]; [self _setSymbols: array : UDAT_STANDALONE_NARROW_MONTHS];
@ -837,7 +837,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
#endif #endif
} }
- (void) setShortStandaloneWeekdaySymbols: (NSArray *) array - (void) setShortStandaloneWeekdaySymbols: (NSArray *)array
{ {
#if GS_USE_ICU == 1 #if GS_USE_ICU == 1
[self _setSymbols: array : UDAT_STANDALONE_SHORT_WEEKDAYS]; [self _setSymbols: array : UDAT_STANDALONE_SHORT_WEEKDAYS];
@ -855,7 +855,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
#endif #endif
} }
- (void) setStandaloneWeekdaySymbols: (NSArray *) array - (void) setStandaloneWeekdaySymbols: (NSArray *)array
{ {
#if GS_USE_ICU == 1 #if GS_USE_ICU == 1
[self _setSymbols: array : UDAT_STANDALONE_WEEKDAYS]; [self _setSymbols: array : UDAT_STANDALONE_WEEKDAYS];
@ -873,7 +873,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
#endif #endif
} }
- (void) setVeryShortWeekdaySymbols: (NSArray *) array - (void) setVeryShortWeekdaySymbols: (NSArray *)array
{ {
#if GS_USE_ICU == 1 #if GS_USE_ICU == 1
[self _setSymbols: array : UDAT_SHORT_WEEKDAYS]; [self _setSymbols: array : UDAT_SHORT_WEEKDAYS];
@ -891,7 +891,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
#endif #endif
} }
- (void) setVeryShortStandaloneWeekdaySymbols: (NSArray *) array - (void) setVeryShortStandaloneWeekdaySymbols: (NSArray *)array
{ {
#if GS_USE_ICU == 1 #if GS_USE_ICU == 1
[self _setSymbols: array : UDAT_STANDALONE_NARROW_WEEKDAYS]; [self _setSymbols: array : UDAT_STANDALONE_NARROW_WEEKDAYS];
@ -955,7 +955,7 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
return (internal->_dateStyle & FormatterDoesRelativeDateFormatting) ? YES : NO; return (internal->_dateStyle & FormatterDoesRelativeDateFormatting) ? YES : NO;
} }
- (void) setDoesRelativeDateFormatting: (BOOL) flag - (void) setDoesRelativeDateFormatting: (BOOL)flag
{ {
internal->_dateStyle |= FormatterDoesRelativeDateFormatting; internal->_dateStyle |= FormatterDoesRelativeDateFormatting;
} }
@ -1006,56 +1006,79 @@ static NSDateFormatterBehavior _defaultBehavior = 0;
#endif #endif
} }
- (void) _setSymbols: (NSArray *) array : (NSInteger) symbol static inline void
symbolRange(NSInteger symbol, int *from)
{ {
#if GS_USE_ICU == 1 switch (symbol)
int idx = 0;
int count = udat_countSymbols (internal->_formatter, symbol);
if ([array count] != count)
return;
while (idx < count)
{ {
int length; case UDAT_SHORT_WEEKDAYS:
UChar *value; case UDAT_STANDALONE_NARROW_WEEKDAYS:
UErrorCode err = U_ZERO_ERROR; case UDAT_STANDALONE_SHORT_WEEKDAYS:
NSString *string = [array objectAtIndex: idx]; case UDAT_STANDALONE_WEEKDAYS:
case UDAT_WEEKDAYS:
length = [string length]; /* In ICU days of the week number from 1 rather than zero.
value = malloc(sizeof(unichar) * length); */
[string getCharacters: value range: NSMakeRange(0, length)]; *from = 1;
udat_setSymbols (internal->_formatter, symbol, idx, value, length, &err); break;
free(value);
default:
++idx; *from = 0;
break;
} }
#else
return;
#endif
} }
- (NSArray *) _getSymbols: (NSInteger) symbol - (void) _setSymbols: (NSArray*)array : (NSInteger)symbol
{ {
#if GS_USE_ICU == 1 #if GS_USE_ICU == 1
NSMutableArray *mArray; int idx;
int idx = 0;
int count = udat_countSymbols (internal->_formatter, symbol); int count = udat_countSymbols (internal->_formatter, symbol);
mArray = [NSMutableArray arrayWithCapacity: count]; symbolRange(symbol, &idx);
if ([array count] == count - idx)
{
while (idx < count)
{
int length;
UChar *value;
UErrorCode err = U_ZERO_ERROR;
NSString *string = [array objectAtIndex: idx];
length = [string length];
value = malloc(sizeof(unichar) * length);
[string getCharacters: value range: NSMakeRange(0, length)];
udat_setSymbols(internal->_formatter, symbol, idx,
value, length, &err);
free(value);
++idx;
}
}
#endif
return;
}
- (NSArray *) _getSymbols: (NSInteger)symbol
{
#if GS_USE_ICU == 1
NSMutableArray *mArray;
int idx;
int count;
count = udat_countSymbols(internal->_formatter, symbol);
symbolRange(symbol, &idx);
mArray = [NSMutableArray arrayWithCapacity: count - idx];
while (idx < count) while (idx < count)
{ {
int length; int length;
unichar *value; unichar *value;
NSString *str; NSString *str;
NSZone *z = [self zone]; NSZone *z = [self zone];
UErrorCode err = U_ERROR_LIMIT; UErrorCode err = U_ERROR_LIMIT;
length length
= udat_getSymbols (internal->_formatter, symbol, idx, NULL, 0, &err); = udat_getSymbols(internal->_formatter, symbol, idx, NULL, 0, &err);
value = NSZoneMalloc (z, sizeof(unichar) * (length + 1)); value = NSZoneMalloc(z, sizeof(unichar) * (length + 1));
err = U_ZERO_ERROR; err = U_ZERO_ERROR;
udat_getSymbols (internal->_formatter, symbol, idx, value, length, &err); udat_getSymbols(internal->_formatter, symbol, idx, value, length, &err);
if (U_SUCCESS(err)) if (U_SUCCESS(err))
{ {
str = [[NSString allocWithZone: z] str = [[NSString allocWithZone: z]

View file

@ -1263,10 +1263,10 @@ quotedFromString(NSString *aString)
SetHandleInformation(hErr, HANDLE_FLAG_INHERIT, 0); SetHandleInformation(hErr, HANDLE_FLAG_INHERIT, 0);
[tasksLock unlock]; [tasksLock unlock];
if (result == 0) if (0 == result)
{ {
NSLog(@"Error launching task: %@ ... %@", lpath, last); [NSException raise: NSInvalidArgumentException
return; format: @"NSTask - Error launching task: %@ ... %@", lpath, last];
} }
_taskId = procInfo.dwProcessId; _taskId = procInfo.dwProcessId;