f8ac1b1c8043509e4c4a3bdce70fbaa441ae24ac
angie
Wed May 9 13:26:58 2018 -0700
webTimeStampedLinkToResource: add '../' to link not only when wrapInHtml is true, but also when returning just the link. refs #21403
diff --git src/hg/lib/web.c src/hg/lib/web.c
index b182e6b..c34dc10 100644
--- src/hg/lib/web.c
+++ src/hg/lib/web.c
@@ -1253,43 +1253,44 @@
dyStringContents(realFileName));
// build and verify link path including timestamp in the form of dir/baseName + timeStamp or CGI Version + ext
long mtime = fileModTime(dyStringContents(realFileName));
struct dyString *linkWithTimestamp;
linkWithTimestamp = dyStringCreate("%s/%s%s?v=%ld", dyStringContents(fullDirName), baseName, extension, mtime);
// Free up all that extra memory
dyStringFree(&realFileName);
dyStringFree(&fullDirName);
char *linkFull = dyStringCannibalize(&linkWithTimestamp);
char *link = linkFull;
if (docRoot != NULL)
{
- link = cloneString(linkFull + strlen(docRoot) + 1);
+ struct dyString *relativeLink = dyStringCreate("../%s", linkFull + strlen(docRoot) + 1);
+ link = dyStringCannibalize(&relativeLink);
freeMem(linkFull);
}
if (wrapInHtml) // wrapped for christmas
{
struct dyString *wrapped = dyStringNew(0);
if (js)
- dyStringPrintf(wrapped,"\n", link);
+ dyStringPrintf(wrapped,"\n", link);
else if (style)
- dyStringPrintf(wrapped,"\n", link);
+ dyStringPrintf(wrapped,"\n", link);
else // Will be image, since these are the only three choices allowed
- dyStringPrintf(wrapped,"\n", link);
+ dyStringPrintf(wrapped,"\n", link);
freeMem(link);
link = dyStringCannibalize(&wrapped);
}
return link;
}
char *webTimeStampedLinkToResourceOnFirstCall(char *fileName, boolean wrapInHtml)
// If this is the first call, will return full path of timestamped link to the requested
// resource file (js, or css). Free after use.
// else returns NULL. Useful to ensure multiple references to the same resource file are not made
// NOTE: png, jpg and gif should also be supported but are untested.
{
if (!includedResourceFiles)
includedResourceFiles = newHash(0);