Groups | Search | Server Info | Keyboard shortcuts | Login | Register [http] [https] [nntp] [nntps]
Groups > comp.lang.c > #111823
| From | Michael Forsythe <forsythe@example.com> |
|---|---|
| Newsgroups | comp.lang.c |
| Subject | Re: How to determine if file is binary or text? |
| Date | 2017-06-08 15:33 +0000 |
| Organization | A noiseless patient Spider |
| Message-ID | <ohbqob$ep$1@dont-email.me> (permalink) |
| References | <oh9h55$a0q$2@dont-email.me> <slrnojgstb.1kjn.grahn+nntp@frailea.sa.invalid> <oh9tla$p61$1@dont-email.me> <87poefe8h1.fsf@bsb.me.uk> <oha5b6$e96$2@dont-email.me> |
DFS <nospam@dfs.com> wrote:
[snip]
> I'm on Windows, but I installed the GNUWin32 port which includes
> 'file.exe' (the Linux 'file' command).
>
>
> int is_textfile(char *fname)
> {
> char cmd[] = {0};
> sprintf(cmd,"file %s",fname);
> char *ftype = {system(cmd)};
> printf("filetype = %s\n",ftype);
> }
>
>
> output is
>
> filename.txt; ASCII English text, with very long lines, with CRLF line
> terminators
> filetype = (null)
>
>
> So it runs the 'file' command and prints it, but it isn't getting
> captured in the ftype variable.
Others have mentioned popen, and you've already discovered the pain
that comes with that. At least on my systems, file comes with the
helpful libmagic library. If you can link against that:
#include <stdio.h>
#include <string.h>
#include <magic.h>
static magic_t mime_cookie;
int is_textfile(const char *fname)
{
return !strcmp(magic_file(mime_cookie, fname),
"text/plain");
}
int main(int argc, char **argv)
{
if (!(mime_cookie = magic_open(MAGIC_MIME_TYPE))) {
perror("magic_open");
return -1;
}
if (magic_load(mime_cookie, 0) < 0) {
perror("magic_load");
return -1;
}
if (argc != 2) {
printf("Usage: %s /path/to/file\n", argv[0]);
return -1;
}
if (is_textfile(argv[1])) {
printf("Yup\n");
} else {
printf("Nope\n");
}
return 0;
}
$ cc -std=c99 -o a a.c -lmagic
$ ./a /dev/kmem
Nope
$ ./a c89-draft.txt
Yup
$ ./a n1256.pdf
Nope
$ ./a UTF-8-demo.txt
Yup
The library also has magic_buffer in case you've already loaded the
file into memory.
Of course, as others have already said, you probably want to do
some processing with the file after you've loaded it (treat it as
a configuration file, extract all email addresses, treat it as a
sequence of SAN chess moves, whatever). If so, you're probably
better off treating the file as a bunch of bytes and attempting to
specifically validate for whatever you're going to use the file
for.
Back to comp.lang.c | Previous | Next — Previous in thread | Next in thread | Find similar | Unroll thread
How to determine if file is binary or text? DFS <nospam@dfs.com> - 2017-06-07 14:40 -0400
Re: How to determine if file is binary or text? GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-06-07 20:46 +0200
Re: How to determine if file is binary or text? bartc <bc@freeuk.com> - 2017-06-07 19:58 +0100
Re: How to determine if file is binary or text? scott@slp53.sl.home (Scott Lurndal) - 2017-06-07 19:05 +0000
Re: How to determine if file is binary or text? supercat@casperkitty.com - 2017-06-07 12:10 -0700
Re: How to determine if file is binary or text? "James R. Kuyper" <jameskuyper@verizon.net> - 2017-06-07 16:25 -0400
Re: How to determine if file is binary or text? Jorgen Grahn <grahn+nntp@snipabacken.se> - 2017-06-07 21:44 +0000
Re: How to determine if file is binary or text? DFS <nospam@dfs.com> - 2017-06-07 18:14 -0400
Re: How to determine if file is binary or text? GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-06-08 00:23 +0200
Re: How to determine if file is binary or text? Robert Wessel <robertwessel2@yahoo.com> - 2017-06-08 00:11 -0500
Re: How to determine if file is binary or text? GOTHIER Nathan <nathan.gothier@gmail.com> - 2017-06-08 15:14 +0200
Re: How to determine if file is binary or text? Robert Wessel <robertwessel2@yahoo.com> - 2017-06-08 11:06 -0500
Re: How to determine if file is binary or text? raltbos@xs4all.nl (Richard Bos) - 2017-06-17 18:28 +0000
Re: How to determine if file is binary or text? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-06-07 23:30 +0100
Re: How to determine if file is binary or text? DFS <nospam@dfs.com> - 2017-06-07 20:26 -0400
Re: How to determine if file is binary or text? bartc <bc@freeuk.com> - 2017-06-08 01:30 +0100
Re: How to determine if file is binary or text? DFS <nospam@dfs.com> - 2017-06-07 23:50 -0400
Re: How to determine if file is binary or text? mark.bluemel@gmail.com - 2017-06-08 02:13 -0700
Re: How to determine if file is binary or text? mark.bluemel@gmail.com - 2017-06-08 04:05 -0700
Re: How to determine if file is binary or text? DFS <nospam@dfs.com> - 2017-06-08 09:21 -0400
Re: How to determine if file is binary or text? Ike Naar <ike@iceland.freeshell.org> - 2017-06-08 14:19 +0000
Re: How to determine if file is binary or text? DFS <nospam@dfs.com> - 2017-06-08 12:07 -0400
Re: How to determine if file is binary or text? scott@slp53.sl.home (Scott Lurndal) - 2017-06-08 16:14 +0000
Re: How to determine if file is binary or text? DFS <nospam@dfs.com> - 2017-06-08 12:37 -0400
Re: How to determine if file is binary or text? scott@slp53.sl.home (Scott Lurndal) - 2017-06-08 16:54 +0000
Re: How to determine if file is binary or text? DFS <nospam@dfs.com> - 2017-06-08 13:14 -0400
An old version of what??? (Was: How to determine if file is binary or text?) gazelle@shell.xmission.com (Kenny McCormack) - 2017-06-09 17:13 +0000
Re: How to determine if file is binary or text? Ben Bacarisse <ben.usenet@bsb.me.uk> - 2017-06-08 11:15 +0100
Re: How to determine if file is binary or text? scott@slp53.sl.home (Scott Lurndal) - 2017-06-08 12:49 +0000
Re: How to determine if file is binary or text? Jorgen Grahn <grahn+nntp@snipabacken.se> - 2017-06-08 14:01 +0000
Re: How to determine if file is binary or text? Michael Forsythe <forsythe@example.com> - 2017-06-08 15:33 +0000
Re: How to determine if file is binary or text? DFS <nospam@dfs.com> - 2017-06-08 18:43 -0400
Re: How to determine if file is binary or text? jak <please@nospam.tnx> - 2017-06-09 08:46 +0200
Re: How to determine if file is binary or text? "James R. Kuyper" <jameskuyper@verizon.net> - 2017-06-07 19:23 -0400
Re: How to determine if file is binary or text? Barry Schwarz <schwarzb@dqel.com> - 2017-06-07 16:50 -0700
Re: How to determine if file is binary or text? "Pascal J. Bourguignon" <pjb@informatimago.com> - 2017-06-08 15:51 +0200
Re: How to determine if file is binary or text? Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2017-06-07 17:17 -0600
Re: How to determine if file is binary or text? Keith Thompson <kst-u@mib.org> - 2017-06-07 19:21 -0700
Re: How to determine if file is binary or text? Joe Pfeiffer <pfeiffer@cs.nmsu.edu> - 2017-06-07 21:37 -0600
Re: How to determine if file is binary or text? Noob <root@127.0.0.1> - 2017-06-08 08:40 +0200
Re: How to determine if file is binary or text? gordonb.t9rom@burditt.org (Gordon Burditt) - 2017-06-08 12:03 -0500
csiph-web