mirror of
https://github.com/GnoConsortium/gno.git
synced 2024-12-22 14:30:29 +00:00
1ada2c4a0e
- fixed some typos
314 lines
10 KiB
Plaintext
314 lines
10 KiB
Plaintext
7 Jan 97
|
|
|
|
$Id: notes.960227,v 1.2 1997/03/05 07:25:48 gdr Exp $
|
|
|
|
Header File Changes
|
|
===================
|
|
|
|
Where the Orca headers no longer suffice, effort has been made to make use
|
|
of the BSD 4.4 headers with minimal modifications.
|
|
|
|
Some BSD headers, due to the filenames used, cannot be placed on ProDOS
|
|
filesystems. There are a few problems with this (in my perceived order
|
|
of priority):
|
|
- having headers on HFS volumes slows down compilations
|
|
- the usual lack of disk optimization/fixing avail for HFS
|
|
- there are GNO users that don't use HFS volumes
|
|
OTOH, we don't want in general to break ported code which uses source like
|
|
#include <net/if_arp.h>
|
|
Therefore, I have renamed the original source files to use ProDOS naming
|
|
conventions. In this example, the new file is <net/if.arp.h>. There
|
|
is *also* a file called <net/if_arp.h> which can be installed on an
|
|
HFS volume, but this contains little more than an #include <net/if.arp.h>.
|
|
This way, the headers which require an HFS volume can be _optionally_
|
|
installed by the GNO user.
|
|
|
|
For the sake of compile time efficiency, I've been changing lines in
|
|
the GNO system header files like
|
|
#include <sys/types.h>
|
|
to
|
|
#ifndef _SYS_TYPES_H_
|
|
#include <sys/types.h>
|
|
#endif
|
|
This isn't complete, but it's getting there. I didn't touch any Orca/C
|
|
headers that used nested #includes but otherwise needed no modifications.
|
|
|
|
13/orcacdefs/defaults.h:
|
|
I'm trying to push through some "standard" arch and OS defines,
|
|
since they really help to be defined in many applications ports.
|
|
The contents of defaults.h should be copied into your
|
|
13/orcacdefs/defaults.h file (or copied to that directory if you
|
|
don't already have such a file).
|
|
|
|
The macros defined in that file are
|
|
__appleiigs__
|
|
__GNO__
|
|
__ORCAC_VERSION
|
|
_ANSI_SOURCE (if __KeepNamespacePure__ is defined)
|
|
__KeepNamespacePure__ (if _ANSI_SOURCE is defined)
|
|
|
|
Currently nothing depends on the _value_ of "__GNO__", just
|
|
that it is defined. The system header files which would have
|
|
bad side effects if __GNO__ is not defined will bitch if this
|
|
is the case. These header files are ones where it was desirable
|
|
to leave the BSD version in for reference.
|
|
|
|
By putting __ORCAC_VERSION in defaults.h, we know that
|
|
- it isn't defined for earlier Orca/C versions
|
|
- it can be incremented
|
|
|
|
Orca headers use __KeepNamespacePure__ and BSD headers use
|
|
_ANSI_SOURCE. We try to make them identical.
|
|
|
|
arpa/nameser.h:
|
|
The non-standard field 'pr' (primary server required) in
|
|
typedef struct {} HEADER has been removed, and it's storage
|
|
moved to the 'unused' field. The size of the structure and
|
|
the offsets of the remaining members haven't changed. This
|
|
was a BSD change, not mine.
|
|
|
|
The following macros have been added. See the header for
|
|
their meanings:
|
|
__BIND
|
|
HFIXEDSZ
|
|
INT32SZ
|
|
INT64SZ
|
|
INADDRSZ
|
|
|
|
arpa/telnet.h:
|
|
This file appears to have lots of changes, but I think
|
|
that, given a recompilation of the relevent sources, they
|
|
should be benign. If not, then the descriptions below
|
|
should give sufficient info to #ifdef out the problem parts.
|
|
|
|
There are new TELOPT_* macros, values 35-39, inclusive.
|
|
This affects NTELOPTS, TELOPT_LAST, TELOPT_OK, and the
|
|
'telopts' character array.
|
|
|
|
The following arrays are now terminated by a NULL pointer
|
|
telopts
|
|
telcmnds
|
|
slc_names
|
|
|
|
The following macros are also new:
|
|
TELQUAL_INFO
|
|
TELQUAL_REPLY
|
|
TELQUAL_NAME
|
|
LFLOW_* (4 of them)
|
|
MODE_SOFT_TAB
|
|
MODE_LIT_ECHO
|
|
MODE_MASK (changed due to two previous macros)
|
|
SLC_NAME_OK
|
|
SLC_NAME
|
|
|
|
fcntl.h:
|
|
used to contain #defines for L_SET, L_INCR, and L_XTND. These
|
|
were renamed by POSIX 1003.1 to SEEK_SET, SEEK_CUR, and SEEK_END,
|
|
respectively. If the old macros are desired, they can be obtained
|
|
by #including <unistd.h>.
|
|
|
|
machine/ansi.h:
|
|
wchar_t (and therefore rune_t) have been changed from
|
|
"unsigned short" to "int" to match the is*() definitions
|
|
in <ctype.h>. This shouldn't be a problem since there aren't
|
|
yet any library routines that use these types.
|
|
|
|
machine/endian.h
|
|
Note that under BSD 4.4, both BIG_ENDIAN and LITTLE_ENDIAN (and,
|
|
for that matter, PDP_ENDIAN) are defined. The way to test
|
|
endianness is not
|
|
#ifdef LITTLE_ENDIAN
|
|
but rather
|
|
#if (BYTE_ORDER == LITTLE_ENDIAN)
|
|
I doubt that the kernel uses this macro ...
|
|
|
|
netdb.h:
|
|
decl of inet_aton() removed; it should come from arpa/inet.h
|
|
decl of struct rpcent removed; it should come from rpc/rpc.h
|
|
|
|
net/*:
|
|
It appears that this directory is very much non-BSD. I haven't
|
|
touched it at all -- something in me says, "Danger, Will!".
|
|
After things settle down, it might be worth it to make it
|
|
closer to BSD, at least in the file names. However, I'm not
|
|
going to worry about it right now.
|
|
|
|
For your perusal (if required) I've included the directory
|
|
net.BSD which is the BSD 4.4 version of the net/* files.
|
|
This subdirectory is not intended to be part of the GNO
|
|
distribution. (The net.BSD directory is in the NOTES directory.)
|
|
|
|
netinet/in.h:
|
|
If the functions in_makeaddr() and in_lnaof() are used in the
|
|
kernel, could you prototype them and reenable them where they
|
|
appear in this file? If not, please delete them and the
|
|
enclosing #ifdef.
|
|
|
|
netinet/ip.h:
|
|
BSD 4.4 uses a different value for IPTOS_PREC_ROUTINE than was
|
|
in your original header. I've got both in (one #ifdef'd), but
|
|
could you delete the non-BSD one if it doesn't impact the
|
|
kernel or GS/TCP?
|
|
|
|
pwd.h:
|
|
struct passwd has changed in BSD 4.4. getpwent and related
|
|
routines have been updated, so any program that is using those
|
|
routines to access the /etc/passwd file will be fine. The
|
|
file itself has not changed.
|
|
|
|
resolv.h:
|
|
Name of "struct state" has changed to "__res_state" (I suspect
|
|
this was done to keep from polluting the namespace). The
|
|
"options" field has changed from long to u_long, and the
|
|
structure has been lengthened.
|
|
|
|
The new 'struct __res_state' has, however, been #ifdef'd out
|
|
and you have your old 'struct state'. Macro values haven't
|
|
changed. The functions you were using weren't prototyped, so
|
|
I had to assume the BSD prototypes are correct.
|
|
|
|
If you are willing to change to use 'struct __res_state', then
|
|
check out the #define of '__RES' near the top of <resolv.h>.
|
|
If you change then '__RES' should become an unconditional #define.
|
|
|
|
stdio.h:
|
|
As of Orca/C v2.1.1b2, the definition of FILE has changed.
|
|
The _pbk field has changed from
|
|
int _pbk;
|
|
to
|
|
int _pbk[2];
|
|
This is controlled via __ORCAC_VERSION defined in defaults.h
|
|
|
|
sys/ioccom.h:
|
|
This header file now specifies that the high 3 (vice 2) bits
|
|
of the uppper word are used to encode in/out status of the
|
|
parameter; is this compatible with the kernel? (Grep for
|
|
"IOCPARM_MASK" and look at the comments immediately prior to
|
|
it.)
|
|
|
|
### sys/ioctl.h:
|
|
I've included a "GNO-specific" section -- are these GNO-specific
|
|
macros actually used anywhere?
|
|
|
|
There are still some conflicts in this file with <sys/termios.h>,
|
|
however they're not new -- they were in the headers you sent me
|
|
as well. One of these is the TOSTOP and associated macros.
|
|
|
|
sys/socket.h:
|
|
It appears that the structures you used for "msghdr" and "sockaddr"
|
|
have been deemed out-of-date in 4.4BSD; they have been renamed
|
|
"omsghdr" and "osockaddr", respectively. I don't know how you
|
|
want to handle this; if necessary I guess one could use #ifdefs
|
|
and #define sockaddr as osockaddr, et al. I don't think the
|
|
new structs should be outright deleted from the header.
|
|
|
|
The field sequence, macro values, and so forth match your previous
|
|
implementation.
|
|
|
|
So that your routines are still getting the correct prototypes,
|
|
I've used the macros __SOCKADDR and __MSGHDR in the header file
|
|
prototypes; they're #defined right above the decls.
|
|
|
|
sys/termios.h:
|
|
The names of two of the fields in struct termios has changed:
|
|
ispeed --> c_ispeed
|
|
ospeed --> c_ospeed
|
|
|
|
See also the comments for <sys/ioctl.h>
|
|
|
|
sys/unistd.h:
|
|
The values of some of the _PC* macros have changed. I don't
|
|
think this should matter since the functions pathconf(3) and
|
|
fpathconf(3) haven't yet been implemented.
|
|
|
|
The following headers I don't believe are part of GNO, although they
|
|
were included with the headers you sent. Please correct me if I'm
|
|
wrong:
|
|
cons.h
|
|
console.h
|
|
debug.h
|
|
sprite.h
|
|
sys/m16.ioctl -- perhaps part of GNO, but not a header
|
|
|
|
The following Orca headers were modified, but I don't believe that the
|
|
mods are required for GNO users. (Are these fixes that should be
|
|
forwarded to Mike W?) [asked 12 Jan]
|
|
appleshare.h
|
|
appletalk.h <-- out of date as well
|
|
control.h
|
|
locator.h
|
|
misctool.h
|
|
|
|
The following headers appear to be not only non-GNO, but obsolete:
|
|
newshell.h
|
|
shell2.h
|
|
|
|
|
|
Library Changes:
|
|
===============
|
|
|
|
There were lots of additions.
|
|
|
|
libc/sys/trap.asm [formerly l2.asm]
|
|
|
|
execve renamed to _execve
|
|
|
|
getpgrp renamed to _getpgrp
|
|
|
|
kvm_getproc, kvm_nextproc, and kvm_setproc provided as alternate
|
|
entry points into kvmgetproc, kvmnextproc, and kvmsetproc
|
|
(respectively) since they were documented entry points in GNO v2.0.4
|
|
|
|
setpgid is provided as an alternate entry point to setpgrp.
|
|
The two are identical (under BSD), but the latter is considered
|
|
obsolete.
|
|
|
|
vfork added as alternate entry point to fork.
|
|
|
|
libc/sys/syscall.c
|
|
The mkdir implementation could easily accept a mode parameter
|
|
and thus become POSIX compliant. Should the mode be added?
|
|
|
|
Manual Page Considerations:
|
|
==========================
|
|
|
|
NOTE NOTE NOTE:
|
|
Currently there is a problem with the nroff package,
|
|
and many of the man pages will not look right on the
|
|
IIgs. I'm working on an update of nroff. Putting it under
|
|
Insight has shown a significant number of memory trashing
|
|
bugs (which are now gone).
|
|
|
|
undocumented(2):
|
|
This man page lists the undocumented kernel calls. I don't
|
|
know if all of these are supposed to _remain_ undocumented ...
|
|
|
|
kill(2):
|
|
Please verify that description of operation with negative process
|
|
numbers matches implementation. If there is no match, and
|
|
the implementation cannot or will not be changed, please
|
|
delete these paragraphs and change the STANDARDS section
|
|
to read "The kill function is not POSIX 1003.1 conformant."
|
|
|
|
semaphore(2):
|
|
I'm guessing at the behavior of scount; please verify it.
|
|
|
|
intro(2):
|
|
The "DEFINITIONS" section of this man page is as yet verbatim
|
|
from the BSD man page; I haven't had a chance to review it.
|
|
If you have any comments, speak up ...
|
|
|
|
|
|
Tools
|
|
=====
|
|
|
|
mkso:
|
|
I'm not done mkso yet (mkso is the program that creates
|
|
the .so links required for the various manual pages). I
|
|
still have to make it check for the legality of file names
|
|
on the current file system. I also plan to make it such
|
|
that one can place those .so links that require HFS on
|
|
another partition, and still have them find the sourced
|
|
files.
|
|
|