/[MITgcm]/MITgcm/tools/mpack-1.6/magic.c
ViewVC logotype

Contents of /MITgcm/tools/mpack-1.6/magic.c

Parent Directory Parent Directory | Revision Log Revision Log | View Revision Graph Revision Graph


Revision 1.3 - (show annotations) (download)
Sat Feb 23 03:30:03 2008 UTC (16 years, 2 months ago) by jmc
Branch: MAIN
Changes since 1.2: +0 -1 lines
File MIME type: text/plain
Was working nicly before checked-in ; but because of modification-time
changes (due to the check-in), dependencies have changed, and is now
failling when trying to run Automake/Autoconf.
=> go back to previous version (hopefully should works).

1 /* (C) Copyright 1993,1994 by Carnegie Mellon University
2 * All Rights Reserved.
3 *
4 * Permission to use, copy, modify, distribute, and sell this software
5 * and its documentation for any purpose is hereby granted without
6 * fee, provided that the above copyright notice appear in all copies
7 * and that both that copyright notice and this permission notice
8 * appear in supporting documentation, and that the name of Carnegie
9 * Mellon University not be used in advertising or publicity
10 * pertaining to distribution of the software without specific,
11 * written prior permission. Carnegie Mellon University makes no
12 * representations about the suitability of this software for any
13 * purpose. It is provided "as is" without express or implied
14 * warranty.
15 *
16 * CARNEGIE MELLON UNIVERSITY DISCLAIMS ALL WARRANTIES WITH REGARD TO
17 * THIS SOFTWARE, INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY
18 * AND FITNESS, IN NO EVENT SHALL CARNEGIE MELLON UNIVERSITY BE LIABLE
19 * FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
20 * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN
21 * AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING
22 * OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
23 * SOFTWARE.
24 */
25 #include <stdio.h>
26
27 /* Description of the various file formats and their magic numbers */
28 struct magic {
29 char *name; /* Name of the file format */
30 char *num; /* The magic number */
31 int len; /* Length of same (0 means strlen(magicnum)) */
32 };
33
34 /* The magic numbers of the file formats we know about */
35 static struct magic magic[] = {
36 { "image/gif", "GIF", 0 },
37 { "image/jpeg", "\377\330\377", 0 },
38 { "video/mpeg", "\0\0\001\263", 4 },
39 { "application/postscript", "%!", 0 },
40 };
41 static int num_magic = (sizeof(magic)/sizeof(magic[0]));
42 static char *default_type = "application/octet-stream";
43
44 /* The longest magic number */
45 static int max_magiclen = 0;
46
47 /*
48 * Determins the format of the file "inputf". The name
49 * of the file format (or NULL on error) is returned.
50 */
51 char *magic_look(FILE *infile)
52 {
53 int i, j;
54 char buf[80];
55 int numread = 0;
56
57 if (max_magiclen == 0) {
58 for (i=0; i<num_magic; i++) {
59 if (magic[i].len == 0) magic[i].len = strlen(magic[i].num);
60 if (magic[i].len > max_magiclen) max_magiclen = magic[i].len;
61 }
62 }
63
64 numread = fread(buf, 1, max_magiclen, infile);
65 rewind(infile);
66
67 for (i=0; i<num_magic; i++) {
68 if (numread >= magic[i].len) {
69 for (j=0; j<magic[i].len; j++) {
70 if (buf[j] != magic[i].num[j]) break;
71 }
72 if (j == magic[i].len) return magic[i].name;
73 }
74 }
75
76 return default_type;
77 }

  ViewVC Help
Powered by ViewVC 1.1.22