summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--general/stat.c9
1 files changed, 7 insertions, 2 deletions
diff --git a/general/stat.c b/general/stat.c
index c4e4fc0..2ce604e 100644
--- a/general/stat.c
+++ b/general/stat.c
@@ -30,7 +30,7 @@ main(argc, argv)
{
FILE *fp;
int i, n;
- char c, *fmt;
+ char c, *fmt, buf[BUFSIZ];
int attfmt = 0; /* set if using att time format */
Prog = argv[0];
@@ -45,6 +45,7 @@ main(argc, argv)
Prog, File);
exit(1);
}
+getnewch:
if ((i = fgetc(fp)) == EOF) {
fprintf(stderr, "%s: %s is empty\n",
Prog, File);
@@ -53,8 +54,12 @@ main(argc, argv)
c = i & 0x7f;
if (c == '\n' || c == '\r' || c == 'r')
attfmt = 1;
- else
+ else if (isdigit(c))
fmt = "%lf %*s %lf %*s %lf %*s"; /* BSD fmt */
+ else { /* skip the line */
+ fgets(buf, BUFSIZ, fp);
+ goto getnewch;
+ }
if (ungetc(c, fp) == EOF) {
fprintf(stderr, "%s: can't push char back to %s\n",
Prog, File);