annotate msdos/is_exec.c @ 98182:19ec1646fe6c

The Rmail/mbox merge has been abandoned in favor of a restart using the current rmail.el file. A comprehensive list of changes will be supplied when pmail.el is morphed back into rmail.el The current status is that pmail.el supports basic Rmail navigation (no summary support) and shows the current message in a special buffer using buffer-swap-text. No decoding is done yet. That is the next step.
author Paul Reilly <pmr@pajato.com>
date Mon, 15 Sep 2008 20:56:53 +0000
parents fa41f74280f5
children ef719132ddfa
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
25856
Dave Love <fx@gnu.org>
parents:
diff changeset
1 /* IS_EXEC.C
Dave Love <fx@gnu.org>
parents:
diff changeset
2 *
75760
60ed74508594 Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents: 75486
diff changeset
3 * Copyright (C) 1995 DJ Delorie
60ed74508594 Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents: 75486
diff changeset
4 * Copyright (C) 1994 Eli Zaretskii <eliz@is.elta.co.il>
60ed74508594 Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents: 75486
diff changeset
5 *
60ed74508594 Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents: 75486
diff changeset
6 * (See the README file in this directory for the copyright and license
60ed74508594 Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents: 75486
diff changeset
7 * history of this file.)
60ed74508594 Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents: 75486
diff changeset
8 *
94790
fa41f74280f5 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 78311
diff changeset
9 * This file is free software: you can redistribute it and/or modify
75760
60ed74508594 Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents: 75486
diff changeset
10 * it under the terms of the GNU General Public License as published by
94790
fa41f74280f5 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 78311
diff changeset
11 * the Free Software Foundation, either version 3 of the License, or
fa41f74280f5 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 78311
diff changeset
12 * (at your option) any later version.
75760
60ed74508594 Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents: 75486
diff changeset
13 *
60ed74508594 Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents: 75486
diff changeset
14 * This file is distributed in the hope that it will be useful,
60ed74508594 Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents: 75486
diff changeset
15 * but WITHOUT ANY WARRANTY; without even the implied warranty of
60ed74508594 Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents: 75486
diff changeset
16 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
60ed74508594 Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents: 75486
diff changeset
17 * GNU General Public License for more details.
60ed74508594 Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents: 75486
diff changeset
18 *
60ed74508594 Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents: 75486
diff changeset
19 * You should have received a copy of the GNU General Public License
94790
fa41f74280f5 Switch to recommended form of GPLv3 permissions notice.
Glenn Morris <rgm@gnu.org>
parents: 78311
diff changeset
20 * along with this file. If not, see <http://www.gnu.org/licenses/>.
75760
60ed74508594 Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents: 75486
diff changeset
21 *
60ed74508594 Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents: 75486
diff changeset
22 * Commentary:
60ed74508594 Relicense under GPL - see README file for details.
Glenn Morris <rgm@gnu.org>
parents: 75486
diff changeset
23 *
25856
Dave Love <fx@gnu.org>
parents:
diff changeset
24 * Given a filename or a file handle, and the extension of the file,
Dave Love <fx@gnu.org>
parents:
diff changeset
25 * determine if the file is executable.
Dave Love <fx@gnu.org>
parents:
diff changeset
26 * First, the file extension is checked in case it uniquely identifies
Dave Love <fx@gnu.org>
parents:
diff changeset
27 * the file as either an executable or not. Failing this, the first
Dave Love <fx@gnu.org>
parents:
diff changeset
28 * two bytes of the file are tested for known signatures of executable
Dave Love <fx@gnu.org>
parents:
diff changeset
29 * files.
Dave Love <fx@gnu.org>
parents:
diff changeset
30 *
Dave Love <fx@gnu.org>
parents:
diff changeset
31 */
Dave Love <fx@gnu.org>
parents:
diff changeset
32
Dave Love <fx@gnu.org>
parents:
diff changeset
33 #include <libc/stubs.h>
Dave Love <fx@gnu.org>
parents:
diff changeset
34 #include <stdio.h>
Dave Love <fx@gnu.org>
parents:
diff changeset
35 #include <string.h>
Dave Love <fx@gnu.org>
parents:
diff changeset
36 #include <ctype.h>
Dave Love <fx@gnu.org>
parents:
diff changeset
37 #include <errno.h>
Dave Love <fx@gnu.org>
parents:
diff changeset
38 #include <dpmi.h>
Dave Love <fx@gnu.org>
parents:
diff changeset
39 #include <go32.h>
Dave Love <fx@gnu.org>
parents:
diff changeset
40 #include <io.h>
Dave Love <fx@gnu.org>
parents:
diff changeset
41 #include <libc/farptrgs.h>
Dave Love <fx@gnu.org>
parents:
diff changeset
42 #include <libc/dosio.h>
Dave Love <fx@gnu.org>
parents:
diff changeset
43
Dave Love <fx@gnu.org>
parents:
diff changeset
44 extern unsigned short _djstat_flags;
Dave Love <fx@gnu.org>
parents:
diff changeset
45 unsigned short _get_magic(const char *, int);
Dave Love <fx@gnu.org>
parents:
diff changeset
46 int _is_executable(const char *, int, const char *);
Dave Love <fx@gnu.org>
parents:
diff changeset
47
Dave Love <fx@gnu.org>
parents:
diff changeset
48 /*
Dave Love <fx@gnu.org>
parents:
diff changeset
49 * Read a MAGIC NUMBER from a given file. These are the first
Dave Love <fx@gnu.org>
parents:
diff changeset
50 * two bytes of the file, if we look at them as an unsigned short. */
Dave Love <fx@gnu.org>
parents:
diff changeset
51
Dave Love <fx@gnu.org>
parents:
diff changeset
52 #define _STAT_EXEC_EXT 2 /* get execute bits from file extension? */
Dave Love <fx@gnu.org>
parents:
diff changeset
53 #define _STAT_EXEC_MAGIC 4 /* get execute bits from magic signature? */
Dave Love <fx@gnu.org>
parents:
diff changeset
54
Dave Love <fx@gnu.org>
parents:
diff changeset
55 unsigned short
Dave Love <fx@gnu.org>
parents:
diff changeset
56 _get_magic(const char *s, int fh)
Dave Love <fx@gnu.org>
parents:
diff changeset
57 {
Dave Love <fx@gnu.org>
parents:
diff changeset
58 __dpmi_regs regs;
Dave Love <fx@gnu.org>
parents:
diff changeset
59 unsigned short retval;
Dave Love <fx@gnu.org>
parents:
diff changeset
60 unsigned short fpos_high = 0, fpos_low = 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
61 int read_fail = 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
62
Dave Love <fx@gnu.org>
parents:
diff changeset
63 /* If given a pathname, open the file. */
Dave Love <fx@gnu.org>
parents:
diff changeset
64 if (s)
Dave Love <fx@gnu.org>
parents:
diff changeset
65 {
Dave Love <fx@gnu.org>
parents:
diff changeset
66 int handle;
Dave Love <fx@gnu.org>
parents:
diff changeset
67 if((handle = _open(s,0)) == -1)
Dave Love <fx@gnu.org>
parents:
diff changeset
68 return 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
69 regs.x.bx = handle;
Dave Love <fx@gnu.org>
parents:
diff changeset
70 }
Dave Love <fx@gnu.org>
parents:
diff changeset
71 /* Else file already open. Remember its current file position
Dave Love <fx@gnu.org>
parents:
diff changeset
72 and move to beginning of file. */
Dave Love <fx@gnu.org>
parents:
diff changeset
73 else
Dave Love <fx@gnu.org>
parents:
diff changeset
74 {
Dave Love <fx@gnu.org>
parents:
diff changeset
75 regs.x.ax = 0x4201; /* set pointer from current position */
Dave Love <fx@gnu.org>
parents:
diff changeset
76 regs.x.bx = fh;
Dave Love <fx@gnu.org>
parents:
diff changeset
77 regs.x.cx = regs.x.dx = 0; /* move 0 bytes (i.e., stay put) */
Dave Love <fx@gnu.org>
parents:
diff changeset
78 __dpmi_int(0x21, &regs);
Dave Love <fx@gnu.org>
parents:
diff changeset
79 if (regs.x.flags & 1)
Dave Love <fx@gnu.org>
parents:
diff changeset
80 {
Dave Love <fx@gnu.org>
parents:
diff changeset
81 errno = __doserr_to_errno(regs.x.ax);
Dave Love <fx@gnu.org>
parents:
diff changeset
82 return 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
83 }
Dave Love <fx@gnu.org>
parents:
diff changeset
84 fpos_high = regs.x.dx; /* got current position */
Dave Love <fx@gnu.org>
parents:
diff changeset
85 fpos_low = regs.x.ax;
Dave Love <fx@gnu.org>
parents:
diff changeset
86
Dave Love <fx@gnu.org>
parents:
diff changeset
87 regs.x.ax = 0x4200; /* set pointer from the beginning of file */
Dave Love <fx@gnu.org>
parents:
diff changeset
88 regs.x.cx = regs.x.dx = 0; /* move to beginning of file */
Dave Love <fx@gnu.org>
parents:
diff changeset
89 __dpmi_int(0x21, &regs);
Dave Love <fx@gnu.org>
parents:
diff changeset
90 if (regs.x.flags & 1)
Dave Love <fx@gnu.org>
parents:
diff changeset
91 {
Dave Love <fx@gnu.org>
parents:
diff changeset
92 errno = __doserr_to_errno(regs.x.ax);
Dave Love <fx@gnu.org>
parents:
diff changeset
93 return 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
94 }
Dave Love <fx@gnu.org>
parents:
diff changeset
95 }
Dave Love <fx@gnu.org>
parents:
diff changeset
96 regs.x.ds = __tb_segment;
Dave Love <fx@gnu.org>
parents:
diff changeset
97 regs.x.dx = __tb_offset;
Dave Love <fx@gnu.org>
parents:
diff changeset
98
Dave Love <fx@gnu.org>
parents:
diff changeset
99 /* Read 2 bytes from the file. */
Dave Love <fx@gnu.org>
parents:
diff changeset
100 regs.x.ax = 0x3f00;
Dave Love <fx@gnu.org>
parents:
diff changeset
101 regs.x.cx = 2;
Dave Love <fx@gnu.org>
parents:
diff changeset
102 __dpmi_int(0x21, &regs);
Dave Love <fx@gnu.org>
parents:
diff changeset
103
Dave Love <fx@gnu.org>
parents:
diff changeset
104 /* We can either (1) succeed, (2) read less than 2 bytes,
Dave Love <fx@gnu.org>
parents:
diff changeset
105 or (3) fail to read at all. */
Dave Love <fx@gnu.org>
parents:
diff changeset
106 if (regs.x.ax != 2)
Dave Love <fx@gnu.org>
parents:
diff changeset
107 read_fail = (regs.x.flags & 1) ? regs.x.ax : -1;
Dave Love <fx@gnu.org>
parents:
diff changeset
108
Dave Love <fx@gnu.org>
parents:
diff changeset
109 /* If called with filename, close the file. */
Dave Love <fx@gnu.org>
parents:
diff changeset
110 if (s)
Dave Love <fx@gnu.org>
parents:
diff changeset
111 {
Dave Love <fx@gnu.org>
parents:
diff changeset
112 regs.x.ax = 0x3e00;
Dave Love <fx@gnu.org>
parents:
diff changeset
113 __dpmi_int(0x21, &regs);
Dave Love <fx@gnu.org>
parents:
diff changeset
114 if (regs.x.flags & 1)
Dave Love <fx@gnu.org>
parents:
diff changeset
115 errno = __doserr_to_errno(regs.x.ax);
Dave Love <fx@gnu.org>
parents:
diff changeset
116 }
Dave Love <fx@gnu.org>
parents:
diff changeset
117 /* Else leave file pointer where we found it. */
Dave Love <fx@gnu.org>
parents:
diff changeset
118 else
Dave Love <fx@gnu.org>
parents:
diff changeset
119 {
Dave Love <fx@gnu.org>
parents:
diff changeset
120 regs.x.ax = 0x4200; /* set pointer from the beginning of file */
Dave Love <fx@gnu.org>
parents:
diff changeset
121 regs.x.bx = fh;
Dave Love <fx@gnu.org>
parents:
diff changeset
122 regs.x.cx = fpos_high;
Dave Love <fx@gnu.org>
parents:
diff changeset
123 regs.x.dx = fpos_low;
Dave Love <fx@gnu.org>
parents:
diff changeset
124 __dpmi_int(0x21, &regs);
Dave Love <fx@gnu.org>
parents:
diff changeset
125 if (regs.x.flags & 1)
Dave Love <fx@gnu.org>
parents:
diff changeset
126 {
Dave Love <fx@gnu.org>
parents:
diff changeset
127 errno = __doserr_to_errno(regs.x.ax);
Dave Love <fx@gnu.org>
parents:
diff changeset
128 return 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
129 }
Dave Love <fx@gnu.org>
parents:
diff changeset
130 }
Dave Love <fx@gnu.org>
parents:
diff changeset
131
Dave Love <fx@gnu.org>
parents:
diff changeset
132 if (read_fail == 0)
Dave Love <fx@gnu.org>
parents:
diff changeset
133 retval = _farpeekw(_dos_ds, __tb);
Dave Love <fx@gnu.org>
parents:
diff changeset
134 else
Dave Love <fx@gnu.org>
parents:
diff changeset
135 {
Dave Love <fx@gnu.org>
parents:
diff changeset
136 /* The file couldn't be read: assume non-executable. If the file
Dave Love <fx@gnu.org>
parents:
diff changeset
137 *is* executable, but was passed as a file-handle, and the user
Dave Love <fx@gnu.org>
parents:
diff changeset
138 opened it in write-only mode, they lose... */
Dave Love <fx@gnu.org>
parents:
diff changeset
139 retval = 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
140 if (read_fail != -1)
Dave Love <fx@gnu.org>
parents:
diff changeset
141 errno = __doserr_to_errno(read_fail);
Dave Love <fx@gnu.org>
parents:
diff changeset
142 }
Dave Love <fx@gnu.org>
parents:
diff changeset
143
Dave Love <fx@gnu.org>
parents:
diff changeset
144 return retval;
Dave Love <fx@gnu.org>
parents:
diff changeset
145 }
Dave Love <fx@gnu.org>
parents:
diff changeset
146
Dave Love <fx@gnu.org>
parents:
diff changeset
147 /* A list of extensions which designate executable files. These
Dave Love <fx@gnu.org>
parents:
diff changeset
148 are NOT tested for the magic number. */
Dave Love <fx@gnu.org>
parents:
diff changeset
149 static char executables[] = "|EXE|COM|BAT|BTM|DLL|VXD|";
Dave Love <fx@gnu.org>
parents:
diff changeset
150
Dave Love <fx@gnu.org>
parents:
diff changeset
151 /* A list of extensions which belong to files known to NEVER be
Dave Love <fx@gnu.org>
parents:
diff changeset
152 executables. These exist to minimize read()'ing files while
Dave Love <fx@gnu.org>
parents:
diff changeset
153 detecting executables by magic number. You are welcome to
Dave Love <fx@gnu.org>
parents:
diff changeset
154 add to this list, but remember: only extensions which could
Dave Love <fx@gnu.org>
parents:
diff changeset
155 NEVER be present in executables should go here. */
Dave Love <fx@gnu.org>
parents:
diff changeset
156 static char non_executables[] = "\
Dave Love <fx@gnu.org>
parents:
diff changeset
157 |A|A01|A02|A03|A04|A05|ADL|ARC|ARJ|ASC|ASM|AUX|AWK\
Dave Love <fx@gnu.org>
parents:
diff changeset
158 |BAS|BIB|BGI|BMP\
Dave Love <fx@gnu.org>
parents:
diff changeset
159 |C|CC|CFG|CGZ|CH3|CHR|CI|CLP|CMF|CPI|CPP|CXX\
Dave Love <fx@gnu.org>
parents:
diff changeset
160 |DAT|DBF|DIZ|DOC|DVI\
Dave Love <fx@gnu.org>
parents:
diff changeset
161 |E|EL|ELC\
Dave Love <fx@gnu.org>
parents:
diff changeset
162 |F77|FN3\
Dave Love <fx@gnu.org>
parents:
diff changeset
163 |GIF|GZ\
Dave Love <fx@gnu.org>
parents:
diff changeset
164 |H|HLP|HPP|HXX\
Dave Love <fx@gnu.org>
parents:
diff changeset
165 |ICO|IN|INC|INF|INI\
Dave Love <fx@gnu.org>
parents:
diff changeset
166 |JPG\
Dave Love <fx@gnu.org>
parents:
diff changeset
167 |L|LEX|LF|LIB|LOG|LST|LZH\
Dave Love <fx@gnu.org>
parents:
diff changeset
168 |M|MAK|MAP|MF|MID|MPG\
Dave Love <fx@gnu.org>
parents:
diff changeset
169 |O|OBJ\
Dave Love <fx@gnu.org>
parents:
diff changeset
170 |PAK|PAS|PBM|PCD|PCX|PDS|PIC|PIF|PN3|PRJ|PS\
Dave Love <fx@gnu.org>
parents:
diff changeset
171 |RAS|RGB|RLE\
Dave Love <fx@gnu.org>
parents:
diff changeset
172 |S|SND|SY3\
Dave Love <fx@gnu.org>
parents:
diff changeset
173 |TAR|TAZ|TEX|TGA|TGZ|TIF|TXH|TXI|TXT\
Dave Love <fx@gnu.org>
parents:
diff changeset
174 |VOC\
Dave Love <fx@gnu.org>
parents:
diff changeset
175 |WAV|WK1|WK3|WKB|WQ1|WQ3|WQ4|WQ5|WQ6|WQ!\
Dave Love <fx@gnu.org>
parents:
diff changeset
176 |XBM\
Dave Love <fx@gnu.org>
parents:
diff changeset
177 |Y\
Dave Love <fx@gnu.org>
parents:
diff changeset
178 |ZIP|ZOO|";
Dave Love <fx@gnu.org>
parents:
diff changeset
179
Dave Love <fx@gnu.org>
parents:
diff changeset
180 int
Dave Love <fx@gnu.org>
parents:
diff changeset
181 _is_executable(const char *filename, int fhandle, const char *extension)
Dave Love <fx@gnu.org>
parents:
diff changeset
182 {
Dave Love <fx@gnu.org>
parents:
diff changeset
183 if (!extension && filename)
Dave Love <fx@gnu.org>
parents:
diff changeset
184 {
Dave Love <fx@gnu.org>
parents:
diff changeset
185 const char *cp, *ep=0;
Dave Love <fx@gnu.org>
parents:
diff changeset
186 for (cp=filename; *cp; cp++)
Dave Love <fx@gnu.org>
parents:
diff changeset
187 {
Dave Love <fx@gnu.org>
parents:
diff changeset
188 if (*cp == '.')
Dave Love <fx@gnu.org>
parents:
diff changeset
189 ep = cp;
Dave Love <fx@gnu.org>
parents:
diff changeset
190 if (*cp == '/' || *cp == '\\' || *cp == ':')
Dave Love <fx@gnu.org>
parents:
diff changeset
191 ep = 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
192 }
Dave Love <fx@gnu.org>
parents:
diff changeset
193 extension = ep;
Dave Love <fx@gnu.org>
parents:
diff changeset
194 }
Dave Love <fx@gnu.org>
parents:
diff changeset
195 if ((_djstat_flags & _STAT_EXEC_EXT) == 0
Dave Love <fx@gnu.org>
parents:
diff changeset
196 && extension
Dave Love <fx@gnu.org>
parents:
diff changeset
197 && *extension
Dave Love <fx@gnu.org>
parents:
diff changeset
198 && strlen(extension) <= ((extension[0]=='.') ? 4 : 3))
Dave Love <fx@gnu.org>
parents:
diff changeset
199 {
Dave Love <fx@gnu.org>
parents:
diff changeset
200 /* Search the list of extensions in executables[]. */
Dave Love <fx@gnu.org>
parents:
diff changeset
201 char tmp_buf[6], *tp = tmp_buf;
Dave Love <fx@gnu.org>
parents:
diff changeset
202
Dave Love <fx@gnu.org>
parents:
diff changeset
203 *tp++ = '|';
Dave Love <fx@gnu.org>
parents:
diff changeset
204 if (*extension == '.')
Dave Love <fx@gnu.org>
parents:
diff changeset
205 extension++;
Dave Love <fx@gnu.org>
parents:
diff changeset
206 while (*extension)
Dave Love <fx@gnu.org>
parents:
diff changeset
207 *tp++ = toupper (*extension++);
Dave Love <fx@gnu.org>
parents:
diff changeset
208 *tp++ = '|';
Dave Love <fx@gnu.org>
parents:
diff changeset
209 *tp = '\0';
Dave Love <fx@gnu.org>
parents:
diff changeset
210 if (strstr(non_executables, tmp_buf))
Dave Love <fx@gnu.org>
parents:
diff changeset
211 return 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
212 else if (strstr(executables, tmp_buf))
Dave Love <fx@gnu.org>
parents:
diff changeset
213 return 1;
Dave Love <fx@gnu.org>
parents:
diff changeset
214 }
Dave Love <fx@gnu.org>
parents:
diff changeset
215
Dave Love <fx@gnu.org>
parents:
diff changeset
216 /* No extension, or extension doesn't define execute
Dave Love <fx@gnu.org>
parents:
diff changeset
217 bits unambiguously. We are in for some dirty work.
Dave Love <fx@gnu.org>
parents:
diff changeset
218 Read the first two bytes of the file and see if they
Dave Love <fx@gnu.org>
parents:
diff changeset
219 are any of the known magic numbers which designate
Dave Love <fx@gnu.org>
parents:
diff changeset
220 executable files.
Dave Love <fx@gnu.org>
parents:
diff changeset
221 Unix-like shells, which have executable shell scripts
Dave Love <fx@gnu.org>
parents:
diff changeset
222 without extensions and DON'T have "#!" as their FIRST
Dave Love <fx@gnu.org>
parents:
diff changeset
223 TWO CHARACTERS, lose here. Sorry, folks. */
Dave Love <fx@gnu.org>
parents:
diff changeset
224 if ( (_djstat_flags & _STAT_EXEC_MAGIC) == 0 )
Dave Love <fx@gnu.org>
parents:
diff changeset
225 {
Dave Love <fx@gnu.org>
parents:
diff changeset
226 switch (_get_magic(filename, fhandle))
Dave Love <fx@gnu.org>
parents:
diff changeset
227 {
Dave Love <fx@gnu.org>
parents:
diff changeset
228 case 0x5a4d: /* "MZ" */
Dave Love <fx@gnu.org>
parents:
diff changeset
229 case 0x010b:
Dave Love <fx@gnu.org>
parents:
diff changeset
230 case 0x014c:
Dave Love <fx@gnu.org>
parents:
diff changeset
231 case 0x2123: /* "#!" */
Dave Love <fx@gnu.org>
parents:
diff changeset
232 return 1;
Dave Love <fx@gnu.org>
parents:
diff changeset
233 }
Dave Love <fx@gnu.org>
parents:
diff changeset
234 }
Dave Love <fx@gnu.org>
parents:
diff changeset
235
Dave Love <fx@gnu.org>
parents:
diff changeset
236 return 0;
Dave Love <fx@gnu.org>
parents:
diff changeset
237 }
52401
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 25856
diff changeset
238
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 25856
diff changeset
239 /* arch-tag: b0965811-8c3e-4bc4-8d81-4447a3594785
695cf19ef79e Add arch taglines
Miles Bader <miles@gnu.org>
parents: 25856
diff changeset
240 (do not change this comment) */