ref: 52d6adc83025d5ba4ba4b1f4399f6d331d61b8c9
parent: e2aecccbdc2e0ef40ead47f05b7a05f2fd51a40c
author: cinap_lenrek <cinap_lenrek@gmx.de>
date: Thu Dec 20 11:58:56 EST 2012
file: fix newline consistency, fix swaped utf-16 le/be
--- a/sys/src/cmd/file.c
+++ b/sys/src/cmd/file.c
@@ -206,8 +206,8 @@
int mime;
-char OCTET[] = "application/octet-stream\n";
-char PLAIN[] = "text/plain\n";
+char OCTET[] = "application/octet-stream";
+char PLAIN[] = "text/plain";
void
main(int argc, char *argv[])
@@ -339,12 +339,14 @@
return;
}
if(mbuf->mode & DMDIR) {- print(mime ? OCTET : "directory\n");
+ print("%s\n", mime ? OCTET : "directory");return;
}
if(mbuf->type != 'M' && mbuf->type != '|') {- print(mime ? OCTET : "special file #%C/%s\n",
- mbuf->type, mbuf->name);
+ if(mime)
+ print("%s\n", OCTET);+ else
+ print("special file #%C/%s\n", mbuf->type, mbuf->name);return;
}
/* may be reading a pipe on standard input */
@@ -354,7 +356,7 @@
return;
}
if(nbuf == 0) {- print(mime ? PLAIN : "empty file\n");
+ print("%s\n", mime ? PLAIN : "empty file");return;
}
buf[nbuf] = 0;
@@ -424,14 +426,14 @@
if (nbuf < 100 && !mime)
print(mime ? PLAIN : "short ");
if (guess == Fascii)
- print(mime ? PLAIN : "Ascii\n");
+ print("%s\n", mime ? PLAIN : "Ascii");else if (guess == Feascii)
- print(mime ? PLAIN : "extended ascii\n");
+ print("%s\n", mime ? PLAIN : "extended ascii");else if (guess == Flatin)
- print(mime ? PLAIN : "latin ascii\n");
+ print("%s\n", mime ? PLAIN : "latin ascii");else if (guess == Futf && utf_count() < 4)
print_utf();
- else print(mime ? OCTET : "binary\n");
+ else print("%s\n", mime ? OCTET : "binary");}
void
@@ -502,7 +504,7 @@
int i, printed, j;
if(mime){- print(PLAIN);
+ print("%s\n", PLAIN);return;
}
if (chkascii()) {@@ -584,38 +586,38 @@
* when read from a file.
*/
Filemagic long0tab[] = {- 0xF16DF16D, 0xFFFFFFFF, "pac1 audio file\n", OCTET,
+ 0xF16DF16D, 0xFFFFFFFF, "pac1 audio file", OCTET,
/* "pac1" */
- 0x31636170, 0xFFFFFFFF, "pac3 audio file\n", OCTET,
+ 0x31636170, 0xFFFFFFFF, "pac3 audio file", OCTET,
/* "pXc2 */
- 0x32630070, 0xFFFF00FF, "pac4 audio file\n", OCTET,
- 0xBA010000, 0xFFFFFFFF, "mpeg system stream\n", OCTET,
- 0x43614c66, 0xFFFFFFFF, "FLAC audio file\n", "audio/flac",
- 0x30800CC0, 0xFFFFFFFF, "inferno .dis executable\n", OCTET,
- 0x04034B50, 0xFFFFFFFF, "zip archive\n", "application/zip",
- 070707, 0xFFFF, "cpio archive\n", "application/x-cpio",
- 0x2F7, 0xFFFF, "tex dvi\n", "application/dvi",
- 0xfaff, 0xfeff, "mp3 audio\n", "audio/mpeg",
- 0xfeff0000, 0xffffffff, "utf-32be\n", "text/plain charset=utf-32be",
- 0xfffe, 0xffffffff, "utf-32le\n", "text/plain charset=utf-32le",
- 0xfeff, 0xffff, "utf-16be\n", "text/plain charset=utf-16be",
- 0xfffe, 0xffff, "utf-16le\n", "text/plain charset=utf-16le",
+ 0x32630070, 0xFFFF00FF, "pac4 audio file", OCTET,
+ 0xBA010000, 0xFFFFFFFF, "mpeg system stream", OCTET,
+ 0x43614c66, 0xFFFFFFFF, "FLAC audio file", "audio/flac",
+ 0x30800CC0, 0xFFFFFFFF, "inferno .dis executable", OCTET,
+ 0x04034B50, 0xFFFFFFFF, "zip archive", "application/zip",
+ 070707, 0xFFFF, "cpio archive", "application/x-cpio",
+ 0x2F7, 0xFFFF, "tex dvi", "application/dvi",
+ 0xfaff, 0xfeff, "mp3 audio", "audio/mpeg",
+ 0xfeff0000, 0xffffffff, "utf-32le", "text/plain charset=utf-32le",
+ 0x0000fffe, 0xffffffff, "utf-32be", "text/plain charset=utf-32be",
+ 0xfeff, 0xffff, "utf-16le", "text/plain charset=utf-16le",
+ 0xfffe, 0xffff, "utf-16be", "text/plain charset=utf-16be",
/* 0xfeedface: this could alternately be a Next Plan 9 boot image */
- 0xcefaedfe, 0xFFFFFFFF, "32-bit power Mach-O executable\n", OCTET,
+ 0xcefaedfe, 0xFFFFFFFF, "32-bit power Mach-O executable", OCTET,
/* 0xfeedfacf */
- 0xcffaedfe, 0xFFFFFFFF, "64-bit power Mach-O executable\n", OCTET,
+ 0xcffaedfe, 0xFFFFFFFF, "64-bit power Mach-O executable", OCTET,
/* 0xcefaedfe */
- 0xfeedface, 0xFFFFFFFF, "386 Mach-O executable\n", OCTET,
+ 0xfeedface, 0xFFFFFFFF, "386 Mach-O executable", OCTET,
/* 0xcffaedfe */
- 0xfeedfacf, 0xFFFFFFFF, "amd64 Mach-O executable\n", OCTET,
+ 0xfeedfacf, 0xFFFFFFFF, "amd64 Mach-O executable", OCTET,
/* 0xcafebabe */
- 0xbebafeca, 0xFFFFFFFF, "Mach-O universal executable\n", OCTET,
+ 0xbebafeca, 0xFFFFFFFF, "Mach-O universal executable", OCTET,
/*
* venti & fossil magic numbers are stored big-endian on disk,
* thus the numbers appear reversed in this table.
*/
- 0xad4e5cd1, 0xFFFFFFFF, "venti arena\n", OCTET,
- 0x2bb19a52, 0xFFFFFFFF, "paq archive\n", OCTET,
+ 0xad4e5cd1, 0xFFFFFFFF, "venti arena", OCTET,
+ 0x2bb19a52, 0xFFFFFFFF, "paq archive", OCTET,
};
int
@@ -625,7 +627,7 @@
for(i=0; i<ntab; i++)
if((x&tab[i].mask) == tab[i].x){- print(mime ? tab[i].mime : tab[i].desc);
+ print("%s\n", mime ? tab[i].mime : tab[i].desc);return 1;
}
return 0;
@@ -652,10 +654,10 @@
* venti & fossil magic numbers are stored big-endian on disk,
* thus the numbers appear reversed in this table.
*/
- 256*1024, 0xe7a5e4a9, 0xFFFFFFFF, "venti arenas partition\n", OCTET,
- 256*1024, 0xc75e5cd1, 0xFFFFFFFF, "venti index section\n", OCTET,
- 128*1024, 0x89ae7637, 0xFFFFFFFF, "fossil write buffer\n", OCTET,
- 4, 0x31647542, 0xFFFFFFFF, "OS X finder properties\n", OCTET,
+ 256*1024, 0xe7a5e4a9, 0xFFFFFFFF, "venti arenas partition", OCTET,
+ 256*1024, 0xc75e5cd1, 0xFFFFFFFF, "venti index section", OCTET,
+ 128*1024, 0x89ae7637, 0xFFFFFFFF, "fossil write buffer", OCTET,
+ 4, 0x31647542, 0xFFFFFFFF, "OS X finder properties", OCTET,
};
int
@@ -673,7 +675,7 @@
continue;
x = LENDIAN(buf);
if((x&tp->mask) == tp->x){- print(mime? tp->mime: tp->desc);
+ print("%s\n", mime ? tp->mime : tp->desc);return 1;
}
}
@@ -693,7 +695,7 @@
seek(fd, 0, 0); /* reposition to start of file */
if(crackhdr(fd, &f)) {- print(mime ? OCTET : "%s\n", f.name);
+ print("%s\n", mime ? OCTET : f.name);return 1;
}
return 0;
@@ -861,10 +863,7 @@
if(l == -1)
l = strlen(p->key);
if(nbuf >= l && memcmp(buf, p->key, l) == 0) {- if(mime)
- print("%s\n", p->mime);- else
- print("%s\n", p->filetype);+ print("%s\n", mime ? p->mime : p->filetype);return 1;
}
}
@@ -873,7 +872,7 @@
if(buf[i] == '\n')
break;
if(mime)
- print(OCTET);
+ print("%s\n", OCTET);else
print("%.*s picture\n", utfnlen((char*)buf+5, i-5), (char*)buf+5);return 1;
@@ -905,10 +904,7 @@
if (readn(fd, buf, n) != n)
continue;
if(memcmp(buf, p->key, n) == 0) {- if(mime)
- print("%s\n", p->mime);- else
- print("%s\n", p->filetype);+ print("%s\n", mime ? p->mime : p->filetype);return 1;
}
}
@@ -929,8 +925,7 @@
else if (strncmp((char*)buf+8, "AVI ", 4) == 0)
print("%s\n", mime? "video/avi": "avi video");else
- print("%s\n", mime? "application/octet-stream":- "riff file");
+ print("%s\n", mime? "application/octet-stream": "riff file");return 1;
}
return 0;
@@ -979,7 +974,7 @@
p += n;
if(p < buf+nbuf && strchr("\t\r\n />", *p)){ if(++count > 2) {- print(mime ? "text/html\n" : "HTML file\n");
+ print("%s\n", mime ? "text/html" : "HTML file");return 1;
}
}
@@ -1037,7 +1032,7 @@
p = q+1;
}
if(count >= 3){- print(mime ? "message/rfc822\n" : "email file\n");
+ print("%s\n", mime ? "message/rfc822" : "email file");return 1;
}
return 0;
@@ -1054,7 +1049,7 @@
return 0;
*q = 0;
if(strncmp(p, "From ", 5) == 0 && strstr(p, " remote from ") == nil){- print(mime ? "text/plain\n" : "mail box\n");
+ print("%s\n", mime ? "text/plain" : "mail box");return 1;
}
*q = '\n';
@@ -1075,7 +1070,7 @@
if(type < 0)
return 0;
if(mime)
- print(OCTET);
+ print("%s\n", OCTET);else
print("%s intermediate\n", name);return 1;
@@ -1108,7 +1103,7 @@
yes:
if(mime){- print(PLAIN);
+ print("%s\n", PLAIN);return 1;
}
if(wfreq[Alword] > 0)
@@ -1121,13 +1116,12 @@
int
islimbo(void)
{-
/*
* includes
*/
if(wfreq[Lword] < 4)
return 0;
- print(mime ? PLAIN : "limbo program\n");
+ print("%s\n", mime ? PLAIN : "limbo program");return 1;
}
@@ -1134,13 +1128,12 @@
int
isas(void)
{-
/*
* includes
*/
if(wfreq[Aword] < 2)
return 0;
- print(mime ? PLAIN : "as program\n");
+ print("%s\n", mime ? PLAIN : "as program");return 1;
}
@@ -1153,7 +1146,7 @@
e = p + nbuf-1;
while((p < e) && (p = memchr(p, 0xFF, e - p))){ if((p[1] & 0xFE) == 0xFA){- print(mime ? "audio/mpeg\n" : "mp3 audio\n");
+ print("%s\n", mime ? "audio/mpeg" : "mp3 audio");return 1;
}
p++;
@@ -1182,18 +1175,18 @@
cs /= 8.;
if(cs <= 24.322) {if(buf[0]==0x1f && buf[1]==0x9d)
- print(mime ? "application/x-compress" : "compressed\n");
+ print("%s\n", mime ? "application/x-compress" : "compressed");else
if(buf[0]==0x1f && buf[1]==0x8b)
- print(mime ? "application/x-gzip" : "gzip compressed\n");
+ print("%s\n", mime ? "application/x-gzip" : "gzip compressed");else
if(buf[0]=='B' && buf[1]=='Z' && buf[2]=='h')
- print(mime ? "application/x-bzip2" : "bzip2 compressed\n");
+ print("%s\n", mime ? "application/x-bzip2" : "bzip2 compressed");else
if(buf[0]==0x78 && buf[1]==0x9c)
- print(mime ? "application/x-deflate" : "zlib compressed\n");
+ print("%s\n", mime ? "application/x-deflate" : "zlib compressed");else
- print(mime ? OCTET : "encrypted\n");
+ print("%s\n", mime ? OCTET : "encrypted");return 1;
}
return 0;
@@ -1248,7 +1241,7 @@
rare += cfreq[tolower(*p)];
}
if(vow*5 >= nbuf-cfreq[' '] && comm >= 10*rare) {- print(mime ? PLAIN : "English text\n");
+ print("%s\n", mime ? PLAIN : "English text");return 1;
}
return 0;
@@ -1565,7 +1558,7 @@
print("%s ELF %s\n", p, t);}
else
- print("application/x-elf-executable");+ print("application/x-elf-executable\n");return 1;
}
--
⑨