void readFromFile(std::istream &file) { // Split this into tag & name later. _trackName = readString(file); _tag = getTag(_trackName); _trackName = getCompName(_trackName); _hash = readInt(file); _parentID = readInt(file); _numKeys = readInt(file); pushtag(_tag); _keys = new TrackKey[_numKeys]; for (int k = 0; k < _numKeys; k++) { _keys[k].readFromFile(file); } }
/* * Ask user for a tag while treating word at dot as default. Visit tags * file if not yet done, load tags and jump to definition of the tag. */ int findtag(int f, int n) { char utok[MAX_TOKEN], dtok[MAX_TOKEN]; char *tok, *bufp; int ret; if (curtoken(f, n, dtok) == FALSE) { dtok[0] = '\0'; bufp = eread("Find tag:", utok, MAX_TOKEN, EFNUL | EFNEW); } else bufp = eread("Find tag (default %s):", utok, MAX_TOKEN, EFNUL | EFNEW, dtok); if (bufp == NULL) return (ABORT); else if (bufp[0] == '\0') tok = dtok; else tok = utok; if (tok[0] == '\0') { dobeep(); ewprintf("There is no default tag"); return (FALSE); } if (tagsfn == NULL) if ((ret = tagsvisit(f, n)) != TRUE) return (ret); if (!loaded) { if (loadtags(tagsfn) == FALSE) { free(tagsfn); tagsfn = NULL; return (FALSE); } loaded = TRUE; } return pushtag(tok); }