+
+ /*
+ * Loop once for each file in tags "path".
+ */
+ CP(tagfbuf, svalue(TAGS));
+ fne = tagfbuf - 1;
+ while (fne) {
+ fn = ++fne;
+ while (*fne && *fne != ' ')
+ fne++;
+ if (*fne == 0)
+ fne = 0; /* done, quit after this time */
+ else
+ *fne = 0; /* null terminate filename */
+#ifdef FASTTAG
+ iof = topen(fn, iofbuf);
+ if (iof == -1)
+ continue;
+ tfcount++;
+ fstat(iof, &sbuf);
+ top = sbuf.st_size;
+ if (top == 0L )
+ top = -1L;
+ bot = 0L;
+ while (top >= bot) {
+#else
+ /*
+ * Avoid stdio and scan tag file linearly.
+ */
+ io = open(fn, 0);
+ if (io<0)
+ continue;
+ tfcount++;
+ if (fstat(io, &sbuf) < 0)
+ bsize = LBSIZE;
+ else {
+ bsize = sbuf.st_blksize;
+ if (bsize <= 0)
+ bsize = LBSIZE;
+ }