1618c59038
1997-11-04 Ulrich Drepper <drepper@cygnus.com> * manual/filesys.texi: Correct description of return value for readdir_r. * sysdeps/unix/readdir_r.c (__readdir_r): Return value of errno not -1 in error case. * sysdeps/generic/readdir_r.c (__readdir_r): Return ENOSYS not -1. Reported by Jim Meyering <meyering@eng.ascend.com>. 1997-11-02 Paul Eggert <eggert@twinsun.com> * strftime.c: Use host's underlying strftime to access locale-specific info. This is useful e.g. when building GNU Emacs under Solaris 2.6. (weekday_name, month_name): Omit if HAVE_STRFTIME. (my_strftime): New macro, which names the strftime function that this source file produces. (strftime): #undef if emacs is defined; this works around Emacs 20.2's method of compiling with -Dstrftime=emacs_strftime. Also, declare as a function returning size_t, for similar reasons. (my_strftime): If HAVE_STRFTIME, use underlying strftime to handle locale-dependent formats like %a and %Ec. 1997-11-02 Paul Eggert <eggert@twinsun.com> * strftime.c (memcpy_lowcase, memcpy_uppcase, strftime): Ensure that args to islower and isupper are valid unsigned chars, even if char is signed. 1997-11-04 Ulrich Drepper <drepper@cygnus.com> * assert/Makefile (headers): Add assert.h, necessary after patch to Makefiles. * ctype/Makefile (headers): Likewise. * pwd/Makefile (headers): Likewise. * grp/Makefile (headers): Likewise. Patch by NIIBE Yutaka <gniibe@mri.co.jp>. 1997-11-04 03:08 Ulrich Drepper <drepper@cygnus.com> * glibcbug.in: Add information about configured target. Patch by Zack Weinberg <zack@rabi.phys.columbia.edu>. * elf/dl-lookup.c (_dl_lookup_versioned_symbol): Be prepared for empty string as `reference_name' parameter. * elf/rtld.c: Don't set real program name in l_name of main object. * manual/creature.texi: Apply Paul Eggert's patch for better _POSIX_C_SOURCE description. * stdlib/strfmon.c: Fix numerous bugs in formatting. * time/strptime.c [%Y]: Treat all years, not only those which fit in time_t. [%Oy]: Really store value. Patches by Paul Eggert. * wcsmbs/wchar.h: Fix documentation bugs. Declare wcsdup only is __USE_GNU. 1997-11-03 02:48 Ulrich Drepper <drepper@cygnus.com> * sysdeps/generic/bits/errno.h: Remove all error definitions. This is only meant as a stub. 1997-10-31 Andreas Jaeger <aj@arthur.rhein-neckar.de> * sysdeps/standalone/bits/errno.h: Copied from sysdeps/generic/bits/errno.h and added all know error codes that are used in glibc. 1997-11-03 02:23 Ulrich Drepper <drepper@cygnus.com> * sysdeps/generic/make_siglist.c: Add comment to clarify use and make sure the correct _NSIG value is used. Patch by Klaus Espenlaub <kespenla@student.informatik.uni-ulm.de>. 1997-11-03 00:20 Ulrich Drepper <drepper@cygnus.com> * intl/localealias.c (read_alias_file): Correct handling of line reader which sometimes skipped complete lines (PR 205). Optimize a bit by using mempcpy. 1997-11-02 16:59 Philipp Thomas <kthomas@gwdg.de> * intl/localealias.c (read_alias_file): Correctly set map[].value instead of overwriting map[].alias 1997-11-02 15:32 Ulrich Drepper <drepper@cygnus.com> * libc.map: Add _IO_flockfile and _IO_funlockfile. Suggested by H.J. Lu <hjl@lucon.org>. 1997-11-02 15:17 Ulrich Drepper <drepper@cygnus.com> * elf/dl-error.c (_dl_signal_error): Use _strerror_internal instead of strerror. * assert/assert-perr.c: Use _strerror_internal directly instead of __strerror_r. Suggested by Joe Keane <jgk@jgk.org>. 1997-11-01 16:46 Zack Weinberg <zack@rabi.phys.columbia.edu> * configure.in: Check for gcc-2.7.2 -pipe bug and hack around it (PR 245). 1997-11-01 Paul Eggert <eggert@twinsun.com> * time/strptime.c (strptime_internal): Fix bug: %Oy forgot to assign tm_year. Do not restrict %Y to years less than 2037 even on 32-bit time_t hosts, as strptime returns an int tm_year, not a time_t, and it's possible for programs to use the year without having to use time_t. non-directories in the list (PR 203).
247 lines
5.9 KiB
Bash
247 lines
5.9 KiB
Bash
#! /bin/sh
|
||
#
|
||
# glibcbug - create a bug report and mail it to the bug address.
|
||
#
|
||
# configuration section:
|
||
# these variables are filled in by configure
|
||
#
|
||
VERSION="@VERSION@"
|
||
BUGGLIBC="bugs@gnu.org"
|
||
ADDONS="@subdirs@"
|
||
HOST="@host@"
|
||
|
||
PATH=/bin:/usr/bin:/usr/local/bin:$PATH
|
||
export PATH
|
||
|
||
TEMP=/tmp/glibcbug.$$
|
||
|
||
BUGADDR=${1-$BUGGLIBC}
|
||
ENVIRONMENT=`uname -a`
|
||
|
||
: ${EDITOR=emacs}
|
||
|
||
: ${USER=${LOGNAME-`whoami`}}
|
||
|
||
trap 'rm -f $TEMP $TEMP.x; exit 1' 1 2 3 13 15
|
||
trap 'rm -f $TEMP $TEMP.x' 0
|
||
|
||
|
||
# How to read the passwd database.
|
||
PASSWD="cat /etc/passwd"
|
||
|
||
if [ -f /usr/lib/sendmail ] ; then
|
||
MAIL_AGENT="/usr/lib/sendmail -oi -t"
|
||
elif [ -f /usr/sbin/sendmail ] ; then
|
||
MAIL_AGENT="/usr/sbin/sendmail -oi -t"
|
||
else
|
||
MAIL_AGENT=rmail
|
||
fi
|
||
|
||
# Figure out how to echo a string without a trailing newline
|
||
N=`echo 'hi there\c'`
|
||
case "$N" in
|
||
*c) ECHON1='echo -n' ECHON2= ;;
|
||
*) ECHON1=echo ECHON2='\c' ;;
|
||
esac
|
||
|
||
# Find out the name of the originator of this PR.
|
||
if [ -n "$NAME" ]; then
|
||
ORIGINATOR="$NAME"
|
||
elif [ -f $HOME/.fullname ]; then
|
||
ORIGINATOR="`sed -e '1q' $HOME/.fullname`"
|
||
else
|
||
# Must use temp file due to incompatibilities in quoting behavior
|
||
# and to protect shell metacharacters in the expansion of $LOGNAME
|
||
$PASSWD | grep "^$LOGNAME:" | awk -F: '{print $5}' | sed -e 's/,.*//' > $TEMP
|
||
ORIGINATOR="`cat $TEMP`"
|
||
rm -f $TEMP
|
||
fi
|
||
|
||
if [ -n "$ORGANIZATION" ]; then
|
||
if [ -f "$ORGANIZATION" ]; then
|
||
ORGANIZATION="`cat $ORGANIZATION`"
|
||
fi
|
||
else
|
||
if [ -f $HOME/.organization ]; then
|
||
ORGANIZATION="`cat $HOME/.organization`"
|
||
elif [ -f $HOME/.signature ]; then
|
||
ORGANIZATION=`sed -e "s/^/ /" $HOME/.signature; echo ">"`
|
||
fi
|
||
fi
|
||
|
||
# If they don't have a preferred editor set, then use
|
||
if [ -z "$VISUAL" ]; then
|
||
if [ -z "$EDITOR" ]; then
|
||
EDIT=vi
|
||
else
|
||
EDIT="$EDITOR"
|
||
fi
|
||
else
|
||
EDIT="$VISUAL"
|
||
fi
|
||
|
||
# Find out some information.
|
||
SYSTEM=`( [ -f /bin/uname ] && /bin/uname -a ) || \
|
||
( [ -f /usr/bin/uname ] && /usr/bin/uname -a ) || echo ""`
|
||
ARCH=`[ -f /bin/arch ] && /bin/arch`
|
||
MACHINE=`[ -f /bin/machine ] && /bin/machine`
|
||
|
||
ORGANIZATION_C='<organization of PR author (multiple lines)>'
|
||
SYNOPSIS_C='<synopsis of the problem (one line)>'
|
||
SEVERITY_C='<[ non-critical | serious | critical ] (one line)>'
|
||
PRIORITY_C='<[ low | medium | high ] (one line)>'
|
||
CLASS_C='<[ sw-bug | doc-bug | change-request | support ] (one line)>'
|
||
RELEASE_C='<release number or tag (one line)>'
|
||
ENVIRONMENT_C='<machine, os, target, libraries (multiple lines)>'
|
||
DESCRIPTION_C='<precise description of the problem (multiple lines)>'
|
||
HOW_TO_REPEAT_C='<code/input/activities to reproduce the problem (multiple lines)>'
|
||
FIX_C='<how to correct or work around the problem, if known (multiple lines)>'
|
||
|
||
|
||
cat > $TEMP <<EOF
|
||
SEND-PR: -*- send-pr -*-
|
||
SEND-PR: Lines starting with \`SEND-PR' will be removed automatically, as
|
||
SEND-PR: will all comments (text enclosed in \`<' and \`>').
|
||
SEND-PR:
|
||
From: ${USER}
|
||
To: ${BUGADDR}
|
||
Subject: [50 character or so descriptive subject here (for reference)]
|
||
|
||
>Submitter-Id: net
|
||
>Originator: ${ORIGINATOR}
|
||
>Organization:
|
||
${ORGANIZATION- $ORGANIZATION_C}
|
||
>Confidential: no
|
||
>Synopsis: $SYNOPSIS_C
|
||
>Severity: $SEVERITY_C
|
||
>Priority: $PRIORITY_C
|
||
>Category: libc
|
||
>Class: $CLASS_C
|
||
>Release: libc-${VERSION}
|
||
>Environment:
|
||
$ENVIRONMENT_C
|
||
`[ -n "$HOST" ] && echo Host type: $HOST`
|
||
`[ -n "$SYSTEM" ] && echo System: $SYSTEM`
|
||
`[ -n "$ARCH" ] && echo Architecture: $ARCH`
|
||
`[ -n "$MACHINE" ] && echo Machine: $MACHINE`
|
||
`[ -n "$ADDONS" ] && echo Addons: $ADDONS`
|
||
|
||
>Description:
|
||
$DESCRIPTION_C
|
||
>How-To-Repeat:
|
||
$HOW_TO_REPEAT_C
|
||
>Fix:
|
||
$FIX_C
|
||
EOF
|
||
|
||
chmod u+w $TEMP
|
||
cp $TEMP $TEMP.x
|
||
|
||
eval $EDIT $TEMP
|
||
|
||
if cmp -s $TEMP $TEMP.x; then
|
||
echo "File not changed, no bug report submitted."
|
||
exit 1
|
||
fi
|
||
|
||
#
|
||
# Check the enumeration fields
|
||
|
||
# This is a "sed-subroutine" with one keyword parameter
|
||
# (with workaround for Sun sed bug)
|
||
#
|
||
SED_CMD='
|
||
/$PATTERN/{
|
||
s|||
|
||
s|<.*>||
|
||
s|^[ ]*||
|
||
s|[ ]*$||
|
||
p
|
||
q
|
||
}'
|
||
|
||
|
||
while :; do
|
||
CNT=0
|
||
|
||
#
|
||
# 1) Severity
|
||
#
|
||
PATTERN=">Severity:"
|
||
SEVERITY=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
|
||
case "$SEVERITY" in
|
||
""|non-critical|serious|critical) CNT=`expr $CNT + 1` ;;
|
||
*) echo "$COMMAND: \`$SEVERITY' is not a valid value for \`Severity'."
|
||
esac
|
||
#
|
||
# 2) Priority
|
||
#
|
||
PATTERN=">Priority:"
|
||
PRIORITY=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
|
||
case "$PRIORITY" in
|
||
""|low|medium|high) CNT=`expr $CNT + 1` ;;
|
||
*) echo "$COMMAND: \`$PRIORITY' is not a valid value for \`Priority'."
|
||
esac
|
||
#
|
||
# 3) Class
|
||
#
|
||
PATTERN=">Class:"
|
||
CLASS=`eval sed -n -e "\"$SED_CMD\"" $TEMP`
|
||
case "$CLASS" in
|
||
""|sw-bug|doc-bug|change-request|support) CNT=`expr $CNT + 1` ;;
|
||
*) echo "$COMMAND: \`$CLASS' is not a valid value for \`Class'."
|
||
esac
|
||
|
||
[ $CNT -lt 3 ] &&
|
||
echo "Errors were found with the problem report."
|
||
|
||
while :; do
|
||
$ECHON1 "a)bort, e)dit or s)end? $ECHON2"
|
||
read input
|
||
case "$input" in
|
||
a*)
|
||
echo "$COMMAND: problem report saved in $HOME/dead.glibcbug."
|
||
cat $TEMP >> $HOME/dead.glibcbug
|
||
xs=1; exit
|
||
;;
|
||
e*)
|
||
eval $EDIT $TEMP
|
||
continue 2
|
||
;;
|
||
s*)
|
||
break 2
|
||
;;
|
||
esac
|
||
done
|
||
done
|
||
#
|
||
# Remove comments and send the problem report
|
||
# (we have to use patterns, where the comment contains regex chars)
|
||
#
|
||
# /^>Originator:/s;$ORIGINATOR;;
|
||
sed -e "
|
||
/^SEND-PR:/d
|
||
/^>Organization:/,/^>[A-Za-z-]*:/s;$ORGANIZATION_C;;
|
||
/^>Confidential:/s;<.*>;;
|
||
/^>Synopsis:/s;$SYNOPSIS_C;;
|
||
/^>Severity:/s;<.*>;;
|
||
/^>Priority:/s;<.*>;;
|
||
/^>Class:/s;<.*>;;
|
||
/^>Release:/,/^>[A-Za-z-]*:/s;$RELEASE_C;;
|
||
/^>Environment:/,/^>[A-Za-z-]*:/s;$ENVIRONMENT_C;;
|
||
/^>Description:/,/^>[A-Za-z-]*:/s;$DESCRIPTION_C;;
|
||
/^>How-To-Repeat:/,/^>[A-Za-z-]*:/s;$HOW_TO_REPEAT_C;;
|
||
/^>Fix:/,/^>[A-Za-z-]*:/s;$FIX_C;;
|
||
" $TEMP > $TEMP.x
|
||
|
||
if $MAIL_AGENT < $TEMP.x; then
|
||
echo "$COMMAND: problem report sent"
|
||
xs=0; exit
|
||
else
|
||
echo "$COMMAND: mysterious mail failure, report not sent."
|
||
echo "$COMMAND: problem report saved in $HOME/dead.glibcbug."
|
||
cat $TEMP >> $HOME/dead.glibcbug
|
||
fi
|
||
|
||
exit 0
|