@@ -144,14 +144,12 @@ } + (OFString *)userDataPath { #if defined(OF_MACOS) || defined(OF_IOS) - void *pool = objc_autoreleasePoolPush(); char pathC[PATH_MAX]; OFMutableString *path; - OFString *home; # ifdef HAVE_SYSDIR_START_SEARCH_PATH_ENUMERATION sysdir_search_path_enumeration_state state; state = sysdir_start_search_path_enumeration( @@ -170,10 +168,11 @@ # endif path = [OFMutableString stringWithUTF8String: pathC]; if ([path hasPrefix: @"~"]) { OFDictionary *env = [OFApplication environment]; + OFString *home; if ((home = [env objectForKey: @"HOME"]) == nil) @throw [OFNotImplementedException exceptionWithSelector: _cmd object: self]; @@ -182,25 +181,20 @@ [path prependString: home]; } [path makeImmutable]; - [path retain]; - objc_autoreleasePoolPop(pool); - return [path autorelease]; + return path; #elif defined(OF_WINDOWS) - void *pool = objc_autoreleasePoolPush(); OFDictionary *env = [OFApplication environment]; OFString *appData; if ((appData = [env objectForKey: @"APPDATA"]) == nil) @throw [OFNotImplementedException exceptionWithSelector: _cmd object: self]; - [appData retain]; - objc_autoreleasePoolPop(pool); - return [appData autorelease]; + return appData; #elif defined(OF_HAIKU) char pathC[PATH_MAX]; if (find_directory(B_USER_SETTINGS_DIRECTORY, 0, false, pathC, PATH_MAX) != B_OK) @@ -207,41 +201,38 @@ @throw [OFNotImplementedException exceptionWithSelector: _cmd object: self]; return [OFString stringWithUTF8String: pathC]; #else - void *pool = objc_autoreleasePoolPush(); OFDictionary *env = [OFApplication environment]; OFString *var; + void *pool; if ((var = [env objectForKey: @"XDG_DATA_HOME"]) != nil && - [var length] > 0) { - [var retain]; - objc_autoreleasePoolPop(pool); - return [var autorelease]; - } + [var length] > 0) + return var; if ((var = [env objectForKey: @"HOME"]) == nil) @throw [OFNotImplementedException exceptionWithSelector: _cmd object: self]; - var = [OFString pathWithComponents: [OFArray arrayWithObjects: - var, @".local", @"share", nil]]; + pool = objc_autoreleasePoolPush(); - [var retain]; + var = [[OFString pathWithComponents: [OFArray arrayWithObjects: + var, @".local", @"share", nil]] retain]; + objc_autoreleasePoolPop(pool); + return [var autorelease]; #endif } + (OFString *)userConfigPath { #if defined(OF_MACOS) || defined(OF_IOS) - void *pool = objc_autoreleasePoolPush(); char pathC[PATH_MAX]; OFMutableString *path; - OFString *home; # ifdef HAVE_SYSDIR_START_SEARCH_PATH_ENUMERATION sysdir_search_path_enumeration_state state; state = sysdir_start_search_path_enumeration( @@ -260,10 +251,11 @@ # endif path = [OFMutableString stringWithUTF8String: pathC]; if ([path hasPrefix: @"~"]) { OFDictionary *env = [OFApplication environment]; + OFString *home; if ((home = [env objectForKey: @"HOME"]) == nil) @throw [OFNotImplementedException exceptionWithSelector: _cmd object: self]; @@ -274,25 +266,20 @@ [path appendString: @"/Preferences"]; [path makeImmutable]; - [path retain]; - objc_autoreleasePoolPop(pool); - return [path autorelease]; + return path; #elif defined(OF_WINDOWS) - void *pool = objc_autoreleasePoolPush(); OFDictionary *env = [OFApplication environment]; OFString *appData; if ((appData = [env objectForKey: @"APPDATA"]) == nil) @throw [OFNotImplementedException exceptionWithSelector: _cmd object: self]; - [appData retain]; - objc_autoreleasePoolPop(pool); - return [appData autorelease]; + return appData; #elif defined(OF_HAIKU) char pathC[PATH_MAX]; if (find_directory(B_USER_SETTINGS_DIRECTORY, 0, false, pathC, PATH_MAX) != B_OK) @@ -299,30 +286,22 @@ @throw [OFNotImplementedException exceptionWithSelector: _cmd object: self]; return [OFString stringWithUTF8String: pathC]; #else - void *pool = objc_autoreleasePoolPush(); OFDictionary *env = [OFApplication environment]; OFString *var; if ((var = [env objectForKey: @"XDG_CONFIG_HOME"]) != nil && - [var length] > 0) { - [var retain]; - objc_autoreleasePoolPop(pool); - return [var autorelease]; - } + [var length] > 0) + return var; if ((var = [env objectForKey: @"HOME"]) == nil) @throw [OFNotImplementedException exceptionWithSelector: _cmd object: self]; - var = [var stringByAppendingPathComponent: @".config"]; - - [var retain]; - objc_autoreleasePoolPop(pool); - return [var autorelease]; + return [var stringByAppendingPathComponent: @".config"]; #endif } + (OFString *)CPUVendor { @@ -401,9 +380,9 @@ if (sysctl(name, 2, &value, &length, NULL, 0) == 0) return value; # endif - return 0; + return false; } #endif @end