Differences From Artifact [08732d57f8]:
- File
src/OFProcess.m
— part of check-in
[4af49a13c3]
at
2017-05-07 20:10:13
on branch trunk
— Small code style change
Casts are now written like types in variable declarations. (user: js, size: 14360) [annotate] [blame] [check-ins using]
To Artifact [8cc38c1f3c]:
- File src/OFProcess.m — part of check-in [37d2a81754] at 2017-05-07 21:25:56 on branch trunk — Use char{16,32}_t instead of of_char{16,32}_t (user: js, size: 14339) [annotate] [blame] [check-ins using]
︙ | ︙ | |||
59 60 61 62 63 64 65 | @interface OFProcess () #ifndef OF_WINDOWS - (void)OF_getArgV: (char ***)argv forProgramName: (OFString *)programName andArguments: (OFArray *)arguments; - (char **)OF_environmentForDictionary: (OFDictionary *)dictionary; #else | | | 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 | @interface OFProcess () #ifndef OF_WINDOWS - (void)OF_getArgV: (char ***)argv forProgramName: (OFString *)programName andArguments: (OFArray *)arguments; - (char **)OF_environmentForDictionary: (OFDictionary *)dictionary; #else - (char16_t *)OF_environmentForDictionary: (OFDictionary *)dictionary; #endif @end @implementation OFProcess + (instancetype)processWithProgram: (OFString *)program { return [[[self alloc] initWithProgram: program] autorelease]; |
︙ | ︙ | |||
225 226 227 228 229 230 231 | objc_autoreleasePoolPop(pool); #else SECURITY_ATTRIBUTES sa; PROCESS_INFORMATION pi; STARTUPINFOW si; void *pool; OFMutableString *argumentsString; | | | 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 | objc_autoreleasePoolPop(pool); #else SECURITY_ATTRIBUTES sa; PROCESS_INFORMATION pi; STARTUPINFOW si; void *pool; OFMutableString *argumentsString; char16_t *argumentsCopy; size_t length; sa.nLength = sizeof(sa); sa.bInheritHandle = TRUE; sa.lpSecurityDescriptor = NULL; if (!CreatePipe(&_readPipe[0], &_readPipe[1], &sa, 0)) |
︙ | ︙ | |||
294 295 296 297 298 299 300 | [argumentsString appendString: tmp]; if (containsSpaces) [argumentsString appendString: @"\""]; } length = [argumentsString UTF16StringLength]; | | | 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 | [argumentsString appendString: tmp]; if (containsSpaces) [argumentsString appendString: @"\""]; } length = [argumentsString UTF16StringLength]; argumentsCopy = [self allocMemoryWithSize: sizeof(char16_t) count: length + 1]; memcpy(argumentsCopy, [argumentsString UTF16String], ([argumentsString UTF16StringLength] + 1) * 2); @try { if (!CreateProcessW([program UTF16String], argumentsCopy, NULL, NULL, TRUE, CREATE_UNICODE_ENVIRONMENT, |
︙ | ︙ | |||
400 401 402 403 404 405 406 | } envp[i] = NULL; return envp; } #else | | | | | | 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 | } envp[i] = NULL; return envp; } #else - (char16_t *)OF_environmentForDictionary: (OFDictionary *)environment { OFDataArray *env; OFEnumerator *keyEnumerator, *objectEnumerator; OFString *key, *object; const char16_t equal = '='; const char16_t zero[2] = { 0, 0 }; if (environment == nil) return NULL; env = [OFDataArray dataArrayWithItemSize: sizeof(char16_t)]; keyEnumerator = [environment keyEnumerator]; objectEnumerator = [environment objectEnumerator]; while ((key = [keyEnumerator nextObject]) != nil && (object = [objectEnumerator nextObject]) != nil) { [env addItems: [key UTF16String] count: [key UTF16StringLength]]; |
︙ | ︙ |