Lines Matching refs:tf

132 static int cache_data(struct tarfile *tf, int);
138 struct tarfile *tf, *tfn; in pkgfs_cleanup() local
144 tf = package->pkg_first; in pkgfs_cleanup()
145 while (tf != NULL) { in pkgfs_cleanup()
146 tfn = tf->tf_next; in pkgfs_cleanup()
147 if (tf->tf_cachesz > 0) in pkgfs_cleanup()
148 free(tf->tf_cache); in pkgfs_cleanup()
149 free(tf); in pkgfs_cleanup()
150 tf = tfn; in pkgfs_cleanup()
201 struct tarfile *tf; in pkg_open_follow() local
237 tf = scan_tarfile(package, NULL); in pkg_open_follow()
238 while (tf != NULL) { in pkg_open_follow()
239 if (strcmp(fn, tf->tf_hdr.ut_name) == 0) { in pkg_open_follow()
240 f->f_fsdata = tf; in pkg_open_follow()
241 tf->tf_fp = 0; /* Reset the file pointer. */ in pkg_open_follow()
243 fn, tf->tf_hdr.ut_typeflag[0])); in pkg_open_follow()
244 if (tf->tf_hdr.ut_typeflag[0] == '2') { in pkg_open_follow()
250 return pkg_open_follow(tf->tf_hdr.ut_linkname, in pkg_open_follow()
255 tf = scan_tarfile(package, tf); in pkg_open_follow()
269 struct tarfile *tf; in pkg_close() local
271 tf = (struct tarfile *)f->f_fsdata; in pkg_close()
272 if (tf == NULL) in pkg_close()
278 if (tf->tf_fp == tf->tf_size && tf->tf_cachesz > 0) { in pkg_close()
279 free(tf->tf_cache); in pkg_close()
280 tf->tf_cachesz = 0; in pkg_close()
288 struct tarfile *tf; in pkg_read() local
293 tf = (struct tarfile *)f->f_fsdata; in pkg_read()
294 if (tf == NULL) { in pkg_read()
300 if (tf->tf_cachesz == 0) in pkg_read()
301 cache_data(tf, 1); in pkg_read()
303 fp = tf->tf_fp; in pkg_read()
307 sz = tf->tf_size - fp; in pkg_read()
308 if (fp < tf->tf_cachesz && tf->tf_cachesz < tf->tf_size) in pkg_read()
309 sz = tf->tf_cachesz - fp; in pkg_read()
315 if (fp < tf->tf_cachesz) { in pkg_read()
317 memcpy(p, tf->tf_cache + fp, sz); in pkg_read()
324 if (get_zipped(tf->tf_pkg, p, sz) == -1) { in pkg_read()
334 tf->tf_fp = fp; in pkg_read()
344 struct tarfile *tf; in pkg_seek() local
350 tf = (struct tarfile *)f->f_fsdata; in pkg_seek()
351 if (tf == NULL) { in pkg_seek()
358 delta = ofs - tf->tf_fp; in pkg_seek()
364 delta = tf->tf_size - tf->tf_fp + ofs; in pkg_seek()
373 if (tf->tf_cachesz > 0 && tf->tf_fp <= tf->tf_cachesz) { in pkg_seek()
374 nofs = tf->tf_fp + delta; in pkg_seek()
376 tf->tf_fp = nofs; in pkg_seek()
377 return (tf->tf_fp); in pkg_seek()
386 while (delta > 0 && tf->tf_fp < tf->tf_size) { in pkg_seek()
396 return (tf->tf_fp); in pkg_seek()
402 struct tarfile *tf; in pkg_stat() local
404 tf = (struct tarfile *)f->f_fsdata; in pkg_stat()
405 if (tf == NULL) in pkg_stat()
408 sb->st_mode = get_mode(tf); in pkg_stat()
413 sb->st_size = tf->tf_size; in pkg_stat()
414 sb->st_blocks = (tf->tf_size + 511) / 512; in pkg_stat()
415 sb->st_mtime = pkg_atol(tf->tf_hdr.ut_mtime, 12); in pkg_stat()
416 sb->st_dev = (off_t)((uintptr_t)tf->tf_pkg); in pkg_stat()
417 sb->st_ino = tf->tf_ofs; /* unique per tf_pkg */ in pkg_stat()
424 struct tarfile *tf; in pkg_readdir() local
426 tf = (struct tarfile *)f->f_fsdata; in pkg_readdir()
427 if (tf != NULL) in pkg_readdir()
430 tf = scan_tarfile(package, NULL); in pkg_readdir()
431 if (tf == NULL) in pkg_readdir()
437 memcpy(d->d_name, tf->tf_hdr.ut_name, sizeof(d->d_name)); in pkg_readdir()
508 cache_data(struct tarfile *tf, int force) in cache_data() argument
513 if (tf == NULL) { in cache_data()
519 pkg = tf->tf_pkg; in cache_data()
526 if (tf->tf_cachesz > 0) { in cache_data()
532 if (tf->tf_ofs != pkg->pkg_ofs) { in cache_data()
534 __func__, tf->tf_hdr.ut_name)); in cache_data()
540 if (tf->tf_size > PKG_MAXCACHESZ && !force) { in cache_data()
545 sz = tf->tf_size < PKG_MAXCACHESZ ? tf->tf_size : PKG_MAXCACHESZ; in cache_data()
549 tf->tf_cache = malloc(sz); in cache_data()
550 if (tf->tf_cache == NULL) { in cache_data()
556 tf->tf_cachesz = sz; in cache_data()
557 return (get_zipped(pkg, tf->tf_cache, sz)); in cache_data()
645 get_mode(struct tarfile *tf) in get_mode() argument
647 return (pkg_atol(tf->tf_hdr.ut_mode, sizeof(tf->tf_hdr.ut_mode))); in get_mode()