Annotation of src/usr.bin/file/PORTING, Revision 1.2
1.2 ! deraadt 1: @(#) $OpenBSD: PORTING,v 1.1.1.1 1995/10/18 08:45:08 deraadt Exp $
1.1 deraadt 2: Portability of the new file(1) command.
3:
4: Read this file only if the program doesn't compile on your system.
5:
6: This release has been around UNIX; it has been compiled and tested
7: in the following environments:
8:
9: SunOS sqarc 4.1.1 8 sun4
10: No problems.
11: ULTRIX squint 4.2 0 RISC
12: No problems.
13: A/UX sqmac 3.0a9 SVR22 mc68020
14: No problems.
15: AIX sqibm 2 3 000XXXXXX100
16: Had weird "make" problems making "magic" file automatically; just
17: built it by hand. Your mileage may vary.
18: SCO sqwang 3.2 2 i386
19: Compiles fine; their weird make can't handle "[a-z]*" as a dependancy,
20: so build magic by hand. Runs fine.
21: sqzme sqzme 3.1.1 3 3B2
22: The 3B2 SVR3 needed a few tweaks as well as COPTS = -Ilocalinc
23: in order to compile.
24:
25: This version, reluctanly, includes <stdlib.h>, which won't exist
26: on older systems or those that aren't even close to the ANSI C
27: standard. There is a null "stdlib.h", and some other bogus headers,
28: in subdirectory "localinc"; if you get complaints about missing
29: stdlib.h and others, uncomment the line with COPTS=-Ilocalinc
30: in the Makefile, and try again.
31:
32: You must have either <stdarg.h> or the older <varargs.h>, otherwise you'll
33: have to butcher some routines in print.c.
34:
35: Beyond that, I have tried to make a program that doesn't need any
36: command-line defines (-D) to specify what version of UNIX is in use,
37: by using the definitions available in the system #include
38: files. For example, the lstat(2) call is normally found in
39: 4BSD systems, but might be grafted into some other variant
40: of UNIX. If it's done right (ie., using the same definitions),
41: my program will compile and work correctly. Look at the #ifdefs
42: to see how it's done.
43:
44: I've also tried to include source for all the non-portable library routines
45: I used (getopt, str*). Non-portable here means `not in every
46: reasonably standard UNIX out there: V7, System V, 4BSD'.
47: These are in subdirectory "localsrc", and not used unless you
48: need them; again, see the Makefile.
49:
50: There is one area that just might cause problems. On System
51: V, they moved the definition of major() and minor() out of
52: <sys/types.h> into <sys/sysmacros.h>. Hence, if major isn't
53: defined after including types.h, I automatically include sys/sysmacros.h.
54: This will work for 99% of the systems out there. ONLY if you
55: have a system in which neither types.h nor sysmacros.h defines
56: `major' will this automatic include fail (I hope). On such
57: systems, you will get a compilation error in trying to compile
58: a warning message. Please do the following:
59:
60: 1) change the appropriate #include at the start of fsmagic.c
61: and 2) let me know the name of the system, the release number,
62: and the name of the header file that *does* include
63: this "standard" definition.
64:
65: If you are running the old Ritchie PDP-11 C compiler or
66: some other compiler that doesn't know about `void', you will have
67: to include `-Dvoid=int' in the variable COPTS in the Makefile.
68:
69: Other than this, there should be no portability problems,
70: but one never knows these days. Please let me know of any
71: other problems you find porting to a UNIX system. I don't much
72: care about non-UNIX systems but will collect widely-used magic
73: numbers for them as well as for UNIX systems.
74:
75: Mark Moraes and Christos Zoulas
76: (address in README)