Lines Matching defs:filep

35 #include <sys/filep.h>
77 static ino_t find(fileid_t *filep, char *path);
78 static ino_t dlook(fileid_t *filep, char *path);
79 static daddr32_t sbmap(fileid_t *filep, daddr32_t bn);
97 openi(fileid_t *filep, ino_t inode)
100 devid_t *devp = filep->fi_devp;
102 filep->fi_inode = get_cache((int)inode);
103 if (filep->fi_inode != 0)
106 filep->fi_offset = 0;
107 filep->fi_blocknum = fsbtodb(&devp->un_fs.di_fs,
111 filep->fi_count = devp->un_fs.di_fs.fs_bsize;
112 filep->fi_memp = 0; /* cached read */
113 if (diskread(filep) != 0) {
117 dp = (struct dinode *)filep->fi_memp;
118 filep->fi_inode = (struct inode *)
120 bzero((char *)filep->fi_inode, sizeof (struct inode));
121 filep->fi_inode->i_ic =
123 filep->fi_inode->i_number = inode;
124 set_cache((int)inode, (void *)filep->fi_inode, sizeof (struct inode));
131 fileid_t *filep = head;
134 while ((filep = filep->fi_forw) != head)
135 if (fd == filep->fi_filedes)
136 return (filep->fi_taken ? filep : 0);
143 find(fileid_t *filep, char *path)
162 devp = filep->fi_devp;
166 if (r && openi(filep, (ino_t)UFSROOTINO))
179 if ((inode = dlook(filep, lpathp)) != 0) {
180 if (openi(filep, inode))
182 if ((filep->fi_inode->i_smode & IFMT) == IFLNK) {
183 filep->fi_blocknum =
185 filep->fi_inode->i_db[0]);
186 filep->fi_count = DEV_BSIZE;
187 filep->fi_memp = 0;
188 if (diskread(filep) != 0)
190 len = strlen(filep->fi_memp);
191 if (filep->fi_memp[0] == '/')
199 bcopy(filep->fi_memp, lpathp, len);
216 sbmap(fileid_t *filep, daddr32_t bn)
224 devp = filep->fi_devp;
225 inodep = filep->fi_inode;
264 filep->fi_blocknum = fsbtodb(&devp->un_fs.di_fs, nb);
265 filep->fi_count = devp->un_fs.di_fs.fs_bsize;
266 filep->fi_memp = 0;
267 if (diskread(filep) != 0)
269 bap = (daddr32_t *)filep->fi_memp;
281 dlook(fileid_t *filep, char *path)
288 ip = filep->fi_inode;
302 dirp.fi = filep;
323 fileid_t *filep;
328 filep = dstuff->fi;
329 devp = filep->fi_devp;
331 if (dstuff->loc >= filep->fi_inode->i_size) {
338 d = sbmap(filep, lbn);
343 filep->fi_blocknum = fsbtodb(&devp->un_fs.di_fs, d);
344 filep->fi_count =
345 blksize(&devp->un_fs.di_fs, filep->fi_inode, lbn);
346 filep->fi_memp = 0;
347 if (diskread(filep) != 0) {
351 dp = (struct direct *)(filep->fi_memp + off);
365 getblock(fileid_t *filep, caddr_t buf, int count, int *rcount)
375 devp = filep->fi_devp;
376 p = filep->fi_memp;
377 if ((signed)filep->fi_count <= 0) {
380 diff = filep->fi_inode->i_size - filep->fi_offset;
388 lbn = lblkno(fs, filep->fi_offset);
391 filep->fi_blocknum = fsbtodb(fs, sbmap(filep, lbn));
393 off = blkoff(fs, filep->fi_offset);
396 size = blksize(fs, filep->fi_inode, lbn);
397 filep->fi_count = size;
398 filep->fi_memp = filep->fi_buf;
406 filep->fi_memp = buf;
407 if (diskread(filep)) {
411 filep->fi_count = 0;
413 } else if (diskread(filep))
416 if (filep->fi_offset - off + size >= filep->fi_inode->i_size)
417 filep->fi_count = diff + off;
418 filep->fi_count -= off;
419 p = &filep->fi_memp[off];
421 filep->fi_memp = p;
430 getblock_noopt(fileid_t *filep)
440 devp = filep->fi_devp;
441 p = filep->fi_memp;
442 if ((signed)filep->fi_count <= 0) {
445 diff = filep->fi_inode->i_size - filep->fi_offset;
453 lbn = lblkno(fs, filep->fi_offset);
456 filep->fi_blocknum = fsbtodb(fs, sbmap(filep, lbn));
458 off = blkoff(fs, filep->fi_offset);
461 size = blksize(fs, filep->fi_inode, lbn);
462 filep->fi_count = size;
464 filep->fi_memp = NULL;
466 if (diskread(filep))
469 if (filep->fi_offset - off + size >= filep->fi_inode->i_size)
470 filep->fi_count = diff + off;
471 filep->fi_count -= off;
472 p = &filep->fi_memp[off];
474 filep->fi_memp = p;
494 fileid_t *filep;
496 if (!(filep = find_fp(fd))) {
500 if ((filep->fi_flags & FI_COMPRESSED) == 0 &&
501 filep->fi_offset + count > filep->fi_inode->i_size)
502 count = filep->fi_inode->i_size - filep->fi_offset;
510 if (filep->fi_flags & FI_COMPRESSED) {
511 if ((j = cf_read(filep, buf, count)) < 0)
517 if ((j = filep->fi_count) == 0) {
518 (void) getblock(filep, buf, i, &rcount);
521 filep->fi_offset += rcount;
526 bcopy(filep->fi_memp, buf, (unsigned)j);
530 filep->fi_memp += j;
531 filep->fi_offset += j;
532 filep->fi_count -= j;
613 fileid_t *filep;
620 filep = (fileid_t *)bkmem_alloc(sizeof (fileid_t));
621 filep->fi_back = head->fi_back;
622 filep->fi_forw = head;
623 head->fi_back->fi_forw = filep;
624 head->fi_back = filep;
625 filep->fi_filedes = filedes++;
626 filep->fi_taken = 1;
627 filep->fi_path = (char *)bkmem_alloc(strlen(filename) + 1);
628 (void) strcpy(filep->fi_path, filename);
629 filep->fi_devp = ufs_devp; /* dev is already "mounted" */
630 filep->fi_inode = NULL;
631 bzero(filep->fi_buf, MAXBSIZE);
632 filep->fi_getblock = getblock_noopt;
633 filep->fi_flags = 0;
635 inode = find(filep, (char *)filename);
638 (void) bufs_close(filep->fi_filedes);
641 if (openi(filep, inode)) {
643 (void) bufs_close(filep->fi_filedes);
647 filep->fi_offset = filep->fi_count = 0;
649 if (cf_check_compressed(filep) != 0)
651 return (filep->fi_filedes);
662 fileid_t *filep;
665 if (!(filep = find_fp(fd)))
668 if (filep->fi_flags & FI_COMPRESSED) {
669 cf_seek(filep, addr, whence);
673 filep->fi_offset += addr;
676 filep->fi_offset = addr;
683 filep->fi_blocknum = addr / DEV_BSIZE;
686 filep->fi_count = 0;
695 fileid_t *filep;
698 if (!(filep = find_fp(fd)))
701 ip = filep->fi_inode;
739 fileid_t *filep;
742 if (!(filep = find_fp(fd)))
745 if (filep->fi_taken && (filep != head)) {
747 bkmem_free(filep->fi_path, strlen(filep->fi_path)+1);
748 filep->fi_blocknum = filep->fi_count = filep->fi_offset = 0;
749 filep->fi_memp = (caddr_t)0;
750 filep->fi_devp = 0;
751 filep->fi_taken = 0;
754 filep->fi_forw->fi_back = filep->fi_back;
755 filep->fi_back->fi_forw = filep->fi_forw;
756 cf_close(filep);
757 bkmem_free((char *)filep, sizeof (fileid_t));
771 fileid_t *filep = head;
773 while ((filep = filep->fi_forw) != head)
774 if (filep->fi_taken)
775 if (bufs_close(filep->fi_filedes))