diff --git a/system7.xcodeproj/project.pbxproj b/system7.xcodeproj/project.pbxproj index 39ef79b..69561d0 100644 --- a/system7.xcodeproj/project.pbxproj +++ b/system7.xcodeproj/project.pbxproj @@ -695,7 +695,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 14.6; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; ONLY_ACTIVE_ARCH = YES; @@ -754,7 +754,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - MACOSX_DEPLOYMENT_TARGET = 10.15; + MACOSX_DEPLOYMENT_TARGET = 14.6; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; OTHER_LDFLAGS = "-Wl,-fatal_warnings"; @@ -772,7 +772,6 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = system7/system7.pch; INSTALL_PATH = /bin; - MACOSX_DEPLOYMENT_TARGET = 10.14; PRODUCT_NAME = s7; }; name = Debug; @@ -786,7 +785,6 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = system7/system7.pch; INSTALL_PATH = /bin; - MACOSX_DEPLOYMENT_TARGET = 10.14; PRODUCT_NAME = s7; }; name = Release; @@ -800,7 +798,6 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "system7-tests/S7Tests.pch"; INFOPLIST_FILE = "system7-tests/Info.plist"; - MACOSX_DEPLOYMENT_TARGET = 12.0; PRODUCT_BUNDLE_IDENTIFIER = "com.readdle.system7-tests"; PRODUCT_NAME = "$(TARGET_NAME)"; }; @@ -815,7 +812,6 @@ GCC_PRECOMPILE_PREFIX_HEADER = YES; GCC_PREFIX_HEADER = "system7-tests/S7Tests.pch"; INFOPLIST_FILE = "system7-tests/Info.plist"; - MACOSX_DEPLOYMENT_TARGET = 12.0; PRODUCT_BUNDLE_IDENTIFIER = "com.readdle.system7-tests"; PRODUCT_NAME = "$(TARGET_NAME)"; }; diff --git a/system7/Merge Driver/S7ConfigMergeDriver.m b/system7/Merge Driver/S7ConfigMergeDriver.m index 5ac7dc0..3e34b84 100644 --- a/system7/Merge Driver/S7ConfigMergeDriver.m +++ b/system7/Merge Driver/S7ConfigMergeDriver.m @@ -403,7 +403,7 @@ + (BOOL)readMergeResolutionFromEnvironmentVariable:(S7ConflictResolutionOption * + (S7ConflictResolutionOption)readConflictResolutionFromStdinWithAllowedOptions:(S7ConflictResolutionOption)allowedResolutions prompt:(NSString *)prompt { - const int BUF_LEN = 20; + #define BUF_LEN 20 char buf[BUF_LEN]; NSUInteger numberOfTries = 0; diff --git a/system7/Utils/S7Logging.m b/system7/Utils/S7Logging.m index d556e76..5057a40 100644 --- a/system7/Utils/S7Logging.m +++ b/system7/Utils/S7Logging.m @@ -35,24 +35,37 @@ BOOL canUseColorForOutputToFile(int fileno) { return isatty(fileno) && term != NULL && strcasecmp(term, "dumb") != 0; } +char *formatMessage(const char * __restrict format, va_list *args) { + va_list args_copy; + va_copy(args_copy, *args); + const int writtenSize = vsnprintf(nil, 0, format, args_copy); + va_end(args_copy); + + const size_t bufferSize = writtenSize + 1; + char *const buffer = malloc(bufferSize); + vsnprintf(buffer, bufferSize, format, *args); + + return buffer; +} + void logInfo(const char * __restrict format, ...) { - va_list va_args; - va_start(va_args, format); - NSString *const nsFormat = [[NSString alloc] initWithCString:format encoding:NSUTF8StringEncoding]; - NSString *const message = [[NSString alloc] initWithFormat:nsFormat arguments:va_args]; - va_end(va_args); + va_list args; + va_start(args, format); + char *const message = formatMessage(format, &args); + va_end(args); withTTYLockDo(^{ - fprintf(stdout, "%s", [message cStringUsingEncoding:NSUTF8StringEncoding]); + fprintf(stdout, "%s", message); }); + + free(message); } void logError(const char * __restrict format, ...) { - va_list va_args; - va_start(va_args, format); - NSString *const nsFormat = [[NSString alloc] initWithCString:format encoding:NSUTF8StringEncoding]; - NSString *const message = [[NSString alloc] initWithFormat:nsFormat arguments:va_args]; - va_end(va_args); + va_list args; + va_start(args, format); + char *const message = formatMessage(format, &args); + va_end(args); withTTYLockDo(^{ if (canUseColorForOutputToFile(fileno(stderr))) { @@ -60,12 +73,12 @@ void logError(const char * __restrict format, ...) { "\033[31m" "%s" "\033[0m", - [message cStringUsingEncoding:NSUTF8StringEncoding]); + message); } else { - fprintf(stderr, - "ERROR: %s", - [message cStringUsingEncoding:NSUTF8StringEncoding]); + fprintf(stderr, "ERROR: %s", message); } }); + + free(message); } diff --git a/system7/git/Git.m b/system7/git/Git.m index 74ab815..57a3cab 100644 --- a/system7/git/Git.m +++ b/system7/git/Git.m @@ -983,6 +983,11 @@ - (BOOL)findPackedReferenceMatchingPattern:(NSString *)pattern reference:(NSStri BOOL found = NO; FILE *const referencesFile = fopen(referencesFilePath.fileSystemRepresentation, "r"); + if (NULL == referencesFile) { + logError("Failed to read %s\n", referencesFilePath.fileSystemRepresentation); + return NO; + } + const size_t bufferLength = 512; char *const buffer = calloc(bufferLength, sizeof(char));