aboutsummaryrefslogtreecommitdiff
path: root/unix/hlib/buglog.csh
blob: 832c9ad05ed5ca7cbc30c5f5cf862585e74dfd36 (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
#! /bin/csh
# BUGLOG -- Format, edit, and log a new bug to the system bugs file.
#
# Usage:
#
#	buglog [module]		log a new bug to the system bugsfile
#	buglog -e		edit the system bugfile (with locking)
#
# The system bugsfile is locked for exclusive access while a bug is being
# logged, or while the bugsfile is being edited.  Logging can be aborted either
# by typing <ctrl/c>, or by editing the editor with ":q!" (i.e., by exiting
# the editor without modifying the temporary file being edited).  Bugs are
# formatted and edited in a small temporary file in /tmp and are added at the
# end of the bugsfile only if the task is not aborted and the edit modifies
# the input bug template.  To go back and edit a previously logged bug use
# "buglog -e".
#
# Record Format:
#
#	NUMBER:		record number, decimal, sequential.
#	MODULE:		package.task or library.procedure or 'unknown'
#	SYSTEM:		versions of iraf in which bug was present
#	DATE:		date bug logged, unix format date string
#	FROM:		user login name
#	BUG:		description of the bug
#	STATUS:		'fixed in V2.X', 'unresolved', etc.
#
# New records are added to the tail of the bugfile.  Left justify field labels,
# indent text to the first tab stop, one blank line between bug entries.
# ----------------------------------------------------------------------------

unalias	rm set find echo sleep tail sed cmp echo cat mail

set	bugfile	= "${iraf}local/bugs.log"
set	arcfile	= "/u1/ftp/iraf/v214/bugs.log"
set	tmpfile	= "/tmp/bug."
set	lokfile = "/tmp/bug.lok"

set	number	= 1
set	module	= "$1"
set	from	= "`whoami`"
set	date	= "`date`"
set	system	= "V2.14"
set	irafmail = "iraf@iraf.noao.edu"
set	buglog   = "adass-iraf-buglog@iraf.noao.edu"

# Get exclusive access to the bugfile.

if (-e $lokfile) then
    find $bugfile -newer $lokfile -exec rm -f $lokfile \;
    while (-e $lokfile)
	echo "waiting for access to system bugfile"
	sleep 15
    end
endif

date > $lokfile
onintr cleanup

# If we were called as "buglog -e", simply edit the locked bugfile.

if ("$1" == "-e") then
    vi + $bugfile
    goto cleanup
endif

# Increment the bug record number.

set number = "`grep '^NUMBER:' $bugfile | tail -1 | sed -e 's/^NUMBER:.//'`"
if ("$number" == "") then
    set number = 1
else
    set number = "`expr $number + 1`"
endif

# Get module name if not given on command line.

if ($module == "") then
    echo -n "Module: "
    set module = "$<"
endif

# Format new bug entry in a temporary file and edit it.

set tmpfile = $tmpfile$number
if (-e $tmpfile) then
    echo "file $tmpfile already exists"
    rm -i $tmpfile
    if (-e $tmpfile) then
	goto editbug
    endif
endif

echo "NUMBER:	$number" >> $tmpfile
echo "MODULE:	$module" >> $tmpfile
echo "SYSTEM:	$system" >> $tmpfile
echo "DATE:	$date"   >> $tmpfile
echo "FROM:	$from"   >> $tmpfile
echo ""		         >> $tmpfile
echo "BUG:	..."     >> $tmpfile
echo ""		         >> $tmpfile
echo "STATUS:	..."     >> $tmpfile

editbug:
cp $tmpfile $tmpfile.ORIG
vi $tmpfile

# Add new bug entry to bugfile (exiting the editor without modifying the file
# causes the bug to be discarded).

cmp -s $tmpfile $tmpfile.ORIG
if ($status) then
    echo "" >> $bugfile;  cat $tmpfile >> $bugfile
    echo "" >> $arcfile;  cat $tmpfile >> $arcfile
    mail -s "buglog.$number"": module = $module, author = $from" $irafmail\
	< $tmpfile
#    mail -s "buglog.$number"": module = $module, author = $from" $buglog\
#	< $tmpfile
    rm -f $tmpfile $tmpfile.ORIG
else
    echo "system bugfile not modified"
    rm -f $tmpfile $tmpfile.ORIG
endif

# Cleanup (vector here on interrupt).

cleanup:
if (-e $lokfile) then
    rm -f $lokfile
endif