| 15 |
|
* printargs(ac,av,fp) print an argument list to fp, followed by '\n' |
| 16 |
|
* formatval(r,s) copy the format value in s to r |
| 17 |
|
* fputformat(s,fp) write "FORMAT=%s" to fp |
| 18 |
+ |
* nativebigendian() are we native on big-endian machine? |
| 19 |
+ |
* isbigendian(s) header line matches "BigEndian=1" (-1 if irrelevant) |
| 20 |
+ |
* fputendian(fp) write native endianness in BigEndian= line |
| 21 |
|
* getheader(fp,f,p) read header from fp, calling f(s,p) on each line |
| 22 |
|
* globmatch(pat, str) check for glob match of str against pat |
| 23 |
|
* checkheader(i,p,o) check header format from i against p and copy to o |
| 29 |
|
|
| 30 |
|
#include <ctype.h> |
| 31 |
|
|
| 32 |
+ |
#include "tiff.h" /* for int32 */ |
| 33 |
|
#include "rtio.h" |
| 34 |
|
#include "resolu.h" |
| 35 |
|
|
| 44 |
|
const char TMSTR[] = "CAPDATE="; /* capture date identifier */ |
| 45 |
|
const char GMTSTR[] = "GMT="; /* GMT identifier */ |
| 46 |
|
|
| 47 |
+ |
const char BIGEND[] = "BigEndian="; /* big-endian variable */ |
| 48 |
+ |
|
| 49 |
|
static gethfunc mycheck; |
| 50 |
|
|
| 51 |
|
|
| 204 |
|
fputs(FMTSTR, fp); |
| 205 |
|
fputs(s, fp); |
| 206 |
|
putc('\n', fp); |
| 207 |
+ |
} |
| 208 |
+ |
|
| 209 |
+ |
|
| 210 |
+ |
int |
| 211 |
+ |
nativebigendian() /* are we native on a big-endian machine? */ |
| 212 |
+ |
{ |
| 213 |
+ |
union { int32 i; char c[4]; } u; |
| 214 |
+ |
|
| 215 |
+ |
u.i = 1; |
| 216 |
+ |
|
| 217 |
+ |
return(u.c[0] == 0); |
| 218 |
+ |
} |
| 219 |
+ |
|
| 220 |
+ |
|
| 221 |
+ |
int |
| 222 |
+ |
isbigendian( /* header line says "BigEndian=1" (-1 if irrelevant) */ |
| 223 |
+ |
const char *s |
| 224 |
+ |
) |
| 225 |
+ |
{ |
| 226 |
+ |
const char *be = BIGEND; |
| 227 |
+ |
|
| 228 |
+ |
while (*s & (*be != '=') && *s++ == *be) |
| 229 |
+ |
++be; |
| 230 |
+ |
if (*be != '=') |
| 231 |
+ |
return(-1); /* irrelevant */ |
| 232 |
+ |
while (isspace(*s)) |
| 233 |
+ |
s++; |
| 234 |
+ |
if (*s++ != '=') |
| 235 |
+ |
return(-1); |
| 236 |
+ |
while (isspace(*s)) |
| 237 |
+ |
s++; |
| 238 |
+ |
return(*s == '1'); |
| 239 |
+ |
} |
| 240 |
+ |
|
| 241 |
+ |
|
| 242 |
+ |
void |
| 243 |
+ |
fputendian( /* write native endianness in BigEndian= line */ |
| 244 |
+ |
FILE *fp |
| 245 |
+ |
) |
| 246 |
+ |
{ |
| 247 |
+ |
fputs(BIGEND, fp); |
| 248 |
+ |
if (nativebigendian()) |
| 249 |
+ |
fputs("1\n", fp); |
| 250 |
+ |
else |
| 251 |
+ |
fputs("0\n", fp); |
| 252 |
|
} |
| 253 |
|
|
| 254 |
|
|