ebefd0d08f
Adds lots of neat features from most other vendors file(1) commands, plus (important!) little and big endian file types. This will alow us to detect and extract meaningful information from a many more file types.
77 lines
3.2 KiB
Plaintext
77 lines
3.2 KiB
Plaintext
Portability of the new file(1) command.
|
|
@(#) $Id: PORTING,v 1.2 1993/06/10 00:38:00 jtc Exp $
|
|
|
|
Read this file only if the program doesn't compile on your system.
|
|
|
|
This release has been around UNIX; it has been compiled and tested
|
|
in the following environments:
|
|
|
|
SunOS sqarc 4.1.1 8 sun4
|
|
No problems.
|
|
ULTRIX squint 4.2 0 RISC
|
|
No problems.
|
|
A/UX sqmac 3.0a9 SVR22 mc68020
|
|
No problems.
|
|
AIX sqibm 2 3 000XXXXXX100
|
|
Had weird "make" problems making "magic" file automatically; just
|
|
built it by hand. Your mileage may vary.
|
|
SCO sqwang 3.2 2 i386
|
|
Compiles fine; their weird make can't handle "[a-z]*" as a dependancy,
|
|
so build magic by hand. Runs fine.
|
|
sqzme sqzme 3.1.1 3 3B2
|
|
The 3B2 SVR3 needed a few tweaks as well as COPTS = -Ilocalinc
|
|
in order to compile.
|
|
|
|
This version, reluctanly, includes <stdlib.h>, which won't exist
|
|
on older systems or those that aren't even close to the ANSI C
|
|
standard. There is a null "stdlib.h", and some other bogus headers,
|
|
in subdirectory "localinc"; if you get complaints about missing
|
|
stdlib.h and others, uncomment the line with COPTS=-Ilocalinc
|
|
in the Makefile, and try again.
|
|
|
|
You must have either <stdarg.h> or the older <varargs.h>, otherwise you'll
|
|
have to butcher some routines in print.c.
|
|
|
|
Beyond that, I have tried to make a program that doesn't need any
|
|
command-line defines (-D) to specify what version of UNIX is in use,
|
|
by using the definitions available in the system #include
|
|
files. For example, the lstat(2) call is normally found in
|
|
4BSD systems, but might be grafted into some other variant
|
|
of UNIX. If it's done right (ie., using the same definitions),
|
|
my program will compile and work correctly. Look at the #ifdefs
|
|
to see how it's done.
|
|
|
|
I've also tried to include source for all the non-portable library routines
|
|
I used (getopt, str*). Non-portable here means `not in every
|
|
reasonably standard UNIX out there: V7, System V, 4BSD'.
|
|
These are in subdirectory "localsrc", and not used unless you
|
|
need them; again, see the Makefile.
|
|
|
|
There is one area that just might cause problems. On System
|
|
V, they moved the definition of major() and minor() out of
|
|
<sys/types.h> into <sys/sysmacros.h>. Hence, if major isn't
|
|
defined after including types.h, I automatically include sys/sysmacros.h.
|
|
This will work for 99% of the systems out there. ONLY if you
|
|
have a system in which neither types.h nor sysmacros.h defines
|
|
`major' will this automatic include fail (I hope). On such
|
|
systems, you will get a compilation error in trying to compile
|
|
a warning message. Please do the following:
|
|
|
|
1) change the appropriate #include at the start of fsmagic.c
|
|
and 2) let me know the name of the system, the release number,
|
|
and the name of the header file that *does* include
|
|
this "standard" definition.
|
|
|
|
If you are running the old Ritchie PDP-11 C compiler or
|
|
some other compiler that doesn't know about `void', you will have
|
|
to include `-Dvoid=int' in the variable COPTS in the Makefile.
|
|
|
|
Other than this, there should be no portability problems,
|
|
but one never knows these days. Please let me know of any
|
|
other problems you find porting to a UNIX system. I don't much
|
|
care about non-UNIX systems but will collect widely-used magic
|
|
numbers for them as well as for UNIX systems.
|
|
|
|
Ian Darwin
|
|
(address in README)
|