e764efe5d0e596213c72e69f028df0a667d0a83c markd Mon Jun 29 00:43:22 2020 +0000 gfClient working with blat server running under xinetd diff --git src/jkOwnLib/genoFind.c src/jkOwnLib/genoFind.c index 50612e8..dc158ae 100644 --- src/jkOwnLib/genoFind.c +++ src/jkOwnLib/genoFind.c @@ -80,37 +80,45 @@ mustWrite(f, &gf->sourceCount, sizeof(gf->sourceCount)); mustWrite(f, &gf->isPep, sizeof(gf->isPep)); mustWrite(f, &gf->allowOneMismatch, sizeof(gf->allowOneMismatch)); mustWrite(f, &gf->segSize, sizeof(gf->segSize)); mustWrite(f, &gf->totalSeqSize, sizeof(gf->totalSeqSize)); // now write out the variable-size arrays. The ones we need to // keep are listSizes and allocated--endLists/lists are generated // at load time, and in fact *must* be as they are // pointer-to-pointers which cannot be mmapped properly. // sources: length = gf->sourceCount int i; for (i = 0; i < gf->sourceCount; i++) { struct gfSeqSource *ss = gf->sources + i; - size_t fileNameLen = ss->fileName ? strlen(ss->fileName) + 1 : 0; + char *fileName = ss->fileName; + if (fileName != NULL) + { + // don't include directories + char *s = strrchr(fileName, '/'); + if (s != NULL) + fileName = s + 1; + } + size_t fileNameLen = fileName ? strlen(fileName) + 1 : 0; mustWrite(f, &fileNameLen, sizeof(fileNameLen)); if (fileNameLen != 0) - mustWrite(f, ss->fileName, fileNameLen); + mustWrite(f, fileName, fileNameLen); mustWrite(f, &ss->start, sizeof(bits32)); mustWrite(f, &ss->end, sizeof(bits32)); - // no masking information written/read yet. + // FIXME: no masking information written/read yet. } // listSizes: length = gf->tileSpaceSize mustWrite(f, gf->listSizes, gf->tileSpaceSize * sizeof(gf->listSizes[0])); if (gf->segSize == 0) { // use lists size_t count = 0; for (i = 0; i < gf->tileSpaceSize; i++) { if (gf->listSizes[i] < gf->maxPat) count += gf->listSizes[i]; } mustWrite(f, gf->allocated, count*sizeof(bits32)); }