107 lines
3.7 KiB
Objective-C
107 lines
3.7 KiB
Objective-C
//
|
|
// UnzipKitMacros.h
|
|
// UnzipKit
|
|
//
|
|
// Created by Dov Frankel on 7/10/17.
|
|
// Copyright © 2017 Abbey Code. All rights reserved.
|
|
//
|
|
|
|
#ifndef UnzipKitMacros_h
|
|
#define UnzipKitMacros_h
|
|
|
|
#import "TargetConditionals.h"
|
|
|
|
//#import "Availability.h"
|
|
//#import "AvailabilityInternal.h"
|
|
|
|
#pragma clang diagnostic push
|
|
#pragma clang diagnostic ignored "-Wundef"
|
|
#pragma clang diagnostic ignored "-Wgnu-zero-variadic-macro-arguments"
|
|
|
|
|
|
#if TARGET_OS_IPHONE
|
|
#define SDK_10_13_MAJOR 11
|
|
#define SDK_10_13_MINOR 0
|
|
#else
|
|
#define SDK_10_13_MAJOR 10
|
|
#define SDK_10_13_MINOR 13
|
|
#endif
|
|
|
|
// iOS 10, macOS 10.12, tvOS 10.0, watchOS 3.0
|
|
#define UNIFIED_LOGGING_SUPPORTED \
|
|
__IPHONE_OS_VERSION_MIN_REQUIRED >= 100000 \
|
|
|| __MAC_OS_X_VERSION_MIN_REQUIRED >= 101200 \
|
|
|| __TV_OS_VERSION_MIN_REQUIRED >= 100000 \
|
|
|| __WATCH_OS_VERSION_MIN_REQUIRED >= 30000
|
|
|
|
#if UNIFIED_LOGGING_SUPPORTED
|
|
@import os.log;
|
|
@import os.activity;
|
|
|
|
// Called from +[UnzipKit initialize] and +[UZKArchiveTestCase setUp]
|
|
extern os_log_t unzipkit_log; // Declared in UZKArchive.m
|
|
extern BOOL unzipkitIsAtLeast10_13SDK; // Declared in UZKArchive.m
|
|
#define UZKLogInit() unzipkit_log = os_log_create("com.abbey-code.UnzipKit", "General"); \
|
|
\
|
|
NSOperatingSystemVersion minVersion; \
|
|
minVersion.majorVersion = SDK_10_13_MAJOR; \
|
|
minVersion.minorVersion = SDK_10_13_MINOR; \
|
|
minVersion.patchVersion = 0; \
|
|
unzipkitIsAtLeast10_13SDK = [[NSProcessInfo processInfo] isOperatingSystemAtLeastVersion:minVersion]; \
|
|
UZKLogDebug("Is >= 10.13 (or iOS 11): %@", unzipkitIsAtLeast10_13SDK ? @"YES" : @"NO");
|
|
|
|
#define UZKLog(format, ...) os_log(unzipkit_log, format, ##__VA_ARGS__);
|
|
#define UZKLogInfo(format, ...) os_log_info(unzipkit_log, format, ##__VA_ARGS__);
|
|
#define UZKLogDebug(format, ...) os_log_debug(unzipkit_log, format, ##__VA_ARGS__);
|
|
|
|
|
|
#define UZKLogError(format, ...) \
|
|
if (unzipkitIsAtLeast10_13SDK) os_log_error(unzipkit_log, format, ##__VA_ARGS__); \
|
|
else os_log_with_type(unzipkit_log, OS_LOG_TYPE_ERROR, format, ##__VA_ARGS__);
|
|
|
|
#define UZKLogFault(format, ...) \
|
|
if (unzipkitIsAtLeast10_13SDK) os_log_fault(unzipkit_log, format, ##__VA_ARGS__); \
|
|
else os_log_with_type(unzipkit_log, OS_LOG_TYPE_FAULT, format, ##__VA_ARGS__);
|
|
|
|
|
|
#define UZKCreateActivity(name) \
|
|
os_activity_t activity = os_activity_create(name, OS_ACTIVITY_CURRENT, OS_ACTIVITY_FLAG_DEFAULT); \
|
|
os_activity_scope(activity);
|
|
|
|
|
|
#else // Fall back to regular NSLog
|
|
|
|
// No-op, as nothing needs to be initialized
|
|
#define UZKLogInit() (void)0
|
|
|
|
|
|
// Only used below
|
|
#define _removeLogFormatTokens(format) [[[@format \
|
|
stringByReplacingOccurrencesOfString:@"{public}" withString:@""] \
|
|
stringByReplacingOccurrencesOfString:@"{time_t}" withString:@""] \
|
|
stringByReplacingOccurrencesOfString:@"{iec-bytes}" withString:@""]
|
|
#define _stringify(a) #a
|
|
#define _nsLogWithoutWarnings(format, ...) \
|
|
_Pragma( _stringify( clang diagnostic push ) ) \
|
|
_Pragma( _stringify( clang diagnostic ignored "-Wformat-nonliteral" ) ) \
|
|
_Pragma( _stringify( clang diagnostic ignored "-Wformat-security" ) ) \
|
|
NSLog(_removeLogFormatTokens(format), ##__VA_ARGS__); \
|
|
_Pragma( _stringify( clang diagnostic pop ) )
|
|
|
|
// All levels do the same thing
|
|
#define UZKLog(format, ...) _nsLogWithoutWarnings(format, ##__VA_ARGS__);
|
|
#define UZKLogInfo(format, ...) _nsLogWithoutWarnings(format, ##__VA_ARGS__);
|
|
#define UZKLogDebug(format, ...) _nsLogWithoutWarnings(format, ##__VA_ARGS__);
|
|
#define UZKLogError(format, ...) _nsLogWithoutWarnings(format, ##__VA_ARGS__);
|
|
#define UZKLogFault(format, ...) _nsLogWithoutWarnings(format, ##__VA_ARGS__);
|
|
|
|
// No-op, as no equivalent to Activities exists
|
|
#define UZKCreateActivity(name) (void)0
|
|
|
|
#endif
|
|
|
|
|
|
#pragma clang diagnostic pop
|
|
|
|
#endif /* UnzipKitMacros_h */
|