PATCH: fix for bug 1545


Subject: PATCH: fix for bug 1545
From: j.m.maurer (j.m.maurer@student.utwente.nl)
Date: Mon Dec 17 2001 - 09:50:37 CST


This is a patch for the Help-not-showing-up bug (1545). The solution I
implemented was to try to open the localised help, and if not available,
fall back to the en-US help...

Bye!
  Marc aka Uwog

Index: abi/src/wp/ap/xp/ap_EditMethods.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/xp/ap_EditMethods.cpp,v
retrieving revision 1.417
diff -u -r1.417 ap_EditMethods.cpp
--- abi/src/wp/ap/xp/ap_EditMethods.cpp 2001/12/17 03:16:17 1.417
+++ abi/src/wp/ap/xp/ap_EditMethods.cpp 2001/12/17 15:24:27
@@ -95,6 +95,7 @@
 #include "ie_types.h"
 
 #include "ut_Script.h"
+#include "ut_path.h"
 
 /*****************************************************************/
 /*****************************************************************/
@@ -2305,9 +2306,9 @@
 
         const char * abiSuiteLibDir = pApp->getAbiSuiteLibDir();
         const XML_Char * abiSuiteLocString = NULL;
- char *helpURL, *tmpURL;
+ char *helpURL, *tmpURL, *testURL;
 
- helpURL = tmpURL = NULL;
+ helpURL = tmpURL = testURL = NULL;
         pPrefs->getPrefsValue((XML_Char*)AP_PREF_KEY_StringSet, &abiSuiteLocString);
 
         if (bLocal)
@@ -2315,9 +2316,28 @@
                 tmpURL = helpURL = UT_catPathname("file://", abiSuiteLibDir);
                 helpURL = UT_catPathname(helpURL, pathBeforeLang);
                 FREEP(tmpURL);
+
+ // check the existence of the localised help directory
+ tmpURL = testURL = UT_catPathname(abiSuiteLibDir, pathBeforeLang);
+ testURL = UT_catPathname(testURL, abiSuiteLocString);
+ FREEP(tmpURL);
                 tmpURL = helpURL;
- helpURL = UT_catPathname(helpURL, abiSuiteLocString);
+ if (directoryExists(testURL))
+ {
+ // the localised help exists, so use it
+ helpURL = UT_catPathname(helpURL, abiSuiteLocString);
+ UT_DEBUGMSG("help does not exist\n");
+ }
+ else
+ {
+ // the localised help directory does not exist, so fall back to the
+ // en-US help localtion, which should always be available
+ helpURL = UT_catPathname(helpURL, "en-US");
+ UT_DEBUGMSG("help does not exist\n");
+ }
+ FREEP(testURL);
                 FREEP(tmpURL);
+
                 tmpURL = helpURL;
                 helpURL = UT_catPathname(helpURL, pathAfterLang);
                 FREEP(tmpURL);
Index: abi/src/af/util/unix/ut_path.cpp
===================================================================
RCS file: /cvsroot/abi/src/af/util/unix/ut_path.cpp,v
retrieving revision 1.2
diff -u -r1.2 ut_path.cpp
--- abi/src/af/util/unix/ut_path.cpp 2001/08/30 06:52:43 1.2
+++ abi/src/af/util/unix/ut_path.cpp 2001/12/17 15:24:04
@@ -20,6 +20,8 @@
 
 #include "ut_path.h"
 #include <string.h>
+#include <sys/stat.h>
+#include <unistd.h>
 
 /*! This function takes a char* representing a path to a file and returns
         the pointer to the string which represents the base portion of the path.
@@ -37,4 +39,21 @@
                 str = &path[--len];
 
         return str;
+}
+
+/*!
+ if dir is an existing directory, this function
+ returns true, otherwise, it returns false
+*/
+
+bool directoryExists(const char* dir)
+{
+ struct stat buf;
+
+ if (lstat(dir, &buf) != -1)
+ {
+ return buf.st_mode & S_IFDIR;
+ }
+
+ return false;
 }
Index: abi/src/af/util/beos/ut_path.cpp
===================================================================
RCS file: /cvsroot/abi/src/af/util/beos/ut_path.cpp,v
retrieving revision 1.2
diff -u -r1.2 ut_path.cpp
--- abi/src/af/util/beos/ut_path.cpp 2001/08/30 06:52:42 1.2
+++ abi/src/af/util/beos/ut_path.cpp 2001/12/17 15:24:03
@@ -38,3 +38,14 @@
 
         return str;
 }
+
+/*!
+ if dir is an existing directory, this function
+ returns true, otherwise, it returns false
+*/
+
+bool directoryExists(const char* dir)
+{
+ UT_DEBUGMSG("fixme: implement directoryExists() in src/af/util/beos/ut_path.cpp");
+ return true;
+}
Index: abi/src/af/util/mac/ut_path.cpp
===================================================================
RCS file: /cvsroot/abi/src/af/util/mac/ut_path.cpp,v
retrieving revision 1.2
diff -u -r1.2 ut_path.cpp
--- abi/src/af/util/mac/ut_path.cpp 2001/08/30 06:52:42 1.2
+++ abi/src/af/util/mac/ut_path.cpp 2001/12/17 15:30:51
@@ -38,3 +38,14 @@
 
         return str;
 }
+
+/*!
+ if dir is an existing directory, this function
+ returns true, otherwise, it returns false
+*/
+
+bool directoryExists(const char* dir)
+{
+ UT_DEBUGMSG("fixme: implement directoryExists() in src/af/util/mac/ut_path.cpp");
+ return true;
+}
Index: abi/src/af/util/qnx/ut_path.cpp
===================================================================
RCS file: /cvsroot/abi/src/af/util/qnx/ut_path.cpp,v
retrieving revision 1.2
diff -u -r1.2 ut_path.cpp
--- abi/src/af/util/qnx/ut_path.cpp 2001/08/30 06:52:43 1.2
+++ abi/src/af/util/qnx/ut_path.cpp 2001/12/17 15:24:04
@@ -38,3 +38,14 @@
 
         return str;
 }
+
+/*!
+ if dir is an existing directory, this function
+ returns true, otherwise, it returns false
+*/
+
+bool directoryExists(const char* dir)
+{
+ UT_DEBUGMSG("fixme: implement directoryExists() in src/af/util/qnx/ut_path.cpp");
+ return true;
+}
Index: abi/src/af/util/win/ut_path.cpp
===================================================================
RCS file: /cvsroot/abi/src/af/util/win/ut_path.cpp,v
retrieving revision 1.2
diff -u -r1.2 ut_path.cpp
--- abi/src/af/util/win/ut_path.cpp 2001/08/30 06:52:44 1.2
+++ abi/src/af/util/win/ut_path.cpp 2001/12/17 15:24:04
@@ -38,3 +38,14 @@
 
         return str;
 }
+
+/*!
+ if dit is an existing directory, this function
+ returns true, otherwise, it returns false
+*/
+
+bool directoryExists(const char* dir)
+{
+ UT_DEBUGMSG("fixme: implement directoryExists() in src/af/util/win/ut_path.cpp");
+ return true;
+}
Index: abi/src/af/util/xp/ut_path.h
===================================================================
RCS file: /cvsroot/abi/src/af/util/xp/ut_path.h,v
retrieving revision 1.2
diff -u -r1.2 ut_path.h
--- abi/src/af/util/xp/ut_path.h 2001/08/30 06:52:44 1.2
+++ abi/src/af/util/xp/ut_path.h 2001/12/17 15:24:04
@@ -22,4 +22,6 @@
 
 const char* UT_basename(const char* path);
 
+bool directoryExists(const char* dir);
+
 #endif /* UT_PATH_H */



This archive was generated by hypermail 2b25 : Mon Dec 17 2001 - 09:52:26 CST