Blob Blame History Raw
diff -up EMBOSS-6.3.1/emboss/tfm.c.fix-doc-finding EMBOSS-6.3.1/emboss/tfm.c
--- EMBOSS-6.3.1/emboss/tfm.c.fix-doc-finding	2010-04-13 10:25:56.000000000 -0400
+++ EMBOSS-6.3.1/emboss/tfm.c	2010-11-10 13:53:05.957159000 -0500
@@ -143,13 +143,15 @@ static void tfm_FindAppDocRoot(const AjP
     AjPStr roottmp = NULL;
     AjPStr tmpstr = NULL;
     AjPStr embassy = NULL;
-
+    AjPStr doctest = NULL;
+    
     AjBool is_windows = ajFalse;
 #ifdef WIN32
     is_windows = ajTrue;
 #endif
 
     docrootinst = ajStrNew();
+    doctest     = ajStrNew();
     roottmp     = ajStrNew();
     tmpstr      = ajStrNew();
     
@@ -163,11 +165,25 @@ static void tfm_FindAppDocRoot(const AjP
     /* look at EMBOSS doc files */
 
     /* try to open the installed doc directory */
-    if(ajStrGetLen(roottmp))
-	ajStrAssignS(docroot, roottmp);
-   else
+    if(ajStrGetLen(roottmp)) 
+    {
+        /*
+        ** Check for old-style EMBOSS_DOCROOT and adjust accordingly
+        */
+        ajFmtPrintS(&doctest,"%S%cprograms%ctext",roottmp,SLASH_CHAR,
+                    SLASH_CHAR);
+        ajStrAssignS(&docrootinst,roottmp);
+        ajDirnameFix(&docrootinst);
+        
+        if(!ajDirnameFixExists(&doctest))
+        {
+            ajDirnameUp(&docrootinst);
+            ajDirnameUp(&docrootinst);
+        }
+    }
+    else
     {
-        ajStrAssignS(&docrootinst, ajNamValueInstalldir());
+	ajStrAssignS(&docrootinst, ajNamValueInstalldir());
 	ajDirnameFix(&docrootinst);
 
 	if(is_windows)
@@ -184,28 +200,28 @@ static void tfm_FindAppDocRoot(const AjP
 	else
 	    ajFmtPrintAppS(&docrootinst, "share%sEMBOSS%sdoc%s",
 			SLASH_STRING,SLASH_STRING,SLASH_STRING);
+    }
 
-
-	if(html)
-	{
-	  if(ajStrGetLen(embassy))
+    if(html)
+    {
+	if(ajStrGetLen(embassy))
 	    ajFmtPrintS(docroot,"%Shtml%sembassy%s%S%s",
 			docrootinst,SLASH_STRING,SLASH_STRING,
 			embassy, SLASH_STRING);
-	  else
-	  {
-	      if(is_windows)
-		  ajFmtPrintS(docroot,"%Sprograms%shtml%s",
-			      docrootinst,SLASH_STRING,SLASH_STRING);
-	      else
-		  ajFmtPrintS(docroot,"%Sprograms%shtml%s",
-			      docrootinst,SLASH_STRING,SLASH_STRING);
-          }
-	}
 	else
+	{
+	    if(is_windows)
+		ajFmtPrintS(docroot,"%Sprograms%shtml%s",
+			    docrootinst,SLASH_STRING,SLASH_STRING);
+	    else
+		ajFmtPrintS(docroot,"%Sprograms%shtml%s",
+			    docrootinst,SLASH_STRING,SLASH_STRING);
+	}
+    }
+    else
 	    ajFmtPrintS(docroot,"%Sprograms%stext%s",docrootinst,SLASH_STRING,
 			SLASH_STRING);
-    }
+
     ajDirnameFix(docroot);
     ajDebug("installed docroot '%S'\n", *docroot);
 
@@ -248,6 +264,7 @@ static void tfm_FindAppDocRoot(const AjP
 
     ajStrDel(&roottmp);
     ajStrDel(&docrootinst);
+    ajStrDel(&doctest);
     ajStrDel(&tmpstr);
     
     return;
@@ -348,4 +365,4 @@ static void tfm_FixImages(AjPStr *line, 
     ajStrDel(&pre);
     
     return;
-}
+}
\ No newline at end of file