1c9352a7c5c2550a52b1d9fb2bae806b6aaed1be chmalee Thu Jan 18 13:28:56 2024 -0800 Starting on pre-create hook for tusd diff --git src/hg/lib/customTrack.c src/hg/lib/customTrack.c index 6937a58..126ec6f 100644 --- src/hg/lib/customTrack.c +++ src/hg/lib/customTrack.c @@ -18,31 +18,30 @@ #include "ctgPos.h" #include "psl.h" #include "gff.h" #include "genePred.h" #include "net.h" #include "hdb.h" #include "hui.h" #include "cheapcgi.h" #include "wiggle.h" #include "hgConfig.h" #include "customFactory.h" #include "trashDir.h" #include "jsHelper.h" #include "botDelay.h" #include "wikiLink.h" -#include "userdata.h" static boolean printSaveList = FALSE; // if this is true, we print to stderr the number of custom tracks saved /* Track names begin with track and then go to variable/value pairs. The * values must be quoted if they include white space. Defined variables are: * name - any text up to 15 letters. * description - any text up to 60 letters. * url - URL. If it contains '$$' this will be substituted with itemName. * visibility - 0=hide, 1=dense, 2=full, 3=pack, 4=squish * useScore - 0=use colors. 1=use grayscale based on score. * color = R,G,B, main color, should be dark. Components from 0-255. * altColor = R,G,B secondary color. * priority = number. */ @@ -694,78 +693,42 @@ result = (type != NULL && differentString(type, "vcf")); freeMem(type); freeMem(fileNameDecoded); return result; } static char *prepBigData(struct cart *cart, char *fileName, char *binVar, char *fileVar) /* Pass data's memory offset and size through to customFactory */ { if (!customTrackIsBigData(fileName)) return NULL; char buf[1024]; char *cFBin = cartOptionalString(cart, binVar); char *cF = cartOptionalString(cart, fileVar); -char *offset = NULL; -unsigned long size = 0; if (cFBin) { // cFBin already contains memory offset and size (search for __binary in cheapcgi.c) safef(buf,sizeof(buf),"memory://%s %s", fileName, cFBin); char *split[3]; int splitCount = chopByWhite(cloneString(cFBin), split, sizeof(split)); if (splitCount > 2) {errAbort("hgCustom: extra garbage in %s", binVar);} - offset = (char *)sqlUnsignedLong(split[0]); - size = sqlUnsignedLong(split[1]); } else { safef(buf, sizeof(buf),"memory://%s %lu %lu", fileName, (unsigned long) cF, (unsigned long) strlen(cF)); - offset = (char *)sqlUnsignedLong(cF); - size = (unsigned long)strlen(cF); - } -if (cfgOptionBooleanDefault("storeUserFiles", FALSE)) - { - //dumpStack("prepBigData: fileName = '%s'\n", fileName); - //errAbort("prepBigData: fileName = '%s'\n", fileName); - // figure out if user is logged in: - // 1. if so, save 'fileName', which is really a pointer to memory, to username encoded directory - // 2. Turn buf into a web accessible url to this data so it will be parsed - // as a track correctly - char *userName = (loginSystemEnabled() || wikiLinkEnabled()) ? wikiLinkUserName() : NULL; - if (userName) - { - // storeUserFiles returns a URL to a track - // after sucessfully saving the data into /userdata - char *retFileName = storeUserFile(userName, fileName, offset, size); - struct dyString *ret = dyStringNew(0); - char *type = NULL; - if (endsWith(fileName, ".bam")) - type = "bam"; - else if (endsWith(fileName, ".bb") || endsWith(fileName, ".bigBed")) - type = "bigBed"; - else if (endsWith(fileName, ".inter.bb") || endsWith(fileName, ".inter.bigBed")) - type = "bigInteract"; - else if (endsWith(fileName, ".bw") || endsWith(fileName, ".bigWig")) - type = "bigWig"; - if (!type) - errAbort("Unable to determine track type from extension: %s", fileName); - dyStringPrintf(ret, "track type=%s bigDataUrl=%s", type, retFileName); - return dyStringCannibalize(&ret); - } } return cloneString(buf); } boolean ctConfigUpdate(char *ctFile) /* CT update is needed if database has been enabled since * the custom tracks in this file were created. The only way to check is * by file mod time, unless we add the enable time to * browser metadata somewhere */ { if (!ctFile || !fileExists(ctFile)) return FALSE; return cfgModTime() > fileModTime(ctFile); }