+++ /dev/null
-diff --git a/sys/unix/unixmain.c b/sys/unix/unixmain.c
-index c1069144..1d51de1b 100644
---- a/sys/unix/unixmain.c
-+++ b/sys/unix/unixmain.c
-@@ -44,6 +44,39 @@ static void NDECL(wd_message);
- static boolean wiz_error_flag = FALSE;
- static struct passwd *NDECL(get_unix_pw);
-
-+#if defined(__APPLE__) /* a much more convoluted version of this
-+ * code used to be inline within main() */
-+static void FDECL(osx_finder, (const char *));
-+
-+/* special hack to change working directory to a resource fork when running
-+ from 'Finder' on MacOSX (recognized via "/" as current dir) --sam */
-+static void
-+osx_finder(arg0)
-+const char *arg0;
-+{
-+ /* #define MAC_PATH_VALUE ".app/Contents/MacOS/" */
-+ char mac_cwd[1024], *mac_path, *p;
-+
-+ /*
-+ * If current working directory is "/", switch to same directory
-+ * as nethack. [This overrides !CHDIR config.]
-+ */
-+ getcwd(mac_cwd, 1024);
-+ if (*arg0 == '/' && !strcmp(mac_cwd, "/")) {
-+ /* copy executable path/name into modifiable buffer
-+ [we know there's a path since the value starts with '/'] */
-+ mac_path = dupstr(arg0);
-+ /* strip off the name portion, leaving path */
-+ p = rindex(mac_path, '/');
-+ *(p + 1) = '\0';
-+ /* change working directory */
-+ chdir(mac_path);
-+ /* done */
-+ free((genericptr_t) mac_path);
-+ }
-+}
-+#endif /* __APPLE__ */
-+
- int
- main(argc, argv)
- int argc;
-@@ -57,37 +90,8 @@ char *argv[];
- boolean resuming = FALSE; /* assume new game */
-
- sys_early_init();
--
- #if defined(__APPLE__)
-- {
--/* special hack to change working directory to a resource fork when
-- running from finder --sam */
--#define MAC_PATH_VALUE ".app/Contents/MacOS/"
-- char mac_cwd[1024], *mac_exe = argv[0], *mac_tmp;
-- int arg0_len = strlen(mac_exe), mac_tmp_len, mac_lhs_len = 0;
-- getcwd(mac_cwd, 1024);
-- if (mac_exe[0] == '/' && !strcmp(mac_cwd, "/")) {
-- if ((mac_exe = strrchr(mac_exe, '/')))
-- mac_exe++;
-- else
-- mac_exe = argv[0];
-- mac_tmp_len = (strlen(mac_exe) * 2) + strlen(MAC_PATH_VALUE);
-- if (mac_tmp_len <= arg0_len) {
-- mac_tmp = malloc(mac_tmp_len + 1);
-- sprintf(mac_tmp, "%s%s%s", mac_exe, MAC_PATH_VALUE, mac_exe);
-- if (!strcmp(argv[0] + (arg0_len - mac_tmp_len), mac_tmp)) {
-- mac_lhs_len =
-- (arg0_len - mac_tmp_len) + strlen(mac_exe) + 5;
-- if (mac_lhs_len > mac_tmp_len - 1)
-- mac_tmp = realloc(mac_tmp, mac_lhs_len);
-- strncpy(mac_tmp, argv[0], mac_lhs_len);
-- mac_tmp[mac_lhs_len] = '\0';
-- chdir(mac_tmp);
-- }
-- free(mac_tmp);
-- }
-- }
-- }
-+ osx_finder(argv[0]);
- #endif
-
- hname = argv[0];