Skip to content

Commit eb4d05a

Browse files
authored
Merge pull request #395 from macvim-dev/fix/os_log
Fix "Symbol not found: _os_log_type_enabled" on 10.11 or earlier
2 parents a6a61ec + 60d5a30 commit eb4d05a

File tree

1 file changed

+24
-5
lines changed

1 file changed

+24
-5
lines changed

src/MacVim/MacVim.h

Lines changed: 24 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -30,13 +30,15 @@
3030
# define MAC_OS_X_VERSION_10_12 101200
3131
#endif
3232

33-
// Needed for pre-10.11 SDK
3433
#ifndef NSAppKitVersionNumber10_10
3534
# define NSAppKitVersionNumber10_10 1343
3635
#endif
3736
#ifndef NSAppKitVersionNumber10_10_Max
3837
# define NSAppKitVersionNumber10_10_Max 1349
3938
#endif
39+
#ifndef NSAppKitVersionNumber10_12
40+
# define NSAppKitVersionNumber10_12 1504
41+
#endif
4042

4143
#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_12
4244
// Deprecated constants in 10.12 SDK
@@ -70,8 +72,8 @@
7072
# define NSWindowStyleMaskUnifiedTitleAndToolbar NSUnifiedTitleAndToolbarWindowMask
7173
#endif
7274

75+
#import <asl.h>
7376
#if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_12
74-
# import <asl.h>
7577
# define MM_USE_ASL
7678
#else
7779
# import <os/log.h>
@@ -425,9 +427,26 @@ void ASLInit();
425427
# define MM_ASL_LEVEL_DEFAULT OS_LOG_TYPE_DEFAULT
426428
# define ASLog(level, fmt, ...) \
427429
if (level <= ASLogLevel) { \
428-
os_log_with_type(OS_LOG_DEFAULT, level, "%s@%d: %s", \
429-
__PRETTY_FUNCTION__, __LINE__, \
430-
[[NSString stringWithFormat:fmt, ##__VA_ARGS__] UTF8String]); \
430+
if (floor(NSAppKitVersionNumber) >= NSAppKitVersionNumber10_12) { \
431+
os_log_with_type(OS_LOG_DEFAULT, level, "%s@%d: %s", \
432+
__PRETTY_FUNCTION__, __LINE__, \
433+
[[NSString stringWithFormat:fmt, ##__VA_ARGS__] UTF8String]); \
434+
} else { \
435+
int logLevel; \
436+
switch (level) { \
437+
case OS_LOG_TYPE_FAULT: logLevel = ASL_LEVEL_CRIT; break; \
438+
case OS_LOG_TYPE_ERROR: logLevel = ASL_LEVEL_ERR; break; \
439+
case OS_LOG_TYPE_INFO: logLevel = ASL_LEVEL_INFO; break; \
440+
case OS_LOG_TYPE_DEBUG: logLevel = ASL_LEVEL_DEBUG; break; \
441+
default: logLevel = ASL_LEVEL_NOTICE; break; \
442+
} \
443+
_Pragma("clang diagnostic push") \
444+
_Pragma("clang diagnostic ignored \"-Wdeprecated-declarations\"") \
445+
asl_log(NULL, NULL, logLevel, "%s@%d: %s", \
446+
__PRETTY_FUNCTION__, __LINE__, \
447+
[[NSString stringWithFormat:fmt, ##__VA_ARGS__] UTF8String]); \
448+
_Pragma("clang diagnostic pop") \
449+
} \
431450
}
432451

433452
# define ASLogCrit(fmt, ...) ASLog(OS_LOG_TYPE_FAULT, fmt, ##__VA_ARGS__)

0 commit comments

Comments
 (0)