Пример #1
0
void
_ODErrorSet(CFErrorRef *error, uint32_t code, CFStringRef info)
{
	if (error == NULL) {
		return;
	}

	if (code) {
		CFStringRef keys[2], vals[2];

		keys[0] = kCFErrorLocalizedDescriptionKey;
		if (info) {
			vals[0] = CFRetain(info);
		} else {
			// TODO: 7708162
			vals[0] = MapCodeToReason(code);
		}

		keys[1] = kCFErrorLocalizedFailureReasonKey;
		vals[1] = MapCodeToReason(code);

		*error = CFErrorCreateWithUserInfoKeysAndValues(NULL, kODErrorDomainFramework, code, (const void **)keys, (const void **)vals, 2);

		CFRelease(vals[0]);
		CFRelease(vals[1]);
	} else {
		*error = NULL;
	}
}
Пример #2
0
static void cocoaError(CFErrorRef *error, CFIndex code, CFURLRef url, CFStringRef path) {
    if (error) {
        const CFStringRef keys[2] = {
            NSURLErrorKey,
            NSFilePathErrorKey
        };
        CFTypeRef values[2] = {
            url,
            path,
        };
        *error = CFErrorCreateWithUserInfoKeysAndValues(kCFAllocatorDefault, kCFErrorDomainCocoa, code, (const void *const *)keys, (const void *const *)values, 2);
    }
}
Пример #3
0
static void posixError(CFErrorRef *error, CFURLRef url, CFStringRef path) {
    if (error) {
        const CFStringRef keys[3] = {
            kCFErrorUnderlyingErrorKey,
            NSURLErrorKey,
            NSFilePathErrorKey
        };
        CFStringRef err = CFStringCreateWithFormat(kCFAllocatorDefault, NULL, CFSTR("%s"), strerror(errno));
        CFTypeRef values[3] = {
            err,
            url,
            path,
        };
        *error = CFErrorCreateWithUserInfoKeysAndValues(kCFAllocatorDefault, kCFErrorDomainPOSIX, errno, (const void *const *)keys, (const void *const *)values, 3);
        CFRelease(err);
    }
}
Пример #4
0
bool
_validate_nonnull(CFErrorRef *error, CFStringRef desc, const void *ptr)
{
	if (ptr) {
		return true;
	}
	if (error) {
		CFStringRef keys[2], vals[2];
		keys[0] = kCFErrorLocalizedDescriptionKey;
		vals[0] = CFSTR("Invalid argument.");
		keys[1] = kCFErrorLocalizedFailureReasonKey;
		vals[1] = CFStringCreateWithFormat(NULL, NULL, CFSTR("Invalid %@ reference."), desc);
		*error = CFErrorCreateWithUserInfoKeysAndValues(NULL, kODErrorDomainFramework, kODErrorRecordParameterError, (const void **)keys, (const void **)vals, 2);
		CFRelease(vals[0]);
		CFRelease(vals[1]);
	}
	return false;
}