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

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

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


Revision 1.2 - (hide annotations) (download)
Sat Feb 23 01:28:27 2008 UTC (16 years, 3 months ago) by jmc
Branch: MAIN
Changes since 1.1: +1 -0 lines
File MIME type: text/plain
- get new version from: http://packages.qa.debian.org/m/mpack.html
 (files: mpack_1.6.orig.tar.gz, mpack_1.6-4.diff.gz, mpack_1.6-4.dsc)
 and apply patch 'mpack_1.6-4.diff' to original dir: mpack_1.6/
- this fix the MD5 coding on 64.bit platforms (well, seems to)

1 edhill 1.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 jmc 1.2 #include <string.h>
27 edhill 1.1
28     /* Description of the various file formats and their magic numbers */
29     struct magic {
30     char *name; /* Name of the file format */
31     char *num; /* The magic number */
32     int len; /* Length of same (0 means strlen(magicnum)) */
33     };
34    
35     /* The magic numbers of the file formats we know about */
36     static struct magic magic[] = {
37     { "image/gif", "GIF", 0 },
38     { "image/jpeg", "\377\330\377", 0 },
39     { "video/mpeg", "\0\0\001\263", 4 },
40     { "application/postscript", "%!", 0 },
41     };
42     static int num_magic = (sizeof(magic)/sizeof(magic[0]));
43     static char *default_type = "application/octet-stream";
44    
45     /* The longest magic number */
46     static int max_magiclen = 0;
47    
48     /*
49     * Determins the format of the file "inputf". The name
50     * of the file format (or NULL on error) is returned.
51     */
52     char *magic_look(FILE *infile)
53     {
54     int i, j;
55     char buf[80];
56     int numread = 0;
57    
58     if (max_magiclen == 0) {
59     for (i=0; i<num_magic; i++) {
60     if (magic[i].len == 0) magic[i].len = strlen(magic[i].num);
61     if (magic[i].len > max_magiclen) max_magiclen = magic[i].len;
62     }
63     }
64    
65     numread = fread(buf, 1, max_magiclen, infile);
66     rewind(infile);
67    
68     for (i=0; i<num_magic; i++) {
69     if (numread >= magic[i].len) {
70     for (j=0; j<magic[i].len; j++) {
71     if (buf[j] != magic[i].num[j]) break;
72     }
73     if (j == magic[i].len) return magic[i].name;
74     }
75     }
76    
77     return default_type;
78     }

  ViewVC Help
Powered by ViewVC 1.1.22