📄 lrzszbug.in
字号:
#! /bin/sh## lrzszbug - create a bug report and mail it to the bug address.## configuration section:# these variables are filled in by configure#VERSION="@VERSION@"BUGGLIBC="bugs@bulkmail.ohse.de"PATH=$PATH:/bin:/usr/bin:/usr/local/binexport PATHTEMP=/tmp/lrzszbug.$$BUGADDR=${1-$BUGGLIBC}ENVIRONMENT=`uname -a`: ${EDITOR=emacs}: ${USER=${LOGNAME-`whoami`}}trap 'rm -f $TEMP $TEMP.x; exit 1' 1 2 3 13 15trap '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=rmailfi# Figure out how to echo a string without a trailing newlineN=`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 $TEMPfiif [ -n "$ORGANIZATION" ]; then if [ -f "$ORGANIZATION" ]; then ORGANIZATION="`cat $ORGANIZATION`" fielse if [ -f $HOME/.organization ]; then ORGANIZATION="`cat $HOME/.organization`" elif [ -f $HOME/.signature ]; then ORGANIZATION=`sed -e "s/^/ /" $HOME/.signature; echo ">"` fifi# If they don't have a preferred editor set, then useif [ -z "$VISUAL" ]; then if [ -z "$EDITOR" ]; then EDIT=vi else EDIT="$EDITOR" fielse 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 <<EOFSEND-PR: -*- send-pr -*-SEND-PR: Lines starting with \`SEND-PR' will be removed automatically, asSEND-PR: will all comments (text enclosed in \`<' and \`>').SEND-PR:From: ${USER}To: ${BUGADDR}Subject: lrzsz: [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: lrzsz>Class: $CLASS_C>Release: lrzsz-${VERSION}>Environment: $ENVIRONMENT_C`[ -n "$SYSTEM" ] && echo System: $SYSTEM``[ -n "$ARCH" ] && echo Architecture: $ARCH``[ -n "$MACHINE" ] && echo Machine: $MACHINE``[ -f "lrz" ] && echo " include, if possible, the output of 'ldd lrz'"``[ -f "src/lrz" ] && echo " include, if possible, the output of 'ldd src/lrz'"``[ -f "lrzsz-@VERSION@/src/lrz" ] && echo " include, if possible, the output of 'ldd lrzsz-@VERSION@/src/lrz'"`>Description: $DESCRIPTION_C>How-To-Repeat: $HOW_TO_REPEAT_C>Fix: $FIX_CEOFchmod u+w $TEMPcp $TEMP $TEMP.xeval $EDIT $TEMPif cmp -s $TEMP $TEMP.x; then echo "File not changed, no bug report submitted." exit 1fi## 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|[ ]*$||pq}'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.lrzszbug." cat $TEMP >> $HOME/dead.lrzszbug xs=1; exit ;; e*) eval $EDIT $TEMP continue 2 ;; s*) break 2 ;; esac donedone## 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.xif $MAIL_AGENT < $TEMP.x; then echo "$COMMAND: problem report sent" xs=0; exitelse echo "$COMMAND: mysterious mail failure, report not sent." echo "$COMMAND: problem report saved in $HOME/dead.lrzszbug." cat $TEMP >> $HOME/dead.lrzszbugfiexit 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -