From 9e212ebf0d6ad80c30b59e48e288cf16e17a82c8 Mon Sep 17 00:00:00 2001 From: "Ryan C. Gordon" Date: Sun, 30 May 2004 15:23:29 +0000 Subject: [PATCH] A collection of hacks for broken installations, like Neverwinter Nights. --- platform_unix.c | 32 +++++++++++++++++++++++++++++++- 1 file changed, 31 insertions(+), 1 deletion(-) diff --git a/platform_unix.c b/platform_unix.c index a6cd13f..93c7b08 100644 --- a/platform_unix.c +++ b/platform_unix.c @@ -282,6 +282,10 @@ static char *find_info_plist_bundle_id(char *ptr) { if (strcasecmp(val,"CFBundleIdentifier") == 0) have_key = 1; + #if 1 /* lame hack for NWN Expansion pack patch */ + else if (strcasecmp(val,"CFBundleIconFile") == 0) + have_key = 1; + #endif } /* if */ } /* while */ @@ -453,7 +457,33 @@ int chdir_by_identifier(const char *name, const char *str, return(0); } /* if */ - return(hasident ? parse_info_dot_plist(str, version, newversion) : 1); + if (hasident) + return(parse_info_dot_plist(str, version, newversion)); + +#if 1 + /* + * !!! FIXME: This is a hack. If no identifier is specified, use + * "version" as a filename that signifies you're in the right place. + * This is for patching things without app bundles or badly-written + * app bundles. This needs a better solution. + */ + if ((version == NULL) || (*version)) /* Take everything on blind faith. */ + return(1); + + if (!file_exists(version)) + { + int yes = ui_prompt_ny("We don't think we're looking at the right directory!" + " Are you SURE this is the right place?" + " If you aren't sure, clicking 'Yes' can destroy unrelated files!"); + if (!yes) + { + _fatal("Stopping at user's request."); + return(0); + } /* if */ + } /* if */ +#endif + + return(1); } /* chdir_by_identifier */