#include "support/os.h"
+#ifdef __APPLE__
+#include <Carbon/Carbon.h>
+#endif
+
using std::string;
}
+string external_path_list(string const & p)
+{
+ return p;
+}
+
+
+string internal_path_list(string const & p)
+{
+ return p;
+}
+
+
+string latex_path(string const & p)
+{
+ return p;
+}
+
+
bool is_absolute_path(string const & p)
{
return !p.empty() && p[0] == '/';
return UNIX;
}
+
char path_separator()
{
return ':';
}
+
+void windows_style_tex_paths(bool)
+{}
+
+bool canAutoOpenFile(string const & ext, auto_open_mode const mode)
+{
+#ifdef __APPLE__
+// Reference: http://developer.apple.com/documentation/Carbon/Reference/LaunchServicesReference/
+ CFStringRef cfs_ext = CFStringCreateWithBytes(kCFAllocatorDefault,
+ (UInt8 *) ext.c_str(), ext.length(),
+ kCFStringEncodingISOLatin1, false);
+ LSRolesMask role = (mode == VIEW) ? kLSRolesViewer : kLSRolesEditor;
+ FSRef outAppRef;
+ OSStatus status =
+ LSGetApplicationForInfo(kLSUnknownType, kLSUnknownCreator,
+ cfs_ext, role, &outAppRef, NULL);
+ CFRelease(cfs_ext);
+
+ return status != kLSApplicationNotFoundErr;
+#else
+ // silence compiler warnings
+ (void)ext;
+ (void)mode;
+
+ // currently, no default viewer is tried for non-windows system
+ // support for KDE/Gnome/Macintosh may be added later
+ return false;
+#endif
+}
+
+
+bool autoOpenFile(string const & filename, auto_open_mode const mode)
+{
+#ifdef __APPLE__
+// Reference: http://developer.apple.com/documentation/Carbon/Reference/LaunchServicesReference/
+ FSRef fileref;
+ OSStatus status =
+ FSPathMakeRef((UInt8 *) filename.c_str(), &fileref, NULL);
+ if (status != 0)
+ return false;
+
+ LSRolesMask role = (mode == VIEW) ? kLSRolesViewer : kLSRolesEditor;
+ FSRef outAppRef;
+
+ status = LSGetApplicationForItem(&fileref, role, &outAppRef, NULL);
+ if (status == kLSApplicationNotFoundErr)
+ return false;
+
+ LSLaunchFSRefSpec inLaunchSpec;
+ inLaunchSpec.appRef = &outAppRef;
+ inLaunchSpec.numDocs = 1;
+ inLaunchSpec.itemRefs = &fileref;
+ inLaunchSpec.passThruParams = NULL;
+ inLaunchSpec.launchFlags = kLSLaunchDefaults;
+ inLaunchSpec.asyncRefCon = NULL;
+ status = LSOpenFromRefSpec(&inLaunchSpec, NULL);
+
+ return status != kLSApplicationNotFoundErr;
+#else
+ // silence compiler warnings
+ (void)filename;
+ (void)mode;
+
+ // currently, no default viewer is tried for non-windows system
+ // support for KDE/Gnome/Macintosh may be added later
+ return false;
+#endif
+}
+
} // namespace os
} // namespace support
} // namespace lyx