File: ChangeLog

package info (click to toggle)
gnatsweb 4.00-1.1
  • links: PTS
  • area: main
  • in suites: lenny, squeeze
  • size: 336 kB
  • ctags: 122
  • sloc: perl: 3,202; makefile: 121
file content (1672 lines) | stat: -rw-r--r-- 67,900 bytes parent folder | download | duplicates (3)
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
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
520
521
522
523
524
525
526
527
528
529
530
531
532
533
534
535
536
537
538
539
540
541
542
543
544
545
546
547
548
549
550
551
552
553
554
555
556
557
558
559
560
561
562
563
564
565
566
567
568
569
570
571
572
573
574
575
576
577
578
579
580
581
582
583
584
585
586
587
588
589
590
591
592
593
594
595
596
597
598
599
600
601
602
603
604
605
606
607
608
609
610
611
612
613
614
615
616
617
618
619
620
621
622
623
624
625
626
627
628
629
630
631
632
633
634
635
636
637
638
639
640
641
642
643
644
645
646
647
648
649
650
651
652
653
654
655
656
657
658
659
660
661
662
663
664
665
666
667
668
669
670
671
672
673
674
675
676
677
678
679
680
681
682
683
684
685
686
687
688
689
690
691
692
693
694
695
696
697
698
699
700
701
702
703
704
705
706
707
708
709
710
711
712
713
714
715
716
717
718
719
720
721
722
723
724
725
726
727
728
729
730
731
732
733
734
735
736
737
738
739
740
741
742
743
744
745
746
747
748
749
750
751
752
753
754
755
756
757
758
759
760
761
762
763
764
765
766
767
768
769
770
771
772
773
774
775
776
777
778
779
780
781
782
783
784
785
786
787
788
789
790
791
792
793
794
795
796
797
798
799
800
801
802
803
804
805
806
807
808
809
810
811
812
813
814
815
816
817
818
819
820
821
822
823
824
825
826
827
828
829
830
831
832
833
834
835
836
837
838
839
840
841
842
843
844
845
846
847
848
849
850
851
852
853
854
855
856
857
858
859
860
861
862
863
864
865
866
867
868
869
870
871
872
873
874
875
876
877
878
879
880
881
882
883
884
885
886
887
888
889
890
891
892
893
894
895
896
897
898
899
900
901
902
903
904
905
906
907
908
909
910
911
912
913
914
915
916
917
918
919
920
921
922
923
924
925
926
927
928
929
930
931
932
933
934
935
936
937
938
939
940
941
942
943
944
945
946
947
948
949
950
951
952
953
954
955
956
957
958
959
960
961
962
963
964
965
966
967
968
969
970
971
972
973
974
975
976
977
978
979
980
981
982
983
984
985
986
987
988
989
990
991
992
993
994
995
996
997
998
999
1000
1001
1002
1003
1004
1005
1006
1007
1008
1009
1010
1011
1012
1013
1014
1015
1016
1017
1018
1019
1020
1021
1022
1023
1024
1025
1026
1027
1028
1029
1030
1031
1032
1033
1034
1035
1036
1037
1038
1039
1040
1041
1042
1043
1044
1045
1046
1047
1048
1049
1050
1051
1052
1053
1054
1055
1056
1057
1058
1059
1060
1061
1062
1063
1064
1065
1066
1067
1068
1069
1070
1071
1072
1073
1074
1075
1076
1077
1078
1079
1080
1081
1082
1083
1084
1085
1086
1087
1088
1089
1090
1091
1092
1093
1094
1095
1096
1097
1098
1099
1100
1101
1102
1103
1104
1105
1106
1107
1108
1109
1110
1111
1112
1113
1114
1115
1116
1117
1118
1119
1120
1121
1122
1123
1124
1125
1126
1127
1128
1129
1130
1131
1132
1133
1134
1135
1136
1137
1138
1139
1140
1141
1142
1143
1144
1145
1146
1147
1148
1149
1150
1151
1152
1153
1154
1155
1156
1157
1158
1159
1160
1161
1162
1163
1164
1165
1166
1167
1168
1169
1170
1171
1172
1173
1174
1175
1176
1177
1178
1179
1180
1181
1182
1183
1184
1185
1186
1187
1188
1189
1190
1191
1192
1193
1194
1195
1196
1197
1198
1199
1200
1201
1202
1203
1204
1205
1206
1207
1208
1209
1210
1211
1212
1213
1214
1215
1216
1217
1218
1219
1220
1221
1222
1223
1224
1225
1226
1227
1228
1229
1230
1231
1232
1233
1234
1235
1236
1237
1238
1239
1240
1241
1242
1243
1244
1245
1246
1247
1248
1249
1250
1251
1252
1253
1254
1255
1256
1257
1258
1259
1260
1261
1262
1263
1264
1265
1266
1267
1268
1269
1270
1271
1272
1273
1274
1275
1276
1277
1278
1279
1280
1281
1282
1283
1284
1285
1286
1287
1288
1289
1290
1291
1292
1293
1294
1295
1296
1297
1298
1299
1300
1301
1302
1303
1304
1305
1306
1307
1308
1309
1310
1311
1312
1313
1314
1315
1316
1317
1318
1319
1320
1321
1322
1323
1324
1325
1326
1327
1328
1329
1330
1331
1332
1333
1334
1335
1336
1337
1338
1339
1340
1341
1342
1343
1344
1345
1346
1347
1348
1349
1350
1351
1352
1353
1354
1355
1356
1357
1358
1359
1360
1361
1362
1363
1364
1365
1366
1367
1368
1369
1370
1371
1372
1373
1374
1375
1376
1377
1378
1379
1380
1381
1382
1383
1384
1385
1386
1387
1388
1389
1390
1391
1392
1393
1394
1395
1396
1397
1398
1399
1400
1401
1402
1403
1404
1405
1406
1407
1408
1409
1410
1411
1412
1413
1414
1415
1416
1417
1418
1419
1420
1421
1422
1423
1424
1425
1426
1427
1428
1429
1430
1431
1432
1433
1434
1435
1436
1437
1438
1439
1440
1441
1442
1443
1444
1445
1446
1447
1448
1449
1450
1451
1452
1453
1454
1455
1456
1457
1458
1459
1460
1461
1462
1463
1464
1465
1466
1467
1468
1469
1470
1471
1472
1473
1474
1475
1476
1477
1478
1479
1480
1481
1482
1483
1484
1485
1486
1487
1488
1489
1490
1491
1492
1493
1494
1495
1496
1497
1498
1499
1500
1501
1502
1503
1504
1505
1506
1507
1508
1509
1510
1511
1512
1513
1514
1515
1516
1517
1518
1519
1520
1521
1522
1523
1524
1525
1526
1527
1528
1529
1530
1531
1532
1533
1534
1535
1536
1537
1538
1539
1540
1541
1542
1543
1544
1545
1546
1547
1548
1549
1550
1551
1552
1553
1554
1555
1556
1557
1558
1559
1560
1561
1562
1563
1564
1565
1566
1567
1568
1569
1570
1571
1572
1573
1574
1575
1576
1577
1578
1579
1580
1581
1582
1583
1584
1585
1586
1587
1588
1589
1590
1591
1592
1593
1594
1595
1596
1597
1598
1599
1600
1601
1602
1603
1604
1605
1606
1607
1608
1609
1610
1611
1612
1613
1614
1615
1616
1617
1618
1619
1620
1621
1622
1623
1624
1625
1626
1627
1628
1629
1630
1631
1632
1633
1634
1635
1636
1637
1638
1639
1640
1641
1642
1643
1644
1645
1646
1647
1648
1649
1650
1651
1652
1653
1654
1655
1656
1657
1658
1659
1660
1661
1662
1663
1664
1665
1666
1667
1668
1669
1670
1671
1672
==========  Gnatsweb 4.0 released ======================================

2003-07-29  Yngve Svendsen  <yngve.svendsen@sun.com>

	* Makefile: update OTHER_FILES and INSTALL_CGI.

	* README: Emphasize that Gnatsweb 4.0 needs GNATS 4.  Be specific
	about CGI.pm versions.  Fix typos.  Change 2002 to 2003 in the
	copyright notice -- there were no official releases in 2002.

	* gnatsweb-site-example.pl, test.pl: Change 2002 to 2003 in the
        copyright notice -- there were no official releases in 2002.

	* gnatsweb.pl: Change 2002 to 2003 in the copyright notice --
	there were no official releases in 2002.  Change $VERSION to 4.00.

	* NEWS: Add.

	* BETA, TODO: Remove.
	
2003-05-06  Yngve Svendsen  <yngve.svendsen@sun.com>

	* gnatsweb.pl (edit): Change check for whether field value is a
	known enumeration value to take into account that 'unknown' may be
	an already existing, legitimate field value.

2003-04-29  Yngve Svendsen  <yngve.svendsen@sun.com>

	* gnatsweb.pl (sendpr): Set default Submitter-Id field to the
	value stored in the global cookie.

	* gnatsweb.pl (submit_stored_query): Separate "submit query"
	command and query string with ';', not '&'. Fixes PR 469.  Fix
	thanks to Alexey Roytman.

	* gnatsweb.pl (fix_multiline_val): Prevent whitespace-only values
	from being entered in multiline fields.

	* gnatsweb.pl (edit): Rewrite check for whether field value is a
	known enumeration value -- use foreach instead of grep.  Fixes PR
	474.

	* gnatsweb.pl (get_mailto_link): Opera needs the URL in the
	mailto: link message body encoded only once (sigh, another special
	case).

2003-01-08  Yngve Svendsen <yngve.svendsen@sun.com>

	* gnatsweb.pl (get_mailto_link): Correct negation of binding
	  operator from !=~ to !~. Thanks to Alwin Dieperink.

==========  Gnatsweb 4.0 beta 4 released ===============================

2002-11-23  Yngve Svendsen  <yngve.svendsen@sun.com>

	* gnatsweb.pl: Set VERSION to 3.99.4.  This is beta 4.

	* Makefile: Add a few forgotten files to OTHER_FILES.
	
	* gnatsweb.pl: $site_no_gnats_passwords now has a default value
	of 0.
	- CUSTOMIZE.vars: Update accordingly.
	
	* BETA: Update for beta 4.  Add 2002 to copyright notice.

	* Makefile, README, gnatsweb-site-example.pl, gnatsweb.pl,
	test.pl: Add 2002 to copyright notice.
	
2002-10-31  Yngve Svendsen  <yngve.scary@trick.or.treat>

	* gnatsweb.pl (view, edit, submit_stored_query,
	delete_stored_query): Call error_page() instead of printing out
	errors ourselves.  The stored query error printing didn't even
	work at all.

	* gnatsweb.pl (get_reply): Call page_footer and page_end_html
	after calls to gerror().  Fixes PR 399.

2002-10-29  Yngve Svendsen  <yngve.svendsen@sun.com>

	* gnatsweb.html: Mention that required fields on the Create PR
	page are emphasized in red, by default.

2002-10-27  Yngve Svendsen  <yngve.svendsen@sun.com>

	* CUSTOMIZE.vars: Document $site_required_field_color.

	* gnatsweb.pl: New field flag $SENDREQUIRED to mark a field as
	being set to "inital-entry require" in the dbconfig.
	- $site_required_field_color: new config variable specifying the
	color to use when marking required fields on the Create PR page.
	- (init_fieldinfo): Set it.
	- (sendpr): Use it to mark required fields.

	* gnatsweb.pl (query_page): Add missing "print" statement in front
	of some end table cell and row tags.

	* gnatsweb.pl (display_query_results): Display `unknown' for
	enumerated-field values that don't exist.  This and the 3 next
	items are due to Lars Henriksen.

	* gnatsweb.pl (submitedit): Throw an error if Responsible,
	Category or Submitter-Id are set to `unknown'.
	- Remove check for empty username or empty Responsible field.
	Noone quite understood why it was there.

	* gnatsweb.pl (edit): Check whether the value set in an enumerated
	field exists or has been removed from the administrative database
	(file or dbconfig).  If the value has been removed, use the value
	`unknown'.

	* gnatsweb.pl (sendpr): Force users to set category to something
	meaningful by setting default value to `unknown'.

	* gnatsweb.pl (sendpr, edit): The value being returned from
	fieldinfo() is a hashref, not a hash.  Change @values to $values
	in all applicable places.

2002-10-25  Yngve Svendsen  <yngve.svendsen@sun.com>

	* gnatsweb.pl (submitnewpr): Remove return statement -- the call
	  client_cmd("$text.") will exit after leaving an error message
	  because $client_would_have_exited has not been set to 1.
	  Spotted and fixed by Lars Henriksen.
	
	* gnatsweb.pl (edit, sendpr, view): Get rid of the blank row after
	"Reporter's E-mail". Takes up space and separating mail headers
	and GNATS fields has no meaning for users of the interface.

2002-10-15  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (main): Allow passwordless logins in order to
	  support revised authentication mechanism in latest revision of
	  GNATS 4.  Change due to Pankaj K. Garg.

2002-10-12  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (submitnewpr): Check PR text before submitting new
	  PR.  Previously, it did not check contents, which implied that
	  in a GNATS database where text fields were defined in dbconfig
	  with the `matching' keyword, you could create a PR that would be
	  rejected with a "Field x with contents `y' didn't match any of
	  the required regexps" the first time you edit it, even though
	  you didn't change the text field at all.

	* gnatsweb.pl (login_page): Add missing </td> after "User Name:".
	  Fixes PR 398.

	* gnatsweb.pl (submitnewpr): Remove extra newline after PR text.
	  Patch due to Lars Henriksen.

	* gnatsweb.pl (server_reply, read_server, client_cmd): Print
	  proper headers when needed.  Patch by Robert Lupton the Good.

	* gnatsweb.pl (display_query_results): Add a link at the bottom of
	  the Query Results page which allows the user to reverse the sort
	  order of the currently displayed results.  Based on a patch by
	  Lars Henriksen.
	- gnatsweb.html: Mention the Reverse sort order link.

	* gnatsweb.html: Change the description of the Query Page to match
	  the new layout and describe a few previously left-out fields.

	* gnatsweb.pl (query_page): Place the "Originated by You" and
	  "Ignore Closed" checkboxes together with the Submitter-Id and
	  State listboxes resp.  Use valign=top in the left-column cells.
	  Change the placement of the "Display Current Date" checkbox.
	  Change the designation "Descending Order" to "Reverse Order".
	- (advanced_query_page): Change the placement of the "Display
	  Current Date" checkbox.  Change the designation "Descending
	  Order" to "Reverse Order".

	* gnatsweb.pl (get_mailto_link): Quote the URL in the body twice
	  for all non-Netscape browsers.

2002-10-11  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl: field2param and param2field are gone.  We now
	  operate exclusively both internally and externally with proper
	  dbconfig fieldnames, not lower-case versions.  This breaks
	  compatibility of Gnatsweb 2.x and older Gnatsweb 3.x stored
	  queries with this version.  site-files may also need a slight
	  change, in that the callbacks edit_intro_'fieldname' and
	  sendpr_intro_'fieldname' need to have 'fieldname' changed from
	  the lower case name to the fieldname set in dbconfig.  Changes
	  due to Lars Henriksen.
	- (submitquery): Use anchored regexp searches for enumerated
	  types.  Changes due to Lars Henriksen.
	* CUSTOMIZE.cb: Explicitly state that the edit_intro_'fieldname'
	  and sendpr_intro_'fieldname' should have 'fieldname' set to the
	  dbconfig fieldname, not the lower case version.
	* gnatsweb-site-example.pl: Amend the edit_intro_'fieldname' and
	  sendpr_intro_'fieldname' to take the above into account.
	
2002-09-24  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (submitedit): Remove \n at the end of the edited PR
	  text during submission.  Fix by Lars Henriksen, PR 385.

	* gnatsweb.pl (query_page, advanced_query_page): Add "Descending
	  Order" option to `sort by'.

2002-09-17  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* CUSTOMIZE.vars: Document the mark_urls hash. Note to everyone
	  who does checkins: Remember to update the docs when you check in
	  something significant.

	* gnatsweb.pl (edit, view): Include PR number in page title.
	  Patch by Robert Lupton the Good.

	* gnatsweb.pl (login_page): Add missing comma to print statement.
	  Fix by Robert Lupton the Good.

	* gnatsweb.pl (query_page, advanced_query_page): Add `sort by'
	  functionality, based on patch by Robert Lupton the Good.
	- Move `Originated by You' checkbox so it appears just beneath
	  `Ignore Closed'.
	- Use real dbconfig fieldnames in the list boxes instead of lower
	  case or builtin fieldnames.

2002-08-10  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* gnatsweb.pl (server_reply): Use <br /> instead of <br> for
	future XHTML compliance.
	(read_server): Ditto.
	(client_cmd): Ditto.
	(print_attachments): Ditto.
	(sendpr): Ditto.
	(view): Ditto.
	(edit): Ditto.
	(advanced_query_page): Ditto.
	(initialize): Ditto.
	(change_database): Ditto.
	(cmd_logout): Ditto.
	(cmd_login): Ditto.

2002-08-10  Anders Johnson <anders@wischip.com>

	* gnatsweb.pl (server_reply): Print actual reply from server.

2002-07-26  Yngve Svendsen  <yngvesv@math.ntnu.no>

	* gnatsweb-site-example.pl (site_callback): Change qfmt field
	separators in accordance with the new usage of octal charcter 037
	as field separator.

2002-06-04  Dirk Bergstrom  <dirk@juniper.net>

	* gnatsweb.pl (mark_urls): Changed the regexes so it no longer
	does four passes over the string.  Put in a config knob
	(%mark_urls) to control behavior, and limit size of fields
	processed.  This is theoretically a fix for PR 387 (mark_urls
	takes over a minute), however, I find no measurable difference in
	performance before and after the change.  oh well, it's still a
	good patch.

2002-02-22  Dirk Bergstrom  <dirk@juniper.net>

	* gnatsweb.pl (sendpr, validate_new_pr, submitnewpr, view, edit,
	submitedit, parsepr, interested_parties): Remove X-GNATS-Notify
	from gnatsweb.  it's not supported by gnatsd, so it's just
	confusing users.
	(init_prefs): add a hack to support old "email_add" cookie value.
	(edit, sendpr): change the name of forms to "PrForm".  this is
	used by a javascript hook in a helper app, and it needs to talk to
	both forms.
	(edit): decremented the field count so the javascript hook would
	work after removing the x-gnats-notify field.

2002-02-09  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (submitquery): Use exact matching when querying on
	  enum or multienum type fields.  Should be the behaviour that
	  most people would expect.  Fixes PR 322.

2001-12-18  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* gnatsweb.pl (page_start_html): Do not mix classic HTML color
	tags (BGCOLOR) and CSS.

==========  Gnatsweb 4.0 beta 3 released ===============================
	
2001-12-12  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl: Set VERSION to 3.99.3.  This is beta 3.

2001-12-04  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (sendpr, validate_email_field, init_prefs): Rename
	  'email_addr' to 'email' in the global cookie.

2001-12-02  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (submitquery, display_query_results): Use ASCII
	  octal \037 (unit separator) as field separator in the query
	  output format string, instead of '|', which would make Gnatsweb
	  mess up the query results display when a field contained a '|'.

2001-11-30  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (display_query_results): Removed definition of
	  $myurl -- it was never used.

	* gnatsweb.pl: Implement redirect after 'Store query':
	- (display_query_results): Add return_url hidden field to form.
	- (store_query): Add redirect code, notify user that redirect is
	  about to happen.

2001-11-29  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl: Implement redirect after 'Create':
	- (sendpr): Add hidden field 'return_url' to form.
	- (submitnewpr): Defer call to page_start_html until we know
	  whether we need a customized HTML head.  Create global cookie
	  here, not in main.  Add code to issue refresh header and call
	  page_start_html with extra arguments for the HTML head section
	  for the MSIE workaround.  Add a line to the result page saying
	  that the user will be redirected automatically.
	- (get_pr_url): Do not include pr=xxx in URL when $pr is 0.
	- (page_start_html): Add passed arguments (if any) to the call to
	  start_html.  Use URL containing return_url parameter in the
	  CREATE link in the button bar.
	- (main): Remove call to print_header in the 'submit' case.  We do
	  this inside the submitnewpr subroutine now.
	- (submitedit): Do the refresh in the same way as in submitnewpr -
	  the old method emitted bad HTML.
	- (delete_stored_query): Ditto.

	* gnatsweb.pl (sendpr, edit): Fix syntax error that prevented
	  table cell and row end tags from being printed.

2001-11-21  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* CUSTOMIZING.vars, TROUBLESHOOTING, INSTALL, gnatsweb.html,
	  gnatsweb.pl: Changes to reflect that GNATS development has moved
	  to Savannah.

	* gnatsweb.pl: Add 'use Text::Tabs'.
	- (view): Expand tabs to spaces, replace back-to-back occurrences
	  of spaces with "&nbsp;" and a space.  This makes browsers render
	  indented code correctly.  Thanks to Brad Garcia.

2001-11-19  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl: A bit of cleanup, based on suggestions from Dirk
	  Bergstrom:
	- (init_fieldinfo): Add 'separators' and 'default_sep' hash
	  elements for multienum fields.
	- (parse_multienum, unparse_multienum): Use them.
	- (multiselect_menu): New subroutine.  Returns a
	  multiselect menu.
	- (edit, sendpr): Use it.
	- (query_page): Use // around regexp.
	- (unparse_multienum): Use join instead of foreach loop.

2001-11-03  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl: Initial check-in of multienum support code.
	- (parse_multienum): Parse a legally separated MultiEnum string by
	  splitting on the multienum separators and returning the result
	  as an array ref.
	- (unparse_multienum): Collect multienum form values in a single
	  string, values separated by the first character in the multienum
	  separator string for that field.
	- (submitnewpr, submitedit): Use unparse_multienum on MultiEnum
	  field values from the form.
	- (edit): Use parse_multienum to pre-fill MultiEnum fields in the
	  form with the old values.  We use a multiselect scrolling list.
	- (query_page, advanced_query_page): Support queries on MultiEnum
	  fields.  We use a multiselect scrolling list.	
	- (sendpr): Support entry of values for MultiEnum fields using a
	  multiselect scrolling list.
	
	* gnatsweb.pl (delete_stored_query): Use refresh, not redirect,
	  since that confuses Netscape.  Add workaround for MSIE's
	  non-handling of refresh headers.

	* gnatsweb.pl (login_page): Tweak print statement to avoid user
	  strict-related warning.

2001-11-01  Dirk Bergstrom  <dirk@juniper.net>

	* gnatsweb.pl (one_line_form, view): Change form submission from
	POST to GET.  Postdata expires from cache after some time (i
	believe it's browser-dependent), and this can cause loss of data
	in the following scenario: user clicks the create button on the
	main page, spends half an hour entering PR data, hits submit, and
	there's an error; user hits "back", but is told that the create
	form is postdata, and it has expired.  all the data they entered
	is lost, and much frustration ensues.  this can also happen with
	editing and query submission.
	(edit): Increment number of hardcoded fields in $field_number to
	account for the addition of return_url.  This needs to be done
	whenever a non-dynamic field is added to the top of the edit or
	view pages.

2001-10-30  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (get_mailto_link): Remove special handling
	  of Internet Explorer browser -- not all MSIE users use Outlook.
	  Furthermore, newer versions of Outlook do not need the special
	  quoting.
	- (get_mailto_link): Put Synopsis, as well as category and PR
	  number in the Subject field of the mailto link.

2001-10-23  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl ($site_banner_text): Say 'GNU Gnatsweb'.

2001-10-21  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* TROUBLESHOOTING: New document.

	* INSTALL: Update, expand, correct. Mention troubleshooting
	  document.

	* gnatsweb.pl (advanced_query_page): Use cellspacing=0.

	* gnatsweb.pl (sendpr): Change name of form from editPrForm to
	  sendPrForm.

2001-10-20  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (get_viewpr_url): Properly escape the 'view
	  audit-trail' command.

==========  Gnatsweb 4.0 beta 2 released ===============================

2001-10-17  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* $VERSION set to 3.99.2.  This is Gnatsweb 4.0 beta 2.
	
	* Gnatsweb is finally under the GPL.  All significant files,
	  copyright notices and licensing conditions have been added to
	  all code files and the README file.
	- COPYING: New file containing the GPL.
	- BETA: New file.
	

2001-10-17  Dirk Bergstrom  <dirk@juniper.net>

	* gnatsweb.pl (parse_submitters): Populate %submitter_complete
	with the human-readable value from the submitters file.
	(popup_or_scrolling_menu): Use %submitter_complete to provide
	labels for Submitter-Id field.
	(main_page): Display current database in change database dropdown.
	(formstart): Workaround for an exceedingly dumb netscape bug, in
	which the back arrow is broken after submitting a new PR or an
	edited PR.
	(form_start, multipart_form_start): Wrapper functions for
	formstart().
	(send_pr, edit): Use multipart_form_start().
	(init_prefs): Added code to save email_addr in the global cookie.
	This value is used to populate the email field in the create PR
	screen.  This functionality disappeared somewhere after 1.59.

2001-10-15  Yngve Svendsen  <yngves@gnu.org>

	* INSTALL: Change the treatment of access control to take into
	  account the new 'listdb' level.

	* CUSTOMIZE.vars: Document the $include_audit_trail variable.

2001-10-12  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* Makefile: Silence the test target a bit.

	* test.pl: Get rid of noise generated when the test script is
	  unable to connect to the GNATS database.  Add a note on how to
	  troubleshoot connection problems.

	* gnatsweb.pl: Strengthen warning about setting config variables
	  in the site file, not in the main script.

2001-10-11  Yngve Svendsen  <yngves@gnu.org>

        * gnatsweb.pl (split_csl): New subroutine. Splits comma-separated
	  e-mail addresses in such a way that commas in quotes aren't
	  considered separators.  Thanks to Arno Unkrig.
          (fix_email_addrs): Use it.
          (interested_parties): Likewise.

	* gnatsweb.html: Document the Display Current Date checkbox in the
	  query pages.

	* gnatsweb.pl (query_page, advanced_query_page): Add checkbox
	  controlling whether to display the current date on the results
	  page. Default is on.
	- (display_query_results): Display current date below number of
	  matches if the "Display current date" checkbox on the query page
	  is checked.

	* gnatsweb.pl: New config variable $include_audit_trail which
	  controls whether the Audit-Trail will be shown by default in the
	  View PR screen.
	  (main_page, get_viewpr_url): Use it.

	* gnatsweb.pl (popup_or_scrolling_menu): Use both username and
	  full name in the Responsible dialog. 
	- (parse_responsible): New responsible_complete hash.  Contains
	  both username and full name.

2001-09-21  Dirk Bergstrom  <dirk@juniper.net>

	* gnatsweb.pl (main_page): add a '$q->' to a CGI.pm call that i
	missed on 2001-09-6.

2001-09-12  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl: Various very minor changes to get rid of strict
	  warnings.

	* gnatsweb-site-example.pl: Fix problems with 'open' and 'not
	  closed' examples by switching to custom query format instead of
	  sql2.

	* CUSTOMIZE.cb, CUSTOMIZE.vars: Update in accordance with the
	  changes below.  Make layout a smidgen clearer.

	* gnatsweb.pl: Change $gnats_info_top to point to a page on
	  sources which contains links to documentation for multiple
	  versions of GNATS.

	* gnatsweb.pl (login_page): Add a callback which allows printing
	  of a welcome message on the login page.
	- gnatsweb-site-example.pl: Use it.

2001-09-11  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl: Change $VERSION to 3.99. We're in beta now.

	* INSTALL: Include notes for upgraders.

	* gnatsweb-site-example.pl: Fix problems with query results table
	  header row when using the 'open' and 'not closed' buttons.

	* gnatsweb.html: Fairly minor changes to reflect the way GNATS and
	  Gnatsweb 4 work.

	* Makefile: Add new files to the OTHER_FILES macro.  Rewrite
	  install target to back up old installations and to preserve the
	  gnatsweb-site.pl file if already installed.  Remove references
	  to gnatsweb-site-sente.pl.

2001-09-10  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb-site-sente.pl: Gone -- it was getting a bit long in the
	  tooth and 2.x-specific.

	* gnatsweb-site-example.html: Fleshed out a bit.

	* CUSTOMIZE.cb: Callback documentation finished.

	* gnatsweb.pl (sendpr): Removed get_default_value callback hook.

2001-09-09  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (main): Support cmd callbacks.

	* CUSTOMIZE, CUSTOMIZE.vars: New documentation on how to customize
	  Gnatsweb.

	* gnatsweb.pl: $global_cookie_expires was being defined twice.

	* Makefile (tarball, default, no-debug-statements): Misc. fixes.

	* gnatsweb.pl: $VERSION now global, so that we can use it in the
	  Makefile.

	* gnatsweb.pl (client_init): Trap attempts to use a nonexisting
	$site_gnats_host.

	* README, TODO: Update for Gnatsweb 4.
	- INSTALL: Largely rewritten for Gnatsweb 4
	- gnatsweb-site.pl: Minimal local configuration file.
	- Makefile: Install gnatsweb-site.pl, not gnatsweb-site-sente.pl

2001-09-08  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (page_start_html): Reenable the button bar on the
	  main page -- turns out users who are accustomed to it use it
	  almost exclusively.

2001-09-07  Dirk Bergstrom  <dbergstr@crawler.juniper.net>

	* gnatsweb.pl (get_mailto_link): rewritten to properly html-escape
	the followup mailto: link contents.

	* gnatsweb.pl (help_page): Changed bare calls to p() & a() to
	$q->p() style calls.  Missed these yesterday.

2001-09-06  Dirk Bergstrom  <dbergstr@crawler.juniper.net>

	* gnatsweb.pl: Use CGI qw/-nosticky/; This prevents CGI.pm from
	appending a bunch of .cgifields to every self_url().  AFAIK, we're
	not using CGI.pm's sticky field features, so we can do w/o the
	overhead and the unreasonably long URLs it produces.

	* gnatsweb.pl: Changed bare calls to CGI.pm routines to qualified
	calls (ie. submit(foo... becomes $q->submit(foo... ).  This allows
	us to stop importing the :standard and :netscape extensions to
	CGI.pm.  Doing so should improve the startup time and decrease
	memory footprint.

	* gnatsweb.pl: Refresh headers choke on semicolon-separated
	query-strings, so we change semicolons to ampersands in the URL
	everywhere we use refresh.

	* gnatsweb.pl (view, edit, submitedit, download_attachment): Added
	code to strip non-digit characters from $pr.  Gnatsd sometimes
	accepts category/number, and sometimes does the Wrong Thing, and I
	thought it best to remove the possibility of problems.

	* gnatsweb.pl (camouflage, set_pref): Removed camouflage()ing of
	'user', since the first time I used this version of gnatsweb, it
	became convinced that my username was 'ag`tavqw'.  This migration
	problem far outweighs the meager benefits of masking the username
	in the cookie.  camouflage()ing the password will still cause
	migration problems for sites that have used a previous incarnation
	of gnatsweb, but it might be worth it...

	* gnatsweb.pl (page_start_html): Don't show logout button if
	$site_gnatsweb_server_auth is set.  Don't show button bar on main
	page.  Changed all the html tags to lowercase, for
	standards-compliance.

	* gnatsweb.pl (datemenu, edit): Removed datemenu(), and the one
	(unreachable) reference to it.  It was unused, and probably
	justifiably so, given the robust date parsing abilities in gnatsd.

	* gnatsweb.pl (display_query_results): Strip empty params out of
	$url for the "View for bookmarking" link.

	* gnatsweb.pl (store_query): Strip empty params out of
	$query_string before building cookie, to help keep it under the 4K
	limit.  Check (approx) length of cookie, error if it looks like
	it's going to be over 4K.

	* gnatsweb.pl (get_mailto_link): Added a new config parameter,
	%site_pr_submission_address.  If set for the current database,
	get_mailto_link() adds a mailto: link ("submit followup via
	email") that goes to the local PR submission address and the PR's
	Reply-To address.  The subject is set so that the message gets
	tacked on to the PR's audit trail.

2001-09-02  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* test.pl: Remove parse/unparse tests.  These would be very hard
	  to get to work with GNATS 4's customized fields.

2001-08-23  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl ($VERSION): Change to 3.98.

	* gnatsweb.pl (submitedit): Corrected a typo that prevented
	  free-text search against specific fields from working.  Thanks
	  to Paul-Andre Panon for spotting this.

2001-08-20  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (edit): Add the attribute wrap=hard to
	  Reason-Changed textareas.  Causes input in these fields to be
	  added to the Audit-Trail prewrapped at $textwidth.

2001-08-19  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (parse_categories): No longer exclude 'pending' from
	  the category search list. This restriction made little sense.

	* gnatsweb.pl: Move the initial declaraion of $GNATS_VERS from the
	  sub initialize to the outermost block so that main_page can
	  access it.
	- (main_page): Print both the Gnatsweb and GNATS version numbers
	  in the main page footer.

	* gnatsweb.pl ($use_temp_db_prefs_cookie): New variable.  If this
	  is set, the db_prefs cookie is set without an expiry date,
	  generating a browser-stored cookie limited to the current
	  session.  This improves security.
	- (cmd_login): Set cookie expiry only if $use_temp_db_prefs_cookie
	  is false.

        * gnatsweb.pl (camouflage): New subroutine. If passed a scalar,
          camouflages it by XORing it with 19 and reversing the string.
          If passed a hash reference with keys "user" and "password", it
          camouflages the values of these keys using the same algorithm.
        - (uncamouflage): The camouflage algorithm is symmetric, so we
          just call it from here.
        - (cmd_login): Use camouflage to hide username and password in
          login cookies.  Will only provide a certain measure of security
          against the most casual and amateurish of prying eyes.
	- (set_pref): Use uncamouflage to retrieve username and password.

2001-08-18  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (submitquery): Make issuing of the client command
	  EXPR conditional.  Certain slightly unusual queries
	  would result in the client command EXPR being sent with no
	  parameter, generating a gnatsd error.

	* gnatsweb.pl (query_page): Avoid use strict-related warning if
	  $global_prefs{'columns'} was undefined.

	* gnatsweb.pl (print_stored_queries): Filter out stored queries
	  for other databases than the current one.  Change due to
	  Paul-Andre Panon.

2001-08-17  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* test.pl: Change query commands to work with gnatsd v4 syntax.
	  Testing now runs, but fails on parse/unparse.  May need a rewrite.

2001-08-16  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl: Make the $suppress_main variable global - it has to
	  be in order to make gnatsweb.pl callable from the test.pl
	  script.

2001-08-12  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (login_page): Prevent the word "Password" from being
	  printed twice.

2001-08-08  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl: ($VERSION): Change to 3.97 -- we're nearly
	  4.0 feature-complete now.

	* gnatsweb.pl: Replace the Login Again functionality with a Log
	  Out function:
	- Replace all occurences of "login again" with "logout".
	- (main_page): Change the "Login Again" label to "Log Out / Change
	  Database".
	- (cmd_logout): New subroutine. Clears the db_prefs cookie and
	  redirects the user to the login page.
	- (main): Call cmd_logout instead of going directly to login_page.

	* gnatsweb.pl: Add a navigation bar just below the page banner:
	- $site_button_background and $site_button_foreground. New
	  variables initialized to black and white resp.
	- (page_start_html): Rewrite to display button bar and generally
	  clean up the code, with clearer style declarations.
	- (login_page): Call page_start_html with an additional parameter
	  set to '1'. Prevents the button bar from being displayed on this
	  page.

2001-08-07  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (download_attachment): Fix a syntax error which
	prevented attachment downloading from working properly.

	* Cleanup to get rid of strict warnings:
	gnatsweb.pl: Change initial definition of
	$no_create_without_access from undef to ''.
	- (submitedit, main, mark_urls, display_query_results, unparsepr):
	  Add some || '' constructs. Fixes a bunch of 'uninitialized
	  value' warnings.
	- (param2field): Correctly translate 'PR' to 'Number'.  Remove
	  warn statement as it makes little sense with GNATS 4
	  configurable fields.
	
2001-07-26  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (display_query_results): Use cellspacing 0 and
	  cellpadding 1. Makes table a tad more readable.

	* gnatsweb.pl (page_start_html): Redesign the banner. Different
	typeface, different size. This is done so that we no longer need
	to keep separate styles based on browser and platform - things
	will look fairly similar across the board.
	- Also, we now print user and access level info in the banner
	itself, along with the database name.
	- (page_heading): Stop printing user and access level info in the
	heading (it now appears in the banner). We now print the page
	heading inside a simple <H1>, instead of in a table. This makes
	for cleaner HTML and less space between heading and page content.
	- Remove the third parameter in calls to page_heading. This used
	to control whether to print user and access info in the page
	heading.

2001-07-18  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (view, edit): Removed the check for non-digit
	characters introduced below. It is no longer needed since we now
	treat CODE_NO_PRS_MATCHED as an error.

	* gnatsweb.pl (store_query): Add checking of query name before we
	attempt to store it. According to
	http://home.netscape.com/newsref/std/cookie_spec.html, cookie
	names must not contain commas, semicolons or spaces, and they must
	not be blank.

	* gnatsweb.pl: New variables $print_header_done,
	$page_start_html_done and $page_heading_done to be used to
	ensure that we don't print headers, headings and banners twice.
	(print_header, page_start_html, page_heading): Use these
	variables.
	- All direct calls to CGI.pm's header function replaced by calls
	  to print_header.
	- (gerror): Rewritten to output headers, heading and banner.
	- (get_reply): We now treat the return code CODE_NO_PRS_MATCHED as
	  an error. Otherwise, users would be able to edit nonexistent
	  PRs. This has the unfortunate side-effect of outputting an error
	  when there are no matches to a query, but I consider that a
	  small price to pay. Tweaked error code formatting.
	- (popup_or_scrolling_menu): Inserted missing '!' in if statement.
	- (edit): Switched order of page_heading and readpr.

2001-07-16  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (page_heading): Use -nowrap=>'1' instead of plain
	  nowrap to avoid silly CGI.pm messages in the error_log.

	* gnatsweb.pl (error_page): New subroutine which replaces the
	local err_sub routine used in submitedit. We want all error
	reporting to be done through this subroutine, since it gives us
	a consistent look.

	* gnatsweb.pl (popup_or_scrolling_menu): Check if $string is
	defined by using 'if defined' instead of a numeric comparison.

	* gnatsweb.pl (advanced_query_page): Add a line below 'Closed
	After' and 'Closed Before' reminding users to uncheck 'Ignore
	Closed'. Added a little bit of vertical	space between tables.
	Ported from 2.x branch.

	* gnatsweb.pl (view, edit): Add a check for non-digit characters
	in PR numbers. If such characters are found, an appropriate error
	message is issued. gnatsd will actually accept PR numbers on the
	format string/xxxx, where xxxx is a number,  and return the
	appropriate PR. However, when edits are submitted to such a PR, a
	new PR with the "number" 'string/xxxx' would be created, with the
	same category as the original PR. This is a workaround for that
	problem. Ported from 2.x branch.

	* gnatsweb.pl: (page_heading): Set the width of the table
	containing the page heading and database, username and access
	level to 100%. Opera would display a too narrow table when the
	width wasn't explicitly set.

	* gnatsweb.pl (main): Add an explicit link to the automatic
        redirection page. Fix due to Mark Kuchel. Ported from 2.x branch.

	* gnatsweb.pl (login_page_javascript): Use correct <SCRIPT
        LANGUAGE>.

	* gnatsweb.pl (submitquery): If there's a query name, include it
	in the page heading. Ported from 2.x branch.

	* gnatsweb.pl (store_query): Gnatsweb will no longer allow you to
	store a query if this would result in more than 20 cookies.
	Otherwise random cookies get dropped and things start acting
	weird. 20 is a magical number as defined in
	http://home.netscape.com/newsref/std/cookie_spec.html. Ported from
	2.x branch.

	* gnatsweb-pl (display_query_results): Added a 'View for
	bookmarking' link, which reloads the same query so that you can
	bookmark it in your browser. Ported from 2.x branch.
	
	* gnatsweb.pl (submitedit): Modifying the CC list (X-GNATS-Notify
	header) was not working if X-GNATS-Notify existed but was empty.
	Problem turned out to be a couple of extraneous spaces in the
	field substitution regexps.

	* gnatsweb.pl: Change the example value of $site_mail_domain from
	@juniper.net to something nonexistent.

	* Implement redirects after edits (ported from 2.x branch): 
	
	gnatsweb.pl (get_pr_url): New subroutine. Returns a URL which
	will take one to the specified $pr and with a specified $cmd.
	(get_editpr_url, get_viewpr_url): Rewrite to use get_pr_url.
	(get_script_name): New subroutine. Same as script_name(), but
	includes 'database=xxx' parameter.
	(view, edit): Pass hidden variable return_url.
	(submitedit): New local subroutine err_sub. Makes it easier to
	postpone calling print_header. Rewrite all error messages in
	submitedit to use this routine.
	(submitedit): After submitting edits, users are now redirected
	back to the page where they were before the edit.
	(display_query_results): Change to use get_viewpr_url and
	get_editpr_url so that we get the return_url parameter as part of
	the URL.
	(print_header): New subroutine. Print HTTP header unless it's been
	printed already.
	(main): Don't call header() before calling submitedit(). Let
	submitedit itself take care of printing the headers it needs.

2001-07-15  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* test.pl: Don't use 'diff -u' during 'make test'; not everyone
	has GNU diff. Ported from 2.x branch.

        * gnatsweb.pl (decode_attachment): Fix a problem where attachments
	containing a double newline in the body would be truncated
	during decoding. Fix due to Omar Rashad.
	
	* gnatsweb.pl (parsepr): Strip leading space characters from each
	line of the attachments. Fixes attachment handling, which has
	been broken almost since GNATS 4.0 development started.

	* gnatsweb.pl (download_attachment): Insert a conditional to send
        the header based on HTTP_USER_AGENT. MS Internet Explorer 5.5
        would attempt to save downloaded attachments under the same name
        as the Gnatsweb script file, typically gnatsweb.pl. This is
        because MSIE handles the HTTP header "Content-Disposition:
        attachment" wrongly. It needs "file" instead of "attachment".

	* gnatsweb.pl (submitedit): Check whether fields that are
	specified in dbconfig as requiring a 'Reason Changed' have the
	reason specified.

2001-07-08  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* $VERSION increased to 3.96.

2001-07-08  Dirk Bergstrom  <dirk@juniper.net>

	* gnatsweb.pl: now runs with "use strict;". while combing though
	the code to properly declare and scope variables, i found several
	flags and routines that were unused; they were removed.  some
	routines were massaged to accomodate lexical scoping:
	- the sortby_field(_num) subs were inlined.
	- can_do_mime is wrapped in a do{} block to capture the cached value.
	- $default was removed from date_menu.

	* gnatsweb.pl: configuration switches gathered together at the top
	of the file, keeping all the hardcoded global values in one place.
 
	* gnatsweb.pl (popup_or_scrolling_menu): category
	dropdown/scrolling list now includes descriptions.  the
	descriptions from the categories file are now displayed, instead
	of just the (sometimes cryptic) codes.
 
	* gnatsweb.pl: uses warn() to write errors to the server logfile
	whenever an error is generated, a message is emitted to STDERR,
	containing a diagnostic message, the username, the database, and a
	stacktrace.
 
	* gnatsweb.pl (send_pr, edit): the create and edit PR pages now
	keep track of field number, so that javascript hooks can be
	applied.  forms are also named.  gnats field names customarily
	include dashes, and javascript names cannot include dashes, so it
	was impossible to write a javascript routine that could examine or
	change a field value.  to get around this, the code keeps track of
	the field number (starting at zero), and passes this value to the
	cb() callback.  this way, the callback can generate javascript on
	the fly, for things like client-side validitity checking.
 
	* gnatsweb.pl (send_pr, edit): field descriptions are printed in
	the create and edit pages (and optionally on the view PR page,
	though that tends to look overly cluttered), using the field
	descriptions from the dbconfig file.  this necessitated setting
	the column width of the left column to 20%, so that the
	descriptions would wrap.

	* gnatsweb.pl (view): tidied up logic for
	   [edit] or [view audit-trail] or send email to interested parties
	so that the last 'or' doesn't show up when users w/o edit access
	are viewing the audit trail.
	
	* gnatsweb.pl (page_start_html): database name now displayed in
	header.
 
	* gnatsweb.pl (mark_urls): replaced with a more rigorous
	version. now does email addresses, and turns references to PRs
	into view_pr_urls.  this is used on just about every field in
	the view-pr page, and on many fields in the query-results
	page.
 
	* gnatsweb.pl (client_exit): improved handling of errors and
	exceptions from gnatsd.  $suppress_client_exit is now actually
	honored, so that submitedit() and initialize() can recover
	gracefully from problems.  this is particularly important in
	submitedit() -- if we shut down the connection to gnatsd on an
	edit error, the lock on the PR will not be properly cleared.  this
	fixes a problem with stale PR lockfiles.
  
	* gnatsweb.pl (submitquery): dates are returned from queries as
	ISO-8601-like dates (yyyy-mm-dd hh:mm:ss tz), using the query
	format %{%Y-%m-%d %H:%M:%S %Z}D.  This makes sorting query results
	by date actually work.
  
	* gnatsweb.pl (submitquery): empty parameters are stripped from
	the query-string on the query-results page.  in a gnats db with
	many fields, the query-string will become very long, filled up
	with ...&field_name=&other_field=&third_field=&....  this is a
	problem, since IE5 truncates query-strings at ~2048 characters.

	* gnatsweb.pl (advanced_query_page): applied yngve's fix of v2.33
	to the advanced query page.
	
	* gnatsweb.pl: added explicit return statements to several subs
	for readability.
 
	* gnatsweb.pl (param2field): now looks thru @fieldnames for a
	matching field.  the old, algorithmic, behavior would fail on
	fields with multiple consecutive capitalized letters (ie: ID-Num
	would come back as Id-Num) and fields containing underscores
	(ie: Project_Number would come back as Project-Number).  if there
	is no matching gnats fieldname, it falls back to the old behavior.
 
	* gnatsweb.pl ($sn): global variable $sn renamed $script_name for
	clarity.
 
	* gnatsweb.pl: Responsible field always displayed as a mailto:
	link
 
	* gnatsweb.pl (send_html): removed the die() on file open failure.
	it seemed better to simply return, and let the caller decide what
	to do, especially since help_page already had error handling coded
	in...
 
	* gnatsweb.pl (can_edit, can_create): now use the access levels
	defined in gnatsd.h
 
	* gnatsweb.pl: added $no_create_without_access flag.  useful
	primarily for web-only sites which wish to limit PR creation to
	users with a minimum access level.  allows for view-without-create
	access.
 
	* gnatsweb.pl: gnatsd/gnatsweb can be set up for web-only access.
	if you want to set up a more tightly secured installation, you can
	allow only localhost connections to gnatsd, restrict logins to the
	host, and require all users to go thru gnatsweb.  this option
	assumes that the web server is doing authentication, and that the
	REMOTE_USER environment variable is correctly set.  with this
	switch set, the "login again" button is replaced by a "change
	database" button.

	* gnatsweb.pl (change_database): added to support web-only access
 
	* gnatsweb.pl: gnatsweb can be set up to ignore the gnats
	password.  the gnats network mode is quite cavalier about
	passwords, and some sites may elect not to use gnats passwords.
	if so, there's no point in gnatsweb asking for them.  if this
	switch is set, the "login again" page does not prompt for a
	password.
 
	* gnatsweb.pl (parse_config): removed this sub, since it is
	unused, and the %config hash is unused.  i have no clue why it's
	here -- it may be a relic from gnats 3.113, which, iirc, has a
	"config" file...
 
	* gnatsweb.pl ($site_mailer): removed, as it was unused
 
	* gnatsweb.pl (submitedit): removed $ok flag, since it was
	superfluous.  the "last LOCKED;" statements in the error handling
	blocks serve the same purpose
 
	* gnatsweb.pl (%db_pref): changed db_pref hash element 'email' to
	'email_addr'.  otherwise, whatever value user entered into the
	"Reporter's Email" field on the "Create PR" page would get stuck
	as their email address (because set_pref overrides %cvals{'foo'}
	with $q->param('foo')...)
 
	* gnatsweb.pl (initialize): substantially rewritten.  the old
	version issued a CHDB first, then attempted to set the user name
	(and thus get access) with USER.  this could lead to a deadlock
	situation where the user was "in" a database they didn't have
	access to, and thus login_page() couldn't display a list of
	databases so the user could change to one they *did* have access
	to.  access level defaulted to 'edit'.  the new version starts off
	by caching the results of DBLS, so that any failures down the line
	won't leave us in a deadlock.  then it does a CHDB, using the
	three-argument form (db-name, user-name, password), which will
	fail if the user does not have access to the selected database.
	from the response to the CHDB command, it extracts the
	access-level the user is granted in that database, and sets the
	global $access_level variable
	(access_level defaults to view, instead of edit).  finally, if the
	access_level is less than view (ie, submit, none or deny), the
	user is given the login page.
 
	* gnatsweb.pl (main, cmd_login): moved login code from command
	switch in main() to it's own sub.  this makes main() much cleaner.
	since i added a bunch of code to the login, it seemed best to move
	it to it's own sub.  cmd_login() also does some sanity-checking on
	the user name -- i discovered that users were entering PR numbers
	in the login field, because they were so used to just typing away
	in the first field they saw...
 
	* gnatsweb.pl (login_page): now displays an optional message,
	given as second parameter, useful for passing authentication
	errors to the user. only displays the necessary fields, depending
	on $site_gnats_browser_auth and $site_no_gnats_passwords.
 
	* gnatsweb.pl: debug flags allow for browser viewing of
	communications with gnatsd.  if the $site_allow_remote_debug flag
	is set, setting the 'debug' param will allow you to see the
	conversation between gnatsweb and gnatsd.  setting it to 'cmd'
	will show just gnatsweb's commands, 'reply' will show just
	gnatsd's replies, and 'all' will show both.  this is useful mostly
	for developers and gnats admins.  unfortunately, there's no good
	way to limit use of debug params to users with admin privileges,
	since much of what you might want to snoop happens *before* access
	level is determined.
 
	* gnatsweb.pl (hidden_debug): added to forms to preserve state of
	debug params.  this allows debugging during queries and
	create/edit submits.
 
	* gnatsweb.pl (main_page): now exit()s when finished.  so that we
	can call it from the big switch in main() when users try to do
	something they aren't allowed to do.
 
	* gnatsweb.pl (main): if access level is less than 'edit', users
	cannot submit edits to PRs.  previously, users w/o edit privileges
	did not see the "edit" button on the main page, but gnatsweb did
	not explicitly prevent them from submitting an edit
	(ie, with a manually created form).  this loophole is now closed.

	* gnatsweb.pl (main): $gnatsweb_site_file is read and eval'd,
	rather than pulled in using do(), to facilitate using strict
	(using do(), the included file is not in the including file's
	lexical scope).  errors generate a warn()ing to the server log as
	well as a die (which will go to the browser, via
	CGI::Carp::FatalsToBrowser).
	
	* gnatsweb-site-sente.pl: configuration switches from gnatsweb.pl
	duplicated at the top of the file, since this is the recommended
	place for them...

	* gnatsweb-site-sente.pl (site_callback): cleaned up the if
	blocks, removed unsupported callbacks.  added documentation for
	the suported callbacks.

2001-06-26  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (help_page): Fix a serious security hole where an
	attacker would be able to read any file on the system or run any
	command to which the web server process user had access to by
	submitting a rogue help_file parameter in the URL.  help_file is
	now hardcoded to 'gnatsweb.html'.

2001-04-05  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (query_page): Shift 'number' out of the array of
	selectable column names (@fieldnames) to prevent user from
	selecting it. That would cause the 'number' column to be
	repeated twice, since NUMBER_FIELD is explicitly added to the
	search format in submitquery. The best solution would be to
	remove the explicit addition, but that messes up column sorting.
	However, since the only drawback of the current fix is that we
	force the inclusion of PR numbers in the query results listing,
	this doesn't seem to matter much.
	
        * gnatsweb.pl (help_page): If present, return the gnatsweb.html
	document installed with Gnatsweb, stripped with send_html, as
	help text. Ported from Gnatsweb 2.x branch.

	* gnatsweb.pl (send_html): New subroutine that strips off
	everything outside <BODY> and </BODY> in an HTML document and
	returns the contents. Ported from Gnatsweb 2.x branch.

        * gnatsweb.html: Clean up HTML, fix spelling, remove some <I>'s
	and <B>'s that made the text less readable. Some slight
	rephrasing in order to clarify things.

2001-04-04  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (display_query_results): Use the provided 'nonempty'
	routine to pad empty cells with &nbsp;'s instead of the if used in
	the last checkin. This only takes care of the cases where the empty
	cells are not at the end of a row.  

	* gnatsweb.pl (display_query_results): When there are one or more
	empty cells at the end of a query result row, the remaining cells
	are padded with &nbsp;'s.

2001-03-29  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (display_query_results): Add an if clause in order to 
        print an &nbsp; if a field is empty. This is needed because most
	browsers won't render the border of an empty field.

	* gnatsweb.pl: Make output more amenable to CSS stylesheet formatting. 
        Add paragraph tags and enclose stuff that doesn't belong inside 
        paragraphs in DIV tags. Use heading tags instead of font size tags for 
        headings. Also correct some rather bad HTML problems with missing 
        endtags for paragraph and table tags all over the place. These caused 
        Netscape Navigator to refuse to use stylesheet styling in query results 
        table cells. This should also improve browser rendering performance.
	Improved HTML source code formatting by adding lots of \n's

	* gnatsweb.pl (main_page): Remove Matt's and Kenneth's e-mail
	addresses. They do not seem to be valid anymore.

	* gnatsweb.pl (main_page): Collect the two query buttons on one
	line in order to conserve vertical space.

2001-03-24  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* gnatsweb.pl (login_page_javascript): Use correct <SCRIPT LANGUAGE>.
	Fix the Javascript code and improve the warning messages if cookies
	are not enabled.

2001-03-22  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl (display_query_results): Apply escapeHTML to
	$fieldcontents before printing.

2001-03-21  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* gnatsweb.pl ($VERSION): Bump to 3.95.

2001-03-21  Yngve Svendsen  <yngve.svendsen@clustra.com>

	* gnatsweb.pl: New configuration variable $site_stylesheet.
	(page_start_html): Use it.

2001-03-11  Tommi Virtanen  <tv@debian.org>

	* gnatsweb.pl (decode_attachment): Editing bugs with attached files 
	used to bomb out trying to chomp a constant string.

2000-02-08  Tom Tromey  <tromey@cygnus.com>

	Turn URLs in PR text into real URLs:
	* cgi-bin/gnatsweb.pl (mark_urls): New function.
	(view): Use it.
	(edit): Likewise.

2001-02-03  Mark Kuchel <mark@kuchel.net>
            Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* gnatsweb.pl (login_page_javascript): Properly warn about cookies
	being required, both if Javascript is enabled and if it is disabled.

2001-01-22  Mark Kuchel <mark@kuchel.net>

	* gnatsweb.pl (main): Generate proper cookie paths.

2001-01-11  Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>
	
	* gnatsweb.pl (help_page): Simplify the welcome text and make it
	more generic.
	
2000-12-29  Mark Kuchel <mark@kuchel.net>
            Gerald Pfeifer  <pfeifer@dbai.tuwien.ac.at>

	* gnatsweb.pl (main): Add an explicit link to the automatic
	redirection page.

==========  Starting immediately, we have to use GNU ChangeLogs =====

==========  gnatsweb 2.6 released ===================================

1999-11-30  Kenneth H. Cox  <kenstir@abraham.senteinc.com>

	* Enhancement: If user does not have cookies enabled, they now get
	a warning on the Login page.  Previously, you would have to submit
	the login page before you got the warning, then you would have to
	go back and resubmit the page.  A little JavaScript goes a long
	way.

1999-11-27  Kenneth H. Cox  <kenstir@abraham.senteinc.com>

	* Enhancement: If DEFAULT_RELEASE is set in the gnats config file,
	then it is now used as the default value in new PR's.
	Patch by Brian Cameron <Brian.Cameron@Eng.Sun.COM>.

	* Bug fix: In "send email" link, include GNATS_ADDR.
	Patch by Jason Molenda <jsm@cygnus.com>.

	* Enhancement: Reversed the default sort, so that new PR's appear
	before older ones.  Added some more debug prints.
	Patch by Tim Riker <TimR@CalderaSystems.com>.

1999-11-18  Kenneth H. Cox  <kenstir@abraham.senteinc.com>

	* New features: Now the site_callback can
	- supply default values for various things until they are
	specified and stored in the user's cookies: Reporter's
	email...(more coming?).  This facilitates that first PR for new
	people.
	- print new buttons at top+bottome of main page.
	- print stuff at the top of individual fields on the sendpr and
	editpr pages.

	See gnatsweb-site-sente.pl for	examples.

	* Bug fix: The default list of columns displayed for a query was
	empty; now it isn't.  You can still get the empty list if you
	explicitly turn off all columns.

==========  gnatsweb 2.6 beta2 released ===================================

1999-11-17  Kenneth H. Cox  <kenstir@abraham.senteinc.com>

	* New feature: Now all links and forms contain the database param,
	so that you can keep multiple databases open in multiple browser
	windows.

==========  gnatsweb 2.6 beta released ===================================

1999-11-14  Kenneth H. Cox  <kenstir@abraham.senteinc.com>

	* New feature? Cookies are now stored with path=/.  I don't know
	if this'll help IE users or not; I actually did it to share
	cookies between my test web and my main web.  You should still be
	able to get to your stored queries, and even delete them.

	* New feature: If you follow a URL such as
	http://www.x.com/cgi-bin/gnatsweb.pl?cmd=view&database=main&pr=1269
	and you are forced to login, then after logging in you will be
	redirected to the requested age.  I tried doing this with a
	redirect but that didn't work; had to use a somewhat ugly
	zero-delay refresh.  If you can figure that out I'd be grateful.

	* New feature: Split cookies into a global cookie (column
	preference and email addr) and a db-specific cookie.  That way you
	don't have to keep typing in different passwords if you change
	db's.

	* Code reorg: Cleaned up the main proc especially w.r.t. the
	cookie-setting stuff.  Now all of the preference settings happen
	at once, and there is only one 'switch' over all of the commands.
	However, if you don't have cookies enabled I probably broke the
	detection of this error.

1999-11-13  Kenneth H. Cox  <kenstir@abraham.senteinc.com>

	* New feature: Added a button to delete stored queries.
	Patch by Robert Lupton the Good <rhl@astro.princeton.edu>.

	* Bug fix (get_mailto_link): MSIE users need special handling in
	the mailto: link.
	Patch by <ralph_pursifull@am.exch.hp.com>.

==========  gnatsweb 2.5 released ===================================

1999-10-16  Kenneth H. Cox  <kenstir@abraham.senteinc.com>

	* Bug fix: Attachment file names are now stripped of any path
	elements, so that the browser doesn't prompt you to save,
	e.g. c:\windows\system.ini

	* New feature: In the Query Results page, there is now an edit
	link next to the view link, if you have edit priviledges.

1999-10-13  Kenneth H. Cox  <kenstir@abraham.senteinc.com>

	* New feature: If you have an "unknown" category, then gnatsweb
	will use it as the default, and issue an error if somebody tries
	to submit a PR with Category=unknown.
	Patch by Robert Lupton the Good <rhl@astro.princeton.edu>.

1999-10-01  Kenneth H. Cox  <kenstir@abraham.senteinc.com>

	* Bug fix: When parsing a PR with a description field containing
	From:, gnatsweb would erroneously save that as the originator's
	email address.
	Patch by Elgin Lee <ehl@terisa.com>.

1999-09-28  Kenneth H. Cox  <kenstir@abraham.senteinc.com>

	* Bug fix: For release-based gnats, "target" should have been
	"quarter".

1999-09-24  Ken Cox  <kenstir@special-sauce.senteinc.com>

	* Bug fix (main): Gnatsweb was not handling failed logins
	correctly.  Thanks to Robert Abatecola <robert@tsgus.com>
	for the fix.

==========  gnatsweb 2.5 beta2 ======================================

1999-09-23  Kenneth H. Cox  <kenstir@abraham.senteinc.com>

	* Bug fix: An extra blank attachment was getting added during
	edit.  Now it isn't.

	* New feature: Can now delete file attachments.

	* Enhancement: gnatsweb-site.pl can now set $site_post_max.
	If this is set, and a post exceeds this limit, then gnatsweb will
	fail with an error.  This prevents somebody from swamping your
	server by attaching a huge file.

	* Enhancement: Now sets cookie only when the cookie values
	change.  This makes it much less annoying for people who have
	cookie prompting turned on.
	Patch by Ronald J. Kimball <rkimball@vgi.com> and
	Robert Abatecola <robert@tsgus.com>.

1999-09-20  Kenneth H. Cox  <kenstir@abraham.senteinc.com>

	* New feature: gnatsweb-site.pl can now override basic color
	selections without using the complicated site_callback method.  I
	do this so that I can tell visually when I'm running a test
	version of gnatsweb and when I'm running the production version.
	See $site_background, $site_banner_foreground,
	$site_banner_background.

==========  gnatsweb 2.5 beta ======================================

1999-09-19

	* New feature: Experimental support for file
	attachments in the Unformatted field.  Use MIME::Base64 package
	because it makes life easy.  Looked at but did not use MIME-tools
	for creating and parsing the attachments, because it required that
	too many packages be installed (it contains 21 packages and it
	requires 5 more).  For this to work you need CGI.pm-2.56 and
	any version of MIME::Base64.

	This I consider this support experimental because
            - it's tested, but not all that thoroughly
            - it requires you to get new perl packages
              CGI.pm-2.56
              MIME::Base64
            - there is as yet no way to delete file attachments
            - uploading a big file can cause the appearance that gnatsweb
	      is hung.  I think a workaround is to set $CGI::POST_MAX
	      but I haven't tried it.

	* Enhancement: Added 'send email' link to edit page.  Used to be
	present only on view page.

	* Enhancement: Added submit + reset buttons to top of
	Create PR form.

	* Enhancement (test.pl): Die if loading gnatsweb.pl or
	gnatsweb-site has errors.
	Patch from Ronald J. Kimball <rkimball@vgi.com>

	* Enhancement (validate_email_field): Used regexp donated by
	rkimball@vgi.com to allow @ in email addresses only if it's
	followed by what looks more or less like a domain name.

	* Bug fix (submit_stored_query): Must use full (not relative) URL
	in redirect, to work around bug interacting with Netscape
	Enterprise Server 3.5.1.
	Patch from Elgin Lee <ehl@terisa.com>.

	* Bug fix (initialize): Keyword query should have been 'kywd' not
	'keyw'.
	Patch from Elgin Lee <ehl@terisa.com>.

	* Bug fix (sendpr): Removed "CC" capability, as it was causing too
	much confusion.  That field would only send a copy of the initial
	PR, but wouldn't put you on the X-Gnats-Notify list; everyone here
	thought it would. Now there are only "Reporter's email" and "CC
	these people on PR status email".  Also, the latter list gets a
	copy of the initial PR.  Hopefully that will clear up the
	confusion.

	* Bug fix (sendpr): The X-Gnats-Notify field was not handling
	lists of email addresses properly.  Now it is.
	Patch from James Lin <james@jeditech.com>.

	* Bug fix (submitedit): Really fixed the following bug:
	When sending mail, use email address in
	responsible file as From, if present.
	Reported by Jason Molenda <jsm@cygnus.com>.
	Thanks, Carl Lindberg for pointing this out.

==========  gnatsweb 2.4 released ======================================

1999-07-27  Kenneth H. Cox  <kenstir@abraham.senteinc.com>

	* Enhancement?:  Added HTML help (gnatsweb.html) provided by Matt.
	As yet, there is no way to get to this help file from within
	gnatsweb.  A patch to do this would be appreciated.  Note that to
	keep installation drop-dead simple, this HTML help should be
	served up by gnatsweb itself, not installed in a separate file
	(which for an Apache server would need to be installed into a
	separate directory).

	* Requested enhancement: Use version number (not revision number)
	on main page.

	* Bug fix (get_reply): Gnatsweb was mangling some gnatsd error
	messages so as to make them ungrammatical.
	Reported by Jason Molenda <jsm@cygnus.com>.

	* Bug fix (submitedit): When sending mail, use email address in
	responsible file as From, if present.
	Reported by Jason Molenda <jsm@cygnus.com>.

1999-06-25  Kenneth H. Cox  <kenstir@abraham.senteinc.com>

	* Requested enhancement:
	(sendpr): Description text area is larger (8 lines) Environment is
	smaller (2 lines).

	* Bug fixes:
	(display_query_results): Carl Lindberg fixed a bug in the results
	display when using apache + mod_perl.
	(validate_email_field):  Carl Lindberg made a change to allow
	non-qualified email addresses.

	* Speed enhancement:
	Removed 'use POSIX' since it's not needed.

1999-06-13  Kenneth H. Cox  <kenstir@abraham.senteinc.com>

	* New feature:
	The "send email to interested parties" link now includes in the
	body of the message the URL which you can use to view the PR in
	question.

	* Bug fix:
	The "send email to interested parties" link is now properly URL
	encoded.

1999-05-30  Kenneth H. Cox  <kenstir@abraham.senteinc.com>

	* Bug fix:
	X-gnatsweb-version header was being thrown away by GNATS.  Changed
	to `X-Send-Pr-Version: gnatsweb-$VERSION' so that it wouldn't be.
	Reported by rickm.

1999-05-13  Kenneth H. Cox  <kenstir@abraham.senteinc.com>

	* Bug fix:
	Replaced font() with $q->font() for old CGI.pm's.

==========  gnatsweb 2.3 released ======================================

1999-05-08  Ken Cox  <kenstir@special-sauce.senteinc.com>

	* Requested enhancement: Reporter's email address is now shown on
	the view and edit pages.

	* Bug fixes:
	(initialize): Fixed bug reported by Thomas A Peterson
	<tap@htc.honeywell.com>:  If a user has logged in, then somebody
	changes their gnatsd password, then gnatsweb got stuck; it would
	try the old password without presenting the login screen.  Now for
	the 'chdb' and 'user' commands, failure takes you to the login
	screen.
	(main): Use 'warn' to report compilation errors in
	'gnats-site.pl'.  Previously these errors were not being reported
	anywhere.
	(everywhere): Use '$q->escapeHTML' instead of 'CGI::escapeHTML',
	as the latter was not working for folks with old CGI.pm's.

	* Audit-Trail feature (submitedit): Since no conclusion was
	reached on the gnats mailing list re: the redesigned Audit-Trail
	format and how to change all of the programs to support it, I
	implemented a gnatsweb-only feature.  In the site_callback you can
	set a field's AUDITINCLUDE flag; if the flag is set then changes
	in that field are recorded in the Audit-Trail.  Multitext fields
	are indented when their old/new values are printed.  By default,
	the only fields which have the AUDITINCLUDE flag set are
	Responsible and State.

1999-04-25  Ken Cox  <kenstir@special-sauce.senteinc.com>

	* Bug fixes:
	(interested_parties): Fixed notify problems reported by someone.
	Since MLPR is not working as expected, do the work in this sub.
	(trim_responsible): Fixed bug reported by Matt.  Don't lowercase
	the Responsible name address, don't confuse Responsible with email
	addresses.

	* View PR page: Display a mailto link for sending email to all
	interested parties.

1999-04-21  Ken Cox  <kenstir@special-sauce.senteinc.com>

	* PR Notify lists: Now editors can add themselves to the list of
	people who get notified when a PR changes state, by changing
	"X-GNATS-Notify".  This is also available when creating a new PR.

	* New PR validation: submitnewpr() now performs more error
	checking on a new PR before mailing it.

	* Bug fixes:
	test.pl: Fixed tests so that they don't fail for lines beginning
	with '.'.  RickM #22.
	(initialize): Removed 'pending' from category list.
	(submitedit): No longer gives an error if it trims old-style
	'Responsible: kenstir (Ken Cox)' to 'Responsible: kenstir'.
	(praddr): Patch from Carl to support blank responsible field.

1999-04-17  Ken Cox  <kenstir@special-sauce.senteinc.com>

	* Better test harness: Does query, then uses those PR's for
	parsepr/unparsepr test.

	* In email notifications, include database name in URL.

==========  gnatsweb 2.2 released ======================================

1999-04-17  Kenneth H. Cox  <kenstir@abraham.senteinc.com>

	* site_callback: New reason 'initialize', lets the site_callback
	muck with the global data structures if desired.
	Suggested by Carl_Lindberg@BLaCKSMITH.com.

	* Advanced Query page:
	- Added reset button.  RickM #8.
	- Sort category, submitter_id, responsible lists.  RickM #5.
	- Reordered date queries on Advanced Query page, as requested by
	RickM #6.
	- Added GNATS_RELEASE_BASED date queries.

	* Create PR page: Submitter-Id and Originator are now visible;
	Submitter-Id is treated as an enumerated field.  Both are
	remembered via the cookie.

	* Misc fixes:
	- New PR no longer escapes leading '.' characters.  RickM #23.
	- No more blank cells in query results table.
	- Check 2 common places for sendmail, before bombing
	out with a helpful message.  Fixes reports of gnatsweb install
	trouble on solaris.
	- Can now display and sort by Confidential, Release, Submitter-Id.
	RickM bug #3, #10.

	* Use scrolling_list instead of checkbox_group on query page.  Was
	beginning to have too many unaligned checkboxes.

	* New $site_release_based var controls display of fields added by
	compiling gnats with -DGNATS_RELEASE_BASED
	Incorporates spirit of patches by Paul Traina <pst@juniper.net>.

1999-04-14  Kenneth H. Cox  <kenstir@abraham.senteinc.com>

	* gnatsweb.pl: Replaced CGI function calls with method
	invocations, e.g. Tr() with $q->Tr().  This is more in keeping
	with mg's style, and clears up problems which Martin Apel
	<apel@tecmath.de> had using perl 5.004_04.

1999-04-13  Kenneth H. Cox  <kenstir@abraham.senteinc.com>

	* gnatsweb.pl (view): Only print 'edit' button on View page if
	user can edit.  RickM bug #1.

1999-04-12  Kenneth H. Cox  <kenstir@abraham.senteinc.com>

	* gnatsweb.pl (submitedit): Don't complain if you can't get the
	email address of the old Responsible; it may have been invalid, or
	they may have left the company.
	Reported by Carl_Lindberg@BLaCKSMITH.com.
	(edit): When editing a PR, trim Responsible field as if it were an
	email address  Carl reports that his PR's from gnats 3.2 look this
	way.
	(sendpr, edit): Shift 'all' off of @responsible and @state.
	Reported by Carl.

==========  gnatsweb 2.1 released ======================================

* Fixed Advanced Query page: multi-selection listboxes weren't working;
was querying for "|kenstir".  Patch suggested by
Carl_Lindberg@BLaCKSMITH.com.

* site_callback() extended.  Now called for additional reasons:
        page_footer --   can print extra stuff near the bottom of the
                         page, e.g. to add buttons on the view page
        page_end_html -- can extend the absolute end of the page
Requested by Carl_Lindberg@BLaCKSMITH.com.

* --- INCOMPATIBILE CHANGES to site_callback() ---
  - When the $reason is 'page_heading', the argument list is different.
    See gnatsweb-site-sente.pl for example.  Changed for consistency.
  - No need for reason 'view_postlude'; can be done with 'page_footer'.

Changes in 2.0:

* Stored queries.

* Query results can be sorted by clicking on a column heading.

* Advanced query page for access to full power of gnats.

* Integrated with Matt Gerassimoff's "gnats.pl" for gnatsd hipness.