Lines Matching refs:fi
51 struct file_info *fi = data;
58 if (TT.sought_files[i].st_dev==fi->st_dev)
59 if (TT.sought_files[i].st_ino==fi->st_ino) break;
65 if (fi->pi.pid != TT.last_shown_pid)
66 printf("%d\n", TT.last_shown_pid = fi->pi.pid);
76 fi->pi.cmd, fi->pi.pid, getusername(fi->pi.uid),
77 fi->fd, fi->rw, fi->locks, fi->type, fi->device, fi->size_off,
78 fi->node, fi->name);
88 static void fill_flags(struct file_info *fi)
94 snprintf(toybuf, sizeof(toybuf), "/proc/%d/fdinfo/%s", fi->pi.pid, fi->fd);
100 if (flags == O_RDONLY) fi->rw = 'r';
101 else if (flags == O_WRONLY) fi->rw = 'w';
102 else fi->rw = 'u';
104 snprintf(fi->size_off, sizeof(fi->size_off), "0t%lld", pos);
130 struct file_info *fi = xzalloc(sizeof(struct file_info));
132 dlist_add_nomalloc(&TT.all_sockets, (struct double_list *)fi);
133 fi->st_ino = inode;
134 strcpy(fi->type, type);
135 return fi;
144 struct file_info *fi = add_socket(inode, "unix");
147 fi->name = strdup(*name ? name : "socket");
165 struct file_info *fi = add_socket(inode, "netlink");
166 fi->name =
200 struct file_info *fi = add_socket(inode, af == 4 ? "IPv4" : "IPv6");
205 fi->name = xmprintf(af == 4 ?
211 fi->name = xmprintf(af == 4 ? "%s %s:%d->%s:%d" : "%s [%s]:%d->[%s]:%d",
217 static int find_socket(struct file_info *fi, long inode)
237 fi->name = s->name ? strdup(s->name) : NULL;
238 strcpy(fi->type, s->type);
247 static void fill_stat(struct file_info *fi, const char *path)
256 case S_IFBLK: strcpy(fi->type, "BLK"); break;
257 case S_IFCHR: strcpy(fi->type, "CHR"); break;
258 case S_IFDIR: strcpy(fi->type, "DIR"); break;
259 case S_IFIFO: strcpy(fi->type, "FIFO"); break;
260 case S_IFLNK: strcpy(fi->type, "LINK"); break;
261 case S_IFREG: strcpy(fi->type, "REG"); break;
262 case S_IFSOCK: strcpy(fi->type, "sock"); break;
264 snprintf(fi->type, sizeof(fi->type), "%04o", sb.st_mode & S_IFMT);
268 if (S_ISSOCK(sb.st_mode)) find_socket(fi, sb.st_ino);
273 snprintf(fi->device, sizeof(fi->device), "%d,%d",
278 snprintf(fi->size_off, sizeof(fi->size_off), "%lld",
282 snprintf(fi->node, sizeof(fi->node), "%ld", (long)sb.st_ino);
285 fi->st_dev = sb.st_dev;
286 fi->st_ino = sb.st_ino;
291 struct file_info *fi = xzalloc(sizeof(struct file_info));
293 dlist_add_nomalloc(&TT.files, (struct double_list *)fi);
295 fi->pi = *pi;
298 strcpy(fi->fd, fd);
299 strcpy(fi->type, "unknown");
300 fi->rw = fi->locks = ' ';
302 return fi;
307 struct file_info *fi = new_file_info(pi, "");
311 snprintf(fi->fd, sizeof(fi->fd), "%s", name);
314 snprintf(fi->fd, sizeof(fi->fd), "%s", path);
315 fill_flags(fi); // Clobbers toybuf.
320 fill_stat(fi, toybuf);
321 if (!fi->name) { // We already have a name for things like sockets.
322 fi->name = xreadlink(toybuf);
323 if (!fi->name) {
324 fi->name = xmprintf("%s (readlink: %s)", toybuf, strerror(errno));
336 struct file_info *fi;
352 fi = new_file_info(pi, "mem");
353 fi->name = strdup(chomp(line + name_pos));
354 fill_stat(fi, fi->name);
368 struct file_info *fi = new_file_info(pi, "NOFD");
370 fi->name = xmprintf("%s (opendir: %s)", toybuf, strerror(errno));