Lines Matching defs:inf

371 	struct input_file	 inf;
418 memset(&inf, 0, sizeof inf);
419 inf.m = m;
420 inf.msg = &msg;
422 inf.path = argv[idx];
423 inf.fd = imsg_get_fd(&imsg);
425 test_file(&inf, width);
427 if (inf.fd != -1)
428 close(inf.fd);
467 load_file(struct input_file *inf)
471 if (inf->msg->sb.st_size == 0 && S_ISREG(inf->msg->sb.st_mode))
473 if (inf->msg->sb.st_size == 0 || inf->msg->sb.st_size > FILE_READ_SIZE)
474 inf->size = FILE_READ_SIZE;
476 inf->size = inf->msg->sb.st_size;
478 if (!S_ISREG(inf->msg->sb.st_mode))
481 inf->base = mmap(NULL, inf->size, PROT_READ, MAP_PRIVATE, inf->fd, 0);
482 if (inf->base == MAP_FAILED)
484 inf->mapped = 1;
488 inf->base = fill_buffer(inf->fd, inf->size, &used);
489 if (inf->base == NULL) {
490 xasprintf(&inf->result, "cannot read '%s' (%s)", inf->path,
494 inf->size = used;
499 try_stat(struct input_file *inf)
501 if (inf->msg->error != 0) {
502 xasprintf(&inf->result, "cannot stat '%s' (%s)", inf->path,
503 strerror(inf->msg->error));
506 if (sflag || strcmp(inf->path, "-") == 0) {
507 switch (inf->msg->sb.st_mode & S_IFMT) {
509 if (strcmp(inf->path, "-") != 0)
518 if (iflag && (inf->msg->sb.st_mode & S_IFMT) != S_IFREG) {
519 xasprintf(&inf->result, "application/x-not-regular-file");
523 switch (inf->msg->sb.st_mode & S_IFMT) {
525 xasprintf(&inf->result, "directory");
528 if (inf->msg->link_error != 0) {
529 xasprintf(&inf->result, "unreadable symlink '%s' (%s)",
530 inf->path, strerror(inf->msg->link_error));
533 if (inf->msg->link_target == ELOOP)
534 xasprintf(&inf->result, "symbolic link in a loop");
535 else if (inf->msg->link_target != 0) {
536 xasprintf(&inf->result, "broken symbolic link to '%s'",
537 inf->msg->link_path);
539 xasprintf(&inf->result, "symbolic link to '%s'",
540 inf->msg->link_path);
544 xasprintf(&inf->result, "socket");
547 xasprintf(&inf->result, "block special (%lu/%lu)",
548 (long)major(inf->msg->sb.st_rdev),
549 (long)minor(inf->msg->sb.st_rdev));
552 xasprintf(&inf->result, "character special (%lu/%lu)",
553 (long)major(inf->msg->sb.st_rdev),
554 (long)minor(inf->msg->sb.st_rdev));
557 xasprintf(&inf->result, "fifo (named pipe)");
564 try_empty(struct input_file *inf)
566 if (inf->size != 0)
570 xasprintf(&inf->result, "application/x-empty");
572 xasprintf(&inf->result, "empty");
577 try_access(struct input_file *inf)
581 if (inf->msg->sb.st_size == 0 && S_ISREG(inf->msg->sb.st_mode))
583 if (inf->fd != -1)
586 if (inf->msg->sb.st_mode & (S_IWUSR|S_IWGRP|S_IWOTH))
588 if (inf->msg->sb.st_mode & (S_IXUSR|S_IXGRP|S_IXOTH))
590 if (S_ISREG(inf->msg->sb.st_mode))
594 inf->result = xstrdup(tmp);
599 try_text(struct input_file *inf)
608 type = text_get_type(inf->base, inf->size);
612 s = magic_test(inf->m, inf->base, inf->size, flags);
614 inf->result = xstrdup(s);
618 s = text_try_words(inf->base, inf->size, flags);
621 inf->result = xstrdup(s);
623 xasprintf(&inf->result, "%s %s text", type, s);
628 inf->result = xstrdup("text/plain");
630 xasprintf(&inf->result, "%s text", type);
635 try_magic(struct input_file *inf)
644 s = magic_test(inf->m, inf->base, inf->size, flags);
646 inf->result = xstrdup(s);
653 try_unknown(struct input_file *inf)
656 xasprintf(&inf->result, "application/octet-stream");
658 xasprintf(&inf->result, "data");
663 test_file(struct input_file *inf, size_t width)
670 stop = try_stat(inf);
672 stop = try_access(inf);
674 stop = load_file(inf);
676 stop = try_empty(inf);
678 stop = try_magic(inf);
680 stop = try_text(inf);
682 stop = try_unknown(inf);
685 printf("%s\n", inf->result);
687 if (strcmp(inf->path, "-") == 0)
690 xasprintf(&label, "%s:", inf->path);
691 printf("%-*s %s\n", (int)width, label, inf->result);
694 free(inf->result);
696 if (inf->mapped && inf->base != NULL)
697 munmap(inf->base, inf->size);