=================================================================== RCS file: /cvsrepo/anoncvs/cvs/src/usr.bin/file/file.c,v retrieving revision 1.44 retrieving revision 1.45 diff -c -r1.44 -r1.45 *** src/usr.bin/file/file.c 2015/05/29 15:58:34 1.44 --- src/usr.bin/file/file.c 2015/05/30 06:25:35 1.45 *************** *** 1,4 **** ! /* $OpenBSD: file.c,v 1.44 2015/05/29 15:58:34 nicm Exp $ */ /* * Copyright (c) 2015 Nicholas Marriott --- 1,4 ---- ! /* $OpenBSD: file.c,v 1.45 2015/05/30 06:25:35 nicm Exp $ */ /* * Copyright (c) 2015 Nicholas Marriott *************** *** 209,215 **** memset(&msg, 0, sizeof msg); msg.idx = idx; ! if (lstat(argv[idx], &msg.sb) == -1) { fd = -1; msg.error = errno; } else { --- 209,221 ---- memset(&msg, 0, sizeof msg); msg.idx = idx; ! if (strcmp(argv[idx], "-") == 0) { ! if (fstat(STDIN_FILENO, &msg.sb) == -1) { ! fd = -1; ! msg.error = errno; ! } else ! fd = STDIN_FILENO; ! } else if (lstat(argv[idx], &msg.sb) == -1) { fd = -1; msg.error = errno; } else { *************** *** 441,448 **** strerror(inf->msg->error)); return (1); } ! if (sflag) { switch (inf->msg->sb.st_mode & S_IFMT) { case S_IFBLK: case S_IFCHR: case S_IFREG: --- 447,457 ---- strerror(inf->msg->error)); return (1); } ! if (sflag || strcmp(inf->path, "-") == 0) { switch (inf->msg->sb.st_mode & S_IFMT) { + case S_IFIFO: + if (strcmp(inf->path, "-") != 0) + break; case S_IFBLK: case S_IFCHR: case S_IFREG: *************** *** 617,623 **** if (bflag) printf("%s\n", inf->result); else { ! xasprintf(&label, "%s:", inf->path); printf("%-*s %s\n", (int)width, label, inf->result); free(label); } --- 626,635 ---- if (bflag) printf("%s\n", inf->result); else { ! if (strcmp(inf->path, "-") == 0) ! xasprintf(&label, "/dev/stdin:"); ! else ! xasprintf(&label, "%s:", inf->path); printf("%-*s %s\n", (int)width, label, inf->result); free(label); }