ref: ba9e0d586ec8d2662d7ff6065797c6ef327623a7
parent: eda5a867872e718b62ea52373ec9f44aa0c3bda2
author: Simon Tatham <anakin@pobox.com>
date: Fri Sep 18 08:20:32 EDT 2015
Fix OS X build failure due to a deprecated method. Apple upgraded me to Xcode 7 yesterday, and now [NSString cString] gives a deprecation warning, which -Werror turns into a full-on build failure. Explicitly specify an encoding. (I mention in a comment that there's an alternative piece of API that I possibly ought to be using instead, but until I make a concrete decision about where my backwards compatibility threshold is, I'll leave it as it is for the moment.)
--- a/osx.m
+++ b/osx.m
@@ -761,7 +761,24 @@
[op setAllowsMultipleSelection:NO];
if ([op runModalForTypes:nil] == NSOKButton) {
- const char *name = [[[op filenames] objectAtIndex:0] cString];
+ /*
+ * This used to be
+ *
+ * [[[op filenames] objectAtIndex:0] cString]
+ *
+ * but the plain cString method became deprecated and Xcode 7
+ * started complaining about it. Since OS X 10.9 we can
+ * apparently use the more modern API
+ *
+ * [[[op URLs] objectAtIndex:0] fileSystemRepresentation]
+ *
+ * but the alternative below still compiles with Xcode 7 and
+ * is a bit more backwards compatible, so I'll try it for the
+ * moment.
+ */
+ const char *name = [[[op filenames] objectAtIndex:0]
+ cStringUsingEncoding:
+ [NSString defaultCStringEncoding]];
char *err;
FILE *fp = fopen(name, "r");