nazgul@EDDIE.MIT.EDU@apollo.UUCP (02/18/87)
In doing the port to the Apollo I came across a number of problems
in the non-libapollo code which I broke into two categories - bugs,
and porting problems. You may argue with where to draw the line, but
the changes are small enough, so here they are. If you want context
diffs send me mail, if enough people want them I'll post them.
One comment -
The number one porting problem I come across when porting to
Apollo's (and the hardest to catch, although our compiler tries
real hard) is the assumption that stack variables are intialized
to zero. Not even in the main procedure can you make this assumption.
Time and time again I run across things like:
char *filename;
if (argc > 1) filename = argv[1];
if (filename) ...
If you want your code to be portable you have to initialize 'filename'
to NULL! Sigh.
Oh, yes. One other thing - malloc(strlen(foo)+1)
^^
Some machines will politely give you one byte of leeway, but you can't
count on it.
Anyway. Here they are.
****
Log.bugs
****
showimg/Makefile
Changed CONFDIR from /usr/users/wyatte/bin to /usr/new
xcolors/xcolors.c
Initialized option, border_color, back_color, fore_color and border_width
to NULL and 0. STACK VARIABLES ARE NOT GUARANTEED TO BE ZEROED!!!!!
xfd/xfd.c
Ditto for border_width and geometry.
xterm/button.c
The code wasn't checking to see if XFetchBytes returned NULL, and
was thus dying horribly later on if it did.
xterm/resize.c
Increased the buffer size of termcap and newtc.
Added Apollo #ifdefs to get around some problems with /dev/tty which
will go away in a release or two.
Fixed some arithmetic problem with the strncpy's which was causing
failure if the string had not been previously nulled (by chance).
xtrek/input.c
atan2(0, 0) is undefined (from one side it approaches pi, the other 0).
I added a test and returned 0 if they both were zero (I haven't the
slightest what they *should* return, but 0 sounded better than pi.
xtrek/orbit.c
Declared atan2.
xtrek/rmove.c
Same problem as input.c
xtrek/stats.c
Occasionally you would die if you came up with stats on. As far as I
can figure this was due to the program trying to print stats before
the window was created, or something silly like that. In any case
a test to see if 'rp' is null seemed to get rid of the problem.
****
Log.port
****
Makefile
Added an option to allow the global changing of the CFLAGS in subsidiary
makefiles.
newflags:
for i in ${OTHERDIR}; do \
(cd $$i; echo "fixing $$i/Makefile";\
(echo 'g/^CFLAGS/s/${OLDF}/${NEWF}/p'; echo w; echo q) | ed Makefile;\
cd ..);\
done
hacks/bee/def.h
Included <sys/types.h>
hacks/bitrot/bitrot.c
Changed 'display' size.
Changed strncpy to a strcpy.
showimg/shopt.h
Added include of <sys/types.h>
showimg/shzoom.c
Ditto, also took out declaration of malloc as unsigned char and
added a cast. (Otherwise it gives warnings on type mismatches
elsewhere.
uwm/Iconify.c
Got rid of illicit register variable declarations (the code later
took the address of the variable). Note: Due to a bug in the
Apollo compiler this was flagged as an error where it should have
just been a warning (actually it should only have told me if I asked,
but we'll ignore the ongoing fight over that).
uwm/Move.c
Ditto.
uwm/NewIconify.c
Ditto.
uwm/Resize.c
Ditto.
ximpv/impv.h
Changed declarations of diameter and pages to be externs.
xterm/Makefile
Changed resize to use CFLAGS instead of cflags
xterm/main.c
Added include of <sys/types.h>
xwm/Change.c
More registers where they're shouldn't be.
xwm/LowerIconify.c
Ditto.
xwm/Move.c
Ditto.
-------