keith%tira@GARGOYLE.UCHICAGO.EDU (06/14/89)
Hi!
I've found a number of bugs in bash -- compile-time problems actually.
I'm compiling for SunOS 4.0 on a Sun 4 (sparc) using Sun's cc. I'm
enclosing the relevant parts of the Makefile at the end of this list.
I'm not sending you diffs because I cheated in my fixes (I just
commented out one or the other of the inconsistencies at random to
get it to compile). So far, bash looks like it works fine. I have to
say that it looks pretty much like the best of all three (sh/csh/ksh)
worlds. Thanks!
[If you want more info or actual diffs or something, let me know.]
Most of the problems have to do with inconsistent declarations of functions.
1. get_string_value used (and implicitly declared int ()) prior to the
inclusion of variables.h, which declares it char *():
$ egrep -n 'get_string_value|variables\.h' readline.[ch]
readline.c:241: rl_reset_terminal (get_string_value ("TERM"));
readline.c:2152:#include "variables.h"
readline.c:2582: path = get_string_value ("PATH");
readline.c:2840: /* KDW: char *get_string_value (); */
readline.c:2841: temp_home = get_string_value ("HOME");
readline.c:2873: /* KDW: char *get_string_value (); */
readline.c:2877: tp = get_string_value ("PWD");
readline.c:2879: tp = get_string_value ("OLDPWD");
2. A couple missing \n\'s in builtins.c causes a newline in string
constant error, near line 364.
3. rl_handle_sigwinch forward-declared static near line 68 in readline.c
Can you do this in ANSI C??
4. move_cursor_relative forward-declared static near line 726 in
readline.c.
5. throw_to_top_level forward-declared Sighandler on line 528 in
shell.c and implicitly declared int later.
6. termination_unwind_protect forward-declared Sighandler on line 756 in
shell.c and implicitly declared int later.
The pertinent parts of my makefile follow:
----- Makefile (extracts) -----
# Of course, you cannot do this the first time through...
#SHELL=/usr/gnu/bin/bash
SHELL=/bin/sh
MAINTAINER = '"keith@curry.uchicago.edu"'
# Destination installation directory. The shell is copied here if
# you do a `make install'. The directory name does NOT end in a slash.
DESTDIR = /usr/local/bin
# The name of the target hardware. It makes a difference. If your
# machine doesn't seem to be represented by one of the machines here,
# try one and see how well you do.
# SUN3, SUN4, VAX, SONY, CONVEX, HP, HP9KS300
TARGET = SUN4
# The name of the target operating system. There isn't such a big
# difference between SUNOS3 and Bsd. But there might be in the future.
# SUNOS3, SUNOS4, SYSV, Bsd, HPUX
OS = SUNOS4
# You only need this if you are hacking the shell in a location
# that doesn't do enough backups, or does a poor job. In that
# case, BACKUP_DIR should be the name of a directory on another
# device (i.e. different than the one you are building the shell
# on), and you should do `make backup' at least once a day.
BACKUP_DIR = /usr/gnu/backups
# PROFILE_FLAGS is either -pg, to generate profiling info for use
# with gprof, or nothing (the default).
PROFILE_FLAGS=
# HP-UX compilation requires the BSD library.
#LOCAL_LIBS = -lBSD
#GCC_SUNOS4_FLAG = -Bstatic
DEBUG_FLAGS = $(PROFILE_FLAGS) -g $(GCC_SUNOS4_FLAG)
LDFLAGS = $(DEBUG_FLAGS)
CFLAGS = $(DEBUG_FLAGS) -D${TARGET} -DTARGET=${TARGET} -D${OS}
# The name of the termcap library. /usr/local/lib/gnutermcap?
TERMCAP = termcap
# If you don't have Bison use "yacc". Otherwise use "bison -y".
BISON = yacc
# If you don't have Gcc use cc.
GCC = cc
# Make TRADITIONAL be `-traditional' if you are using Gcc 1.2x
# or greater.
TRADITIONAL =
#
####################################################################
# Don't change this one, change the one above it.
CC = $(GCC)
----- End of Makefile extracts -----
Keith Waclena keith@curry.uchicago.edu
TIRA / U of Chicago keith%curry@uchimvs1.bitnet
1100 E.57th.St Chi IL 60637 ...uunet!curry.uchicago.edu!keith