Compare commits

..

765 Commits

Author SHA1 Message Date
dkl%redhat.com
8c591d53e2 Removed some remaining SelectVisible calls in favor of CanSeeBug
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@121533 18797224-902f-48f8-a5cc-f745e15eee43
2002-05-15 18:36:31 +00:00
dkl%redhat.com
c1aa983fd5 Update to HEAD 2002/05/13
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@121401 18797224-902f-48f8-a5cc-f745e15eee43
2002-05-13 21:56:49 +00:00
dkl%redhat.com
3551227412 forgot one
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@121393 18797224-902f-48f8-a5cc-f745e15eee43
2002-05-13 20:49:00 +00:00
dkl%redhat.com
d0cc91f285 Fixed some template inconsistencies with current 2.16 Stable Branch
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@121392 18797224-902f-48f8-a5cc-f745e15eee43
2002-05-13 20:46:50 +00:00
(no author)
65ff7d56b3 This commit was manufactured by cvs2svn to create branch
'Bugzilla_PgSQL_branch'.

git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@121370 18797224-902f-48f8-a5cc-f745e15eee43
2002-05-13 06:24:51 +00:00
dkl%redhat.com
800eccde9a Merge with HEAD 2002/04/26
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@119979 18797224-902f-48f8-a5cc-f745e15eee43
2002-04-26 18:59:37 +00:00
(no author)
5360e5b008 This commit was manufactured by cvs2svn to create branch
'Bugzilla_PgSQL_branch'.

git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@119975 18797224-902f-48f8-a5cc-f745e15eee43
2002-04-26 18:12:55 +00:00
dkl%redhat.com
da759055dd Sync to HEAD 2002/03/21
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@117156 18797224-902f-48f8-a5cc-f745e15eee43
2002-03-22 05:16:48 +00:00
(no author)
1f960bb1bd This commit was manufactured by cvs2svn to create branch
'Bugzilla_PgSQL_branch'.

git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@116669 18797224-902f-48f8-a5cc-f745e15eee43
2002-03-15 23:23:14 +00:00
dkl%redhat.com
e0f4b89db1 Update to HEAD 2002/02/26
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@115395 18797224-902f-48f8-a5cc-f745e15eee43
2002-02-27 01:11:14 +00:00
(no author)
025b6e8e46 This commit was manufactured by cvs2svn to create branch
'Bugzilla_PgSQL_branch'.

git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@115298 18797224-902f-48f8-a5cc-f745e15eee43
2002-02-24 09:28:23 +00:00
dkl%redhat.com
704f46aa53 Update to HEAD 2002/02/04
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@113607 18797224-902f-48f8-a5cc-f745e15eee43
2002-02-04 15:56:15 +00:00
(no author)
f26338df7e This commit was manufactured by cvs2svn to create branch
'Bugzilla_PgSQL_branch'.

git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@113575 18797224-902f-48f8-a5cc-f745e15eee43
2002-02-03 09:28:50 +00:00
dkl%redhat.com
58548c3f0d Update to HEAD 2002/01/30
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@113247 18797224-902f-48f8-a5cc-f745e15eee43
2002-01-30 23:00:13 +00:00
(no author)
9a6b4393ad This commit was manufactured by cvs2svn to create branch
'Bugzilla_PgSQL_branch'.

git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@113166 18797224-902f-48f8-a5cc-f745e15eee43
2002-01-29 23:26:38 +00:00
dkl%redhat.com
4316819604 Fix runtests.sh error on processmail
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@112507 18797224-902f-48f8-a5cc-f745e15eee43
2002-01-21 23:27:24 +00:00
dkl%redhat.com
9d93dfabb8 Fix botched earlier sync with HEAD
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@112499 18797224-902f-48f8-a5cc-f745e15eee43
2002-01-21 20:42:30 +00:00
dkl%redhat.com
d2ddb07675 Update to HEAD 01/18/2002
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@112473 18797224-902f-48f8-a5cc-f745e15eee43
2002-01-18 23:06:43 +00:00
dkl%redhat.com
66d426dc97 Lost the pgsetup.pl file somewhere along the line. Adding back properly.
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@111575 18797224-902f-48f8-a5cc-f745e15eee43
2002-01-08 16:13:05 +00:00
dkl%redhat.com
b7e91cb3b6 Changes to CanSeeBug to allow multiple checks in one call for buglist.cgi
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@111509 18797224-902f-48f8-a5cc-f745e15eee43
2002-01-07 23:20:15 +00:00
dkl%redhat.com
5ac0899827 Update to HEAD 2002-01-07
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@111508 18797224-902f-48f8-a5cc-f745e15eee43
2002-01-07 23:14:41 +00:00
dkl%redhat.com
4f49e57a3b Merge 3 with HEAD: 2001/12/26
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@111103 18797224-902f-48f8-a5cc-f745e15eee43
2001-12-27 07:26:12 +00:00
dkl%redhat.com
38c27be28f Merge 2 with HEAD: 2001/12/26
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@111102 18797224-902f-48f8-a5cc-f745e15eee43
2001-12-27 06:02:04 +00:00
dkl%redhat.com
d60d3d6121 Merge fix. This is frustrating.
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@111101 18797224-902f-48f8-a5cc-f745e15eee43
2001-12-27 05:29:04 +00:00
dkl%redhat.com
db0b87fb6c Merge with HEAD on 2001/12/26
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@111100 18797224-902f-48f8-a5cc-f745e15eee43
2001-12-27 05:09:43 +00:00
(no author)
6e2791a4b7 This commit was manufactured by cvs2svn to create branch
'Bugzilla_PgSQL_branch'.

git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@110404 18797224-902f-48f8-a5cc-f745e15eee43
2001-12-12 22:41:21 +00:00
dkl%redhat.com
14542c62c7 Update to HEAD 2001-12-03
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@109510 18797224-902f-48f8-a5cc-f745e15eee43
2001-12-03 04:06:19 +00:00
dkl%redhat.com
38ebcba576 Fixed error in AddFDef
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@108598 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-20 18:40:38 +00:00
dkl%redhat.com
a5502157a9 Update to HEAD - November 18, 2001
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@108470 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-19 05:57:30 +00:00
(no author)
ba69b37618 This commit was manufactured by cvs2svn to create branch
'Bugzilla_PgSQL_branch'.

git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@108456 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-18 22:20:21 +00:00
dkl%redhat.com
22b863a5e9 Synced up with CVS HEAD and created Bugzilla_PgSQL_branch_sync tag
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@107700 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-08 23:03:10 +00:00
dkl%redhat.com
3e54979994 Fixed conflict in Bug.pm, removal of tabs from lots of files.
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@107385 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-06 01:21:11 +00:00
dkl%redhat.com
d73ca44c76 Add new cpan module dependencies
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@107356 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-05 21:43:11 +00:00
dkl%redhat.com
a4fc52b12e Updates and bug fixes
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@107354 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-05 21:10:15 +00:00
dkl%redhat.com
353baca797 New SQL utility functions. Changes in buglist.cgi to improve queries.
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@106967 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-01 15:35:03 +00:00
dkl%redhat.com
4618ab6c36 Initial checkin of pgsetup.pl. Utility for setting up Bugzilla database in PostgreSQL.
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@106569 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-29 20:15:50 +00:00
justdave%syndicomm.com
faaed9c15f initial commit of PgSQL megapatch v0.2
git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@106532 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-29 07:49:05 +00:00
(no author)
675f64d0ae This commit was manufactured by cvs2svn to create branch
'Bugzilla_PgSQL_branch'.

git-svn-id: svn://10.0.0.236/branches/Bugzilla_PgSQL_branch@106501 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-28 03:41:01 +00:00
zach%zachlipton.com
87b667ee3b Fix for bug 96675: checksetup should require admin e-mail address satisfy emailregexp. This fix has
checksetup.pl use the emailregexp set in params if the params file exists, or ensures that it matches the
default emailregexp from defparams.pl.

r1=justdave, r2=bbaetz.


git-svn-id: svn://10.0.0.236/trunk@106499 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-28 03:40:59 +00:00
mkaply%us.ibm.com
71ed601f6d Trying to get nsDeviceContext to rebuild to fix test bustage
git-svn-id: svn://10.0.0.236/trunk@106498 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-28 02:46:30 +00:00
peterv%netscape.com
c3ced435c5 OS X bustage fix. AEEventHandlerProcPtr takes an unsigned long instead of a long.
git-svn-id: svn://10.0.0.236/trunk@106497 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-28 01:30:30 +00:00
peterv%netscape.com
402434aa2c Clean up. mozilla/modules/libimg/src got whacked a while back. rs=sfraser.
git-svn-id: svn://10.0.0.236/trunk@106496 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-28 00:47:23 +00:00
peterv%netscape.com
1c573efac9 Trying to fix OS X bustage by setting the entry points for Carbon targets to __NSInitialize and __NSTerminate as __initializeResources and __terminateResources were made #if !TARGET_CARBON.
git-svn-id: svn://10.0.0.236/trunk@106495 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-28 00:45:00 +00:00
sspitzer%netscape.com
ef5a93299a fix for #45084. add mnemonics to the mailing list dialog.
r=jag, sr=sspitzer.  thanks to james green (jg@cyberstorm.demon.co.uk) for the patch.


git-svn-id: svn://10.0.0.236/trunk@106494 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 23:01:59 +00:00
brendan%mozilla.org
788b8d31b2 Avoid stack overflow in js_EmitTree on long left-associative operator chains (98901, r=jband, sr=shaver).
git-svn-id: svn://10.0.0.236/trunk@106489 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 18:38:16 +00:00
sspitzer%netscape.com
3017557a5f fix for #90754 (return progress meter to inactive state) and #106763 (no items in subscribe tree until you do a search).
r/sr=bienvenu


git-svn-id: svn://10.0.0.236/trunk@106488 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 18:27:56 +00:00
peterv%netscape.com
38b6df0b56 Add DEBUG-only include of "prenv.h". Bustage fix.
git-svn-id: svn://10.0.0.236/trunk@106487 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 17:27:29 +00:00
gerv%gerv.net
e2267e9bac Fix broken comment. Bug 107043. Patch by cbiesinger@web.de, r=pavlov, sr=tor.
git-svn-id: svn://10.0.0.236/trunk@106486 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 17:24:19 +00:00
peterv%netscape.com
88c301555c Adding back file that I removed by accident. rev 1.4 with patch for bug 83589 applied.
git-svn-id: svn://10.0.0.236/trunk@106485 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 16:58:43 +00:00
peterv%netscape.com
e10435b4ce Clean up. mozilla/rdf/tests/domds got whacked a while back. rs=sfraser.
git-svn-id: svn://10.0.0.236/trunk@106484 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 16:16:54 +00:00
peterv%netscape.com
ac958fa88a ix for bug 83589 -- fix the mac build scripts so that a commercial tree doesn't clobber config files in the mozilla tree. Make a MoreFilesDebug.lib. r=peterv,sr=scc -- Removing files that sfraser forgot to remove.
git-svn-id: svn://10.0.0.236/trunk@106483 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 16:05:50 +00:00
peterv%netscape.com
8474b3d48e Fix for bug 83589 -- fix the mac build scripts so that a commercial tree doesn't clobber config files in the mozilla tree. Make a MoreFilesDebug.lib. r=peterv,sr=scc -- Part of patch that sfraser forgot to check in.
git-svn-id: svn://10.0.0.236/trunk@106482 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 15:54:47 +00:00
jake%acutex.net
be3ee559e5 A few enhancements to the template test:
* If there's a compilation error, report what it is
 * Don't try to compile a template if it doesn't exist
   - We already tested for that and issued an ERROR
 * Define the 'url' FILTER


git-svn-id: svn://10.0.0.236/trunk@106481 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 15:27:31 +00:00
mkaply%us.ibm.com
c8e3400160 More OS/2 bustage
git-svn-id: svn://10.0.0.236/trunk@106480 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 15:11:44 +00:00
mkaply%us.ibm.com
8b2ff76750 Putting these back the way they were in an attempt to fix the bustage
git-svn-id: svn://10.0.0.236/trunk@106479 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 15:11:07 +00:00
mkaply%us.ibm.com
90f5b9c725 OS/2 bustage - ugly I know - I'm opening a bug with the compiler folk
git-svn-id: svn://10.0.0.236/trunk@106478 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 14:47:08 +00:00
jaggernaut%netscape.com
71e30acb6e Bug 53057: Fixing up users of implicit |CharT*| conversion operators for nsCString to use |.get()| instead, rr=dbaron, rs=scc
git-svn-id: svn://10.0.0.236/trunk@106477 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 14:30:31 +00:00
mkaply%us.ibm.com
09f3f995da Fix Os/2 build bustage - I don't know why, but we have seen this before
git-svn-id: svn://10.0.0.236/trunk@106476 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 13:41:47 +00:00
mkaply%us.ibm.com
7cb4579c59 Reverting cls attempt to fix Os/2 bustage as it busts us more :( - issue is that somehow unicharutil_s.lib is bad on OS/2 - it doesn't have to do with the length of the name - still looking
git-svn-id: svn://10.0.0.236/trunk@106475 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 11:54:03 +00:00
jaggernaut%netscape.com
9851f5a7fa Bug 70083: add nsASingleFragmentString to hierarchy. r=dbaron, sr=scc
git-svn-id: svn://10.0.0.236/trunk@106474 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 11:40:01 +00:00
jaggernaut%netscape.com
38717bd097 Bug 53057: Fixing up users of implicit |CharT*| conversion operators for nsCString to use |.get()| instead, rr=dbaron, rs=scc
git-svn-id: svn://10.0.0.236/trunk@106473 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 11:28:06 +00:00
jaggernaut%netscape.com
e50f948785 Bug 105987: Clean up nsCharTraits.h, use slightly faster implementations where possible, r=dbaron, sr=scc.
git-svn-id: svn://10.0.0.236/trunk@106472 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 09:40:08 +00:00
seawood%netscape.com
f6ed45a7ff Fix for mac bustage. r=jag
git-svn-id: svn://10.0.0.236/trunk@106471 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 08:57:01 +00:00
stephend%netscape.com
7610fd0017 Bug 101647. Smileys missing in Message Display pref panel. Patch by Christopher Aillon <caillon@returnzero.com> r=glazou@netscape.com, sr=blakeross@telocity.com
git-svn-id: svn://10.0.0.236/trunk@106470 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 08:56:15 +00:00
jaggernaut%netscape.com
80fd1aa040 Bug 107104: ``Throbber busted; js error since complexvalue, not string, returned'', patch by jrgm, r=jag.
git-svn-id: svn://10.0.0.236/trunk@106469 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 08:42:22 +00:00
stephend%netscape.com
43e887075f Bug 83318 - Wording changes from 'Get Msg' to 'Get Msgs' and 'New Msg' to 'Compose'. 50865 - Removing the duplicated charset menu item for folders. Both bugs have r=jglick@netscape.com, sr=sspitzer@netscape.com
git-svn-id: svn://10.0.0.236/trunk@106468 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 08:19:54 +00:00
jaggernaut%netscape.com
8af9e92f11 Fix js error caused by bnesse's checkin (which I reviewed, shame on me), r=mozbot.
git-svn-id: svn://10.0.0.236/trunk@106467 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 08:16:56 +00:00
jaggernaut%netscape.com
894154f57b Bug 53057: Fixing up users of implicit |CharT*| conversion operators for nsCString to use |.get()| instead, rr=dbaron, rs=scc
git-svn-id: svn://10.0.0.236/trunk@106466 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 08:09:28 +00:00
seawood%netscape.com
2aa4dfe1f7 Set MOZ_UNICHARUTIL_LIBS & friends in config.mk so that we can test for USE_SHORT_LIBNAME as needed. Should get the OS/2 build further along.
git-svn-id: svn://10.0.0.236/trunk@106465 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 08:04:27 +00:00
bryner%netscape.com
2a49cc581f Adding a newline to the warning printf. r=jag.
git-svn-id: svn://10.0.0.236/trunk@106464 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 07:45:29 +00:00
jaggernaut%netscape.com
d2ae5f0ae2 Bug 53057: Fixing up users of implicit |CharT*| conversion operators for nsCString to use |.get()| instead, rr=dbaron, rs=scc
git-svn-id: svn://10.0.0.236/trunk@106463 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 07:43:56 +00:00
leaf%mozilla.org
a56997b4bf Automated update
git-svn-id: svn://10.0.0.236/trunk@106462 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 07:43:13 +00:00
seawood%netscape.com
4551221bef Landing the rest of the mach-o OSX changes.
Bug #75653 r=cls sr=waterson


git-svn-id: svn://10.0.0.236/trunk@106461 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 07:38:18 +00:00
jaggernaut%netscape.com
9e8f600926 Bug 53057: Fixing up users of implicit |CharT*| conversion operators for nsCString to use |.get()| instead, rr=dbaron, rs=scc
git-svn-id: svn://10.0.0.236/trunk@106460 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 06:44:19 +00:00
leaf%mozilla.org
6a3dcf88cd Automated update
git-svn-id: svn://10.0.0.236/trunk@106459 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 06:28:11 +00:00
bernd.mielke%snafu.de
6f1d485fdf new regression test, not affecting the build.
git-svn-id: svn://10.0.0.236/trunk@106458 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 06:27:12 +00:00
seawood%netscape.com
f42d2a8c9e Remove MOZ_MONOLITHIC_TOOLKIT
git-svn-id: svn://10.0.0.236/trunk@106457 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 06:16:57 +00:00
seawood%netscape.com
cb86bca7b6 Replace hardcoded -L/usr/X11R6/lib with $(XLDFLAGS). Fixes cross-compiling among other things.
git-svn-id: svn://10.0.0.236/trunk@106456 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 06:02:57 +00:00
seawood%netscape.com
67a0c889a0 Followup to removal of --enable-monolithic-toolkit..remove MOZ_MONOLITHIC_TOOLKIT ifdefs
git-svn-id: svn://10.0.0.236/trunk@106453 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 05:49:30 +00:00
bnesse%netscape.com
91728ad88b Bug 106159. Switch remaining js and xul files from nsIPref interface to nsIPrefService/nsIPrefBranch interfaces to eliminate conflicts. r=jag, sr=alecf
git-svn-id: svn://10.0.0.236/trunk@106452 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 05:39:25 +00:00
seawood%netscape.com
dbe0d5e888 Removing unused nsIAppShellComponentImpl reference
git-svn-id: svn://10.0.0.236/trunk@106451 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 05:26:42 +00:00
cls%seawood.org
95f0069751 Freezing nsIURIContentListener class. Fixing PSM bustage
Thanks to Rick Potts <rpotts@netscape.com> for the patch.
Bug #99627


git-svn-id: svn://10.0.0.236/trunk@106450 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 04:15:42 +00:00
rpotts%netscape.com
12190db124 bug #99627 (r=valeski@netscape.com, sr=mscott@netscpae.com). Freeze the nsIURIContentListener interface...
git-svn-id: svn://10.0.0.236/trunk@106449 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 03:59:37 +00:00
seawood%netscape.com
90f90500cd Adding type specifier for functions to fix bustage.
git-svn-id: svn://10.0.0.236/trunk@106448 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 03:24:15 +00:00
dougt%netscape.com
b4b3776b8d check for null. if the reference ever goes away, we crash
git-svn-id: svn://10.0.0.236/trunk@106447 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 03:06:09 +00:00
rpotts%netscape.com
9c186d4664 bug #99627 (r=valeski@netscape.com, sr=mscott@netscpae.com). Freeze the nsIURIContentListener interface...
git-svn-id: svn://10.0.0.236/trunk@106446 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 02:52:39 +00:00
waldemar%netscape.com
ae15a26e18 Substantive semantic changes. Implemented prototype instances and property reading and writing.
git-svn-id: svn://10.0.0.236/trunk@106445 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 02:41:20 +00:00
waldemar%netscape.com
0c42855af1 Fixed comment
git-svn-id: svn://10.0.0.236/trunk@106444 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 02:40:41 +00:00
waldemar%netscape.com
5b5ee3c5e6 Added :uninitialized variables
git-svn-id: svn://10.0.0.236/trunk@106443 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 02:40:13 +00:00
seawood%netscape.com
1890419f7f Apparently, the ANSI C++ standard no longer assumes int for functions that are mssing their type specifier. And the HP-UX & Sun Forte compilers catch this.
Fixing tinderbox bustage.


git-svn-id: svn://10.0.0.236/trunk@106442 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 01:49:12 +00:00
pschwartau%netscape.com
2f61347057 Fixing a typo
git-svn-id: svn://10.0.0.236/trunk@106440 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 00:48:14 +00:00
wtc%netscape.com
ec801c6a75 Bugzilla bug 106379: support building under ARM Linux.
git-svn-id: svn://10.0.0.236/trunk@106434 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 00:27:06 +00:00
ftang%netscape.com
59811867eb fix 100868. Forget to include this part from previous check in.
git-svn-id: svn://10.0.0.236/trunk@106433 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-27 00:08:13 +00:00
shanjian%netscape.com
0c69bf8d46 #106650 Crash viewing some mails
r=ducarroz, sr=sspitzer


git-svn-id: svn://10.0.0.236/trunk@106432 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 23:59:30 +00:00
law%netscape.com
251fc07d93 Bug 95572; patch from Roland (Roland.Tepp@mail.ee); close dialog after launch/reveal; r=law, sr=mscott
git-svn-id: svn://10.0.0.236/trunk@106431 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 23:52:21 +00:00
aaronl%netscape.com
dbf9d79500 Bug 106710. Expose anonymous content via accessibility API's. r=jgaunt, sr=waterson
git-svn-id: svn://10.0.0.236/trunk@106430 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 23:47:52 +00:00
sfraser%netscape.com
457115228d Clean up static linkage with unichar utils (bug 100214) for alecf. r=fm, sr=alecf
git-svn-id: svn://10.0.0.236/trunk@106429 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 23:34:53 +00:00
alecf%netscape.com
5e1263108a finally remove this file once and for all - turns out I removed this from the mac build yesterday (by accident, but the file is obsolete anyway)
git-svn-id: svn://10.0.0.236/trunk@106428 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 23:09:16 +00:00
alecf%netscape.com
1eeef02f8b remove nsIAppShellComponent, not used anywhere
(not part of build)


git-svn-id: svn://10.0.0.236/trunk@106427 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 23:07:48 +00:00
mstoltz%netscape.com
47226a17a2 bug 104495 - don't allow unprivileged scripts to create a window without
a close box, or to disable key shortcuts. r=danm, sr=jst.


git-svn-id: svn://10.0.0.236/trunk@106426 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 23:02:49 +00:00
mstoltz%netscape.com
2eb513fdbc bug 106535, adding the ability to enable codebase principals for a single host
instead of for all hosts. r=vidur, sr=jst.


git-svn-id: svn://10.0.0.236/trunk@106425 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 23:00:48 +00:00
sfraser%netscape.com
c01879c1fd Fix for bug 83589 -- fix the mac build scripts so that a commercial tree doesn't clobber config files in the mozilla tree. Make a MoreFilesDebug.lib. r=peterv,sr=scc
git-svn-id: svn://10.0.0.236/trunk@106424 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 22:36:56 +00:00
sfraser%netscape.com
cf430037b7 Fix for bug 83589 -- fix the mac build scripts so that a commercial tree doesn't clobber config files in the mozilla tree. r=peterv,sr=scc
git-svn-id: svn://10.0.0.236/trunk@106423 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 22:36:28 +00:00
naving%netscape.com
740d1bab43 106819 r=suresh sr=mscott. Do not steal focus after search textbox is cleared.
git-svn-id: svn://10.0.0.236/trunk@106422 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 22:33:27 +00:00
naving%netscape.com
34bc6bfc3f 94968. r/sr=mscott. fix the folder-picker to not show bogus folders.
git-svn-id: svn://10.0.0.236/trunk@106420 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 22:08:21 +00:00
hewitt%netscape.com
10836e9a6f 106826 - can't drag into folders on the personal toolbar, r=hyatt, sr=blake
git-svn-id: svn://10.0.0.236/trunk@106419 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 21:54:36 +00:00
rginda%netscape.com
593c0075c3 check in jband's fix for command paths on win2k, whitespace nits.
git-svn-id: svn://10.0.0.236/trunk@106411 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 21:37:51 +00:00
pchen%netscape.com
27d3893fc3 bug 104367, r=jag, sr=ben, add bookmark dialog changed id from
newBookmarkDialog to newBookmarkWindow but this getElementByID() call
wasn't updated, ooops


git-svn-id: svn://10.0.0.236/trunk@106410 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 21:37:08 +00:00
jaggernaut%netscape.com
1001076524 Bug 106967: fix crash (doh me)
git-svn-id: svn://10.0.0.236/trunk@106409 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 21:37:07 +00:00
wtc%netscape.com
41c5ea6d57 Bugzilla bug 106836: fixed misspelled "Privilege". The patch is
contributed by timeless@mac.com.


git-svn-id: svn://10.0.0.236/trunk@106408 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 21:30:58 +00:00
naving%netscape.com
a5d41c30d2 106875 r=stephend sr=mscott. Remove tooltip for the searchBar.
git-svn-id: svn://10.0.0.236/trunk@106407 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 21:28:46 +00:00
sspitzer%netscape.com
e651048da1 fix for #106269. reply wasn't quoting the message body.
r/sr=kin


git-svn-id: svn://10.0.0.236/trunk@106402 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 21:21:04 +00:00
wtc%netscape.com
3c91b36b0b Bugzilla bug 106771: support building on HP-UX 11.11.
git-svn-id: svn://10.0.0.236/trunk@106400 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 21:20:12 +00:00
wtc%netscape.com
475fd5527a Bugzilla bug 106771: support building on HP-UX 11.11. The patch is from
Jim Dunn <jdunn@netscape.com>.
Modified files: configure configure.in


git-svn-id: svn://10.0.0.236/trunk@106399 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 21:13:06 +00:00
ftang%netscape.com
a2a8241f07 fix bug 100868. implement the real GetTextDimension code in Mac GFX. r=pierre sr=sfraser
git-svn-id: svn://10.0.0.236/trunk@106390 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 20:54:09 +00:00
leaf%mozilla.org
896597e85e Automated update
git-svn-id: svn://10.0.0.236/trunk@106388 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 20:43:13 +00:00
ftang%netscape.com
81039f969c fix bug 106488. improve window cmap parsing code readability
change PR_Alloc / PR_Free to nsMemory:: version
r=shanjian, sr=sfraser


git-svn-id: svn://10.0.0.236/trunk@106387 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 20:40:43 +00:00
seawood%netscape.com
4c0227d9b5 Save the value of AS as we need it later tests.
git-svn-id: svn://10.0.0.236/trunk@106385 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 20:29:02 +00:00
shanjian%netscape.com
87da0a49bd #97343 annot display middot(Unicode 00B7)in the UI under W95/W98
r=ftang, sr=attinasi


git-svn-id: svn://10.0.0.236/trunk@106383 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 20:14:58 +00:00
alecf%netscape.com
78f795437c attempt to fix static build bustage
git-svn-id: svn://10.0.0.236/trunk@106382 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 20:10:44 +00:00
hwaara%chello.se
d5e77a84a1 #72667, get custom quoted colors working again; obey the pref.
r=ducarroz, mcafee, sr=sspitzer


git-svn-id: svn://10.0.0.236/trunk@106381 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 19:25:19 +00:00
hwaara%chello.se
c7211a20f0 #47981, link to newsgroups launches new mail window. Make our window handling in news a lot better, reuse whatever 3pane is already open. r/sr=sspitzer
git-svn-id: svn://10.0.0.236/trunk@106380 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 19:19:35 +00:00
radha%netscape.com
1120ee9abe Fix for bug # 103978. Problems with back/forward at cnn.com, mainly due to expired subframes and clicking back/forward fast. r=adamlock sr=rpotts
git-svn-id: svn://10.0.0.236/trunk@106379 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 19:04:11 +00:00
cmanske%netscape.com
f9487fb1bd Fixed lots of problems because getAttribute now returns null if no attribute, b=106822, r=bzbarsky, sr=kin
git-svn-id: svn://10.0.0.236/trunk@106378 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 18:51:37 +00:00
jake%acutex.net
d377a74d28 Bug 105879 - Footer links have an extra | by Sanity Check
Patch by Matthew Tuck <matty@chariot.net.au>
r= dkl@redhat.com, jake@acutex.net


git-svn-id: svn://10.0.0.236/trunk@106377 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 18:49:33 +00:00
cmanske%netscape.com
b4c7b8322a Fixed null return from getAttribute that killed toolbar, b=106733, r=hwaara,sr=kin; fix for JS warning by Neil, b=106224, r=cmanske, sr=kin
git-svn-id: svn://10.0.0.236/trunk@106376 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 18:43:25 +00:00
jake%acutex.net
6786208022 Bug 81594 - SQL error after editing user entry when changing numerous things at once (including the login name).
Patch by Matthew Tuck <matty@chariot.net.au>
r= dkl@redhat.com, jake@acutex.net


git-svn-id: svn://10.0.0.236/trunk@106375 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 18:35:04 +00:00
sonja.mirtitsch%sun.com
34c5fe4d5a took out 64 bit HP builds
git-svn-id: svn://10.0.0.236/trunk@106374 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 18:10:37 +00:00
sonja.mirtitsch%sun.com
61f2d1f6c2 increased # of tests to 133
git-svn-id: svn://10.0.0.236/trunk@106373 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 18:08:18 +00:00
sonja.mirtitsch%sun.com
6daeb62f3d adder HP as tinderboxplatform
git-svn-id: svn://10.0.0.236/trunk@106372 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 18:07:58 +00:00
bnesse%netscape.com
177926b975 Fix for bug 103883/106273. Bad JS broke theme switching. r=jag, sr=alecf
git-svn-id: svn://10.0.0.236/trunk@106371 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 18:03:49 +00:00
alecf%netscape.com
210111498e two more nsUnicharUtils.h stragglers, I think I got r=jag, sr=scc on these in a previous patch - again for bug 100214
git-svn-id: svn://10.0.0.236/trunk@106370 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 17:51:22 +00:00
timeless%mac.com
aa4a03ef45 Bug 106832 seperatorUri is misspelled, separatorUri => SEPARATOR_URI
r=dbradley sr=brendan


git-svn-id: svn://10.0.0.236/trunk@106369 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 17:39:36 +00:00
nhotta%netscape.com
6180c0fa39 Replace nsTextFormatter by NS_ConvertUTF8toUCS2, bug 105527, r=ducarroz, sr=bienvenu.
git-svn-id: svn://10.0.0.236/trunk@106367 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 17:24:18 +00:00
alecf%netscape.com
c96e504eb3 Convert users of nsCRT::ToUpper(PRUnichar) to ToUpper(PRUnichar) for bug 100214, r=jag, sr=scc
git-svn-id: svn://10.0.0.236/trunk@106366 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 17:18:35 +00:00
bernd.mielke%snafu.de
c9d2fbad18 adding a table-layout:fixed regression testcase not part of the build
git-svn-id: svn://10.0.0.236/trunk@106364 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 14:38:50 +00:00
kin%netscape.com
6fcaeaf88c Fix for bug #104692: Edit field line break didn't updated
Modified WillInsertText() so that it adds a mozbr if
the last char in the plaintext string is a newline,
and we are inserting at the end of the doc. This gives
the blank line people expect to see.

r=jfrancis@netscape.com  sr=sfraser@netscape.com


git-svn-id: svn://10.0.0.236/trunk@106363 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 14:22:31 +00:00
leaf%mozilla.org
22b036f939 Automated update
git-svn-id: svn://10.0.0.236/trunk@106362 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 14:13:18 +00:00
seawood%netscape.com
40fb07c08d Fixing --disable-optimize again.
git-svn-id: svn://10.0.0.236/trunk@106361 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 14:06:39 +00:00
glazman%netscape.com
3ac6ff707a table alignment was not visible in AllTags mode; b=102147, r=brade, cmanske; sr=kin
git-svn-id: svn://10.0.0.236/trunk@106360 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 13:53:53 +00:00
ccarlen%netscape.com
4fe6243416 Bug 101684 - Assertions on startup on Unix from resprotocolhandler's use of directories which don't always exist. r=dougt/sr=darin
git-svn-id: svn://10.0.0.236/trunk@106359 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 13:28:07 +00:00
jake%acutex.net
e8bbc7ef2a Check templates for tabs, also.
git-svn-id: svn://10.0.0.236/trunk@106358 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 13:21:38 +00:00
seawood%netscape.com
bc1876daed Add MOZ_POST_*_COMMAND back in hopes of fixing hpux orangeness.
git-svn-id: svn://10.0.0.236/trunk@106354 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 12:39:30 +00:00
locka%iol.ie
0497fefc20 NOT PART OF BUILD. Make IE plugin dir lookup able to cope with trailing backslashes in the registry key.
git-svn-id: svn://10.0.0.236/trunk@106353 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 12:30:49 +00:00
leaf%mozilla.org
40fd2bac35 Automated update
git-svn-id: svn://10.0.0.236/trunk@106352 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 11:13:14 +00:00
seawood%netscape.com
b376c94271 Fix --disable-optimize
git-svn-id: svn://10.0.0.236/trunk@106351 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 11:04:28 +00:00
timeless%mac.com
f65d10305d Bugzilla Bug 106839 amTargettedCorrectly should be isTargetedCorrectly
r=bbaetz,glazou sr=brendan


git-svn-id: svn://10.0.0.236/trunk@106350 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 10:54:15 +00:00
mike+mozilla%meer.net
cf412012ae Initial checkin of build file for Darwin1.4.mk. It just includes Darwin1.3.mk. Because I happened to be fooling around with an OS X system.
git-svn-id: svn://10.0.0.236/trunk@106349 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 09:38:43 +00:00
jst%netscape.com
cfd25660ab New file for rarely used leaf elements that share the same implementation. Not part of the build yet.
git-svn-id: svn://10.0.0.236/trunk@106348 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 09:31:32 +00:00
hyatt%netscape.com
3332a352f8 Fix for tabbrowser not being localizable as well as fixes to expose Closing of tabs via CTRL+W and the top-level menus. r=jag, sr=jst
git-svn-id: svn://10.0.0.236/trunk@106347 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 09:26:13 +00:00
hyatt%netscape.com
1f83f62b60 Fix for tabbrowser not being localizable as well as fixes to expose Closing of tabs via CTRL+W and the top-level menus. r=jag, sr=jst
git-svn-id: svn://10.0.0.236/trunk@106346 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 09:26:03 +00:00
jst%netscape.com
b2088df0d0 Fixing bug 100944, making a.search and area.search settable for backwards compatibility. Patch by Fabian Guisset <hidday@geocities.com>, r=bzbarsky@mit.edu, sr=jst@netscape.com
git-svn-id: svn://10.0.0.236/trunk@106345 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 08:54:45 +00:00
seawood%netscape.com
0e38f5c374 Massive reorganization of configure options into logical groups.
The following options were renamed:

--with-jpeg                --with-system-jpeg
--with-zlib                --with-system-zlib
--with-png                 --with-system-png
--with-mng                 --with-system-mng
--enable-toolkit           --enable-default-toolkit
--with-gtk                 --enable-toolkit-gtk
--with-xlib                --enable-toolkit-xlib
--with-qt                  --enable-toolkit-qt
--enable-gle               --enable-gle-support
--with-extensions          --enable-extensions
--enable-modules           --enable-standalone-modules
--enable-lea               --enable-xpcom-lea
--enable-ultrasparc        --enable-js-ultrasparc
--enable-strip-libs        --enable-strip
--with-debug-modules       --enable-debug-modules
--with-dbgrinfo-modules    --enable-debugger-info-modules
--with-profile-modules     --enable-profile-modules
--enable-eazel-profiler    --enable-eazel-profiler-support
--enable-homedir           --with-user-appdir
--enable-static-components --enable-meta-component-modules

The following options were removed:
--enable-monolithic-toolkit
--disable-jar-packaging

zip is now required to build since NSS unconditionally requires it.

Bug #61907


git-svn-id: svn://10.0.0.236/trunk@106344 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 08:36:28 +00:00
dbaron%fas.harvard.edu
1b78c37c5d Make it almost compile on MSVC++. Not part of the build.
git-svn-id: svn://10.0.0.236/trunk@106343 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 08:30:41 +00:00
hyatt%netscape.com
42261230c8 Add support for CTRL+w closing the curren tab in multi-tabbedm ode. sr=ben, r=hewitt
git-svn-id: svn://10.0.0.236/trunk@106342 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 07:49:28 +00:00
dbaron%fas.harvard.edu
d279829b0f Undoing accidental changes.
git-svn-id: svn://10.0.0.236/trunk@106341 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 07:17:41 +00:00
jband%netscape.com
f5d51737eb fix bug 106541. Do a rename rather than a copy to create the new xpti.dat. And don't leave behind xptitemp.dat. r=valeski sr=jst.
git-svn-id: svn://10.0.0.236/trunk@106340 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 07:15:56 +00:00
dbaron%fas.harvard.edu
49d26fea47 Add |release| and corresponding |operator=| and add equality operators that gcc3 doesn't need but MSVC does. Not part of the build.
git-svn-id: svn://10.0.0.236/trunk@106339 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 07:15:55 +00:00
waterson%netscape.com
658ba2a763 Change %f to %d for page load times.
git-svn-id: svn://10.0.0.236/trunk@106338 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 06:37:31 +00:00
waterson%netscape.com
d1625c5b92 Use ms instead of s for pageloader time.
git-svn-id: svn://10.0.0.236/trunk@106337 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 06:32:58 +00:00
bryner%netscape.com
32a5c28ad9 Bug 103796 -- implement ctrl+pgup/pgdn to switch tabs (these will work in tabbrowser where ctrl+tab is reversed for switching frames). r=pchen, sr=hyatt.
git-svn-id: svn://10.0.0.236/trunk@106336 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 06:28:37 +00:00
alecf%netscape.com
dd98f34a2c Added files:
mozilla/intl/unicharutil/util/nsUnicharUtils.cpp


git-svn-id: svn://10.0.0.236/trunk@106335 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 06:19:51 +00:00
hyatt%netscape.com
38dae353d7 Make middle-click close a tab in tab browser, r=bryner, sr=waterson
git-svn-id: svn://10.0.0.236/trunk@106334 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 06:17:08 +00:00
alecf%netscape.com
b779335f44 Added files:
mozilla/intl/unicharutil/util/nsUnicharUtils.cpp


git-svn-id: svn://10.0.0.236/trunk@106333 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 05:23:36 +00:00
dbaron%fas.harvard.edu
2847aa0f3d Remove unnecessary XPCOM interface around nsSpaceManager. b=102453 r=jag sr=waterson
git-svn-id: svn://10.0.0.236/trunk@106332 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 05:12:25 +00:00
dbaron%fas.harvard.edu
7ddeb79974 Remove unnecessary XPCOM interface around nsSpaceManager. b=102453 r=jag sr=waterson
git-svn-id: svn://10.0.0.236/trunk@106331 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 05:06:07 +00:00
seawood%netscape.com
f42774dccc Convert all rhapsody (pre-beta-macosx) references to darwin.
Bug #106617 r=wtc


git-svn-id: svn://10.0.0.236/trunk@106330 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 04:55:58 +00:00
rbs%maths.uq.edu.au
a5068b1a4a Add look-ahead in the case of the substitute fallback font to handle several adjacent missing characters at once rather than one by one. b=104153 r=shanjian sr=attinasi
git-svn-id: svn://10.0.0.236/trunk@106329 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 04:54:15 +00:00
rpotts%netscape.com
f2e49dbf9c bug #85831 (r=hewitt@netscape.com, sr=jst@netscape.com) Javascript console hangs with the error this.Console.appendIten(...) not a function
git-svn-id: svn://10.0.0.236/trunk@106328 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 04:51:08 +00:00
jaggernaut%netscape.com
5f0668cf9d Bug 105904, bug 105971, bug 105889, bug 105906: NS_ConvertUTF8toUCS2 hangs / segfaults. r=dbaron, rs=scc
git-svn-id: svn://10.0.0.236/trunk@106327 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 04:42:57 +00:00
bryner%netscape.com
ba8e42551b Bug 93970 -- filepicker can't open symlinked directories. Patch from simm0@ii.net, r=bryner/timeless, sr=ben.
git-svn-id: svn://10.0.0.236/trunk@106326 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 04:34:56 +00:00
jaggernaut%netscape.com
173b301199 Bug 53057: Fixing up users of implicit |CharT*| conversion operators for nsCString to use |.get()| instead, rr=dbaron, rs=scc
git-svn-id: svn://10.0.0.236/trunk@106325 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 04:24:06 +00:00
naving%netscape.com
02e1a52c53 102735 r/sr=bienvenu. Save the sort info etc, when doing empty trash(imap).
git-svn-id: svn://10.0.0.236/trunk@106324 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 04:22:17 +00:00
alecf%netscape.com
91e99a93f5 Added files:
mozilla/intl/unicharutils/util/nsUnicharUtils.cpp


git-svn-id: svn://10.0.0.236/trunk@106322 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 03:37:38 +00:00
jst%netscape.com
6f8619cfba No need to be this paranoid, checking for pointers being null once is enough! Checking twise in a row is just overkill.
git-svn-id: svn://10.0.0.236/trunk@106321 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 03:31:49 +00:00
alecf%netscape.com
6dc7d8d1e8 final makefile.win changes for bug 100214, just adding some REQUIRES to be used soon
git-svn-id: svn://10.0.0.236/trunk@106320 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 03:18:09 +00:00
bienvenu%netscape.com
80b0e9f309 fix crash with move mail by using an nsCOMPtr to hold the ref r=naving, sr=sspitzer 104398
git-svn-id: svn://10.0.0.236/trunk@106319 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 03:13:41 +00:00
alecf%netscape.com
58b7676c67 other part of bug 106130, remove unicharutil dependency and linking (just requires updates)
git-svn-id: svn://10.0.0.236/trunk@106318 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 03:06:04 +00:00
evaughan%netscape.com
eafb5e780d A little renaming. NOT IN BUILD
git-svn-id: svn://10.0.0.236/trunk@106315 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 02:41:06 +00:00
jst%netscape.com
b97c01a6d7 Fixing bug 106769. Document.prototype was not on the prototype chain for XMLDocument objects. sr=jband@netscape.com, r=bzbarsky@mit.edu
git-svn-id: svn://10.0.0.236/trunk@106314 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 02:39:56 +00:00
alecf%netscape.com
820a14b2cb other changes for bug 100214, r=jag, sr=scc
include nsUnicharUtils.h for useful stuf


git-svn-id: svn://10.0.0.236/trunk@106313 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 02:38:29 +00:00
brendan%mozilla.org
d33cfeae5d epstein@tellme.com's patch implementing JS_ClearNewbornRoots (106790, r=brendan, sr=jband).
git-svn-id: svn://10.0.0.236/trunk@106312 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 02:38:10 +00:00
brendan%mozilla.org
8b45204d8c khanson@netscape.com's fix for silent ValueIsLength failure (101488, r=rogerl, sr=me).
git-svn-id: svn://10.0.0.236/trunk@106311 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 02:35:01 +00:00
karnaze%netscape.com
eab9d0baff new regression test, not affecting the build.
git-svn-id: svn://10.0.0.236/trunk@106310 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 02:34:16 +00:00
alecf%netscape.com
f13ae072f9 fix some more stuff for bug 100214, sr=scc, r=jag
get rid of ToUpper() call, since it just calls into mCaseConversion anyway


git-svn-id: svn://10.0.0.236/trunk@106309 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 02:32:46 +00:00
karnaze%netscape.com
6c1a4b003e bug 60816 use correct cell when rowspan and colspan overlap. Fix pixel rounding errors. sr=attiansi, r=alexsavulov
git-svn-id: svn://10.0.0.236/trunk@106308 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 02:30:38 +00:00
jst%netscape.com
3cd16cc0ad Fixing bug 106769. Document.prototype was not on the prototype chain for XMLDocument objects. sr=jband@netscape.com, r=bzbarsky@mit.edu
git-svn-id: svn://10.0.0.236/trunk@106307 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 02:23:56 +00:00
stephend%netscape.com
e8af69c41f Bug 106668. JS strict warnings in the new Search widget. r=naving@netscape.com, sr=brendan@mozilla.org
git-svn-id: svn://10.0.0.236/trunk@106306 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 02:20:53 +00:00
racham%netscape.com
1b034e64d6 Fixing crasher bug 105670. Adding null check on incoming server in the process of getting default account. r=racham, sr=sspitzer
git-svn-id: svn://10.0.0.236/trunk@106305 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 02:19:43 +00:00
jst%netscape.com
d3611e95e0 Fixing bug 106823. Pass the length to nsAString::Assign() to make sure we don't loose embedded null characters in strings, and also to speed things up a bit. Also trunkate strings before 'voiding' them to make sure old string data is deleted from the string before it's reused. r=bzbarsky@mit.edu, rs=jband@netscape.com
git-svn-id: svn://10.0.0.236/trunk@106304 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 02:18:16 +00:00
sspitzer%netscape.com
697a58798d hack fix for #106674. the non ASCII character in hwaara's name was
causing us to fail to convert the style sheet into UTF-8.
this was regression was caused by a checkin by bzbarsky@mit.edu.
he's working on a proper fix, and then we'll restore hwaara's name.

r=bzbarsky@mit.edu, sr=bienvenu


git-svn-id: svn://10.0.0.236/trunk@106303 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 02:07:57 +00:00
cavin%netscape.com
7691ed6826 Bug #74955: When loading folders, preset the msg hdr cache table size to eliminate
the need of allocating and de-allocating tables. Same thing for users of nsUInt32Array
and nsUInt8Array. r=bienvenu, sr=sspitzer.


git-svn-id: svn://10.0.0.236/trunk@106302 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 02:02:58 +00:00
dbaron%fas.harvard.edu
fbccbc22c2 Properly initialize out parameters to prevent the frame constructor from thinking it has to handle insertion points when it really doesn't. r=bryner sr=hyatt b=106802
git-svn-id: svn://10.0.0.236/trunk@106301 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 00:24:49 +00:00
bienvenu%netscape.com
186e3bfb3d fix abr caused by removing charset conversion code r=naving, sr=sspitzer 106725
git-svn-id: svn://10.0.0.236/trunk@106300 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 00:24:01 +00:00
bienvenu%netscape.com
c67da0a1c3 remove bunch of unused code after charset conversion code that needed it was removed r=naving, sr=sspitzer 106725
git-svn-id: svn://10.0.0.236/trunk@106299 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 00:22:07 +00:00
bienvenu%netscape.com
aada61e1f8 fix problem with 64 bit sorts, r=bienvenu, sr=sspitzer 101011 patch by shanmu@netscape.com
git-svn-id: svn://10.0.0.236/trunk@106298 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 00:19:13 +00:00
dougt%netscape.com
68c5c2edc1 fixes spelling error in interface comment
git-svn-id: svn://10.0.0.236/trunk@106297 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 00:11:18 +00:00
dougt%netscape.com
4e8521b5c8 fixes 106736 and 106523. Regressions caused by nsIObserverService changes. r=chak@netscape.com r=morse@netscape.com
git-svn-id: svn://10.0.0.236/trunk@106296 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 00:10:54 +00:00
dougt%netscape.com
83b67a7071 Freeze nsIMemory interface bug 99151 r=rpotts@netscape.com, sr=brendan@netscape.com
git-svn-id: svn://10.0.0.236/trunk@106295 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 00:09:22 +00:00
hewitt%netscape.com
1365704b17 105751 - splitter should set orient attribute on itself based on parent orientation, r=jag, sr=hyatt
git-svn-id: svn://10.0.0.236/trunk@106294 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 00:09:12 +00:00
hewitt%netscape.com
608f7314a8 99235 - Bogus URL's added to urlbar history will corrupt localstore.rdf (patch by jrgm), r=jag, sr=hewitt
git-svn-id: svn://10.0.0.236/trunk@106293 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 00:05:55 +00:00
nhotta%netscape.com
7a95d5c5a6 Fixed to pass char* to PR_smprintf() instead of PRUnichar* which is not recognized, bug 105704, r=naving, sr=alecf.
git-svn-id: svn://10.0.0.236/trunk@106292 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-26 00:03:59 +00:00
morse%netscape.com
4a0d003d29 bug 105602, fix flawed alorithm for checking for secure cookies, r=jag, sr=alecf
git-svn-id: svn://10.0.0.236/trunk@106291 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 23:58:03 +00:00
evaughan%netscape.com
5bdcdca3fa Make file fixes NOT IN BUILD
git-svn-id: svn://10.0.0.236/trunk@106289 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 23:05:23 +00:00
seawood%netscape.com
ca14d69eee Rename rhapsody to darwin
bug #106617


git-svn-id: svn://10.0.0.236/trunk@106287 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 21:34:51 +00:00
neeti%netscape.com
4543813726 Fix for bug 106585 - crash in XPCOMM.DLL during shutdown when mail-news window was open, r=shaver, sr=dougt
git-svn-id: svn://10.0.0.236/trunk@106284 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 21:03:35 +00:00
sspitzer%netscape.com
0af440900d fix (again) for blocker bug #106646.
for ContentInserted() and ContentAppended(), we need to go forward through the observers.
for ContentRemoved() and ContentReplaced(), we need to go backward.

sr=hyatt


git-svn-id: svn://10.0.0.236/trunk@106283 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 21:01:43 +00:00
sspitzer%netscape.com
fe5a90ed8e fix for blocker bug #106646. hyatt's hack applied to the ContentReplaced() case.
sr=hyatt.


git-svn-id: svn://10.0.0.236/trunk@106282 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 20:39:40 +00:00
myk%mozilla.org
becbccb87b Fix for bug 98602: re-implementation of "create attachment" page.
Patch by Myk Melez <myk@mozilla.org>.
r=gerv@mozilla.org,jake@acutex.net


git-svn-id: svn://10.0.0.236/trunk@106281 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 20:37:53 +00:00
dbaron%fas.harvard.edu
e1c9429f4f Fix Mac debug build bustage. (Why don't we have a mac debug tinderbox?) b=86947
git-svn-id: svn://10.0.0.236/trunk@106280 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 20:19:32 +00:00
depstein%netscape.com
3e91940e85 Included SimpleEnumerator.h, added maxLength check for sHistory index, updated Observe() in TestEmbed.cpp to handle profile switching changes.
git-svn-id: svn://10.0.0.236/trunk@106278 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 18:32:34 +00:00
sspitzer%netscape.com
361b0285b1 fix for blocker bug #106646, crash opening addressbook, compose, chatzilla, etc.
patch by hyatt.  r=sspitzer, sr=alecf


git-svn-id: svn://10.0.0.236/trunk@106277 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 18:27:25 +00:00
mkaply%us.ibm.com
463193f245 OS/2 test bustage - need LIB_SUFFIX for gkbase and need EXTRA_DSO_LIBS for gkgfx - note that I don't think gkgfx even needs to be linked for this test but I'm putting it in anyway
git-svn-id: svn://10.0.0.236/trunk@106276 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 16:36:33 +00:00
pinkerton%netscape.com
b5ced1c4cc adding nsIMenuCommandDispatcher.idl
git-svn-id: svn://10.0.0.236/trunk@106274 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 15:00:45 +00:00
jake%acutex.net
e6f2627084 Bug 104065 - Stop uninitilized string warnings from getting into the error log when the login cookie doesn't exist.
Patch by Dave Miller <justdave@syndicomm.com>
r= gerv@mozilla.org, jake@acutex.net


git-svn-id: svn://10.0.0.236/trunk@106273 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 14:46:58 +00:00
pinkerton%netscape.com
a82e6af042 new file
git-svn-id: svn://10.0.0.236/trunk@106272 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 14:29:14 +00:00
bzbarsky%mit.edu
24e640b57b Workaround for RealPlayer abusing mime.types files and fix for broken
behavior if an absolute nonexistent path is listed for a helper in
mailcap.  Bugs 106380, 106381. r=law, sr=mscott


git-svn-id: svn://10.0.0.236/trunk@106271 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 14:26:07 +00:00
pinkerton%netscape.com
d3777355aa rewrite osx menus to use carbon command events to work around all MenuSelect problems on carbon on 9. r=beard/sr=sfraser, bug#58227
git-svn-id: svn://10.0.0.236/trunk@106270 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 13:58:13 +00:00
mkaply%us.ibm.com
3fb7e38337 Attempt to fix OS/2 bustage
git-svn-id: svn://10.0.0.236/trunk@106269 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 13:13:28 +00:00
dbradley%netscape.com
759a8eb6b7 Bug 106130 - Remove dependancy of xpconnect on intl. r=alecf, sr=shaver, patch=jband
git-svn-id: svn://10.0.0.236/trunk@106268 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 12:07:23 +00:00
locka%iol.ie
51339aca45 Use do_GetService instead of nsServiceManager::GetService plus some re-indentation. b=105458 r=dougt@netscape.com sr=blizzard@mozilla.org
git-svn-id: svn://10.0.0.236/trunk@106267 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 11:37:18 +00:00
jaggernaut%netscape.com
14371ff51c Bug 53057: Fixing up users of implicit |CharT*| conversion operators for nsCString to use |.get()| instead, rr=dbaron, rs=scc
git-svn-id: svn://10.0.0.236/trunk@106266 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 10:37:41 +00:00
jaggernaut%netscape.com
afb834012b Bug 53057: Fixing up users of implicit |CharT*| conversion operators for nsCString to use |.get()| instead, rr=dbaron, rs=scc
git-svn-id: svn://10.0.0.236/trunk@106265 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 09:44:29 +00:00
hyatt%netscape.com
6931cb1c9a Support for basic drag and drop in tabbrowser, r=ben, sr=hewitt
git-svn-id: svn://10.0.0.236/trunk@106264 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 09:43:23 +00:00
jaggernaut%netscape.com
1c972d7317 Bug 53057: Fixing up users of implicit |CharT*| conversion operators for nsCString to use |.get()| instead, rr=dbaron, rs=scc
git-svn-id: svn://10.0.0.236/trunk@106263 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 09:16:56 +00:00
pavlov%netscape.com
3bc1b9f124 new image code for windows. not part of build. bug 104999
git-svn-id: svn://10.0.0.236/trunk@106262 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 09:01:32 +00:00
seawood%netscape.com
25c089864b Land the simple OSX Mach-O build changes.
Bug #75653 r=cls


git-svn-id: svn://10.0.0.236/trunk@106261 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 08:55:53 +00:00
peterv%netscape.com
18694f65c4 Fix buster for null-strings in the dom. r=Pike. Not part of the build.
git-svn-id: svn://10.0.0.236/trunk@106260 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 08:40:57 +00:00
hyatt%netscape.com
11d35ef86c Fix for 105587, tabs should support autohide, also other tabbrowser fixes. r=bryner, sr=hewitt
git-svn-id: svn://10.0.0.236/trunk@106259 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 08:33:12 +00:00
hyatt%netscape.com
3836372f62 Fix for 105587, tabs should support autohide, also other tabbrowser fixes. r=bryner, sr=hewitt
git-svn-id: svn://10.0.0.236/trunk@106258 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 08:22:43 +00:00
jaggernaut%netscape.com
5835031439 Bug 53057: Fixing up users of implicit |CharT*| conversion operators for nsCString to use |.get()| instead, rr=dbaron, rs=scc
git-svn-id: svn://10.0.0.236/trunk@106257 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 07:45:52 +00:00
pavlov%netscape.com
8bdd562d78 fixing bug 106623 r=bryner sr=hyatt
git-svn-id: svn://10.0.0.236/trunk@106256 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 07:44:55 +00:00
hyatt%netscape.com
b4376d8910 Fix for 106212, make ContentAppended work right with XBL insertion points. r=brendan, sr=waterson
git-svn-id: svn://10.0.0.236/trunk@106255 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 07:31:18 +00:00
jaggernaut%netscape.com
453cb11f55 Bug 53057: Fixing up users of implicit |CharT*| conversion operators for nsCString to use |.get()| instead, rr=dbaron, rs=scc
git-svn-id: svn://10.0.0.236/trunk@106254 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 06:42:23 +00:00
dbaron%fas.harvard.edu
be48c3eb66 Fixing AIX and OS/2 bustage by passing by value instead of by reference to operator== and operator!=.
git-svn-id: svn://10.0.0.236/trunk@106253 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 06:34:10 +00:00
matt%netscape.com
28257bacaf Adding tooltip to sidebar for search. r=samir sr=hewitt bug 77624
git-svn-id: svn://10.0.0.236/trunk@106252 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 06:29:13 +00:00
jaggernaut%netscape.com
9dba49d0db Bug 53057: Fixing up users of implicit |CharT*| conversion operators for nsCString to use |.get()| instead, rr=dbaron, rs=scc
git-svn-id: svn://10.0.0.236/trunk@106250 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 06:13:52 +00:00
naving%netscape.com
05a1c4d2ea 103734 r=sspitzer sr=bienvenu. landing Quick Search feature for mail 3 pane.
git-svn-id: svn://10.0.0.236/trunk@106249 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 05:34:49 +00:00
jaggernaut%netscape.com
adf0bd9e66 Bug 53057: Fixing up users of implicit |CharT*| conversion operators for nsCString to use |.get()| instead, rr=dbaron, rs=scc
git-svn-id: svn://10.0.0.236/trunk@106248 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 05:10:08 +00:00
jst%netscape.com
18b8171d1a Fixing bug 106181. When a window object is asked for the numeric property n, we return the n:th frame in the window, but if there is no n:th frame we should let the JS engine do its thing w/o forsing it to return null. r=jag@netscape.com, sr=rpotts@netscape.com
git-svn-id: svn://10.0.0.236/trunk@106247 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 05:09:03 +00:00
stephend%netscape.com
c70f31b748 Bug 94022. Copies and Folders -> Copies & Folders. r=timeless, sr=sspitzer
git-svn-id: svn://10.0.0.236/trunk@106246 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 04:58:07 +00:00
dbaron%fas.harvard.edu
d71c613a49 Adding work in progress for new auto pointers in order to test easily on many compilers. b=104346
git-svn-id: svn://10.0.0.236/trunk@106245 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 04:09:38 +00:00
jst%netscape.com
450353a0af Fixing bug 106571. We can live w/o storing a nsINameSpace pointer in our XUL and XML elements (which saves us 4 bytes for every XML (read XBL) element and for the XUL slots), also remove the accessors from the interface nsIXMLContent, and remove some unused code in nsXULContentUtils. r=dbaron@netscape.com, sr=waterson@netscape.com
git-svn-id: svn://10.0.0.236/trunk@106244 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 04:08:29 +00:00
despotdaemon%netscape.com
013e193d41 Pseudo-automatic update of changes made by lordpixel@mac.com.
git-svn-id: svn://10.0.0.236/trunk@106243 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 04:07:20 +00:00
dbaron%fas.harvard.edu
b6abdf1de4 Remove nsViewManager2.cpp for roc. b=73382
git-svn-id: svn://10.0.0.236/trunk@106242 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 03:52:07 +00:00
jaggernaut%netscape.com
ab31de16ae Bug 53057: Fixing up users of implicit |CharT*| conversion operators for nsCString to use |.get()| instead, rr=dbaron, rs=scc
git-svn-id: svn://10.0.0.236/trunk@106241 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 03:49:28 +00:00
roc+%cs.cmu.edu
72aa716fbe Bug 73382. Cleaning up view manager; remove nsViewManager2 from build. r=kmcclusk,sr=attinasi
git-svn-id: svn://10.0.0.236/trunk@106240 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 03:43:28 +00:00
roc+%cs.cmu.edu
ce8322ef4c Bug 73382. Cleaning up view manager; remove nsViewManager2, it's ueless. r=kmcclusk,sr=attinasi
git-svn-id: svn://10.0.0.236/trunk@106239 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 03:42:39 +00:00
roc+%cs.cmu.edu
19217a44fb Bug 106355. Regression where paint requests entirely outside the widge area caused copying of bogus bits from the backbuffer. r=kmcclusk,sr=waterson
git-svn-id: svn://10.0.0.236/trunk@106237 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 03:36:01 +00:00
seawood%netscape.com
f66607494f Don't explicitly add $(srcdir) and let VPATH do its thing. Fixes packages built in objdirs.
git-svn-id: svn://10.0.0.236/trunk@106236 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 03:35:01 +00:00
dbaron%fas.harvard.edu
9ef49bf676 Fix member initializer re-ordered warnings by re-ordering member initializers. r=jag rs=waterson b=105974
git-svn-id: svn://10.0.0.236/trunk@106235 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 03:21:53 +00:00
naving%netscape.com
e9de645cd0 102467 r/sr=bienvenu. fix a small memory leak
git-svn-id: svn://10.0.0.236/trunk@106234 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 03:14:33 +00:00
timeless%mac.com
78140762fb Bugzilla Bug 97136 Unable to load filter on space characters
patch by alexey@ihug.com.au r=naving, sr=bienvenu


git-svn-id: svn://10.0.0.236/trunk@106233 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 03:11:40 +00:00
dbaron%fas.harvard.edu
9d2cde6f2f Fix HP bustage. Why did I ever add this to the build on Unix?
git-svn-id: svn://10.0.0.236/trunk@106231 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 03:05:37 +00:00
andreww%netscape.com
0c87d3d7fc bugzilla 81196 r=shliang sr=hewitt - vertical spacing and alignment of checkboxes and radio buttons in mac classic.
git-svn-id: svn://10.0.0.236/trunk@106230 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 02:57:31 +00:00
dbaron%fas.harvard.edu
bd39ad7ef4 Remove unneeded include with the wrong case.
git-svn-id: svn://10.0.0.236/trunk@106229 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 02:47:55 +00:00
bienvenu%netscape.com
a6941f6c6d bulletproof for crash with filters and movemail r=adam@gimp.org, sr=sspitzer
git-svn-id: svn://10.0.0.236/trunk@106228 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 02:26:16 +00:00
bienvenu%netscape.com
b1f0ea4be4 add ui for label feature, r=ssu, sr=sspitzer, fix problem with command enabling for local mail, r=varada, sr=sspitzer 106067 106504
git-svn-id: svn://10.0.0.236/trunk@106227 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 02:25:08 +00:00
dbaron%fas.harvard.edu
8b3489a026 Bug 86947:
Make the line list doubly linked and access it through a list class and iterators.
Stop recomputing margins on all of the children of each block in the reflow chain (which causes O(N^2) state recovery during incremental reflow).  Instead, add a second dirty bit to the lines and walk backwards through the line list to recompute vertical margins only when either dirty bit is set and the previous line was not reflowed.  Add nsIFrame::IsEmpty to identify frames through which margins collapse.
Fix O(N^2) propagation of float damage by maintaining a set of intervals damaged by floats (bug 61962) and be sure to damage the correct areas (bug 48138).
Introduce nsCollapsingMargin to do correct collapsing of combinations of positive and negative margins (bug 50142).
Clean up some odds and ends and fix another smaller O(N^2) problem in nsBlockFrame::AddFrames.
r=attinasi, rbs  sr=waterson


git-svn-id: svn://10.0.0.236/trunk@106224 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 01:08:40 +00:00
dbaron%fas.harvard.edu
0b3593b0fc Add nsIntervalSet.cpp to the build. b=86947
git-svn-id: svn://10.0.0.236/trunk@106223 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 01:08:35 +00:00
timeless%mac.com
a140bc5473 Bug 104540 LXR updates for .idl collaboration diagrams
by mozilla@elemental.com (Brian Bramlett)
r=endico


git-svn-id: svn://10.0.0.236/trunk@106222 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 01:05:07 +00:00
despotdaemon%netscape.com
048c5eb918 Pseudo-automatic update of changes made by samuel@sieb.net.
git-svn-id: svn://10.0.0.236/trunk@106219 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 00:40:23 +00:00
bzbarsky%mit.edu
c180e28886 Improve how we get our charset for stylesheets. Look at HTTP header,
charset attribute on <link> or <?xml-stylesheet?> and at the document's
charset.  Bugs 57164, 72658, 83207.  r=pierre, sr=attinasi


git-svn-id: svn://10.0.0.236/trunk@106217 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 00:34:20 +00:00
bzbarsky%mit.edu
1057cb4190 Make pasting from remote apps on X time out independently of processor
speed.  Bug 87207, patch by Rickard Westman <riw@swipnet.se>, r=pavlov,
sr=blizzard CVS:
----------------------------------------------------------------------
nsClipboard.cpp CVS:
----------------------------------------------------------------------


git-svn-id: svn://10.0.0.236/trunk@106216 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 00:30:30 +00:00
bzbarsky%mit.edu
1dbc9647e5 Make SetDocument() get a new nodeinfo if the old one does not match the
new document.  Bug 106393, r=peterv, sr=jst


git-svn-id: svn://10.0.0.236/trunk@106215 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 00:28:08 +00:00
morse%netscape.com
0232749fd5 bug 106304, bad wording in dialog, r=bryner, sr=alecf
git-svn-id: svn://10.0.0.236/trunk@106214 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 00:26:50 +00:00
brendan%mozilla.org
2163e55b8e Add mutable (growable or dependent, two subtypes) strings to solve O(n^2) and O(n^3) growth rates (56940, r=rogerl, sr=jband&shaver).
git-svn-id: svn://10.0.0.236/trunk@106213 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 00:26:38 +00:00
karnaze%netscape.com
fad3ac250f new regression test, not affecting the build.
git-svn-id: svn://10.0.0.236/trunk@106212 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 00:26:16 +00:00
karnaze%netscape.com
54f2a7e5c0 bug 106336 - treat % cellspacing, cellpadding as pixel. sr=attinasi, r=alexsavulov
git-svn-id: svn://10.0.0.236/trunk@106211 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 00:24:08 +00:00
ducarroz%netscape.com
de141f84d8 Fix for bug 106560. Crash in StyleSetImp::ShutDown when mRuleTree is null. Need to check mRuleTree before using it. R=bienvenu, SR=hyatt
git-svn-id: svn://10.0.0.236/trunk@106210 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-25 00:19:21 +00:00
nhotta%netscape.com
09b1885365 Changes for JA conversion tables, bug 54135, rs=ftang, rs=blizzard.
git-svn-id: svn://10.0.0.236/trunk@106209 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 23:57:50 +00:00
nhotta%netscape.com
6a84cf5086 For mail body charset conversion, if charset is "us-ascii" then use "ISO-8859-1", bug 82591, r=ducarroz, sr=sspitzer.
git-svn-id: svn://10.0.0.236/trunk@106208 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 23:54:07 +00:00
timeless%mac.com
1ecaa7f3b1 Bugzilla Bug 104244 [RFE] add reload this/all tab(s) to context menu
patch by simm0@ii.net r=hyatt sr=blake


git-svn-id: svn://10.0.0.236/trunk@106207 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 23:49:54 +00:00
jaggernaut%netscape.com
5e2a1a7476 Bug 53057: Fixing up users of implicit |CharT*| conversion operators for nsCString to use |.get()| instead, rr=dbaron, rs=scc
git-svn-id: svn://10.0.0.236/trunk@106206 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 23:47:43 +00:00
jst%netscape.com
d2bf33af2a Fixing blocker bug 106527 (as part of bug 69468), allow creation of atoms for empty strings but don't crash when creating atoms for strings that have no internal buffer. r=dbaron@netscape.com, sr=brendan@mozilla.org
git-svn-id: svn://10.0.0.236/trunk@106203 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 23:36:58 +00:00
nelsonb%netscape.com
d8d2f0e62b Explanation of the files in this directory.
git-svn-id: svn://10.0.0.236/trunk@106200 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 22:17:30 +00:00
karnaze%netscape.com
d0cead0255 new regression test, not affecting the build.
git-svn-id: svn://10.0.0.236/trunk@106199 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 21:55:52 +00:00
mkaply%us.ibm.com
bf92a698d1 This should be the other AIX bustage
git-svn-id: svn://10.0.0.236/trunk@106198 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 21:40:27 +00:00
bbaetz%cs.mcgill.ca
59af65fd2f Fixed "used only once" warning coming from my patch for bug 97469. The
warning was hidden from the tests by bug 106424.

r=Jake, no 2nd review needed.


git-svn-id: svn://10.0.0.236/trunk@106195 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 20:33:49 +00:00
jpierre%netscape.com
fc33ccb04d Fix debug symbols in OS/2 build of NSPR by using absolute paths. Bug 105271
git-svn-id: svn://10.0.0.236/trunk@106194 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 20:19:05 +00:00
jst%netscape.com
cd19286dfb Fixing blocker bug 106474. Make nsAFlatString::GetReadableFragment() deal with a null buffer handles correctly. r=kin@netscape.com, sr=scc@mozilla.org
git-svn-id: svn://10.0.0.236/trunk@106189 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 19:29:42 +00:00
mkaply%us.ibm.com
0b0e2dd7c9 Fix for OS/2 and AIX bustage
git-svn-id: svn://10.0.0.236/trunk@106188 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 19:12:02 +00:00
beard%netscape.com
0a9bd3f85d [Not part of build] Bumped versions to 1.0d3.
git-svn-id: svn://10.0.0.236/trunk@106187 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 19:02:51 +00:00
beard%netscape.com
99ea75333f [not part of build] Renamed JavaConsole.log to "Java Console.log". Implemented UnwrapJavaWrapper().
git-svn-id: svn://10.0.0.236/trunk@106186 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 19:02:32 +00:00
dsirnapalli%netscape.com
44bf7478bc modified the title.
git-svn-id: svn://10.0.0.236/trunk@106185 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 18:59:15 +00:00
beard%netscape.com
61dfa132a1 [not part of build] Fixed hang when starting JNIThread triggers a security exception. Removed obsolete NSAGG stuff.
git-svn-id: svn://10.0.0.236/trunk@106184 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 18:58:20 +00:00
dsirnapalli%netscape.com
d2e133d7ec modified title.
git-svn-id: svn://10.0.0.236/trunk@106183 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 18:55:47 +00:00
jake%acutex.net
f6426c6f03 Don't rely on the TEST_VERBOSE environment variable (no longer exported from runtests.sh) and instead print to the TESTOUT file handle pulled in from Test::More. This will allow the testing backend to check for verbosity rather than having to handle it in the .t files.
git-svn-id: svn://10.0.0.236/trunk@106182 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 18:41:53 +00:00
dsirnapalli%netscape.com
97a2ef3389 modified the title.
git-svn-id: svn://10.0.0.236/trunk@106181 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 18:40:57 +00:00
dougt%netscape.com
9e7d4bff37 Fixes bug 106313 (smoketest blocker). Allowing notification of weak references, regression caused by my nsIObserverService landing. sr=alecf@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@106179 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 18:02:46 +00:00
jpierre%netscape.com
0db6c405c6 Better way of calling assembler on OS/2
git-svn-id: svn://10.0.0.236/trunk@106177 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 17:35:18 +00:00
mkaply%us.ibm.com
2b0ee4554e #106000
r=pedemont, a=blizzard
Wrong coordinates for stretching 24bit images


git-svn-id: svn://10.0.0.236/trunk@106169 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 14:46:26 +00:00
bernd.mielke%snafu.de
ac43e7d583 bug 104898 the borderpadding should not influence the inner table margin relative to the
outertable frame r=karnaze sr=attinasi


git-svn-id: svn://10.0.0.236/trunk@106168 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 14:36:33 +00:00
wtc%netscape.com
5b76abc737 Bugzilla bug 103892: include <stdlib.h> rather than <malloc.h> for the
malloc functions.  r=cls.


git-svn-id: svn://10.0.0.236/trunk@106167 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 14:33:28 +00:00
jake%acutex.net
5f73a3f4db Bug 106424 - We weren't going orange on warnings such as "used only once". This script now properly outputs the --WARNING and fails on such a condition.
git-svn-id: svn://10.0.0.236/trunk@106166 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 13:29:49 +00:00
simon%softel.co.il
ec64a2b0c8 Fix for bug 75034: Selection highlight on some Bidi pages was displayed in the opposite position to the actual selection. r=kin@netscape.com, sr=attinasi
git-svn-id: svn://10.0.0.236/trunk@106165 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 11:12:31 +00:00
jaggernaut%netscape.com
bc36e83f58 Bug 53057: Fixing up users of implicit |CharT*| conversion operators for nsCString to use |.get()| instead, rr=dbaron, rs=scc
git-svn-id: svn://10.0.0.236/trunk@106162 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 09:43:59 +00:00
jaggernaut%netscape.com
56e20f9b60 Replace goto with if.
git-svn-id: svn://10.0.0.236/trunk@106159 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 09:29:54 +00:00
jaggernaut%netscape.com
94c710fdc4 Bug 53057: Fixing up users of implicit |CharT*| conversion operators for nsCString to use |.get()| instead, rr=dbaron, rs=scc
git-svn-id: svn://10.0.0.236/trunk@106158 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 09:22:08 +00:00
jaggernaut%netscape.com
238eb280fb Bug 53057: [API] turn off implicit |CharT*| conversion operators for nsCString, rr=dbaron, rs=scc
git-svn-id: svn://10.0.0.236/trunk@106157 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 09:06:49 +00:00
dbaron%fas.harvard.edu
2f1eb6d907 My guess at AIX and OS/2 bustage was wrong -- backing it out. Someone with access to a machine with one of those compilers will have to try various things here.
git-svn-id: svn://10.0.0.236/trunk@106156 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 09:03:46 +00:00
jaggernaut%netscape.com
be692fb779 Attempt at fixing bustage for Mac OS X
git-svn-id: svn://10.0.0.236/trunk@106155 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 09:03:09 +00:00
axel%pike.org
257248e5d0 bug 104042, more leaked exprResults. r=peterv, sr=jst
git-svn-id: svn://10.0.0.236/trunk@106154 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 09:00:32 +00:00
jst%netscape.com
22a7f4c158 Fixing bug 106421. Now that we support null strings in the DOM node.localName can be null so we must check for that before calling methods on localName. r=jaggernaut@netscape.com, peterv@netscape.com, sr=me (trivial changes).
git-svn-id: svn://10.0.0.236/trunk@106153 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 08:57:17 +00:00
axel%pike.org
4196f98412 bug 104042, fix leak in standalone namespacemanager, r=sicking,peterv, sr=jst
git-svn-id: svn://10.0.0.236/trunk@106152 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 08:45:32 +00:00
jaggernaut%netscape.com
5e8d984878 BUg 103222: Spiff up nsICollation::CompareStrings string-fu, r=dbaron, sr=brendan
git-svn-id: svn://10.0.0.236/trunk@106151 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 08:15:57 +00:00
glazman%netscape.com
ddcf3462dc STYLE attribute should not expand CSS shorthand property assignment to equivalent longhand assignments; b=18894, r=peterv, sr=attinasi
git-svn-id: svn://10.0.0.236/trunk@106150 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 08:08:30 +00:00
dbaron%fas.harvard.edu
14bbe2fc1a Moving nsRuleNode.cpp back to content/base/src from content/shared/src and inlining GetRule to fix linker errors on BeOS and probably also AIX, and since it doesn't need to be in content/shared and cvs won't like re-adding to content/html/style/src. b=104336
git-svn-id: svn://10.0.0.236/trunk@106149 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 07:48:01 +00:00
jst%netscape.com
51e4831f64 Fixing bug 69468. Finally adding support for string nullness to XPConnect. r=jaggernaut@netscape.com, shaver@mozilla.org, sr=jband@netscape.com
git-svn-id: svn://10.0.0.236/trunk@106148 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 07:15:06 +00:00
jst%netscape.com
27f42d5eb2 Fixing bug 90143. Crash in DOM timeout code on Win2k due to OS timers firing early and out of order. r=peterv@netscape.com, sr=vidur@netscape.com
git-svn-id: svn://10.0.0.236/trunk@106147 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 06:58:11 +00:00
dbaron%fas.harvard.edu
ae6bbca773 Wild guess at fixing AIX and OS/2 bustage.
git-svn-id: svn://10.0.0.236/trunk@106146 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 06:53:39 +00:00
dbaron%fas.harvard.edu
8de595e1a9 Move nsRuleNode.cpp from content/shared/src/ to content/base/src/. b=104336
git-svn-id: svn://10.0.0.236/trunk@106145 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 06:36:09 +00:00
dbaron%fas.harvard.edu
a222daa57a Moving nsRuleNode.cpp back to content/base/src from content/shared/src and inlining GetRule to fix linker errors on BeOS and probably also AIX, and since it doesn't need to be in content/shared and cvs won't like re-adding to content/html/style/src. b=104336
git-svn-id: svn://10.0.0.236/trunk@106143 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 06:25:08 +00:00
stephend%netscape.com
c7c063af59 Bug 106172. Enabling tooltips for Venkman. Patch by Bradley Hart <bhart00@yahoo.com> r=rginda, sr=brendan
git-svn-id: svn://10.0.0.236/trunk@106142 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 06:23:24 +00:00
attinasi%netscape.com
b1c02980eb Fixed crash when positioned applet has to show the alt text. b=99776 r=dbaron sr=hyatt
git-svn-id: svn://10.0.0.236/trunk@106140 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 06:13:10 +00:00
jaggernaut%netscape.com
de17e83dc1 This nsAString& really deserves to be const. r=dbaron
git-svn-id: svn://10.0.0.236/trunk@106139 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 06:11:02 +00:00
wtc%netscape.com
3796851050 Bugzilla bug 106388: made the release_export rule work with VPATH.
git-svn-id: svn://10.0.0.236/trunk@106137 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 05:43:07 +00:00
bryner%netscape.com
d674a46902 fixing crash on exit. r=attinasi, sr=hyatt.
git-svn-id: svn://10.0.0.236/trunk@106135 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 05:20:11 +00:00
attinasi%netscape.com
cbf1f7522f Checkin for tingley@sundell.net - Blinking text optional via pref 'browser.blink_enabled' b=19258 r=dbaron sr=attinasi
git-svn-id: svn://10.0.0.236/trunk@106134 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 04:52:39 +00:00
attinasi%netscape.com
739f7f8dad Checkin for tingley@sundell.net - Blinking text optional via pref b=19258 r=dbaron sr=attinasi
git-svn-id: svn://10.0.0.236/trunk@106133 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 04:51:34 +00:00
bernd.mielke%snafu.de
f7141b99f6 bug 103443 remove the last two occurences of rv?rv:NS_ERROR_FAILURE
r=kin sr=attinasi


git-svn-id: svn://10.0.0.236/trunk@106132 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 04:50:37 +00:00
pavlov%netscape.com
5737de4aba fix for bug 105964. r=timeless sr=waterson
git-svn-id: svn://10.0.0.236/trunk@106131 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 04:25:40 +00:00
shanjian%netscape.com
95ef4f3a82 fix mac bustage,
r=jelwell


git-svn-id: svn://10.0.0.236/trunk@106129 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 03:17:44 +00:00
hyatt%netscape.com
9d81f5d9f9 Fix leaks. r=dbaron, sr=hewitt
git-svn-id: svn://10.0.0.236/trunk@106127 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 02:22:40 +00:00
pschwartau%netscape.com
34e3cda14f Adding two more cases to the test.
git-svn-id: svn://10.0.0.236/trunk@106125 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 02:01:59 +00:00
hyatt%netscape.com
1503f1b4bb Fix mac bustage.
git-svn-id: svn://10.0.0.236/trunk@106124 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 02:00:15 +00:00
shrutiv%netscape.com
a916e5adef Fix for bug 105735: CD Autorun option with existing Windows configuration
(r=tao)


git-svn-id: svn://10.0.0.236/trunk@106123 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 01:56:16 +00:00
shrutiv%netscape.com
4b65b3a8d1 Fix for bug 106298: Without the CD Autorun option, creating a Windows
installer from an existing Linux configuration tarball doesn't get
removed (r=tao)


git-svn-id: svn://10.0.0.236/trunk@106122 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 01:44:05 +00:00
myk%mozilla.org
90cb92a74d Fix for bug 106315: Link on bug list for emailing QA contacts.
Patch by Dave Miller <justdave@syndicomm.com>.
r=myk@mozilla.org, no second review needed.


git-svn-id: svn://10.0.0.236/trunk@106119 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 01:31:09 +00:00
hyatt%netscape.com
38c3c6561e Fix inspector bustage.
git-svn-id: svn://10.0.0.236/trunk@106118 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 01:18:24 +00:00
cathleen%netscape.com
1dc76a53f2 Fix static build bustage.
git-svn-id: svn://10.0.0.236/trunk@106117 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 01:13:51 +00:00
hyatt%netscape.com
be43b483ee Put nsRuleNode.cpp in the shared folder inside contentshared.mcp
git-svn-id: svn://10.0.0.236/trunk@106116 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 00:59:52 +00:00
hyatt%netscape.com
e28637a19a added files: mozilla/content/shared/src/nsRuleNode.cpp
git-svn-id: svn://10.0.0.236/trunk@106115 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 00:58:36 +00:00
relyea%netscape.com
dab0dff719 CKT_ Trust values are "enums" not flags.
git-svn-id: svn://10.0.0.236/trunk@106113 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 00:57:06 +00:00
hyatt%netscape.com
b083be58b2 Fix linux bustage.
git-svn-id: svn://10.0.0.236/trunk@106111 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 00:33:17 +00:00
mscott%netscape.com
e262944a1e Bug #105553 --> convert message display to use some new XBL widgets.
r=sspitzer
sr=hewitt


git-svn-id: svn://10.0.0.236/trunk@106110 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 00:28:02 +00:00
mscott%netscape.com
9e9b89d430 Bug #105553 --> convert message header display to use new XBL widget
Bug #73413 --> hook up a first pass at view all headers
Bug #51616 --> don't let long subjects (with no spaces) reak havoc on the message pane.
r=ducarroz
sr=sspitzer


git-svn-id: svn://10.0.0.236/trunk@106109 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 00:27:03 +00:00
mscott%netscape.com
13122df7bb Bug #105553 --> add XBL widgets for use in message display
r=sspitzer
sr=hewitt


git-svn-id: svn://10.0.0.236/trunk@106108 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 00:26:09 +00:00
av%netscape.com
a92955ba63 Reflecting changes to the server manager in the plugin SDK -- not part of the build yet.
git-svn-id: svn://10.0.0.236/trunk@106107 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 00:23:28 +00:00
shanjian%netscape.com
5f1bfe137e #97176 startup perf- remove the need of loading of fontEncoding.properties files at startup time to speed up
This is part of patch for 97176, it was mistakenly removed when I checked in for 102706.
r=rbs, sr=waterson


git-svn-id: svn://10.0.0.236/trunk@106106 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 00:21:48 +00:00
dsirnapalli%netscape.com
68dcb1767a *** empty log message ***
git-svn-id: svn://10.0.0.236/trunk@106105 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 00:16:44 +00:00
shanjian%netscape.com
1fd6667027 #12481 libmime to feed more characters for charset detection
r=naoki, r=ducarroz, sr=sspitzer


git-svn-id: svn://10.0.0.236/trunk@106104 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 00:16:01 +00:00
seawood%netscape.com
97ffe4d6de Fix xpcom standalone build
git-svn-id: svn://10.0.0.236/trunk@106103 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 00:12:06 +00:00
hyatt%netscape.com
3f41247742 added files: mozilla/content/shared/src/nsRuleNode.cpp, removed files: mozilla/content/html/style/src/nsRuleWalker.cpp, mozilla/content/html/style/src/nsRuleNode.cpp
git-svn-id: svn://10.0.0.236/trunk@106102 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 00:01:50 +00:00
hyatt%netscape.com
ab0e4e56d4 Fix for 104336, deCOMtaminate rulenode, rulewalker, frames, r=dbaron, sr=waterson
git-svn-id: svn://10.0.0.236/trunk@106100 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 00:01:09 +00:00
varada%netscape.com
d06349b965 fix for 65761 - prefill filters using email address;r=ducarroz;sr=sspitzer
git-svn-id: svn://10.0.0.236/trunk@106099 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 00:00:32 +00:00
sspitzer%netscape.com
7d0572e219 fix for #55473. "View" | "Sort by" and "Messages" should be radio buttons, not checkboxes.
thanks to andreas.premstaller@uibk.ac.at for the patch.  r/sr=sspitzer


git-svn-id: svn://10.0.0.236/trunk@106098 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 23:54:54 +00:00
tor%cs.brown.edu
dde00832b1 Update to tip - not in build.
git-svn-id: svn://10.0.0.236/trunk@106097 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 23:53:49 +00:00
hewitt%netscape.com
451fe96bf9 106132 - DOM Inspector broken by changes to Pref API, r=jag, sr=hyatt
git-svn-id: svn://10.0.0.236/trunk@106096 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 23:53:44 +00:00
hewitt%netscape.com
3e3d0c87ce 86551 - First show of autocomplete is blank or something or other, r=jag, sr=hyatt
git-svn-id: svn://10.0.0.236/trunk@106095 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 23:48:35 +00:00
naving%netscape.com
ee1695d3e8 106160. r=sspitzer sr=bienvenu fix a crash on reading local messages, the fix is not to loadURL if we cannot
get a msgHdr for the message.


git-svn-id: svn://10.0.0.236/trunk@106093 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 23:41:47 +00:00
nhotta%netscape.com
abfeddfb7c Fix the window close problem for saveAs in .js, enable the charset alert in .cpp and some clean up,
bug 89655, r=ducarroz, sr=bienvenu.


git-svn-id: svn://10.0.0.236/trunk@106092 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 23:25:02 +00:00
morse%netscape.com
bea286690a bug 106216, remove bogus js warning messages, r=sgehani, sr=alecf
git-svn-id: svn://10.0.0.236/trunk@106091 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 23:12:18 +00:00
dsirnapalli%netscape.com
1c375c8b65 Modified the testcase to report the results in tabular form.
git-svn-id: svn://10.0.0.236/trunk@106090 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 23:10:08 +00:00
seawood%netscape.com
6b9389f5a3 Fix typo
git-svn-id: svn://10.0.0.236/trunk@106089 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 23:10:02 +00:00
hewitt%netscape.com
7a0a367e92 101876 - polish wizard implementation, r=blake, sr=hyatt
git-svn-id: svn://10.0.0.236/trunk@106088 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 23:04:49 +00:00
pschwartau%netscape.com
9a0f2bf19c Improving comments.
git-svn-id: svn://10.0.0.236/trunk@106087 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 23:02:25 +00:00
darin%netscape.com
283b8d757e NOT PART OF THE BUILD: adding Makefile.in for MachO build
git-svn-id: svn://10.0.0.236/trunk@106086 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 22:51:09 +00:00
darin%netscape.com
ad7578a214 NOT PART OF THE BUILD: adding Makefile.in for the MachO build
git-svn-id: svn://10.0.0.236/trunk@106085 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 22:49:42 +00:00
waldemar%netscape.com
fac2660668 Reordered sections to match E4 draft. Added prototype semantic domain.
git-svn-id: svn://10.0.0.236/trunk@106084 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 22:47:20 +00:00
waldemar%netscape.com
e96301fd24 Added dump-lexer
git-svn-id: svn://10.0.0.236/trunk@106083 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 22:46:26 +00:00
waldemar%netscape.com
a21269cce0 Fixed handling of unions containing forward-defined types
git-svn-id: svn://10.0.0.236/trunk@106082 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 22:46:01 +00:00
waldemar%netscape.com
0e3af4d9d9 Added :nbsp
git-svn-id: svn://10.0.0.236/trunk@106081 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 22:45:31 +00:00
waldemar%netscape.com
35f6333ba5 Added :global-call and support for styled text inside %heading
git-svn-id: svn://10.0.0.236/trunk@106080 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 22:45:20 +00:00
sspitzer%netscape.com
04c67a04a7 fix for #106308. fix duplicate resource ids. r=hwaara, rs=bienvenu
git-svn-id: svn://10.0.0.236/trunk@106079 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 22:40:12 +00:00
dprice%netscape.com
3ab4deae63 fix 42433 r=dveditz sr=mscott
File.DirCreate now returns success if dir already exists


git-svn-id: svn://10.0.0.236/trunk@106076 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 22:35:11 +00:00
pschwartau%netscape.com
eb6bee857f Initial add. Test for regexps with global flag set.
git-svn-id: svn://10.0.0.236/trunk@106074 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 22:29:01 +00:00
wtc%netscape.com
f76ce3deba DBM (mcom_db.h) is no longer testing for the HAVE_COMPAT_H macro.
git-svn-id: svn://10.0.0.236/trunk@106073 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 22:24:34 +00:00
bienvenu%netscape.com
4034b315d1 some front end for labels r=ssu, sr=sspitzer 106067
git-svn-id: svn://10.0.0.236/trunk@106072 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 22:22:32 +00:00
bienvenu%netscape.com
69c36af800 some front end for label filters r=naving, sr=sspitzer 106067
git-svn-id: svn://10.0.0.236/trunk@106071 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 22:21:38 +00:00
bzbarsky%mit.edu
66a5cec532 Make setting body.style.background invalidate the whole canvas so the
background is repainted correctly. r=kmcclusk@netscape.com, sr=attinasi


git-svn-id: svn://10.0.0.236/trunk@106067 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 22:08:30 +00:00
alecf%netscape.com
96cefc42e2 NS_LITERAL_STRING cruft that's needed for 100214, got left over from dougt's patch
git-svn-id: svn://10.0.0.236/trunk@106066 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 22:07:29 +00:00
bienvenu%netscape.com
428644ad1a add backend support for filter labels r=ssu, sr=sspitzer 106067
git-svn-id: svn://10.0.0.236/trunk@106065 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 22:07:24 +00:00
bienvenu%netscape.com
ada632adf4 add backend support for labels r=ssu, sr=sspitzer 106067
git-svn-id: svn://10.0.0.236/trunk@106064 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 22:06:03 +00:00
wtc%netscape.com
196a987032 Bugzilla bug 105173: test the compiler-defined __SVR4 macro instead of
SVR4 for Solaris.
Modified Files:
        include/mcom_db.h include/ncompat.h src/memmove.c


git-svn-id: svn://10.0.0.236/trunk@106063 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 22:05:06 +00:00
bienvenu%netscape.com
0a13aa1bb1 add label type r=ssu, sr=sspitzer 106067
git-svn-id: svn://10.0.0.236/trunk@106062 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 22:04:03 +00:00
pschwartau%netscape.com
7545f7e70b More accurate comment.
git-svn-id: svn://10.0.0.236/trunk@106058 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 19:28:40 +00:00
pschwartau%netscape.com
539afa39e5 Correcting an error in comments.
git-svn-id: svn://10.0.0.236/trunk@106057 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 19:12:42 +00:00
pschwartau%netscape.com
31d2084e5c Minor changes in style.
git-svn-id: svn://10.0.0.236/trunk@106056 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 17:39:31 +00:00
shrutiv%netscape.com
34e8a6ea4a Changing flag parameter from int to boolean (r=tao)
git-svn-id: svn://10.0.0.236/trunk@106055 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 17:11:52 +00:00
relyea%netscape.com
c3da362afd We lookup C_Initialize for non-db functions, not dbOnly functions (this should
get tokens working again.


git-svn-id: svn://10.0.0.236/trunk@106054 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 16:54:58 +00:00
shrutiv%netscape.com
90430ba110 Fix for bug 105588: linux installer cores if the config is cloned from
window's (r=tao)


git-svn-id: svn://10.0.0.236/trunk@106053 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 16:49:12 +00:00
bbaetz%cs.mcgill.ca
cced8d8047 Bug 97469 - Assignee/QA/Reporter/CC don't get email on restricted bugs.
Also fixes seeing bugs in the buglist (bug 95024), dependancy lists,
tooltips, duplicates, and everywhere else I could see which checked group
bugs.groupset == 0.

Also fxed bug 101560, by clearing BASH_ENV

r=myk,justdave


git-svn-id: svn://10.0.0.236/trunk@106051 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 15:44:53 +00:00
bzbarsky%mit.edu
3ce2e1eabc Convert nsXMLProcessingInstruction::GetAttrValue to iterators. Bug
106163, r=jag, sr=jst


git-svn-id: svn://10.0.0.236/trunk@106050 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 15:32:52 +00:00
jake%acutex.net
251ac470d6 Bug 63249 - The Bug Counts report was running very slowly due to unneeded fields/joins in the SQL query.
Patch by Matthew Tuck <matty@chariot.net.au>
r= gerv@mozilla.org, jake@acutex.net


git-svn-id: svn://10.0.0.236/trunk@106049 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 14:45:45 +00:00
locka%iol.ie
62254b2afe NOT PART OF BUILD. Removed implementation of the "new" Moz plugin APIs in favour of the NS API
git-svn-id: svn://10.0.0.236/trunk@106046 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 12:41:56 +00:00
locka%iol.ie
05d84b3211 NOT PART OF BUILD. Added framework to support XPConnect scripting of plugin
git-svn-id: svn://10.0.0.236/trunk@106045 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 12:39:46 +00:00
locka%iol.ie
01ef22731f NOT PART OF BUILD. Added framework to support XPConnect scripting of plugin
git-svn-id: svn://10.0.0.236/trunk@106043 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 11:50:22 +00:00
locka%iol.ie
3fbc0115c6 Disable ActiveX control registration during build by default. sr=kin@netscape.com b=105285
git-svn-id: svn://10.0.0.236/trunk@106041 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 11:39:06 +00:00
pavlov%netscape.com
71fb6121f8 fixing windows build bustage
git-svn-id: svn://10.0.0.236/trunk@106039 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 08:38:14 +00:00
leaf%mozilla.org
0cabdf2b22 Automated update
git-svn-id: svn://10.0.0.236/trunk@106038 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 08:28:16 +00:00
cls%seawood.org
2bd5f6543a Since the purpose of --enable-ultrasparc is to just flip on the ultrasparc-specific js compare & swap code, move the asflags/defines to turn it on back into js/src/Makefile.in rather than causing the entire project to be built with those flags.
git-svn-id: svn://10.0.0.236/trunk@106037 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 08:17:16 +00:00
seawood%netscape.com
a904a27013 Add PR_CALLBACK to declaration of PLDHashTableEnumeratorImpl::Enumerator as well.
git-svn-id: svn://10.0.0.236/trunk@106036 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 08:09:56 +00:00
pavlov%netscape.com
0c94ba945f fixing bug 106199. r=ben sr=hyatt
git-svn-id: svn://10.0.0.236/trunk@106035 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 08:07:03 +00:00
hyatt%netscape.com
ccc139d4b1 Someone didn't convert GetBoolPref in this file, sigh. r=pav, sr=hewitt
git-svn-id: svn://10.0.0.236/trunk@106034 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 07:35:02 +00:00
axel%pike.org
137be36b91 bug 104042, fix leaks in main (ifstream) and UnionExpr::evaluate (adding a null check and some iteratorlove, too), r=sicking@bigfoot.com,peterv, sr=jst
git-svn-id: svn://10.0.0.236/trunk@106033 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 07:34:27 +00:00
axel%pike.org
03728af7e3 bug 104042, plug leaks in variable code and import frames. checking in for sicking@bigfoot.com, r=me, peterv, sr=jst.
git-svn-id: svn://10.0.0.236/trunk@106032 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 07:32:19 +00:00
seawood%netscape.com
b6934d8ae1 Declare PLDHashTableEnumeratorImpl::Enumerator as a callback function.
Blind fix for OS/2 bustage


git-svn-id: svn://10.0.0.236/trunk@106031 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 06:52:07 +00:00
seawood%netscape.com
3e4295eb82 Spit out error if given -d without argument.
Bug #74067


git-svn-id: svn://10.0.0.236/trunk@106030 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 06:25:59 +00:00
kaie%netscape.com
9161f336a5 b=79153 r=javi sr=blizzard
Crypto key generation feedback, prevent crash, cleanup code, add a call from second code path.


git-svn-id: svn://10.0.0.236/trunk@106028 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 06:11:57 +00:00
curt%scruznet.com
b700abec04 Enables Okay button so dialog can be closed.
Fixes bug #53224.


git-svn-id: svn://10.0.0.236/trunk@106027 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 06:00:37 +00:00
curt%scruznet.com
52eb9190f4 Enables the pause button. Fixes bug #84595.
git-svn-id: svn://10.0.0.236/trunk@106026 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 05:49:20 +00:00
hewitt%netscape.com
cca57d897e 106178 - need a 'plain' class for removing all margin/border/padding, r=blake, sr=hyatt
git-svn-id: svn://10.0.0.236/trunk@106025 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 05:23:43 +00:00
dougt%netscape.com
337217beaa backing out changes to 104172. r=ccarlen@netscape.com
git-svn-id: svn://10.0.0.236/trunk@106023 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 03:50:24 +00:00
waterson%netscape.com
31173aade4 Fix egcs-1.1.2.
git-svn-id: svn://10.0.0.236/trunk@106022 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 03:44:09 +00:00
waterson%netscape.com
28843d2d15 Need a tab, not a space.
git-svn-id: svn://10.0.0.236/trunk@106020 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 03:12:28 +00:00
seawood%netscape.com
7f55ca9be7 Convert MyService test component into an "generic" module
Bug #71601 r=dougt


git-svn-id: svn://10.0.0.236/trunk@106019 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 02:56:35 +00:00
waterson%netscape.com
39c3e8852d Bug 26104. Move broadcaster maintenance out of XUL element and into the document. r=shaver, sr=hyatt
git-svn-id: svn://10.0.0.236/trunk@106018 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 02:44:44 +00:00
gerv%gerv.net
539683a461 Bug 101431 - making chromelist.txt happen again. Enable it on Unix, and add it to the relevant packaging manifests. r=cls.
git-svn-id: svn://10.0.0.236/trunk@106017 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 02:40:24 +00:00
dougt%netscape.com
de82c62b03 removing nslayout from MANIFEST
git-svn-id: svn://10.0.0.236/trunk@106015 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 02:28:29 +00:00
neeti%netscape.com
b5893430a8 fix for bug 96461 - using PLDHash for ComponentManager,r=shaver@mozilla.org, sr=brendan@mozilla.org
git-svn-id: svn://10.0.0.236/trunk@106014 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 02:28:12 +00:00
sspitzer%netscape.com
3d6cb28d32 fix for #106165. fix js warning when psm not built or installed. r/sr=bienvenu
git-svn-id: svn://10.0.0.236/trunk@106013 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 02:11:08 +00:00
waterson%netscape.com
80a4b96cfc moving Mac OS X mach-o packaging to trunk.
git-svn-id: svn://10.0.0.236/trunk@106012 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 02:02:57 +00:00
roc+%cs.cmu.edu
9f4555ddb6 Bug 73382. Add important documentation comment. r=kmcclusk,rs=attinasi
git-svn-id: svn://10.0.0.236/trunk@106010 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 01:37:29 +00:00
dougt%netscape.com
62a8215278 Extraneous Symbol Removal. Patch by Jon Smirl jonsmirl@mediaone.net. r=dougt@netscape.com, sr=alecf@netscape.com. Bug 104172 , 104316 , 104420 , 104426 , 104461 , 104511 , 104527
git-svn-id: svn://10.0.0.236/trunk@106009 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 01:37:21 +00:00
roc+%cs.cmu.edu
44f839f120 Bug 73382. View manager cleanup: eliminate Refresh(nsRect) path in favour of Refresh(nsIRegion), plus other minor cleanups. r=kmcclusk,rs=attinasi
git-svn-id: svn://10.0.0.236/trunk@106008 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 01:35:50 +00:00
leif%netscape.com
372229eb99 Bug 103084 and Bug 103085: Memory leaks in LDAP code. r=mitesh, sr=bienvenu.
git-svn-id: svn://10.0.0.236/trunk@106007 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 01:19:12 +00:00
shrutiv%netscape.com
f04c87495a Fic for bug 105588: linux installer cores if the config is cloned from
window's (r=tao)


git-svn-id: svn://10.0.0.236/trunk@106006 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 01:04:40 +00:00
bbaetz%cs.mcgill.ca
c33a71657f Bug 103737 - reenable "go up a directory" stuff which got accidentally
removed during my rewrite.
Bug 106114 - Don't assume that ftp directory listing dates are in GMT;
rather just leave them in the server's timezone.

Both r=dougt, sr=darin


git-svn-id: svn://10.0.0.236/trunk@106005 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 00:56:41 +00:00
shrutiv%netscape.com
01812022f0 Fix for bug 105588: linux installer cores if the config is cloned from
window's. Providing ability to create Linux or Windows build using same
configuration. (r=tao)


git-svn-id: svn://10.0.0.236/trunk@106004 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 00:50:49 +00:00
hewitt%netscape.com
61874ec44f 106155 - disabled color problems in modern theme, r=blake, sr=hyatt
git-svn-id: svn://10.0.0.236/trunk@106003 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 00:40:20 +00:00
dsirnapalli%netscape.com
bc9b15068a *** empty log message ***
git-svn-id: svn://10.0.0.236/trunk@106002 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 00:36:37 +00:00
jj%netscape.com
6a9d5de113 landing fix for bugscape 10608 (added oji.shlb in [browser] module) on the trunk.
git-svn-id: svn://10.0.0.236/trunk@106001 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 00:35:45 +00:00
av%netscape.com
b7c70d3c8e Updating the list of header files needed for the plugin SDK -- not part of the build
git-svn-id: svn://10.0.0.236/trunk@106000 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 00:23:12 +00:00
hewitt%netscape.com
52f6d011ff 106131 - hitting enter on focused OK button in dialog fires onaccept 2x, r=blake, sr=hyatt
git-svn-id: svn://10.0.0.236/trunk@105999 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 00:16:15 +00:00
karnaze%netscape.com
53af4f4999 new regression tests, not affecting the build.
git-svn-id: svn://10.0.0.236/trunk@105998 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 00:15:55 +00:00
bryner%netscape.com
64cc22396c Bug 105668 - make gtk embedding widget properly implement FocusNextElement and FocusPrevElement. r=jag, r/sr=blizzard.
git-svn-id: svn://10.0.0.236/trunk@105997 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 00:14:09 +00:00
cmanske%netscape.com
9d37c05073 Fixed busted HTML attribute setting in Composer Advanced Edit dialog, b=106047, r=brade, sr=hewitt
git-svn-id: svn://10.0.0.236/trunk@105996 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-23 00:00:37 +00:00
pschwartau%netscape.com
a144c89afb Adding comments.
git-svn-id: svn://10.0.0.236/trunk@105995 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 23:59:20 +00:00
pchen%netscape.com
ff3d4991fe *** empty log message ***
git-svn-id: svn://10.0.0.236/trunk@105994 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 23:59:10 +00:00
kaie%netscape.com
87d4b27a7e b=105016 r=kaie sr=ben
Update to 88553, polish layout of dialog and clicking on radio button text to select a radio button.


git-svn-id: svn://10.0.0.236/trunk@105993 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 23:57:39 +00:00
cmanske%netscape.com
fbde2b6c63 Image dialog should should use 'middle', not 'center' for align attribute, b=102036, r=brade, sr=hewitt
git-svn-id: svn://10.0.0.236/trunk@105991 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 23:55:58 +00:00
hyatt%netscape.com
ea462eacb6 Fix for 101554. r=dbaron, sr=hewitt
git-svn-id: svn://10.0.0.236/trunk@105989 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 23:37:33 +00:00
mcafee%netscape.com
52a6dc4ece Adding --list-only option, Getopt functionality. r=akkana
git-svn-id: svn://10.0.0.236/trunk@105988 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 23:33:02 +00:00
mcafee%netscape.com
d393357e6a Adding --list-only option. Added Getopt library capability. r=akkana, sr=alecf
git-svn-id: svn://10.0.0.236/trunk@105987 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 23:32:11 +00:00
darin%netscape.com
c51eb85860 fixes bug 105478 "nsHttpHandler::mLastUniqueID not initialized!!"
r=gordon, sr=mscott


git-svn-id: svn://10.0.0.236/trunk@105985 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 23:24:26 +00:00
shanjian%netscape.com
d2a8215d9e #102706 change nsFontMetricsWin.cpp to use nsCompressedCharMap
r=rbs sr=attinasi

Most of the charmap were replaced by compressed charmap, only very few
left for direct operation. Some optimization also get in as problem
found when testing this patch.


git-svn-id: svn://10.0.0.236/trunk@105984 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 23:20:24 +00:00
alecf%netscape.com
3991a0512b temporarily fix bustage by moving intl earlier in the build cycle
git-svn-id: svn://10.0.0.236/trunk@105983 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 23:14:19 +00:00
nhotta%netscape.com
3a858bfd54 For charset menupopup, make sure to set selectedItem and removed unnecessary code, bug 87691, r=jbetak, sr=sspitzer.
git-svn-id: svn://10.0.0.236/trunk@105982 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 22:47:48 +00:00
bryner%netscape.com
73a2cc7db6 Bug 104977 -- landing tabbing rewrite. Fixes bugs 78256, 83575, 85602, 96273, 103980, and 105224. r=saari, sr=hyatt.
git-svn-id: svn://10.0.0.236/trunk@105981 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 22:43:52 +00:00
dsirnapalli%netscape.com
5a4001e187 This file is used by ComponentListTest.html
git-svn-id: svn://10.0.0.236/trunk@105980 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 22:38:27 +00:00
dsirnapalli%netscape.com
d917b61c75 Test case to list the components available for mfcEmbed.
git-svn-id: svn://10.0.0.236/trunk@105979 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 22:37:49 +00:00
dsirnapalli%netscape.com
9bf85d1959 will rename it to .txt and check in again.
git-svn-id: svn://10.0.0.236/trunk@105978 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 22:36:39 +00:00
dsirnapalli%netscape.com
dbc1283d66 Will rename it to .txt and check it again.
git-svn-id: svn://10.0.0.236/trunk@105977 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 22:35:59 +00:00
javi%netscape.com
8faaf72005 Fix for Bug 99163, Checking in for dougt@netscape.com,r=shaver, sr=jband
git-svn-id: svn://10.0.0.236/trunk@105976 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 22:30:18 +00:00
karnaze%netscape.com
2f5ef17932 bug 105268 - set NS_FRAME_OUTSIDE_CHILDREN on row when cells have rowspan>1 so that painting will not clip to row. sr=attinasi, r=alexsavulov
git-svn-id: svn://10.0.0.236/trunk@105975 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 22:21:19 +00:00
danm%netscape.com
8f2c0dd67c rework zoomed window size to use structure region bounds; looks beter on OS X. bug 105657 code=lordpixel r=pinkerton,sfraser,me
git-svn-id: svn://10.0.0.236/trunk@105974 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 22:07:14 +00:00
dougt%netscape.com
fa2d0b7e98 99163 - removing nsObserverService.h includes. Also fixing 106090, extra methods on nsObserverService. r=shaver@mozilla.org, sr=jband@netscape.com
git-svn-id: svn://10.0.0.236/trunk@105973 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 22:01:27 +00:00
loadrunner%betak.net
1403ab79f6 bug 97174 startup perf- remove the need of loading of wincharset.properties files at startup time to speed up, r=nhotta, sr=sfraser
git-svn-id: svn://10.0.0.236/trunk@105969 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 21:52:16 +00:00
morse%netscape.com
256f214fea bug 105874, minor wording changes in p3p dialog, r=harishd, sr=alecf
git-svn-id: svn://10.0.0.236/trunk@105968 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 21:49:55 +00:00
dsirnapalli%netscape.com
f8c4a30307 this file is used by ComponentListTest.html
git-svn-id: svn://10.0.0.236/trunk@105967 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 21:36:41 +00:00
dsirnapalli%netscape.com
ef22a6c851 Test case to list the available components for mfcEmbed.
git-svn-id: svn://10.0.0.236/trunk@105966 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 21:36:03 +00:00
alecf%netscape.com
bd77c1a09d ack! how'd that get yanked? backing out part of my previous checkin, never should have landed
git-svn-id: svn://10.0.0.236/trunk@105965 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 21:25:14 +00:00
alecf%netscape.com
cb8cce8ae8 add ToUpperCase/ToLowerCase for PRUnichar - not used yet.. for bug 100214
git-svn-id: svn://10.0.0.236/trunk@105964 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 21:23:01 +00:00
harishd%netscape.com
63ecc27e89 105896 - CharsetAlias is a COMPtr and therefore no need for ReleaseService(). This isa regression caused by the fix to bug 88363. r=heikki, sr=waterson.
git-svn-id: svn://10.0.0.236/trunk@105963 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 21:09:20 +00:00
hewitt%netscape.com
8d31e78071 105995 - Tabs don't work in first window., sr=hyatt
git-svn-id: svn://10.0.0.236/trunk@105962 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 20:59:14 +00:00
nhotta%netscape.com
e8996e27ad In MIME encoder, replace nsTextFormatter by NS_ConvertUTF8toUCS2, bug 105527, r=ducarroz, sr=bienvenu.
git-svn-id: svn://10.0.0.236/trunk@105961 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 20:59:03 +00:00
bnesse%netscape.com
7f9fa9521d Fix for bug 103883. Add weak ref support for prefs observers to help reduce MLK cycles with preferences. r=ccarlen, darin, gordon, hewitt, mstoltz, srilatha, sspitzer. sr=alecf.
git-svn-id: svn://10.0.0.236/trunk@105960 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 20:54:48 +00:00
harishd%netscape.com
7423f3c016 Backing out fix for bug 100397 since it caused the relow numbers and the page load time to shoot up.
git-svn-id: svn://10.0.0.236/trunk@105959 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 20:51:09 +00:00
mkaply%us.ibm.com
47020cc834 No bug
r=mkaply, sr=blizzard
OS/2 only - removing lots of cruft, general cleanup of widget


git-svn-id: svn://10.0.0.236/trunk@105958 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 20:49:50 +00:00
waterson%netscape.com
1de1aeabae Bug 68871. Permit partial sharing of XUL attributes, remove unused fields from nsXULElement and nsXULElement::Slots. Tag teamed with shaver@mozilla.org, r=shaver; sr=hyatt.
git-svn-id: svn://10.0.0.236/trunk@105957 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 20:48:52 +00:00
alecf%netscape.com
93701a7f68 bug 100214 - add libunicharutil_s to all unix projects that require it, r=cls
git-svn-id: svn://10.0.0.236/trunk@105956 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 20:44:02 +00:00
alecf%netscape.com
be219fb68c bug 100214 - add makefile define for MOZ_UNICHAR_LIBS for unichar case support
r=cls (build-system only)


git-svn-id: svn://10.0.0.236/trunk@105955 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 20:42:39 +00:00
pschwartau%netscape.com
cd5cb1cd26 Improving readability.
git-svn-id: svn://10.0.0.236/trunk@105954 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 20:09:12 +00:00
pschwartau%netscape.com
e01d0c22d0 Initial add. Regression test for Bugzilla bug 105972.
git-svn-id: svn://10.0.0.236/trunk@105953 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 20:06:52 +00:00
waterson%netscape.com
bf277e8274 More types!
git-svn-id: svn://10.0.0.236/trunk@105951 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 18:25:37 +00:00
hewitt%netscape.com
4f23ec5d79 102241 - [XUL 1.0] use selectedIndex on deck and tabpanels, r=blake, sr=hyatt
git-svn-id: svn://10.0.0.236/trunk@105944 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 17:37:59 +00:00
karnaze%netscape.com
2f9729e913 new regression tests not affecting the build.
git-svn-id: svn://10.0.0.236/trunk@105938 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 15:07:12 +00:00
karnaze%netscape.com
a317d22083 bug 96343 - skip cellspacing logic when child is not a row. sr=attinasi, r=alexsavulov
git-svn-id: svn://10.0.0.236/trunk@105936 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 14:37:03 +00:00
karnaze%netscape.com
f5419762fd bug 52531 - treate style change reflow like initial when positioning cell block.
git-svn-id: svn://10.0.0.236/trunk@105935 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 14:31:18 +00:00
karnaze%netscape.com
9c91a2a8e3 bug 86314 - invalidate properly when the inner table changes width. sr=attinasi, r=kmcclusk.
git-svn-id: svn://10.0.0.236/trunk@105934 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 14:24:54 +00:00
bienvenu%netscape.com
c1e9482e55 speed up loading of newsgroups by avoiding second db commit, r/sr =sspitzer 74955
git-svn-id: svn://10.0.0.236/trunk@105933 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 14:07:44 +00:00
bienvenu%netscape.com
cf0079914f correct fix for 103703 loading message leaks url spec, r/sr=sspitzer
git-svn-id: svn://10.0.0.236/trunk@105932 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 13:25:54 +00:00
peterv%netscape.com
796087a7db Fix for bug 81506 (JS error on browser startup). r=glazman@netscape.com, sr=ben@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@105931 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 11:39:02 +00:00
rods%netscape.com
8612bf6bb6 Make labels inline !important
Bug 100801 r=rods sr=attinasi


git-svn-id: svn://10.0.0.236/trunk@105930 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 10:39:35 +00:00
jfrancis%netscape.com
c64143d012 fixes following bugs:
77902: toggling from normal to source view and back in composer can leave source in normal view.
101645: big/small tags get seperately wrapped around br nodes
81315: drag and drop doesn't behave same as copy paste
90759: ascii spaces don't behave in IME mode
96328: cant outdent certain indented text
58629: some mail messages cannot be accurately quoted on reply
93088/93477: forward deletion broken
46290: relative font size controls dont play nice with absolute font size
r=various; sr=kin


git-svn-id: svn://10.0.0.236/trunk@105922 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 06:22:52 +00:00
leaf%mozilla.org
00fcc38140 Automated update
git-svn-id: svn://10.0.0.236/trunk@105921 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 04:43:16 +00:00
seawood%netscape.com
7b09be9ef1 Remove unused MOZ_ENDER_LITE & -DENDER_LITE from the tree.
git-svn-id: svn://10.0.0.236/trunk@105920 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 04:34:31 +00:00
jaggernaut%netscape.com
68b1430692 Bug 105973: s/Observe/observe/
git-svn-id: svn://10.0.0.236/trunk@105919 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 04:26:04 +00:00
jaggernaut%netscape.com
32692449ba Bug 105973: s/Observe/observe/
git-svn-id: svn://10.0.0.236/trunk@105918 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 04:16:33 +00:00
bernd.mielke%snafu.de
b287b54fc9 bug 97027 restrict the use of multilength parsing to cols and colgroups
r=karnaze sr= attinasi


git-svn-id: svn://10.0.0.236/trunk@105917 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 04:05:34 +00:00
dbaron%fas.harvard.edu
a0052ea3a7 Fix assertion from dougt's nsIObserver / nsIObserverService changes. b=99163
git-svn-id: svn://10.0.0.236/trunk@105916 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 04:00:02 +00:00
rangansen%netscape.com
35bc93c7c9 Checking in for morse@netscape.combug# 87334, r=rangansen r=jag sr=Alect Flettenforcing ask everytime option for passwords ...
git-svn-id: svn://10.0.0.236/trunk@105915 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 03:01:53 +00:00
matt%netscape.com
e22fa0aca9 bug 104119 r=samir sr=blake double escaping sherlock file fixed for netscape search
git-svn-id: svn://10.0.0.236/trunk@105910 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 01:13:04 +00:00
av%netscape.com
461ab0ebf1 The tester plugin -- first check in, not part of the build, bug 105959
git-svn-id: svn://10.0.0.236/trunk@105908 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 00:25:25 +00:00
waterson%netscape.com
8241b8d2c9 Types, types! More types!
git-svn-id: svn://10.0.0.236/trunk@105907 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 00:07:26 +00:00
seawood%netscape.com
65d28de970 Fix missing description problem for options that required multiple lines for the description.
git-svn-id: svn://10.0.0.236/trunk@105903 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-21 19:11:25 +00:00
waterson%netscape.com
734c20f22b Add coverage and floating width.
git-svn-id: svn://10.0.0.236/trunk@105902 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-21 16:46:37 +00:00
jaggernaut%netscape.com
e29e1bd829 Bug 89998: Some minor wording clean-up (title -> caption) in nsGroupBoxFrame.cpp. r=mozbot. Much thanks to FrodoB for his help (he did most of the work on my previous checkins for this bug).
git-svn-id: svn://10.0.0.236/trunk@105901 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-21 09:30:22 +00:00
jaggernaut%netscape.com
a7768607f4 Bug 98889: move nsTitledBoxFrame.cpp to nsGroupBoxFrame.cpp as the final step in this XUL 1.0 bug. r=me,FrodoB.
git-svn-id: svn://10.0.0.236/trunk@105900 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-21 08:37:10 +00:00
jaggernaut%netscape.com
5847886c93 Bug 89998: move nsTitledBoxFrame.cpp to nsGroupBoxFrame.cpp (and the classnames in it) as the final step in this XUL 1.0 bug. r=jag,FrodoB.
git-svn-id: svn://10.0.0.236/trunk@105899 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-21 08:35:34 +00:00
jaggernaut%netscape.com
237e5134e7 Bug 89998: bring nsGroupBoxFrame.cpp in line with nsTitledBoxFrame.cpp. r=FrodoB.
git-svn-id: svn://10.0.0.236/trunk@105898 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-21 07:03:02 +00:00
hewitt%netscape.com
c561a40b01 70751 - [XUL Syntax] XUL docs loaded in iframes should use <page>, r=blake, sr=hyatt
git-svn-id: svn://10.0.0.236/trunk@105896 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-21 04:16:03 +00:00
hewitt%netscape.com
fd27581a34 102241 - [XUL 1.0] use selectedIndex on deck and tabpanels, r=blake, sr=hyatt
git-svn-id: svn://10.0.0.236/trunk@105895 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-21 03:59:20 +00:00
hewitt%netscape.com
50b7982d00 102239 - [XUL 1.0] implement new control element methods, r=blake, sr=hyatt
git-svn-id: svn://10.0.0.236/trunk@105894 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-21 03:58:21 +00:00
pavlov%netscape.com
1022d4d44a fix for bug 105555. r=pavlov sr=darin. patch from sfraser
git-svn-id: svn://10.0.0.236/trunk@105893 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-21 00:58:36 +00:00
pavlov%netscape.com
513d1ed1ba fix FMW in gtk timer code. bug 83163 r=dbaron sr=mscott
git-svn-id: svn://10.0.0.236/trunk@105892 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-21 00:44:46 +00:00
pavlov%netscape.com
3fb5ffef03 fix for bug 105257 r=dbaron sr=mscott
git-svn-id: svn://10.0.0.236/trunk@105890 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-21 00:12:53 +00:00
dbaron%fas.harvard.edu
85c206679a Reduce the performance cost of (threadsafely) refcounting many atoms by creating a second implementation of nsIAtom (derived from the first) that does not refcount and gets destroyed at XPCOM shutdown. Normal atoms are converted to permanent ones without loss of pointer identity when a permanent atom is requested and a normal one already exists. b=92141 r=waterson sr=brendan
git-svn-id: svn://10.0.0.236/trunk@105889 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 23:19:07 +00:00
bienvenu%netscape.com
eabf63d1eb fix crash after renaming local folder while it's being reparsed r=naving, sr=sspitzer 105108
git-svn-id: svn://10.0.0.236/trunk@105888 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 23:11:02 +00:00
bienvenu%netscape.com
195e90d040 add error message for folder rename failed r=naving, sr=sspitzer part of fix for 105108
git-svn-id: svn://10.0.0.236/trunk@105887 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 23:08:24 +00:00
jake%acutex.net
6556ad04b0 Bug 71840 - Make comments referenceable using a #c4 to get the fourth comment.
Patch by Gerv <gerv@mozilla.org> and Myself.
r= jake@acutex.net, gerv@mozilla.org, justdave@syndicomm.com


git-svn-id: svn://10.0.0.236/trunk@105883 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 13:03:14 +00:00
jake%acutex.net
5fcb9d6a75 Backing out previous change, the wrong patch got checked in.
git-svn-id: svn://10.0.0.236/trunk@105882 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 12:59:57 +00:00
locka%iol.ie
c66ddad77e New NameEquals method on nsIDocShellTreeItem to reduce unnecessary strdup'ing as FindChildWithName walks through its children looking for a matching item. b=102576 r=radha@netscape.com sr=rpotts@netscape.com
git-svn-id: svn://10.0.0.236/trunk@105881 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 11:42:35 +00:00
locka%iol.ie
0f15b9fef1 Add res/entityTables to embedding dist to stop assertions. b=101605 r=chak@netscape.com sr=blizzard@mozilla.org
git-svn-id: svn://10.0.0.236/trunk@105880 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 11:36:37 +00:00
ben%netscape.com
e033344fbc 80150 - bookmark gets deleted if dropped on column picker. Prevent drops from being accepted on the head row. r=pchen, sr=hyatt. Also remove an unused obsolete file and add some ids.
git-svn-id: svn://10.0.0.236/trunk@105879 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 11:13:44 +00:00
ben%netscape.com
63aeaaa676 75825 - View|Show Columns menuitem is always disabled in bookmarks view menu.
Prevent the disabling code from disabling any items outside its range of intended
operation.
r=pchen, sr=hyatt


git-svn-id: svn://10.0.0.236/trunk@105878 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 11:11:58 +00:00
ben%netscape.com
4d4d63338d Best fix for 87864, prevent duplicate bookmarks from being processed when loading a bookmarks file.
This code was originally removed from 6.1 because performance issues with IndexOf, which have recently been addressed. r=pchen, sr=waterson


git-svn-id: svn://10.0.0.236/trunk@105877 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 09:26:40 +00:00
seawood%netscape.com
e098085005 Create common base (nsDeviceContextX) for nsDeviceContextXlib & nsDeviceContextXp to partially remove xprint dependency upon xlib. Also fixes static builds.
Thanks to Roland.Mainz@informatik.med.uni-giessen.de for the patch.
Bug #103371 r=cls sr=waterson


git-svn-id: svn://10.0.0.236/trunk@105876 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 08:51:57 +00:00
sspitzer%netscape.com
97b7dec85e fix for #105659. fix js warnings when there isn't a mapiregistry service.
r=srilatha, sr=mscott


git-svn-id: svn://10.0.0.236/trunk@105874 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 06:24:07 +00:00
seawood%netscape.com
5adbaf8c2f Purging removed Makefiles
git-svn-id: svn://10.0.0.236/trunk@105873 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 06:08:57 +00:00
loadrunner%betak.net
cc65a886d1 99186 Remove acceptlanguage.properties from the build, r=tao, sr=blizzard
git-svn-id: svn://10.0.0.236/trunk@105872 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 04:55:21 +00:00
mkaply%us.ibm.com
44a544457b #71601
r=cls
since this is now a generic module, it no longer needs HAS_EXTRAEXPORTS hack


git-svn-id: svn://10.0.0.236/trunk@105871 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 04:13:54 +00:00
kmcclusk%netscape.com
0104aafb7e Ignore case when comparing default named anchor (top) 80784 sr=kin@netscape.com r=rods@netscape.com
git-svn-id: svn://10.0.0.236/trunk@105870 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 03:12:33 +00:00
kmcclusk%netscape.com
0c68b26d29 Added code to UpdateCoveringWidgets to take into account hidden views when considering whether a view completely covers the invalidated rect. bug 100652 r=roc+moz@mozilla.org sr=attinasi@netscape.com
git-svn-id: svn://10.0.0.236/trunk@105869 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 03:09:36 +00:00
dougt%netscape.com
badd4f48a2 fixed regression in mailnews caused by my last change. Need to support weak references both while adding AND while notifying... d'oh! a=pchen@netscape.com
git-svn-id: svn://10.0.0.236/trunk@105868 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 02:07:33 +00:00
dbaron%fas.harvard.edu
f86234616d Fix build bustage from dougt's nsIObserver / nsIObserverService changes. b=99163
git-svn-id: svn://10.0.0.236/trunk@105866 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 01:29:45 +00:00
dbaron%fas.harvard.edu
65ab76f65b Fix build bustage from dougt's nsIObserver / nsIObserverService changes. b=99163
git-svn-id: svn://10.0.0.236/trunk@105864 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 01:17:08 +00:00
gerv%gerv.net
ffb874519d Bug 71840 - make comments referenceable. Patch by gerv/jake. r=justdave, jake/gerv.
git-svn-id: svn://10.0.0.236/trunk@105863 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 01:06:59 +00:00
dbaron%fas.harvard.edu
48e3256eb5 Fix build bustage from dougt's nsIObserver / nsIObserverService changes. b=99163
git-svn-id: svn://10.0.0.236/trunk@105862 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 01:01:27 +00:00
jake%acutex.net
71b60e4071 Bug 105480 - Use the friendly name from the fielddefs table when reporting strictvalue errors if it's available.
Patch by James A. Laska <jlaska@us.ibm.com>
r= justdave@syndicomm.com, jake@acutex.net


git-svn-id: svn://10.0.0.236/trunk@105860 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 00:50:27 +00:00
dougt%netscape.com
9070a71c49 fixing major regression caused by my change to nsIObserverService
git-svn-id: svn://10.0.0.236/trunk@105859 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 00:33:02 +00:00
jake%acutex.net
d3926a124b Bug 104340 - Changing the UI of the toolbar for hiding bugs in the dependency tree.
Patch by Christian Reis <kiko@async.com.br>
r= justdave@syndicomm.com, gerv@mozilla.org


git-svn-id: svn://10.0.0.236/trunk@105858 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-20 00:22:52 +00:00
dbaron%fas.harvard.edu
263c995ad7 Fix page cycler orange from dougt's nsIObserver / nsIObserverService changes. b=99163 r=dougt
git-svn-id: svn://10.0.0.236/trunk@105857 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 23:51:04 +00:00
jake%acutex.net
692e3604f8 Bug 73180 - We now put a notice at the top of the versioncache file saying that it should not be edited.
Patch by Matthew Tuck <matty@chariot.net.au>
r= gerv@mozilla.org, jake@acutex.net


git-svn-id: svn://10.0.0.236/trunk@105856 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 23:49:37 +00:00
dbaron%fas.harvard.edu
91e5381554 Fix build bustage from dougt's nsIObserver / nsIObserverService changes. b=99163
git-svn-id: svn://10.0.0.236/trunk@105855 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 23:28:44 +00:00
loadrunner%betak.net
ece111f5c3 bug 99186, Remove acceptlanguage.properties from the build, r=tao, sr=blizzard
git-svn-id: svn://10.0.0.236/trunk@105854 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 23:18:32 +00:00
waldemar%netscape.com
a7c1ec03f5 Replaced %section and %subsection by %heading with an adjustable level number
git-svn-id: svn://10.0.0.236/trunk@105853 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 23:18:03 +00:00
dbaron%fas.harvard.edu
2287b3a42a Fix build bustage from dougt's nsIObserver / nsIObserverService changes. b=99163
git-svn-id: svn://10.0.0.236/trunk@105852 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 23:15:51 +00:00
sgehani%netscape.com
1a563a741d Fix typo that caused sorting to fail.
b = 104622
r = matt
sr = alecf


git-svn-id: svn://10.0.0.236/trunk@105851 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 23:05:04 +00:00
dougt%netscape.com
a9081d6d49 fixing build bustage cause by nsIObserver changes
git-svn-id: svn://10.0.0.236/trunk@105850 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 22:56:19 +00:00
alecf%netscape.com
60f63abb98 for bug 100214, add some PRUnichar case routines, #if 0'ed out
git-svn-id: svn://10.0.0.236/trunk@105849 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 22:51:11 +00:00
loadrunner%betak.net
e46a9cdc11 bug 99186, Remove acceptlanguage.properties from the build, r=tao, sr=blizzard
git-svn-id: svn://10.0.0.236/trunk@105848 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 22:49:37 +00:00
javi%netscape.com
376b3dbdc4 Missed this file in dougt's last patch.
git-svn-id: svn://10.0.0.236/trunk@105847 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 22:48:01 +00:00
loadrunner%betak.net
15260d9453 bug 99186, Remove acceptlanguage.properties from the build, r=tao, sr=blizzard
git-svn-id: svn://10.0.0.236/trunk@105846 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 22:41:59 +00:00
sgehani%netscape.com
6c6c6e9afa Fix typo.
b = 103215
r = morse
sr = alecf


git-svn-id: svn://10.0.0.236/trunk@105845 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 22:40:11 +00:00
jake%acutex.net
457d72aeff Bug 103664 - Tests should "use strict;" and not contain any tabs. We should also use the TEST_VERBOSE environment variable instead of VERBOSE.
Patch by David D. Kilzer <ddkilzer@theracingworld.com>
Additional edits by myself to add the emacs mode line.  Also, the change to runtests.sh was done by me.


git-svn-id: svn://10.0.0.236/trunk@105842 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 22:39:51 +00:00
relyea%netscape.com
adc610c9bf NSS specific PKCS 11 mechanisms, collected in one single header file.
git-svn-id: svn://10.0.0.236/trunk@105840 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 22:37:14 +00:00
dougt%netscape.com
55f600e4ec missed a few changes in my nsIObserver landing
git-svn-id: svn://10.0.0.236/trunk@105839 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 22:30:02 +00:00
dougt%netscape.com
ebe79ca4e9 Fixing build bustage. removing nsIObserverService.idl from MANIFEST
git-svn-id: svn://10.0.0.236/trunk@105838 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 22:26:37 +00:00
shrutiv%netscape.com
842a601d98 Fix for bug 105279: CCK customized linux installer contains unselected
xpi's. Removing xpi's that are not selected. (r=tao)


git-svn-id: svn://10.0.0.236/trunk@105837 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 22:12:15 +00:00
akkana%netscape.com
4d4b1e1f39 98546: Fix Unix too, and make mac prefs the default. r=pink, sr=sfraser
git-svn-id: svn://10.0.0.236/trunk@105836 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 22:07:17 +00:00
alecf%netscape.com
7348edaaeb change a print line to show the number of directories being updated
not part of the default build


git-svn-id: svn://10.0.0.236/trunk@105835 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 22:05:57 +00:00
mkaply%us.ibm.com
955f3d7d08 No bug
r=mkaply, sr=blizzard
OS/2 only - reworking OS/2 widget/window parentage


git-svn-id: svn://10.0.0.236/trunk@105834 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:57:02 +00:00
javi%netscape.com
a06329f695 Checking in for dougt.
git-svn-id: svn://10.0.0.236/trunk@105833 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:53:39 +00:00
loadrunner%betak.net
368f1c75e3 bug 99186, Remove acceptlanguage.properties from the build, r=tao, sr=blizzard
git-svn-id: svn://10.0.0.236/trunk@105832 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:53:14 +00:00
cmanske%netscape.com
8719459de0 Don't allow inserting symbols and foreign chars while in HTML source mode, b=104267, r=brade, sr=kin
git-svn-id: svn://10.0.0.236/trunk@105831 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:49:36 +00:00
cmanske%netscape.com
397c9d52bc Restrict separator character input to 1 char in Convert Selection to Table, b=101772, r=brade, sr=kin
git-svn-id: svn://10.0.0.236/trunk@105830 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:47:04 +00:00
mkaply%us.ibm.com
b89f880876 No bug
r=mkaply, sr=blizzard
OS/2 only - reworking OS/2 widget/window parentage


git-svn-id: svn://10.0.0.236/trunk@105829 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:45:34 +00:00
cmanske%netscape.com
dcc381bbd8 Finish HTML source mode before loading a new document (forgot 2nd part of fix), b=102684, r=brade, sr=kin
git-svn-id: svn://10.0.0.236/trunk@105828 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:42:43 +00:00
dougt%netscape.com
7f4ce8acb7 backing out my backout from nsIOService. Merge conficts with bnesse
git-svn-id: svn://10.0.0.236/trunk@105827 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:38:24 +00:00
cmanske%netscape.com
36402f49d3 Fixed table editing hang when spliting cell (b=102967, r=brade, sr=kin) and don't copy empty cell's <br> when joining cells (b=102930, r=brade, sr=hewitt)
git-svn-id: svn://10.0.0.236/trunk@105825 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:33:20 +00:00
rjc%netscape.com
fc55228451 Fix bug # 49142: speed up bookmarks menu creation on Mac. r=pink, sr=sfraser.
git-svn-id: svn://10.0.0.236/trunk@105824 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:32:07 +00:00
dougt%netscape.com
8e7ae51ba9 fixing build bustage in nsIOService.cpp
git-svn-id: svn://10.0.0.236/trunk@105823 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:28:58 +00:00
radha%netscape.com
b9befe5a2d Fix for bug #101682. history.back() history.go(-1) misbehave on repeated usage and does notrestore scrollbar position. r=mcafee, sr=alecf
git-svn-id: svn://10.0.0.236/trunk@105822 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:28:57 +00:00
cmanske%netscape.com
2a9dc4f8aa Finish HTML source mode before loading a new document, b=102684, r=brade, sr=kin
git-svn-id: svn://10.0.0.236/trunk@105821 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:28:04 +00:00
pchen%netscape.com
624f45ff80 backing out bnesse at his request since he found conflicts with dougt's
checkin


git-svn-id: svn://10.0.0.236/trunk@105820 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:24:03 +00:00
pierre%netscape.com
8767ccc025 105576 "Unicode fallback characters don't zoom". Apply zoom before calling ATSUIFallbackDrawChar(). r=ftang/sr=sfraser
git-svn-id: svn://10.0.0.236/trunk@105819 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:23:37 +00:00
pchen%netscape.com
4793cb6b95 cking out bnesse at his request since he found conflicts with dougt's
checkin


git-svn-id: svn://10.0.0.236/trunk@105818 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:15:11 +00:00
pchen%netscape.com
62ec4050a1 *** empty log message ***
git-svn-id: svn://10.0.0.236/trunk@105817 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:09:11 +00:00
despotdaemon%netscape.com
f6393045af Pseudo-automatic update of changes made by endico@mozilla.org.
git-svn-id: svn://10.0.0.236/trunk@105816 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:08:22 +00:00
andreww%netscape.com
faea34bd7c fixed bug 95482 r=shliang sr=hewitt and bug 103760 r=shliang sr=sfraser (1 px space at bottom of mac classic status bar)
git-svn-id: svn://10.0.0.236/trunk@105815 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:07:12 +00:00
andreww%netscape.com
0953179444 fixed bug 95482 r=shliang sr=hewitt toolbar loses thumb when collapsed - mac classic skin
git-svn-id: svn://10.0.0.236/trunk@105814 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:05:04 +00:00
dougt%netscape.com
b7714209d4 Remove extra exports. patch by Jon Smirl jonsmirl@mediaone.net. r=dougt@netscape.com, sr=alecf@netscape.com
git-svn-id: svn://10.0.0.236/trunk@105813 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:02:39 +00:00
akkana%netscape.com
9534d5b783 66345, the editor directory reorganization:
Remove all files in now obsolete directory editor/base.
  r=cmanske,jfrancis,brade sr=sfraser,kin


git-svn-id: svn://10.0.0.236/trunk@105812 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:01:39 +00:00
alecf%netscape.com
0ffec2590a next part of bug 100214, add nsUnicharUtils to consumers of ToLowerCase/ToUpperCase
git-svn-id: svn://10.0.0.236/trunk@105811 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 21:00:02 +00:00
dougt%netscape.com
1f7520e927 Extraneous Symbol Removal. Patch by Jon Smirl jonsmirl@mediaone.net. r=dougt@netscape.com, sr=alecf@netscape.com. Bug 104172, 104316, 104420, 104426, 104461, 104511, 104527
git-svn-id: svn://10.0.0.236/trunk@105810 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:59:33 +00:00
andreww%netscape.com
42d8c6e781 fixed bug 90274 r=shliang sr=hewitt selected folder name in mac classic not showing up
git-svn-id: svn://10.0.0.236/trunk@105809 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:59:08 +00:00
ftang%netscape.com
15b3ae1f9e fix bug 93343 so we can display UTF-16 and UTF-32.
r=harishd sr=vidur.


git-svn-id: svn://10.0.0.236/trunk@105808 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:58:22 +00:00
andreww%netscape.com
ca02d587e3 fixed bug 105132 r=shliang sr=hewitt mac classic composer tabs cleanup
git-svn-id: svn://10.0.0.236/trunk@105807 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:57:49 +00:00
ftang%netscape.com
1338859af4 fix bug 93025. delay the checking of access key pref
so we will use the user's pref instead of the default vaule in the pref.
r=jbetak sr=kin


git-svn-id: svn://10.0.0.236/trunk@105806 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:56:29 +00:00
bnesse%netscape.com
84f393ac02 Fix for bug 103883. Add weak ref support for prefs observers to help reduce MLK cycles with preferences. r=ccarlen, darin, gordon, hewitt, mstoltz, srilatha, sspitzer. sr=alecf.
git-svn-id: svn://10.0.0.236/trunk@105805 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:55:54 +00:00
andreww%netscape.com
c65102f7fc fix bug 60010 r=shliang sr=hewitt - editor status bar in mac classic cleanup.
git-svn-id: svn://10.0.0.236/trunk@105804 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:55:14 +00:00
ducarroz%netscape.com
838a68c9af Fix for bug 105092. Patch provided by bienvenu@netscape.com. Fix crash due to freeing of memory we should not! R=ducarroz, SR=sspitzer
git-svn-id: svn://10.0.0.236/trunk@105803 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:55:08 +00:00
ftang%netscape.com
d0f2e0aa05 fix 48231. Change the default Korean font for window
r=jshin, sr/rs=waterson


git-svn-id: svn://10.0.0.236/trunk@105802 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:54:36 +00:00
dougt%netscape.com
cf60fc042e nsIObserver and nsIObserverService API freeze. r=rpotts@netscape.com, alecf@netscape.com. bug 99163
git-svn-id: svn://10.0.0.236/trunk@105800 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:52:59 +00:00
ftang%netscape.com
14658e7a61 fix bug 23363. Implement TSM1.5
r=brade
sr=sfraser


git-svn-id: svn://10.0.0.236/trunk@105799 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:51:26 +00:00
ftang%netscape.com
6619d56ed6 fix 23363. add nsTSMStrategy.cpp to the build
This is part of implement TSM1.5
r=brade
sr=sfraser


git-svn-id: svn://10.0.0.236/trunk@105798 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:50:48 +00:00
nhotta%netscape.com
865f862d68 Indentation change in folder property dialog, bug 94560, sr=sspitzer.
git-svn-id: svn://10.0.0.236/trunk@105797 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:50:17 +00:00
nhotta%netscape.com
e871d91d1f Wording change for folder property dialog, bug 94560, sr=sspitzer.
git-svn-id: svn://10.0.0.236/trunk@105796 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:49:56 +00:00
alecf%netscape.com
44ffdedad3 for bug 100214 - make nsStr routines stop depending on nsCRT:: routines, to further reduce our dependency on unicharutil
r=jag, sr=scc


git-svn-id: svn://10.0.0.236/trunk@105795 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:49:39 +00:00
nhotta%netscape.com
8850710011 Added a call SetOutputErrorBehavior to replace unmapped character by '?' for a window title string,
bug 96875, r=ftang, sr=blizzard.


git-svn-id: svn://10.0.0.236/trunk@105794 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:49:08 +00:00
evaughan%netscape.com
7fcc0352c2 bug 77357
r=bryner sr=hyatt


git-svn-id: svn://10.0.0.236/trunk@105793 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:48:35 +00:00
harishd%netscape.com
eeeb1c2290 97769 - Replace nsITagStack with a simple nsVoidArray. Also, nuked nsITagStack since it is not of a big help.r=heikki, sr=jst.
99282  - Make sure only HEAD attributes get added to the attribute list in ::OpenHead(). r=heikki, sr=jst.
100466 - Stop DT from containing DL.r=heikki,sr=jst.
102370 - DT should not close DD and vice versa.r=heikki,sr=jst.
100397 - In order for residual style to kick in...disable the check for wellformedness in quirks mode.r=alexandru,sr=attinasi.
102376 - Release nsIRequest in nsParser::DidBuildModel() since nsIRequest is not required past DidBuildModel.r=heikki,sr=darin.


git-svn-id: svn://10.0.0.236/trunk@105792 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:48:18 +00:00
evaughan%netscape.com
c0b4c73271 More grid stuff: NOT IN BUILD
git-svn-id: svn://10.0.0.236/trunk@105791 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:47:36 +00:00
ian.mcgreer%sun.com
cecf9dcde1 add pkim.h, needed by some cert calls
git-svn-id: svn://10.0.0.236/trunk@105790 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:10:51 +00:00
ian.mcgreer%sun.com
7e23b3bf65 fix loop; time from PRTime
git-svn-id: svn://10.0.0.236/trunk@105789 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:06:28 +00:00
ian.mcgreer%sun.com
244e76bc39 fix possible NULL deref
git-svn-id: svn://10.0.0.236/trunk@105788 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:04:58 +00:00
ian.mcgreer%sun.com
500f291b64 implement FindCertIssuer through Stan
git-svn-id: svn://10.0.0.236/trunk@105787 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 20:04:27 +00:00
shrutiv%netscape.com
af0fd38218 Fix for bug 102923: Error message for insufficient disk space should
provide more details (r=bobj)


git-svn-id: svn://10.0.0.236/trunk@105784 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 18:44:44 +00:00
ian.mcgreer%sun.com
669f5eab1e get/set cert trust through PKCS#11; traversal methods for CERT_ calls; define usage for 3.4
git-svn-id: svn://10.0.0.236/trunk@105783 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 18:16:45 +00:00
ian.mcgreer%sun.com
eeb7d27f13 add usage to find best parameters
git-svn-id: svn://10.0.0.236/trunk@105782 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 18:11:31 +00:00
ian.mcgreer%sun.com
23691f4bd8 set attributes function; rename find to traverse; return object handle on import
git-svn-id: svn://10.0.0.236/trunk@105781 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 18:10:58 +00:00
ian.mcgreer%sun.com
ef6a1afb48 prepare certdb for removal of pcertdb.c; reimplement functions using Stan
git-svn-id: svn://10.0.0.236/trunk@105780 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 18:05:38 +00:00
pinkerton%netscape.com
aed93678e4 Keep stack aligned on 16-byte boundary. from bug 98290, r=beard/sr=sfraser. Not part of any build, a=pchen.
git-svn-id: svn://10.0.0.236/trunk@105779 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 17:33:06 +00:00
jake%acutex.net
eec9d51c7c Fix for bug 105365 - Hacker's Guide should be in SGML. This will make it easier to do other additions to the hacker's guide.
git-svn-id: svn://10.0.0.236/trunk@105776 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 16:18:10 +00:00
pinkerton%netscape.com
8fa7dc85e1 use contract id instead of cid now that alecf fixed it. r=lordpixel,sr=sfraser. bug#98504
git-svn-id: svn://10.0.0.236/trunk@105775 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 14:29:14 +00:00
pinkerton%netscape.com
7c205014e5 allow a hidden pref to reuse browser windows when we get a GURL event. r=lordpixel,sr=sfraser. bug#98504
git-svn-id: svn://10.0.0.236/trunk@105774 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 14:14:15 +00:00
pinkerton%netscape.com
7d96e85f1c remove prefs and quit from edit/file menus on osx (they're in the app menu now). r=sdagley/sr=blake,smfr. bug#68098
git-svn-id: svn://10.0.0.236/trunk@105773 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 14:13:20 +00:00
pinkerton%netscape.com
a23e69e10e adding a couple of prefs to make word selection better on mac. doesn't eat whitespace to next word and stops at punctuation. r=mjudge/sr=sfraser. bug# 98546
git-svn-id: svn://10.0.0.236/trunk@105772 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 14:10:22 +00:00
wtc%netscape.com
a64bfb9e66 Bugzilla bug 105173: restored the test for HAVE_COMPAT_H because we
no longer define SVR4 on Solaris.  I may use __SVR4 instead after verifying
that all Solaris compilers define it.


git-svn-id: svn://10.0.0.236/trunk@105771 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 14:06:28 +00:00
bzbarsky%mit.edu
c17db72087 Last checkin was r=pierre, sr=jst
git-svn-id: svn://10.0.0.236/trunk@105770 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 14:02:36 +00:00
bzbarsky%mit.edu
ee4bb498aa Clean up handling of quirk doctypes and case-sensitivity in the CSSOM.
Mostly just uses the nodeinfo more and combines some redundant code into
helpers. Bug 95336, bug 10622, bug 102815


git-svn-id: svn://10.0.0.236/trunk@105769 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 13:50:30 +00:00
kin%netscape.com
b343a978fe Fix for bug 101690: Delete key at end of line deletes a line then caret freezes
Modified WillDeleteSelection() to make sure that
sibling is a TextNode before trying to join it
with startNode (which is guaranteed to be a text node).

r=jfrancis@netscape.com   sr=sfraser@netscape.com


git-svn-id: svn://10.0.0.236/trunk@105768 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 13:48:43 +00:00
justdave%syndicomm.com
faaffb8eec yet another meaningless whitespace change to test tinderbox with
git-svn-id: svn://10.0.0.236/trunk@105767 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 13:03:52 +00:00
locka%iol.ie
9320e8b6d1 Removed chrome registry code from embedding API to improve startup performance. r=ccarlen@netscape.com sr=hyatt@netscape.com r=105462
git-svn-id: svn://10.0.0.236/trunk@105766 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 12:43:05 +00:00
axel%pike.org
e67a7d706e bug 76070, namespace and localName atom support for transformiix. original work by Jonas Sicking, alot of work by me. r=peterv, sicking@bigfoot.com, sr=jst
git-svn-id: svn://10.0.0.236/trunk@105765 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 12:09:42 +00:00
mcafee%netscape.com
1ae6e85144 Removing gtkEmbed from the build (90526). r=adamlock, sr=blizzard
git-svn-id: svn://10.0.0.236/trunk@105763 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 08:28:51 +00:00
rbs%maths.uq.edu.au
2055e5722c re-instate null check for crasher bug 102900, r=rods, sr=attinasi
git-svn-id: svn://10.0.0.236/trunk@105762 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 07:30:08 +00:00
seawood%netscape.com
b3956bf8ed Rebuild all *.exe one final time after license change and check them in so that others stop accidentally doing so.
Do not try to rebuild makedep.exe if NO_MFC is set.
Bug #100757


git-svn-id: svn://10.0.0.236/trunk@105761 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 07:02:54 +00:00
bryner%netscape.com
0f26101b92 Bug 104141 - context menu doesn't appear on the first attempt. r=evaughan, sr=hyatt.
git-svn-id: svn://10.0.0.236/trunk@105760 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 06:27:07 +00:00
mcafee%netscape.com
0e994ebb7b Adding AliveTestReturnToken(), extract_token_from_file() and supporting glue to iterate through the startup test and report an average time instead of just one time.
git-svn-id: svn://10.0.0.236/trunk@105759 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 06:23:23 +00:00
justdave%syndicomm.com
ed3ed56299 another useless whitespace change to test tinderbox with
git-svn-id: svn://10.0.0.236/trunk@105758 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 06:19:52 +00:00
mcafee%netscape.com
1bd09f90f9 Adding one more sig fig for startup time.
git-svn-id: svn://10.0.0.236/trunk@105757 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 06:15:24 +00:00
mcafee%netscape.com
8411165431 switching search token to __avg_startuptime, we are going to iterate the test now and report an average time.
git-svn-id: svn://10.0.0.236/trunk@105756 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 05:56:38 +00:00
wtc%netscape.com
9b7416bb2f Bugzilla bug 105173: in mcom_db.h, put the tests for HAVE_XXX_H inside
#ifdef __DBINTERFACE_PRIVATE so that users of this exported header don't
have to define these HAVE_XXX_H macros.  Define __DBINTERFACE_PRIVATE
in dbm/macbuild/DBMConfig.h and dbm/src/Makefile.win. r=brendan@mozilla.org


git-svn-id: svn://10.0.0.236/trunk@105755 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 05:45:51 +00:00
justdave%syndicomm.com
ad30940b5e whitespace change to test tinderbox again.
git-svn-id: svn://10.0.0.236/trunk@105754 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 05:33:23 +00:00
naving%netscape.com
3006157fc5 105328 r/sr=sspitzer. Throw duplicate folder alert when trying to create new folder from filter
editor.


git-svn-id: svn://10.0.0.236/trunk@105753 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 05:24:18 +00:00
hewitt%netscape.com
1173c75ca5 84602 - when a button has focus, enter key doesn't fire oncommand (from blake), r=hyatt, sr=hewitt
git-svn-id: svn://10.0.0.236/trunk@105752 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 05:02:56 +00:00
mscott%netscape.com
8dd08a6349 Bug #97497-- hopefully fix a random crash when compacting folders. I'm backing out part of
a previous change by bienvenu.
r=naving
sr=sspitzer


git-svn-id: svn://10.0.0.236/trunk@105751 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 04:38:00 +00:00
justdave%syndicomm.com
d8d8ecf9f8 whitespace change to do a test checkin to see how tinderbox reacts
git-svn-id: svn://10.0.0.236/trunk@105750 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 04:36:19 +00:00
pavlov%netscape.com
eb044b402b part of fix for bug 104999. r=jag sr=jst
git-svn-id: svn://10.0.0.236/trunk@105749 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 04:16:50 +00:00
jst%netscape.com
19215022f1 Fixing bug 105572. Don't bother GC'ing on context destruction when we're tearing down a frame in a frameset (or an iframe). r=jband@netscape.com, sr=vidur@netscape.com
git-svn-id: svn://10.0.0.236/trunk@105748 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 04:13:37 +00:00
mkaply%us.ibm.com
d4b444c57d #105075
r=av, sr=dougt, rpotts
Change 4xplugin APIs to use NS_4XPLUGIN_CALLBACK rather than NS_CALLBACK_ so that the calling convention can be different than XPCOM


git-svn-id: svn://10.0.0.236/trunk@105747 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 04:10:49 +00:00
waterson%netscape.com
0df59780dd Bug 105068. Move mLazyState to nsXULElement::Slots since it's rarely used. r=shaver, sr=hyatt
git-svn-id: svn://10.0.0.236/trunk@105746 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 04:01:01 +00:00
jaggernaut%netscape.com
687f37442a Bug 95786: ``about: services should be converted to XHTML 1.1'', patch by Delicates (Alexey Chernyak <alexey@ihug.com.au>), r=cbiesinger@web.de, sr=jst
git-svn-id: svn://10.0.0.236/trunk@105745 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 03:16:16 +00:00
jst%netscape.com
88e0143203 Remove bugs assertion, r=syd, sr=me (part of bug 105008).
git-svn-id: svn://10.0.0.236/trunk@105744 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 03:11:44 +00:00
bbaetz%cs.mcgill.ca
366550af4b Bug 82439 - html direcotry listings not localisable. r=sfraser, sr=darin
git-svn-id: svn://10.0.0.236/trunk@105743 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 03:03:30 +00:00
brendan%mozilla.org
f51a743f35 Avoid converting lock-free to lock-full scope from GC mark call-outs (105571, r=jst, sr=jband).
git-svn-id: svn://10.0.0.236/trunk@105742 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 03:02:41 +00:00
jj%netscape.com
cb9a393317 landing fix for bug 101608 on the trunk (keeping traceback option on for optimized Carbon build). r=sdagley, sr=sfraser
git-svn-id: svn://10.0.0.236/trunk@105741 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 02:46:02 +00:00
morse%netscape.com
d4ee3f7955 bug 47437, nscookie.cpp is duplicationg URL parsing logic, c=andreas.otte, r=morse, sr=alecf
git-svn-id: svn://10.0.0.236/trunk@105740 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 02:28:06 +00:00
gordon%netscape.com
285787e8e4 Fix bug 92908 and bug 101857. Change nsCacheService::CreateSession() to
return a new session even if there are no cache devices currently enabled.
Also, changed DeactivateEntry() to bind non-doomed entries if necessary to
allow the storage of meta-data-only entries, such as HTTP redirects. 
r=sfraser, sr=darin.


git-svn-id: svn://10.0.0.236/trunk@105739 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 02:05:12 +00:00
alecf%netscape.com
7429f7e3dd fix for some bug where I forgot a contract id.. if bugzilla was responding I might actually know the bug #
r=mkaply, sr=dveditz


git-svn-id: svn://10.0.0.236/trunk@105738 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 02:02:05 +00:00
gordon%netscape.com
c4aa2d1bb8 Fix for bug 101651, nsStdURL::SetSpec can trash memory. r=sfraser, sr=darin.
git-svn-id: svn://10.0.0.236/trunk@105737 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 01:59:57 +00:00
gordon%netscape.com
849c01eacd Fix for bug 103991, removing obsolete IsAsciiString() function from nsHttpChannel and nsDnsService. r=nhotta, sr=darin.
git-svn-id: svn://10.0.0.236/trunk@105736 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 01:58:32 +00:00
mcafee%netscape.com
e237d5a1b1 Retiring gtkEmbed in favor of TestGtkEmbed (90526). r=adamlock, sr=blizzard
git-svn-id: svn://10.0.0.236/trunk@105735 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 01:55:07 +00:00
gordon%netscape.com
d48149f01d Fix for bug 103167, removing old cache interfaces. r=sfraser, sr=darin.
git-svn-id: svn://10.0.0.236/trunk@105734 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 01:54:42 +00:00
gordon%netscape.com
ad914da4c4 Fix for bug 103167, removing obsolete MANIFEST file from Mac build script. r=sfraser, sr=darin.
git-svn-id: svn://10.0.0.236/trunk@105733 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 01:52:31 +00:00
mcafee%netscape.com
57cf136779 Removing gtkEmbed (obsolete, bug 90526). r=adamlock, sr=blizzard
git-svn-id: svn://10.0.0.236/trunk@105732 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 01:51:09 +00:00
mcafee%netscape.com
e8cca5c51e Retiring gtkEmbed in favor of TestGtkEmbed (90526). r=adamlock, sr=blizzard
git-svn-id: svn://10.0.0.236/trunk@105731 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 01:45:12 +00:00
sspitzer%netscape.com
e4b9f5a4c4 more clean up the string foo in mailnews. r=cavin, rs=bienvenu. #103412.
git-svn-id: svn://10.0.0.236/trunk@105730 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 01:44:53 +00:00
sspitzer%netscape.com
b5cf407ab5 bulletproofing fix for topcrasher #104878.
r/sr=hyatt,sfraser.


git-svn-id: svn://10.0.0.236/trunk@105729 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 01:32:46 +00:00
morse%netscape.com
eeda91f125 bug 103576 cookie expiration time is wrong on mac, c=pchen, r=morse, sr=alecf && bug 105039 max-age cookie attribute is ignored, r=sgehani, sr=alecf
git-svn-id: svn://10.0.0.236/trunk@105728 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 01:32:06 +00:00
hyatt%netscape.com
c2c3d3ba1c Fix for 102120, ability to load tabs in background, r=bryner, sr=hewitt
git-svn-id: svn://10.0.0.236/trunk@105727 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 01:25:51 +00:00
waldemar%netscape.com
feaec77ead Renamed type to domain
git-svn-id: svn://10.0.0.236/trunk@105726 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 00:50:40 +00:00
rogerl%netscape.com
e8967a2184 Added Array.sort. Fixed toNumber(String) for trailing whitespace. Fixed
Date.SetXXX for date values. Fixed scopechain growth bug. Fixed empty
array literals. Fixed empty type casts for built-ins.


git-svn-id: svn://10.0.0.236/trunk@105725 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 00:25:28 +00:00
jband%netscape.com
dc2c9d5087 fix Mac installer crash. bug 105437. r/sr=sfraser
git-svn-id: svn://10.0.0.236/trunk@105724 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 00:15:43 +00:00
mcafee%netscape.com
c94b15e486 script to install tinderbox links for a tinderbox client.
git-svn-id: svn://10.0.0.236/trunk@105723 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 00:04:48 +00:00
mcafee%netscape.com
bf3bd231b1 cvsroot comments, update
git-svn-id: svn://10.0.0.236/trunk@105722 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 23:36:57 +00:00
cltbld%netscape.com
fb42e0d8d0 Fixing build busted in --enable-bohem builds
git-svn-id: svn://10.0.0.236/trunk@105721 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 21:45:52 +00:00
gerv%gerv.net
4831a02806 Bug 72177 - reword checkbox to make it consistent with the others on the page.
git-svn-id: svn://10.0.0.236/trunk@105719 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 21:41:25 +00:00
gerv%gerv.net
9090a5fafb Bug 60818 - make Bugzilla cope with MIME types with parameters. Patch by gerv, r=myk.
git-svn-id: svn://10.0.0.236/trunk@105718 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 21:28:06 +00:00
beard%netscape.com
76596e112b [not part of build] Added MRJPlugin.java and CarbonFrameWorkLib (for launch services).
git-svn-id: svn://10.0.0.236/trunk@105717 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 20:34:22 +00:00
beard%netscape.com
7689c3991e [not part of build] Added USE_SYSTEM_CONSOLE to turn off old Java based console.
git-svn-id: svn://10.0.0.236/trunk@105716 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 20:29:40 +00:00
beard%netscape.com
a41c7a978c [not part of build] Poor man's Java console implementation, redirects Java output to ~/Library/Logs/JavaConsole.log, displays with /Applications/Utilities/Console.app.
git-svn-id: svn://10.0.0.236/trunk@105715 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 20:28:48 +00:00
beard%netscape.com
ccbc3f8e9b [not part of build] Added redirection of Java output to a specified log file.
git-svn-id: svn://10.0.0.236/trunk@105714 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 20:24:13 +00:00
beard%netscape.com
cf366fd6c4 [not part of build] Simple class that redirects System.out/err to a specified file path.
git-svn-id: svn://10.0.0.236/trunk@105713 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 20:19:48 +00:00
rangansen%netscape.com
4799d6c886 Rolling back last changes
git-svn-id: svn://10.0.0.236/trunk@105712 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 19:09:03 +00:00
nboyd%atg.com
44143d1064 Patch from Igor:
Unsynchronized ScriptableObject.getSlotToSet contains references/modifications
to the slots array which is no go under multithreading. The attached patch
replaces references to slots by references to its local copy and moves code
to allocate the initial array to synchronized addSlot.

The patch also replace throwing of RuntimeException in case of broken code by
if (Context.check && badCondition) Context.codeBug();

Regards, Igor


git-svn-id: svn://10.0.0.236/trunk@105711 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 18:16:28 +00:00
rangansen%netscape.com
d6a588054c Checking in for morse@netscape.com
bug# 87334, r=rangansen r=jag sr=Alect Flett
enforcing ask everytime option for passwords ...


git-svn-id: svn://10.0.0.236/trunk@105710 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 18:06:39 +00:00
kestes%walrus.com
78809a5b97 Remove the /var/run/ stuff. I need to think this through more carefully.
This only needs to happen on the build script.  This needs to happen as
the user root but currently I do not run the build script ever as root.


git-svn-id: svn://10.0.0.236/trunk@105709 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 16:19:59 +00:00
kestes%walrus.com
019bfba186 bug fixes to get the /var/run stuff to work.
git-svn-id: svn://10.0.0.236/trunk@105708 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 16:17:24 +00:00
kestes%walrus.com
1376081eb8 separate the packge output into client and server packages.
git-svn-id: svn://10.0.0.236/trunk@105707 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 15:59:20 +00:00
kestes%walrus.com
e2db7a1ad9 Add support for /var/run/ directory.
git-svn-id: svn://10.0.0.236/trunk@105706 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 15:05:57 +00:00
dinglis%qnx.com
39736cc757 Not part of build
convert text to UTF8 instead of ascii


git-svn-id: svn://10.0.0.236/trunk@105705 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 14:19:00 +00:00
ian.mcgreer%sun.com
41646505d2 fix AIX build
git-svn-id: svn://10.0.0.236/trunk@105704 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 13:58:28 +00:00
dinglis%qnx.com
d481e567e4 fixed bug#91955
default preferences for photon
r=bnesse sr=jst


git-svn-id: svn://10.0.0.236/trunk@105703 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 13:46:18 +00:00
timeless%mac.com
ed0a9ab9a9 Bugzilla Bug 76339 get rid of nsIAppShellComponent
(QNX changes)
r=dbradley sr=jst


git-svn-id: svn://10.0.0.236/trunk@105702 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 13:25:10 +00:00
markh%activestate.com
7e17f52da2 Fix build bustage on Windows, caused by recent #include dir changes.
Not part of the build (hence not noticed)


git-svn-id: svn://10.0.0.236/trunk@105701 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 13:20:30 +00:00
dp%netscape.com
455aa66d39 bug# 101769 Stop loading plugins on startup r=av,sr=waterson
git-svn-id: svn://10.0.0.236/trunk@105700 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 12:26:23 +00:00
dp%netscape.com
df89cc2c43 Fixing warning r=av sr=waterson
git-svn-id: svn://10.0.0.236/trunk@105699 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 12:22:31 +00:00
dp%netscape.com
31c1a00c8b Fixing warnings
git-svn-id: svn://10.0.0.236/trunk@105698 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 12:21:33 +00:00
rginda%netscape.com
ebc2ff24f9 venkman only
s/doCommand.stepOut/doCommandStepOut/ for "finish" command


git-svn-id: svn://10.0.0.236/trunk@105697 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 11:12:37 +00:00
rginda%netscape.com
c0b2b24d8c venkman only
move from "checked" attribute to "willStop" for stop button to avoid classic skin issues.


git-svn-id: svn://10.0.0.236/trunk@105696 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 11:05:15 +00:00
rginda%netscape.com
3d8116b314 venkman only
add homepage to hello message.


git-svn-id: svn://10.0.0.236/trunk@105695 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 11:04:26 +00:00
rginda%netscape.com
ce46c52740 venkman only
remove bogus classes from outliner columns
make line number column wider by default
add splitter to source view


git-svn-id: svn://10.0.0.236/trunk@105694 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 11:03:58 +00:00
rginda%netscape.com
2f45778e17 venkman only
move from "checked" attribute to "willStop" on the stop button because the classic skin does silly things for "checked".


git-svn-id: svn://10.0.0.236/trunk@105693 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 11:02:59 +00:00
rginda%netscape.com
19a3ad4c26 venkman only
invalidate outliner after continuing so the yellow bar goes away
strict mode fix


git-svn-id: svn://10.0.0.236/trunk@105692 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 11:00:33 +00:00
rginda%netscape.com
f46de207fd venkman only
remove extra braces and return


git-svn-id: svn://10.0.0.236/trunk@105691 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 10:59:47 +00:00
darin%netscape.com
2a4326a282 fixes bug 102743 "Crash pressing Back or Forward on O'Reilly website"
r=gagan, sr=rpotts


git-svn-id: svn://10.0.0.236/trunk@105690 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 10:37:04 +00:00
timeless%mac.com
e57298ae78 QNX bustage fixes
git-svn-id: svn://10.0.0.236/trunk@105689 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 10:33:08 +00:00
timeless%mac.com
736e5d4a5c Requires changes to get QNX building, r=cls
git-svn-id: svn://10.0.0.236/trunk@105688 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 10:23:55 +00:00
pavlov%netscape.com
ac8fe24c94 first of many patches to come for bug 104999 r=timeless sr=hyatt
git-svn-id: svn://10.0.0.236/trunk@105687 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 09:43:22 +00:00
seawood%netscape.com
50647dd9c6 perldoc.com lied to me. File::Spec isn't in 5.004 so we need to up the minimum requirement or change the script to not use it. Disabling the script again.
Bug 101431


git-svn-id: svn://10.0.0.236/trunk@105686 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 07:58:01 +00:00
jband%netscape.com
f40de0e3d3 fix warning (and perhaps wrong behavior) by restoring new-style C++ cast of nsInt64 reference into a PRInt64 when passing to PR_fprintf. This was inadvertantly removed in the recent checkin. rs=jband
git-svn-id: svn://10.0.0.236/trunk@105685 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 07:55:38 +00:00
beard%netscape.com
068503fa96 [not part of build] Stop using non-existent plugin methods.
git-svn-id: svn://10.0.0.236/trunk@105684 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 07:36:32 +00:00
beard%netscape.com
39b7565ced [not part of build] Major cleanup, removal of unnecessary methods, correct implementation of nsIPlugin/nsIJVMPlugin interfaces.
git-svn-id: svn://10.0.0.236/trunk@105683 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 07:34:20 +00:00
beard%netscape.com
43494c69a7 [not part of build] Keep vector<FSRef> instead of vector<FSSpec> as class path.
git-svn-id: svn://10.0.0.236/trunk@105682 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 07:29:44 +00:00
beard%netscape.com
09e1695bc6 [not part of build] Added operators new[] and delete[].
git-svn-id: svn://10.0.0.236/trunk@105681 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 07:28:33 +00:00
waterson%netscape.com
5a57247e65 Bug 105063. Drop support for storing content ID since we'll never realistically have XUL frames requiring state restoration. r=brendan, sr=jst.
git-svn-id: svn://10.0.0.236/trunk@105680 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 07:25:40 +00:00
timeless%mac.com
1529a36380 a=cls (not part of the build/build bustage -- by pavlov)
git-svn-id: svn://10.0.0.236/trunk@105679 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 07:03:05 +00:00
seawood%netscape.com
77e7322f02 Re-enabling chromelist generation now that bad perl installation on tinderbox has been fixed.
Bug #101431


git-svn-id: svn://10.0.0.236/trunk@105677 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 06:47:36 +00:00
seawood%netscape.com
783a8d60d2 Creating Makefiles in cvs removed dirs is causing problems again
git-svn-id: svn://10.0.0.236/trunk@105676 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 06:45:40 +00:00
stephend%netscape.com
807453efa2 Bug 105245. Spelling typo in an error msg. r=stuartp@netscape.com, sr=mozbot
git-svn-id: svn://10.0.0.236/trunk@105675 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 06:40:41 +00:00
seawood%netscape.com
70f79b7833 Fixing typo
git-svn-id: svn://10.0.0.236/trunk@105674 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 06:23:36 +00:00
pchen%netscape.com
7c31a815dd 91074, r=gerv, rs=ben, fix typo of Hypertext to HyperText
git-svn-id: svn://10.0.0.236/trunk@105669 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 05:53:25 +00:00
jst%netscape.com
3cb461effc Adding new file for John Keiser, not part of the build yet.
git-svn-id: svn://10.0.0.236/trunk@105666 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 05:52:57 +00:00
pchen%netscape.com
22370c7b3b 93195, r=jag, rs=ben, fix comment about minimum supported macos version to match code
git-svn-id: svn://10.0.0.236/trunk@105665 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 05:48:41 +00:00
jband%netscape.com
77718ac1ef Add support for loading typelibs from multiple directories and correctly tracking that in xpti.dat. Also speedup xpti.dat reading by getting rid of PR_sscanf. This fixes bug 104191 and bug 105042. r=ccarlen sr=jst.
git-svn-id: svn://10.0.0.236/trunk@105661 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 04:23:25 +00:00
waterson%netscape.com
a8057d6717 Bug 100231. Use nsCheapVoidArray to save a word in nsXULElement. r=brendan,rjesup; sr=jst
git-svn-id: svn://10.0.0.236/trunk@105658 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 03:47:32 +00:00
bzbarsky%mit.edu
3ed1fa3422 Fixing extension matching for mime.types files so "c" won't match
"doc".  bug 103489, r=jag, sr=scc


git-svn-id: svn://10.0.0.236/trunk@105657 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 03:38:52 +00:00
mcafee%netscape.com
42227c38a5 Stop building gtkEmbed, replacing this with TestGtkEmbed (part 2 of bug 90526). r=blizzard, sr=alecf
git-svn-id: svn://10.0.0.236/trunk@105656 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 03:29:44 +00:00
mcafee%netscape.com
0f6946839a script to map module names to directory names. sr=alecf
git-svn-id: svn://10.0.0.236/trunk@105655 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 03:27:04 +00:00
dbaron%fas.harvard.edu
984385d28c Fix shutdown leaks of static regions. r=jag sr=blizzard b=103006
git-svn-id: svn://10.0.0.236/trunk@105654 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 03:24:09 +00:00
dbaron%fas.harvard.edu
7ac5c84051 Correct incorrect bustage fix that was causing some odd text substitutions in mail messages. r=jag sr=alecf, hyatt b=104693
git-svn-id: svn://10.0.0.236/trunk@105653 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 03:21:31 +00:00
timeless%mac.com
6fdb7a5e81 Bugzilla Bug 102762 Cancel does nothing in find dialog when no search text is provided
patch by simm0@ii.net r=hyatt sr=hewitt


git-svn-id: svn://10.0.0.236/trunk@105652 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 03:07:25 +00:00
shrutiv%netscape.com
db3abdd601 Fix for bug 105150: Include automatic proxy configuration in UI (r=bobj)
git-svn-id: svn://10.0.0.236/trunk@105651 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-18 02:17:14 +00:00
peterlubczynski%netscape.com
e97395ee57 Plugin SDK basic plugin port for Mac initial check-in. not part of the build
git-svn-id: svn://10.0.0.236/trunk@105650 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 23:37:52 +00:00
wtc%netscape.com
53585b3dd1 Bugzilla bug 71179: Neutrino needs the RTLD_GROUP flag to load Netscape
plugins.  The fix is contributed by timeless@bemail.org.


git-svn-id: svn://10.0.0.236/trunk@105649 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 23:34:50 +00:00
peterlubczynski%netscape.com
3525407e34 Plugin SDK changes for Mac. not part of the build
git-svn-id: svn://10.0.0.236/trunk@105648 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 23:34:31 +00:00
wtc%netscape.com
f94b003c2e Bugzilla bug 77197: use spawn in Neutrino because fork & exec does not
work in multithreaded programs in Neutrino.  The patch is contributed
by dinglis@qnx.com (Dave Inglis), reviewed and modified by wtc.


git-svn-id: svn://10.0.0.236/trunk@105647 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 23:11:25 +00:00
wtc%netscape.com
3c26e67cfc Bugzilla bug 92085: checked in a Neutrino patch from
briane@qnx.com (Brian Edmond).  r=wtc.
Modified files: _nto.h protypes.h


git-svn-id: svn://10.0.0.236/trunk@105644 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 22:28:29 +00:00
jpierre%netscape.com
dd770d60a7 Fix NT comment in OS/2 Makefile
git-svn-id: svn://10.0.0.236/trunk@105642 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 22:15:26 +00:00
wtc%netscape.com
c4dd8d142a Bugzilla bug 77188: checked in a configure patch for Neutrino from
dinglis@qnx.com (Dave Inglis).  r=wtc.
Modified files: configure configure.in


git-svn-id: svn://10.0.0.236/trunk@105641 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 20:50:51 +00:00
jpierre%netscape.com
224f9b47dc Fix for 104740 - build bignum library on OS/2 with mpi_x86 assembly code . reviewed by nelsonb
git-svn-id: svn://10.0.0.236/trunk@105640 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 20:35:37 +00:00
nelsonb%netscape.com
cbcf5e174c Fix bug 105185, which sometimes caused the result to be greater than n.
Fix suggested by Ferenc Rakoczi <Ferenc.Rakoczi@Sun.COM>


git-svn-id: svn://10.0.0.236/trunk@105639 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 20:35:04 +00:00
beard%netscape.com
7706032a1e [not part of build] Removed global thePlugin, now closing plugin's resource fork in termination routine.
git-svn-id: svn://10.0.0.236/trunk@105638 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 19:59:10 +00:00
beard%netscape.com
e2bdab0acd [not part of build] Added PROXY_JNI_CALLS define, and added proxy messages for ALL essential calls. This enables LiveConnect on Mac OS X.
git-svn-id: svn://10.0.0.236/trunk@105637 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 19:57:28 +00:00
dougt%netscape.com
f7097e84eb reverting to the old way to get windows directories since the function I am using does not work on windows systems without IE4. a=nhotta@netscape.com
git-svn-id: svn://10.0.0.236/trunk@105636 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 19:38:58 +00:00
wtc%netscape.com
2bd3aec57a A better way to define the HAVE_SNPRINTF macro.
git-svn-id: svn://10.0.0.236/trunk@105632 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 17:53:16 +00:00
ian.mcgreer%sun.com
40e21c8720 add ability to notify user that chain is incomplete
git-svn-id: svn://10.0.0.236/trunk@105630 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 15:48:09 +00:00
ian.mcgreer%sun.com
ba36bf7bc6 some more cert lookup methods; find cert issuer/chain; mimic nickname as "token name:nickname"
git-svn-id: svn://10.0.0.236/trunk@105629 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 14:40:27 +00:00
ian.mcgreer%sun.com
7ec77de1f4 get token name function; change cert function name
git-svn-id: svn://10.0.0.236/trunk@105628 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 14:39:11 +00:00
ian.mcgreer%sun.com
4577fd5dbb fix iteration for empty list
git-svn-id: svn://10.0.0.236/trunk@105627 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 14:37:48 +00:00
ian.mcgreer%sun.com
6d98369750 add back pointer to Stan cert from CERTCertificate
git-svn-id: svn://10.0.0.236/trunk@105626 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 14:37:10 +00:00
ian.mcgreer%sun.com
be3a45a33d implement several more PKCS#11 methods with Stan counterparts
git-svn-id: svn://10.0.0.236/trunk@105625 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 14:36:06 +00:00
ian.mcgreer%sun.com
85e9ed13f0 implement CERT_CertChainFromCert using Stan
git-svn-id: svn://10.0.0.236/trunk@105624 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 14:35:01 +00:00
bernd.mielke%snafu.de
67e3a6751d bug 103443 - remove the return rv?rv: NS_ERROR_FAILURE pattern from the editor files.
the editor/base remain untouched r=cmanske sr=kin


git-svn-id: svn://10.0.0.236/trunk@105623 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 14:33:50 +00:00
dinglis%qnx.com
b0bee04e64 Not part of build
update of Photon port


git-svn-id: svn://10.0.0.236/trunk@105622 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 14:13:47 +00:00
dinglis%qnx.com
e4137224be Not part of build
update of photon port


git-svn-id: svn://10.0.0.236/trunk@105621 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 14:11:53 +00:00
dinglis%qnx.com
8495dea380 Not part of build
fixed up requires


git-svn-id: svn://10.0.0.236/trunk@105620 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 14:09:52 +00:00
mkaply%us.ibm.com
8277ca276b OS/2 bustage
git-svn-id: svn://10.0.0.236/trunk@105619 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 13:14:22 +00:00
nboyd%atg.com
b57e670e00 Apparently the "classic" compiler is not only deprecated in JDK 1.4, but it
also has a significant regression introduced in it.   The default compiler
not only works, but also is noticably faster.  Ant takes care of the
selection of the compiler automatically based on the JDK level, so the
following patch should make things better all around.


git-svn-id: svn://10.0.0.236/trunk@105618 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 12:59:48 +00:00
nboyd%atg.com
acea3a7499 Remove deprecated class.
git-svn-id: svn://10.0.0.236/trunk@105617 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 12:59:18 +00:00
nboyd%atg.com
61d5d439d6 Remove deprecated FlattenedObject.
Patch from Igor:
The 2 attached patches allow to avoid wrapping of array indexes to Double object
when Interpreter knows that the index is an integer number. It speed up array
benchmark by 5-10%

array_access.diff adds to ScriptRuntime getStrIdElem and setStrIdElem to get/set
properties which known to be strings plus it modifies NativeArray to use these methods.

interpreter.diff contains the Interpreter modifications to call get/setElem for
integer or string properties when the property type is known for sure.


git-svn-id: svn://10.0.0.236/trunk@105616 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 12:59:02 +00:00
nboyd%atg.com
bd420d060b Backslashes don't work.
git-svn-id: svn://10.0.0.236/trunk@105615 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 12:53:39 +00:00
dbradley%netscape.com
9bc41bcde1 bug 103649 - Crash when rendering a page with hundreds of iframes - This reduces the number of calls to JS_ContextIterator from XPCJSRuntime::SyncXPCContextList. It is only the first step in addressing this bug. r=jband, sr=jst
git-svn-id: svn://10.0.0.236/trunk@105614 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 11:52:55 +00:00
seawood%netscape.com
3ffa4b1dba Partial backout of Gerv's checkin until we can work out the perl dependency.
git-svn-id: svn://10.0.0.236/trunk@105613 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 09:34:47 +00:00
hyatt%netscape.com
17d94d5a2b Fix for 105214. r=jag, sr=ben
git-svn-id: svn://10.0.0.236/trunk@105612 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 09:02:02 +00:00
brendan%mozilla.org
0fcd3e9626 Checking in scole@planetweb.com's patch to prefix str_escape with js_ (96084, r=rogerl, sr=brendan).
git-svn-id: svn://10.0.0.236/trunk@105611 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 08:16:53 +00:00
seawood%netscape.com
af26dff1db Really remove extra VPATH
Bug #105005


git-svn-id: svn://10.0.0.236/trunk@105610 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 07:25:24 +00:00
seawood%netscape.com
6b5be4cbcb Oops forgot local include path.
Bug #105005


git-svn-id: svn://10.0.0.236/trunk@105609 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 06:40:48 +00:00
seawood%netscape.com
f2559aab90 Use LOCAL_INCLUDES to make sure that our ldap.h gets used before any system copy.
Bug #103281


git-svn-id: svn://10.0.0.236/trunk@105608 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 06:20:42 +00:00
rbs%maths.uq.edu.au
4050ab700c More bullet-proofing of glyph resolution. b=103777 r=shanjian sr=attinasi
git-svn-id: svn://10.0.0.236/trunk@105607 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 06:06:09 +00:00
seawood%netscape.com
a5686224c1 Remove use of additional dirs in VPATH as it causes problems in srcdir builds and the previous workarounds do not always work due to a bug in gcc's -MD.
Bug #105005 r=jag


git-svn-id: svn://10.0.0.236/trunk@105606 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 06:00:18 +00:00
rpotts%netscape.com
3db15629d1 bug #104769 (r=pavlov@netscape.com, sr=jst@netscape.com) Opening new windows sometimes stalls...
git-svn-id: svn://10.0.0.236/trunk@105605 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 05:57:29 +00:00
waterson%netscape.com
e1d5f4d759 Bug 104658. Ignore AttributeChanged notifications before the initial reflow has occurred. r=dbaron, sr=attinasi
git-svn-id: svn://10.0.0.236/trunk@105603 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 05:34:35 +00:00
gerv%gerv.net
22f4f719e8 Bug 101431 - create chromelist.txt for use with Patch Maker. r=cls, leaf.
git-svn-id: svn://10.0.0.236/trunk@105602 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 05:27:42 +00:00
jaggernaut%netscape.com
7421efac1f Bug 73292: Add const nsACString& constructor to NS_Convert(ASCII|UTF8)toUCS2. r=dbaron, sr=scc.
git-svn-id: svn://10.0.0.236/trunk@105601 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 05:17:53 +00:00
mkaply%us.ibm.com
2460fe3a97 OS/2 bustage
git-svn-id: svn://10.0.0.236/trunk@105600 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 05:01:54 +00:00
naving%netscape.com
1e17e4ef59 105162 r=racham sr=mscott. Remove unused prefs
git-svn-id: svn://10.0.0.236/trunk@105599 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 04:53:25 +00:00
naving%netscape.com
5d71096783 105162 r=racham sr=mscott. Make download message size pref work for pop3 again. Remove unused pref.
git-svn-id: svn://10.0.0.236/trunk@105597 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 04:53:23 +00:00
leaf%mozilla.org
35a5aa446b Automated update
git-svn-id: svn://10.0.0.236/trunk@105595 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 04:28:20 +00:00
blizzard%redhat.com
c5726e9c99 Update gtk2 link flags. r=cls
git-svn-id: svn://10.0.0.236/trunk@105594 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 04:25:45 +00:00
waldemar%netscape.com
671b3acf59 Added support for writable actions
git-svn-id: svn://10.0.0.236/trunk@105593 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 03:57:51 +00:00
waldemar%netscape.com
93633d4a47 Enhanced list*-bind and added tree-member
git-svn-id: svn://10.0.0.236/trunk@105592 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 03:57:32 +00:00
waldemar%netscape.com
b252b660c4 Fixes from October 1 ECMA meeting
git-svn-id: svn://10.0.0.236/trunk@105591 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 03:57:06 +00:00
waldemar%netscape.com
b55d66715b Test of writable actions
git-svn-id: svn://10.0.0.236/trunk@105590 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 03:55:46 +00:00
waldemar%netscape.com
65c89ecbb4 Updated for new syntax
git-svn-id: svn://10.0.0.236/trunk@105589 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 03:55:25 +00:00
brendan%mozilla.org
69d4fd60de Fixes for bug 80981 (``Need extended jump bytecode to avoid "script too large"
errors, etc.''):

We now ReportStatementTooLarge only if
- a jump offset overflows 32 bits, signed;
- there are 2**32 or more span dependencies in a script;
- a backpatch chain link is more than (2**30 - 1) bytecodes long;
- a source note's distance from the last note, or from script main entry
  point, is > 0x7fffff bytes.

Narrative of the patch, by file:

- js.c
  The js_SrcNoteName array of const char * is now a js_SrcNoteSpec array of
  "specifiers", structs that include a const char *name member.  Also, due to
  span-dependent jumps at the ends of basic blocks where the decompiler knows
  the basic block length, but not the jump format, we need an offset operand
  for SRC_COND, SRC_IF_ELSE, and SRC_WHILE (to tell the distance from the
  branch bytecode after the condition expression to the span-dependent jump).

- jsarena.[ch]
  JS arenas are used mainly for last-in-first-out allocation with _en masse_
  release to the malloc pool (or, optionally, to a private freelist).  But
  the code generator needs to allocate and grow (by doubling, to avoid O(n^2)
  growth) allocations that hold bytecode, source notes, and span-dependency
  records.  This exception to LIFO allocation works by claiming an entire
  arena from the pool and realloc'ing it, as soon as the allocation size
  reaches the pool's default arena size.  Call such an allocation a "large
  single allocation".

  This patch adds a new arena API, JS_ArenaFreeAllocation, which can be used
  to free a large single allocation.  If called with an allocation that's not
  a large single allocation, it will nevertheless attempt to retract the arena
  containing that allocation, if the allocation is last within its arena.
  Thus JS_ArenaFreeAllocation adds a non-LIFO "free" special case to match the
  non-LIFO "grow" special case already implemented under JS_ARENA_GROW for
  large single allocations.

  The code generator still benefits via this extension to arenas, over purely
  manual malloc/realloc/free, by virtue of _en masse_ free (JS_ARENA_RELEASE
  after code generation has completed, successfully or not).

  To avoid searching for the previous arena, in order to update its next
  member upon reallocation of the arena containing a large single allocation,
  the oversized arena has a back-pointer to that next member stored (but not
  as allocable space within the arena) in a (JSArena **) footer at its end.

- jscntxt.c
  I've observed for many scripts that the bytes of source notes and bytecode
  are of comparable lengths, but only now am I fixing the default arena size
  for cx->notePool to match the size for cx->codePool (1024 instead of 256).

- jsemit.c
  Span-dependent instructions in JS bytecode consist of the jump (JOF_JUMP)
  and switch (JOF_LOOKUPSWITCH, JOF_TABLESWITCH) format opcodes, subdivided
  into unconditional (gotos and gosubs), and conditional jumps or branches
  (which pop a value, test it, and jump depending on its value).  Most jumps
  have just one immediate operand, a signed offset from the jump opcode's pc
  to the target bytecode.  The lookup and table switch opcodes may contain
  many jump offsets.

  This patch adds "X" counterparts to the opcodes/formats (X is suffixed, btw,
  to prefer JSOP_ORX and thereby to avoid colliding on the JSOP_XOR name for
  the extended form of the JSOP_OR branch opcode).  The unextended or short
  formats have 16-bit signed immediate offset operands, the extended or long
  formats have 32-bit signed immediates.  The span-dependency problem consists
  of selecting as few long instructions as possible, or about as few -- since
  jumps can span other jumps, extending one jump may cause another to need to
  be extended.

  Most JS scripts are short, so need no extended jumps.  We optimize for this
  case by generating short jumps until we know a long jump is needed.  After
  that point, we keep generating short jumps, but each jump's 16-bit immediate
  offset operand is actually an unsigned index into cg->spanDeps, an array of
  JSSpanDep structs.  Each struct tells the top offset in the script of the
  opcode, the "before" offset of the jump (which will be the same as top for
  simplex jumps, but which will index further into the bytecode array for a
  non-initial jump offset in a lookup or table switch), the after "offset"
  adjusted during span-dependent instruction selection (initially the same
  value as the "before" offset), and the jump target (more below).

  Since we generate cg->spanDeps lazily, from within js_SetJumpOffset, we must
  ensure that all bytecode generated so far can be inspected to discover where
  the jump offset immediate operands lie within CG_CODE(cg).  But the bonus is
  that we generate span-dependency records sorted by their offsets, so we can
  binary-search when trying to find a JSSpanDep for a given bytecode offset,
  or the nearest JSSpanDep at or above a given pc.

  To avoid limiting scripts to 64K jumps, if the cg->spanDeps index overflows
  65534, we store SPANDEP_INDEX_HUGE in the jump's immediate operand.  This
  tells us that we need to binary-search for the cg->spanDeps entry by the
  jump opcode's bytecode offset (sd->before).

  Jump targets need to be maintained in a data structure that lets us look
  up an already-known target by its address (jumps may have a common target),
  and that also lets us update the addresses (script-relative, a.k.a. absolute
  offsets) of targets that come after a jump target (for when a jump below
  that target needs to be extended).  We use an AVL tree, implemented using
  recursion, but with some tricky optimizations to its height-balancing code
  (see http://www.enteract.com/~bradapp/ftp/src/libs/C++/AvlTrees.html).

  A final wrinkle: backpatch chains are linked by jump-to-jump offsets with
  positive sign, even though they link "backward" (i.e., toward lower bytecode
  address).  We don't want to waste space and search time in the AVL tree for
  such temporary backpatch deltas, so we use a single-bit wildcard scheme to
  tag true JSJumpTarget pointers and encode untagged, signed (positive) deltas
  in JSSpanDep.target pointers, depending on whether the JSSpanDep has a known
  target, or is still awaiting backpatching.

  Note that backpatch chains would present a problem for BuildSpanDepTable,
  which inspects bytecode to build cg->spanDeps on demand, when the first
  short jump offset overflows.  To solve this temporary problem, we emit a
  proxy bytecode (JSOP_BACKPATCH; JSOP_BACKPATCH_PUSH for jumps that push a
  result on the interpreter's stack, namely JSOP_GOSUB; or JSOP_BACKPATCH_POP
  for branch ops) whose nuses/ndefs counts help keep the stack balanced, but
  whose opcode format distinguishes its backpatch delta immediate operand from
  a normal jump offset.

  The cg->spanDeps array and JSJumpTarget structs are allocated from the
  cx->tempPool arena-pool.  This created a LIFO vs. non-LIFO conflict: there
  were two places under the TOK_SWITCH case in js_EmitTree that used tempPool
  to allocate and release a chunk of memory, during whose lifetime JSSpanDep
  and/or JSJumpTarget structs might also be allocated from tempPool -- the
  ensuing release would prove disastrous.  These bitmap and table temporaries
  are now allocated from the malloc heap.

- jsinterp.c
  Straightforward cloning and JUMP => JUMPX mutating of the jump and switch
  format bytecode cases.

- jsobj.c
  Silence warnings about %p used without (void *) casts.

- jsopcode.c
  Massive and scary decompiler whackage to cope with extended jumps, using
  source note offsets to help find jumps whose format (short or long) can't
  be discovered from properties of prior instructions in the script.

  One cute hack here: long || and && expressions are broken up to wrap before
  the 80th column, with the operator at the end of each non-terminal line.

- jsopcode.h, jsopcode.tbl
  The new extended jump opcodes, formats, and fundamental parameterization
  macros.  Also, more comments.

- jsparse.c
  Random and probably only aesthetic fix to avoid decorating a foo[i]++ or
  --foo[i] parse tree node with JSOP_SETCALL, wrongly (only foo(i)++ or
  --foo(i), or the other post- or prefix form operator, should have such an
  opcode decoration on its parse tree).

- jsscript.h
  Random macro naming sanity: use trailing _ rather than leading _ for macro
  local variables in order to avoid invading the standard C global namespace.


git-svn-id: svn://10.0.0.236/trunk@105588 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 03:16:48 +00:00
blizzard%redhat.com
164f60d537 Work with versions of bash older than version 2. Not part of the default build. Bug #104768.
git-svn-id: svn://10.0.0.236/trunk@105587 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 02:57:00 +00:00
hyatt%netscape.com
aab94a1cb2 Fix for 97805, r=sfraser, sr=waterson, also fixing event prioritization problems on Win32, r=jag, sr=brendan
git-svn-id: svn://10.0.0.236/trunk@105586 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 02:14:43 +00:00
jst%netscape.com
a698aafccd Fixing most of bug 62536. Adding support for the properties scrollTop, scrollLeft, scrollHeight, scrollWidth, clientHeight, clientWidth and the method scrollIntoView() to elements for compatibility with IE. Patch by Fabian <hidday@geocities.com> and myself, r=peterv@netscape.com, sr=jband@netscape.com
git-svn-id: svn://10.0.0.236/trunk@105584 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 01:17:47 +00:00
beard%netscape.com
f2a983d650 [Not part of build] Reset versions to 1.0d1.
git-svn-id: svn://10.0.0.236/trunk@105583 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 01:16:48 +00:00
beard%netscape.com
9ad655f30b [not part of build] Removed redundant bundle loading code, #if DEBUG kprintf, etc.
git-svn-id: svn://10.0.0.236/trunk@105582 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 01:16:13 +00:00
319 changed files with 106012 additions and 12623 deletions

View File

@@ -1,36 +0,0 @@
#
# The contents of this file are subject to the Netscape Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/NPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is mozilla.org code.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
#
DEPTH = ..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DIRS = include src
ifdef ENABLE_TESTS
DIRS += tests
endif
include $(topsrcdir)/config/rules.mk

View File

@@ -1,17 +0,0 @@
#
# This is a list of local files which get copied to the mozilla:dist directory
#
cdefs.h
extern.h
hash.h
hsearch.h
mcom_db.h
mpool.h
ncompat.h
ndbm.h
nsres.h
page.h
queue.h
search.h
watcomfx.h

View File

@@ -1,55 +0,0 @@
#
# The contents of this file are subject to the Netscape Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/NPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is mozilla.org code.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
#
DEPTH = ../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = dbm
EXPORTS = \
nsres.h \
cdefs.h \
mcom_db.h \
ncompat.h \
winfile.h \
$(NULL)
EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS))
PRIVATE_EXPORTS = \
hsearch.h \
page.h \
extern.h \
ndbm.h \
queue.h \
hash.h \
mpool.h \
search.h \
$(NULL)
PRIVATE_EXPORTS := $(addprefix $(srcdir)/, $(PRIVATE_EXPORTS))
include $(topsrcdir)/config/rules.mk

View File

@@ -1,60 +0,0 @@
# The contents of this file are subject to the Netscape Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/NPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is mozilla.org code.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
#//------------------------------------------------------------------------
#//
#// Makefile to build the cert library
#//
#//------------------------------------------------------------------------
!if "$(MOZ_BITS)" == "16"
!ifndef MOZ_DEBUG
OPTIMIZER=-Os -UDEBUG -DNDEBUG
!endif
!endif
#//------------------------------------------------------------------------
#//
#// Specify the depth of the current directory relative to the
#// root of NS
#//
#//------------------------------------------------------------------------
DEPTH= ..\..
!ifndef MAKE_OBJ_TYPE
MAKE_OBJ_TYPE=EXE
!endif
#//------------------------------------------------------------------------
#//
#// install headers
#//
#//------------------------------------------------------------------------
EXPORTS=nsres.h cdefs.h mcom_db.h ncompat.h winfile.h
#//------------------------------------------------------------------------
#//
#// Include the common makefile rules
#//
#//------------------------------------------------------------------------
include <$(DEPTH)/config/rules.mak>
CFLAGS = $(CFLAGS) -DMOZILLA_CLIENT

View File

@@ -1,165 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Netscape Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the NPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the NPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*
* Copyright (c) 1991, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Berkeley Software Design, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)cdefs.h 8.7 (Berkeley) 1/21/94
*/
#ifndef _CDEFS_H_
#define _CDEFS_H_
#if defined(__cplusplus)
#define __BEGIN_DECLS extern "C" {
#define __END_DECLS }
#else
#define __BEGIN_DECLS
#define __END_DECLS
#endif
/*
* The __CONCAT macro is used to concatenate parts of symbol names, e.g.
* with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
* The __CONCAT macro is a bit tricky -- make sure you don't put spaces
* in between its arguments. __CONCAT can also concatenate double-quoted
* strings produced by the __STRING macro, but this only works with ANSI C.
*/
#if defined(__STDC__) || defined(__cplusplus) || defined(_WINDOWS) || defined(XP_OS2)
#define __P(protos) protos /* full-blown ANSI C */
#define __CONCAT(x,y) x ## y
#define __STRING(x) #x
/* On HP-UX 11.00, <sys/stdsyms.h> defines __const. */
#ifndef __const
#define __const const /* define reserved names to standard */
#endif /* __const */
#define __signed signed
#define __volatile volatile
#ifndef _WINDOWS
#if defined(__cplusplus)
#define __inline inline /* convert to C++ keyword */
#else
#if !defined(__GNUC__) && !defined(__MWERKS__)
#define __inline /* delete GCC keyword */
#endif /* !__GNUC__ */
#endif /* !__cplusplus */
#endif /* !_WINDOWS */
#else /* !(__STDC__ || __cplusplus) */
#define __P(protos) () /* traditional C preprocessor */
#define __CONCAT(x,y) x/**/y
#define __STRING(x) "x"
#ifndef __GNUC__
#define __const /* delete pseudo-ANSI C keywords */
#define __inline
#define __signed
#define __volatile
/*
* In non-ANSI C environments, new programs will want ANSI-only C keywords
* deleted from the program and old programs will want them left alone.
* When using a compiler other than gcc, programs using the ANSI C keywords
* const, inline etc. as normal identifiers should define -DNO_ANSI_KEYWORDS.
* When using "gcc -traditional", we assume that this is the intent; if
* __GNUC__ is defined but __STDC__ is not, we leave the new keywords alone.
*/
#ifndef NO_ANSI_KEYWORDS
#define const /* delete ANSI C keywords */
#define inline
#define signed
#define volatile
#endif
#endif /* !__GNUC__ */
#endif /* !(__STDC__ || __cplusplus) */
/*
* GCC1 and some versions of GCC2 declare dead (non-returning) and
* pure (no side effects) functions using "volatile" and "const";
* unfortunately, these then cause warnings under "-ansi -pedantic".
* GCC2 uses a new, peculiar __attribute__((attrs)) style. All of
* these work for GNU C++ (modulo a slight glitch in the C++ grammar
* in the distribution version of 2.5.5).
*/
#if !defined(__GNUC__) || __GNUC__ < 2 || __GNUC_MINOR__ < 5
#define __attribute__(x) /* delete __attribute__ if non-gcc or gcc1 */
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
#define __dead __volatile
#define __pure __const
#endif
#endif
/* Delete pseudo-keywords wherever they are not available or needed. */
#ifndef __dead
#define __dead
#define __pure
#endif
#endif /* !_CDEFS_H_ */

View File

@@ -1,65 +0,0 @@
/*-
* Copyright (c) 1991, 1993, 1994
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)extern.h 8.4 (Berkeley) 6/16/94
*/
BUFHEAD *__add_ovflpage (HTAB *, BUFHEAD *);
int __addel (HTAB *, BUFHEAD *, const DBT *, const DBT *);
int __big_delete (HTAB *, BUFHEAD *);
int __big_insert (HTAB *, BUFHEAD *, const DBT *, const DBT *);
int __big_keydata (HTAB *, BUFHEAD *, DBT *, DBT *, int);
int __big_return (HTAB *, BUFHEAD *, int, DBT *, int);
int __big_split (HTAB *, BUFHEAD *, BUFHEAD *, BUFHEAD *,
uint32, uint32, SPLIT_RETURN *);
int __buf_free (HTAB *, int, int);
void __buf_init (HTAB *, int);
uint32 __call_hash (HTAB *, char *, size_t);
int __delpair (HTAB *, BUFHEAD *, int);
int __expand_table (HTAB *);
int __find_bigpair (HTAB *, BUFHEAD *, int, char *, int);
uint16 __find_last_page (HTAB *, BUFHEAD **);
void __free_ovflpage (HTAB *, BUFHEAD *);
BUFHEAD *__get_buf (HTAB *, uint32, BUFHEAD *, int);
int __get_page (HTAB *, char *, uint32, int, int, int);
int __ibitmap (HTAB *, int, int, int);
uint32 __log2 (uint32);
int __put_page (HTAB *, char *, uint32, int, int);
void __reclaim_buf (HTAB *, BUFHEAD *);
int __split_page (HTAB *, uint32, uint32);
/* Default hash routine. */
extern uint32 (*__default_hash) (const void *, size_t);
#ifdef HASH_STATISTICS
extern int hash_accesses, hash_collisions, hash_expansions, hash_overflows;
#endif

View File

@@ -1,337 +0,0 @@
/*-
* Copyright (c) 1990, 1993, 1994
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Margo Seltzer.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)hash.h 8.3 (Berkeley) 5/31/94
*/
/* Operations */
#include <stdio.h>
#include "mcom_db.h"
typedef enum {
HASH_GET, HASH_PUT, HASH_PUTNEW, HASH_DELETE, HASH_FIRST, HASH_NEXT
} ACTION;
/* Buffer Management structures */
typedef struct _bufhead BUFHEAD;
struct _bufhead {
BUFHEAD *prev; /* LRU links */
BUFHEAD *next; /* LRU links */
BUFHEAD *ovfl; /* Overflow page buffer header */
uint32 addr; /* Address of this page */
char *page; /* Actual page data */
char is_disk;
char flags;
#define BUF_MOD 0x0001
#define BUF_DISK 0x0002
#define BUF_BUCKET 0x0004
#define BUF_PIN 0x0008
};
#define IS_BUCKET(X) ((X) & BUF_BUCKET)
typedef BUFHEAD **SEGMENT;
typedef int DBFILE_PTR;
#define NO_FILE -1
#ifdef macintosh
#define DBFILE_OPEN(path, flag,mode) open((path), flag)
#define EXISTS(path)
#else
#define DBFILE_OPEN(path, flag,mode) open((path), (flag), (mode))
#endif
/* Hash Table Information */
typedef struct hashhdr { /* Disk resident portion */
int32 magic; /* Magic NO for hash tables */
int32 version; /* Version ID */
uint32 lorder; /* Byte Order */
int32 bsize; /* Bucket/Page Size */
int32 bshift; /* Bucket shift */
int32 dsize; /* Directory Size */
int32 ssize; /* Segment Size */
int32 sshift; /* Segment shift */
int32 ovfl_point; /* Where overflow pages are being
* allocated */
int32 last_freed; /* Last overflow page freed */
int32 max_bucket; /* ID of Maximum bucket in use */
int32 high_mask; /* Mask to modulo into entire table */
int32 low_mask; /* Mask to modulo into lower half of
* table */
int32 ffactor; /* Fill factor */
int32 nkeys; /* Number of keys in hash table */
int32 hdrpages; /* Size of table header */
uint32 h_charkey; /* value of hash(CHARKEY) */
#define NCACHED 32 /* number of bit maps and spare
* points */
int32 spares[NCACHED];/* spare pages for overflow */
uint16 bitmaps[NCACHED]; /* address of overflow page
* bitmaps */
} HASHHDR;
typedef struct htab { /* Memory resident data structure */
HASHHDR hdr; /* Header */
int nsegs; /* Number of allocated segments */
int exsegs; /* Number of extra allocated
* segments */
uint32 /* Hash function */
(*hash)(const void *, size_t);
int flags; /* Flag values */
DBFILE_PTR fp; /* File pointer */
char *filename;
char *tmp_buf; /* Temporary Buffer for BIG data */
char *tmp_key; /* Temporary Buffer for BIG keys */
BUFHEAD *cpage; /* Current page */
int cbucket; /* Current bucket */
int cndx; /* Index of next item on cpage */
int dbmerrno; /* Error Number -- for DBM
* compatability */
int new_file; /* Indicates if fd is backing store
* or no */
int save_file; /* Indicates whether we need to flush
* file at
* exit */
uint32 *mapp[NCACHED]; /* Pointers to page maps */
int nmaps; /* Initial number of bitmaps */
int nbufs; /* Number of buffers left to
* allocate */
BUFHEAD bufhead; /* Header of buffer lru list */
SEGMENT *dir; /* Hash Bucket directory */
off_t file_size; /* in bytes */
char is_temp; /* unlink file on close */
char updateEOF; /* force EOF update on flush */
} HTAB;
/*
* Constants
*/
#define DATABASE_CORRUPTED_ERROR -999 /* big ugly abort, delete database */
#define OLD_MAX_BSIZE 65536 /* 2^16 */
#define MAX_BSIZE 32l*1024l /* 2^15 */
#define MIN_BUFFERS 6
#define MINHDRSIZE 512
#define DEF_BUFSIZE 65536l /* 64 K */
#define DEF_BUCKET_SIZE 4096
#define DEF_BUCKET_SHIFT 12 /* log2(BUCKET) */
#define DEF_SEGSIZE 256
#define DEF_SEGSIZE_SHIFT 8 /* log2(SEGSIZE) */
#define DEF_DIRSIZE 256
#define DEF_FFACTOR 65536l
#define MIN_FFACTOR 4
#define SPLTMAX 8
#define CHARKEY "%$sniglet^&"
#define NUMKEY 1038583l
#define BYTE_SHIFT 3
#define INT_TO_BYTE 2
#define INT_BYTE_SHIFT 5
#define ALL_SET ((uint32)0xFFFFFFFF)
#define ALL_CLEAR 0
#define PTROF(X) ((ptrdiff_t)(X) == BUF_DISK ? 0 : (X))
#define ISDISK(X) ((X) ? ((ptrdiff_t)(X) == BUF_DISK ? BUF_DISK \
: (X)->is_disk) : 0)
#define BITS_PER_MAP 32
/* Given the address of the beginning of a big map, clear/set the nth bit */
#define CLRBIT(A, N) ((A)[(N)/BITS_PER_MAP] &= ~(1<<((N)%BITS_PER_MAP)))
#define SETBIT(A, N) ((A)[(N)/BITS_PER_MAP] |= (1<<((N)%BITS_PER_MAP)))
#define ISSET(A, N) ((A)[(N)/BITS_PER_MAP] & (1<<((N)%BITS_PER_MAP)))
/* Overflow management */
/*
* Overflow page numbers are allocated per split point. At each doubling of
* the table, we can allocate extra pages. So, an overflow page number has
* the top 5 bits indicate which split point and the lower 11 bits indicate
* which page at that split point is indicated (pages within split points are
* numberered starting with 1).
*/
#define SPLITSHIFT 11
#define SPLITMASK 0x7FF
#define SPLITNUM(N) (((uint32)(N)) >> SPLITSHIFT)
#define OPAGENUM(N) ((N) & SPLITMASK)
#define OADDR_OF(S,O) ((uint32)((uint32)(S) << SPLITSHIFT) + (O))
#define BUCKET_TO_PAGE(B) \
(B) + hashp->HDRPAGES + ((B) ? hashp->SPARES[__log2((uint32)((B)+1))-1] : 0)
#define OADDR_TO_PAGE(B) \
BUCKET_TO_PAGE ( (1 << SPLITNUM((B))) -1 ) + OPAGENUM((B));
/*
* page.h contains a detailed description of the page format.
*
* Normally, keys and data are accessed from offset tables in the top of
* each page which point to the beginning of the key and data. There are
* four flag values which may be stored in these offset tables which indicate
* the following:
*
*
* OVFLPAGE Rather than a key data pair, this pair contains
* the address of an overflow page. The format of
* the pair is:
* OVERFLOW_PAGE_NUMBER OVFLPAGE
*
* PARTIAL_KEY This must be the first key/data pair on a page
* and implies that page contains only a partial key.
* That is, the key is too big to fit on a single page
* so it starts on this page and continues on the next.
* The format of the page is:
* KEY_OFF PARTIAL_KEY OVFL_PAGENO OVFLPAGE
*
* KEY_OFF -- offset of the beginning of the key
* PARTIAL_KEY -- 1
* OVFL_PAGENO - page number of the next overflow page
* OVFLPAGE -- 0
*
* FULL_KEY This must be the first key/data pair on the page. It
* is used in two cases.
*
* Case 1:
* There is a complete key on the page but no data
* (because it wouldn't fit). The next page contains
* the data.
*
* Page format it:
* KEY_OFF FULL_KEY OVFL_PAGENO OVFL_PAGE
*
* KEY_OFF -- offset of the beginning of the key
* FULL_KEY -- 2
* OVFL_PAGENO - page number of the next overflow page
* OVFLPAGE -- 0
*
* Case 2:
* This page contains no key, but part of a large
* data field, which is continued on the next page.
*
* Page format it:
* DATA_OFF FULL_KEY OVFL_PAGENO OVFL_PAGE
*
* KEY_OFF -- offset of the beginning of the data on
* this page
* FULL_KEY -- 2
* OVFL_PAGENO - page number of the next overflow page
* OVFLPAGE -- 0
*
* FULL_KEY_DATA
* This must be the first key/data pair on the page.
* There are two cases:
*
* Case 1:
* This page contains a key and the beginning of the
* data field, but the data field is continued on the
* next page.
*
* Page format is:
* KEY_OFF FULL_KEY_DATA OVFL_PAGENO DATA_OFF
*
* KEY_OFF -- offset of the beginning of the key
* FULL_KEY_DATA -- 3
* OVFL_PAGENO - page number of the next overflow page
* DATA_OFF -- offset of the beginning of the data
*
* Case 2:
* This page contains the last page of a big data pair.
* There is no key, only the tail end of the data
* on this page.
*
* Page format is:
* DATA_OFF FULL_KEY_DATA <OVFL_PAGENO> <OVFLPAGE>
*
* DATA_OFF -- offset of the beginning of the data on
* this page
* FULL_KEY_DATA -- 3
* OVFL_PAGENO - page number of the next overflow page
* OVFLPAGE -- 0
*
* OVFL_PAGENO and OVFLPAGE are optional (they are
* not present if there is no next page).
*/
#define OVFLPAGE 0
#define PARTIAL_KEY 1
#define FULL_KEY 2
#define FULL_KEY_DATA 3
#define REAL_KEY 4
/* Short hands for accessing structure */
#undef BSIZE
#define BSIZE hdr.bsize
#undef BSHIFT
#define BSHIFT hdr.bshift
#define DSIZE hdr.dsize
#define SGSIZE hdr.ssize
#define SSHIFT hdr.sshift
#define LORDER hdr.lorder
#define OVFL_POINT hdr.ovfl_point
#define LAST_FREED hdr.last_freed
#define MAX_BUCKET hdr.max_bucket
#define FFACTOR hdr.ffactor
#define HIGH_MASK hdr.high_mask
#define LOW_MASK hdr.low_mask
#define NKEYS hdr.nkeys
#define HDRPAGES hdr.hdrpages
#define SPARES hdr.spares
#define BITMAPS hdr.bitmaps
#define VERSION hdr.version
#define MAGIC hdr.magic
#define NEXT_FREE hdr.next_free
#define H_CHARKEY hdr.h_charkey
extern uint32 (*__default_hash) (const void *, size_t);
void __buf_init(HTAB *hashp, int32 nbytes);
int __big_delete(HTAB *hashp, BUFHEAD *bufp);
BUFHEAD * __get_buf(HTAB *hashp, uint32 addr, BUFHEAD *prev_bp, int newpage);
uint32 __call_hash(HTAB *hashp, char *k, size_t len);
#include "page.h"
extern int __big_split(HTAB *hashp, BUFHEAD *op,BUFHEAD *np,
BUFHEAD *big_keyp,uint32 addr,uint32 obucket, SPLIT_RETURN *ret);
void __free_ovflpage(HTAB *hashp, BUFHEAD *obufp);
BUFHEAD * __add_ovflpage(HTAB *hashp, BUFHEAD *bufp);
int __big_insert(HTAB *hashp, BUFHEAD *bufp, const DBT *key, const DBT *val);
int __expand_table(HTAB *hashp);
uint32 __log2(uint32 num);
void __reclaim_buf(HTAB *hashp, BUFHEAD *bp);
int __get_page(HTAB *hashp, char * p, uint32 bucket, int is_bucket, int is_disk, int is_bitmap);
int __put_page(HTAB *hashp, char *p, uint32 bucket, int is_bucket, int is_bitmap);
int __ibitmap(HTAB *hashp, int pnum, int nbits, int ndx);
int __buf_free(HTAB *hashp, int do_free, int to_disk);
int __find_bigpair(HTAB *hashp, BUFHEAD *bufp, int ndx, char *key, int size);
uint16 __find_last_page(HTAB *hashp, BUFHEAD **bpp);
int __addel(HTAB *hashp, BUFHEAD *bufp, const DBT *key, const DBT * val);
int __big_return(HTAB *hashp, BUFHEAD *bufp, int ndx, DBT *val, int set_current);
int __delpair(HTAB *hashp, BUFHEAD *bufp, int ndx);
int __big_keydata(HTAB *hashp, BUFHEAD *bufp, DBT *key, DBT *val, int set);
int __split_page(HTAB *hashp, uint32 obucket, uint32 nbucket);

View File

@@ -1,51 +0,0 @@
/*-
* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Margo Seltzer.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)search.h 8.1 (Berkeley) 6/4/93
*/
/* Backward compatibility to hsearch interface. */
typedef struct entry {
char *key;
char *data;
} ENTRY;
typedef enum {
FIND, ENTER
} ACTION;
int hcreate (unsigned int);
void hdestroy (void);
ENTRY *hsearch (ENTRY, ACTION);

View File

@@ -1,450 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Netscape Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the NPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the NPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/*-
* Copyright (c) 1990, 1993, 1994
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)db.h 8.7 (Berkeley) 6/16/94
*/
#ifndef _DB_H_
#define _DB_H_
#ifndef macintosh
#include <sys/types.h>
#endif
#include "prtypes.h"
#include <limits.h>
#ifdef __DBINTERFACE_PRIVATE
#ifdef HAVE_SYS_CDEFS_H
#include <sys/cdefs.h>
#else
#include "cdefs.h"
#endif
#ifdef HAVE_SYS_BYTEORDER_H
#include <sys/byteorder.h>
#endif
#if defined(__linux) || defined(__BEOS__)
#include <endian.h>
#ifndef BYTE_ORDER
#define BYTE_ORDER __BYTE_ORDER
#define BIG_ENDIAN __BIG_ENDIAN
#define LITTLE_ENDIAN __LITTLE_ENDIAN
#endif
#endif /* __linux */
#ifdef __sgi
#define BYTE_ORDER BIG_ENDIAN
#define BIG_ENDIAN 4321
#define LITTLE_ENDIAN 1234 /* LSB first: i386, vax, all NT risc */
#endif
#ifdef __sun
#define BIG_ENDIAN 4321
#define LITTLE_ENDIAN 1234 /* LSB first: i386, vax, all NT risc */
#ifndef __SVR4
/* compat.h is only in 4.1.3 machines. - dp */
#include <compat.h>
#endif
/* XXX - dp
* Need to find a general way of defining endian-ness in SunOS 5.3
* SunOS 5.4 defines _BIG_ENDIAN and _LITTLE_ENDIAN
* SunOS 5.3 does nothing like this.
*/
#ifndef BYTE_ORDER
#if defined(_BIG_ENDIAN)
#define BYTE_ORDER BIG_ENDIAN
#elif defined(_LITTLE_ENDIAN)
#define BYTE_ORDER LITTLE_ENDIAN
#elif !defined(__SVR4)
/* 4.1.3 is always BIG_ENDIAN as it was released only on sparc platforms. */
#define BYTE_ORDER BIG_ENDIAN
#elif !defined(vax) && !defined(ntohl) && !defined(lint) && !defined(i386)
/* 5.3 big endian. Copied this above line from sys/byteorder.h */
/* Now we are in a 5.3 SunOS rather non 5.4 or above SunOS */
#define BYTE_ORDER BIG_ENDIAN
#else
#define BYTE_ORDER LITTLE_ENDIAN
#endif
#endif /* !BYTE_ORDER */
#endif /* __sun */
#if defined(__hpux) || defined(__hppa)
#define BYTE_ORDER BIG_ENDIAN
#define BIG_ENDIAN 4321
#define LITTLE_ENDIAN 1234 /* LSB first: i386, vax, all NT risc */
#endif
#if defined(AIXV3) || defined(AIX)
/* BYTE_ORDER, LITTLE_ENDIAN, BIG_ENDIAN are all defined here */
#include <sys/machine.h>
#endif
/* Digital Unix */
#ifdef __osf__
#include <machine/endian.h>
#endif
#ifdef __alpha
#ifndef WIN32
#else
/* Alpha NT */
#define BYTE_ORDER LITTLE_ENDIAN
#define BIG_ENDIAN 4321
#define LITTLE_ENDIAN 1234
#endif
#endif
#ifdef NCR
#include <sys/endian.h>
#endif
#ifdef __QNX__
#ifdef __QNXNTO__
#include <sys/param.h>
#else
#define LITTLE_ENDIAN 1234
#define BIG_ENDIAN 4321
#define BYTE_ORDER LITTLE_ENDIAN
#endif
#endif
#ifdef SNI
/* #include <sys/hetero.h> */
#define BYTE_ORDER BIG_ENDIAN
#define BIG_ENDIAN 4321
#define LITTLE_ENDIAN 1234
#endif
#if defined(_WINDOWS) || defined(XP_OS2)
#ifdef BYTE_ORDER
#undef BYTE_ORDER
#endif
#define BYTE_ORDER LITTLE_ENDIAN
#define LITTLE_ENDIAN 1234 /* LSB first: i386, vax, all NT risc */
#define BIG_ENDIAN 4321
#endif
#ifdef macintosh
#define BIG_ENDIAN 4321
#define LITTLE_ENDIAN 1234
#define BYTE_ORDER BIG_ENDIAN
#endif
#endif /* __DBINTERFACE_PRIVATE */
#ifdef SCO
#define MAXPATHLEN 1024
#endif
#include <fcntl.h>
#if defined(_WINDOWS) || defined(XP_OS2)
#include <stdio.h>
#include <io.h>
#ifndef XP_OS2
#define MAXPATHLEN 1024
#endif
#define EFTYPE EINVAL /* POSIX 1003.1 format errno. */
#ifndef STDERR_FILENO
#define STDIN_FILENO 0 /* ANSI C #defines */
#define STDOUT_FILENO 1
#define STDERR_FILENO 2
#endif
#ifndef O_ACCMODE /* POSIX 1003.1 access mode mask. */
#define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR)
#endif
#endif
#ifdef macintosh
#include <stdio.h>
#include "xp_mcom.h"
#define O_ACCMODE 3 /* Mask for file access modes */
#define EFTYPE 2000
PR_BEGIN_EXTERN_C
int mkstemp(const char *path);
PR_END_EXTERN_C
#endif /* MACINTOSH */
#if !defined(_WINDOWS) && !defined(macintosh) && !defined(XP_OS2)
#include <sys/stat.h>
#include <errno.h>
#endif
/* define EFTYPE since most don't */
#ifndef EFTYPE
#define EFTYPE EINVAL /* POSIX 1003.1 format errno. */
#endif
#define RET_ERROR -1 /* Return values. */
#define RET_SUCCESS 0
#define RET_SPECIAL 1
#define MAX_PAGE_NUMBER 0xffffffff /* >= # of pages in a file */
#ifndef __sgi
typedef uint32 pgno_t;
#endif
#define MAX_PAGE_OFFSET 65535 /* >= # of bytes in a page */
typedef uint16 indx_t;
#define MAX_REC_NUMBER 0xffffffff /* >= # of records in a tree */
typedef uint32 recno_t;
/* Key/data structure -- a Data-Base Thang. */
typedef struct {
void *data; /* data */
size_t size; /* data length */
} DBT;
/* Routine flags. */
#define R_CURSOR 1 /* del, put, seq */
#define __R_UNUSED 2 /* UNUSED */
#define R_FIRST 3 /* seq */
#define R_IAFTER 4 /* put (RECNO) */
#define R_IBEFORE 5 /* put (RECNO) */
#define R_LAST 6 /* seq (BTREE, RECNO) */
#define R_NEXT 7 /* seq */
#define R_NOOVERWRITE 8 /* put */
#define R_PREV 9 /* seq (BTREE, RECNO) */
#define R_SETCURSOR 10 /* put (RECNO) */
#define R_RECNOSYNC 11 /* sync (RECNO) */
typedef enum { DB_BTREE, DB_HASH, DB_RECNO } DBTYPE;
typedef enum { LockOutDatabase, UnlockDatabase } DBLockFlagEnum;
/*
* !!!
* The following flags are included in the dbopen(3) call as part of the
* open(2) flags. In order to avoid conflicts with the open flags, start
* at the top of the 16 or 32-bit number space and work our way down. If
* the open flags were significantly expanded in the future, it could be
* a problem. Wish I'd left another flags word in the dbopen call.
*
* !!!
* None of this stuff is implemented yet. The only reason that it's here
* is so that the access methods can skip copying the key/data pair when
* the DB_LOCK flag isn't set.
*/
#if UINT_MAX > 65535
#define DB_LOCK 0x20000000 /* Do locking. */
#define DB_SHMEM 0x40000000 /* Use shared memory. */
#define DB_TXN 0x80000000 /* Do transactions. */
#else
#define DB_LOCK 0x2000 /* Do locking. */
#define DB_SHMEM 0x4000 /* Use shared memory. */
#define DB_TXN 0x8000 /* Do transactions. */
#endif
/* Access method description structure. */
typedef struct __db {
DBTYPE type; /* Underlying db type. */
int (*close) (struct __db *);
int (*del) (const struct __db *, const DBT *, uint);
int (*get) (const struct __db *, const DBT *, DBT *, uint);
int (*put) (const struct __db *, DBT *, const DBT *, uint);
int (*seq) (const struct __db *, DBT *, DBT *, uint);
int (*sync) (const struct __db *, uint);
void *internal; /* Access method private. */
int (*fd) (const struct __db *);
} DB;
#define BTREEMAGIC 0x053162
#define BTREEVERSION 3
/* Structure used to pass parameters to the btree routines. */
typedef struct {
#define R_DUP 0x01 /* duplicate keys */
uint32 flags;
uint cachesize; /* bytes to cache */
int maxkeypage; /* maximum keys per page */
int minkeypage; /* minimum keys per page */
uint psize; /* page size */
int (*compare) /* comparison function */
(const DBT *, const DBT *);
size_t (*prefix) /* prefix function */
(const DBT *, const DBT *);
int lorder; /* byte order */
} BTREEINFO;
#define HASHMAGIC 0x061561
#define HASHVERSION 2
/* Structure used to pass parameters to the hashing routines. */
typedef struct {
uint bsize; /* bucket size */
uint ffactor; /* fill factor */
uint nelem; /* number of elements */
uint cachesize; /* bytes to cache */
uint32 /* hash function */
(*hash) (const void *, size_t);
int lorder; /* byte order */
} HASHINFO;
/* Structure used to pass parameters to the record routines. */
typedef struct {
#define R_FIXEDLEN 0x01 /* fixed-length records */
#define R_NOKEY 0x02 /* key not required */
#define R_SNAPSHOT 0x04 /* snapshot the input */
uint32 flags;
uint cachesize; /* bytes to cache */
uint psize; /* page size */
int lorder; /* byte order */
size_t reclen; /* record length (fixed-length records) */
uint8 bval; /* delimiting byte (variable-length records */
char *bfname; /* btree file name */
} RECNOINFO;
#ifdef __DBINTERFACE_PRIVATE
/*
* Little endian <==> big endian 32-bit swap macros.
* M_32_SWAP swap a memory location
* P_32_SWAP swap a referenced memory location
* P_32_COPY swap from one location to another
*/
#define M_32_SWAP(a) { \
uint32 _tmp = a; \
((char *)&a)[0] = ((char *)&_tmp)[3]; \
((char *)&a)[1] = ((char *)&_tmp)[2]; \
((char *)&a)[2] = ((char *)&_tmp)[1]; \
((char *)&a)[3] = ((char *)&_tmp)[0]; \
}
#define P_32_SWAP(a) { \
uint32 _tmp = *(uint32 *)a; \
((char *)a)[0] = ((char *)&_tmp)[3]; \
((char *)a)[1] = ((char *)&_tmp)[2]; \
((char *)a)[2] = ((char *)&_tmp)[1]; \
((char *)a)[3] = ((char *)&_tmp)[0]; \
}
#define P_32_COPY(a, b) { \
((char *)&(b))[0] = ((char *)&(a))[3]; \
((char *)&(b))[1] = ((char *)&(a))[2]; \
((char *)&(b))[2] = ((char *)&(a))[1]; \
((char *)&(b))[3] = ((char *)&(a))[0]; \
}
/*
* Little endian <==> big endian 16-bit swap macros.
* M_16_SWAP swap a memory location
* P_16_SWAP swap a referenced memory location
* P_16_COPY swap from one location to another
*/
#define M_16_SWAP(a) { \
uint16 _tmp = a; \
((char *)&a)[0] = ((char *)&_tmp)[1]; \
((char *)&a)[1] = ((char *)&_tmp)[0]; \
}
#define P_16_SWAP(a) { \
uint16 _tmp = *(uint16 *)a; \
((char *)a)[0] = ((char *)&_tmp)[1]; \
((char *)a)[1] = ((char *)&_tmp)[0]; \
}
#define P_16_COPY(a, b) { \
((char *)&(b))[0] = ((char *)&(a))[1]; \
((char *)&(b))[1] = ((char *)&(a))[0]; \
}
#endif
PR_BEGIN_EXTERN_C
#if defined(__WATCOMC__) || defined(__WATCOM_CPLUSPLUS__)
extern DB *
#else
PR_EXTERN(DB *)
#endif
dbopen (const char *, int, int, DBTYPE, const void *);
/* set or unset a global lock flag to disable the
* opening of any DBM file
*/
void dbSetOrClearDBLock(DBLockFlagEnum type);
#ifdef __DBINTERFACE_PRIVATE
DB *__bt_open (const char *, int, int, const BTREEINFO *, int);
DB *__hash_open (const char *, int, int, const HASHINFO *, int);
DB *__rec_open (const char *, int, int, const RECNOINFO *, int);
void __dbpanic (DB *dbp);
#endif
PR_END_EXTERN_C
#endif /* !_DB_H_ */

View File

@@ -1,99 +0,0 @@
/*-
* Copyright (c) 1991, 1993, 1994
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)mpool.h 8.2 (Berkeley) 7/14/94
*/
#include <sys/queue.h>
/*
* The memory pool scheme is a simple one. Each in-memory page is referenced
* by a bucket which is threaded in up to two of three ways. All active pages
* are threaded on a hash chain (hashed by page number) and an lru chain.
* Inactive pages are threaded on a free chain. Each reference to a memory
* pool is handed an opaque MPOOL cookie which stores all of this information.
*/
#define HASHSIZE 128
#define HASHKEY(pgno) ((pgno - 1) % HASHSIZE)
/* The BKT structures are the elements of the queues. */
typedef struct _bkt {
CIRCLEQ_ENTRY(_bkt) hq; /* hash queue */
CIRCLEQ_ENTRY(_bkt) q; /* lru queue */
void *page; /* page */
pgno_t pgno; /* page number */
#define MPOOL_DIRTY 0x01 /* page needs to be written */
#define MPOOL_PINNED 0x02 /* page is pinned into memory */
uint8 flags; /* flags */
} BKT;
typedef struct MPOOL {
CIRCLEQ_HEAD(_lqh, _bkt) lqh; /* lru queue head */
/* hash queue array */
CIRCLEQ_HEAD(_hqh, _bkt) hqh[HASHSIZE];
pgno_t curcache; /* current number of cached pages */
pgno_t maxcache; /* max number of cached pages */
pgno_t npages; /* number of pages in the file */
uint32 pagesize; /* file page size */
int fd; /* file descriptor */
/* page in conversion routine */
void (*pgin) (void *, pgno_t, void *);
/* page out conversion routine */
void (*pgout) (void *, pgno_t, void *);
void *pgcookie; /* cookie for page in/out routines */
#ifdef STATISTICS
uint32 cachehit;
uint32 cachemiss;
uint32 pagealloc;
uint32 pageflush;
uint32 pageget;
uint32 pagenew;
uint32 pageput;
uint32 pageread;
uint32 pagewrite;
#endif
} MPOOL;
__BEGIN_DECLS
MPOOL *mpool_open (void *, int, pgno_t, pgno_t);
void mpool_filter (MPOOL *, void (*)(void *, pgno_t, void *),
void (*)(void *, pgno_t, void *), void *);
void *mpool_new (MPOOL *, pgno_t *);
void *mpool_get (MPOOL *, pgno_t, uint);
int mpool_put (MPOOL *, void *, uint);
int mpool_sync (MPOOL *);
int mpool_close (MPOOL *);
#ifdef STATISTICS
void mpool_stat (MPOOL *);
#endif
__END_DECLS

View File

@@ -1,232 +0,0 @@
/*-
* Copyright (c) 1991, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)compat.h 8.13 (Berkeley) 2/21/94
*/
#ifndef _COMPAT_H_
#define _COMPAT_H_
#include <sys/types.h>
/*
* If your system doesn't typedef u_long, u_short, or u_char, change
* the 0 to a 1.
*/
#if 0
typedef unsigned char u_char; /* 4.[34]BSD names. */
typedef unsigned int u_int;
typedef unsigned long u_long;
typedef unsigned short u_short;
#endif
/* If your system doesn't typedef size_t, change the 0 to a 1. */
#if 0
typedef unsigned int size_t; /* POSIX, 4.[34]BSD names. */
#endif
/* If your system doesn't typedef ssize_t, change the 0 to a 1. */
#if 0
typedef int ssize_t; /* POSIX names. */
#endif
/*
* If your system doesn't have the POSIX type for a signal mask,
* change the 0 to a 1.
*/
#if 0 /* POSIX 1003.1 signal mask type. */
typedef unsigned int sigset_t;
#endif
/*
* If your system's vsprintf returns a char *, not an int,
* change the 0 to a 1.
*/
#if defined (__sun) && !defined(__SVR4) /* SUNOS */
#define VSPRINTF_CHARSTAR
#endif
/*
* If you don't have POSIX 1003.1 signals, the signal code surrounding the
* temporary file creation is intended to block all of the possible signals
* long enough to create the file and unlink it. All of this stuff is
* intended to use old-style BSD calls to fake POSIX 1003.1 calls.
*/
#ifdef NO_POSIX_SIGNALS
#define sigemptyset(set) (*(set) = 0)
#define sigfillset(set) (*(set) = ~(sigset_t)0, 0)
#define sigaddset(set,signo) (*(set) |= sigmask(signo), 0)
#define sigdelset(set,signo) (*(set) &= ~sigmask(signo), 0)
#define sigismember(set,signo) ((*(set) & sigmask(signo)) != 0)
#define SIG_BLOCK 1
#define SIG_UNBLOCK 2
#define SIG_SETMASK 3
static int __sigtemp; /* For the use of sigprocmask */
/* Repeated test of oset != NULL is to avoid "*0". */
#define sigprocmask(how, set, oset) \
((__sigtemp = \
(((how) == SIG_BLOCK) ? \
sigblock(0) | *(set) : \
(((how) == SIG_UNBLOCK) ? \
sigblock(0) & ~(*(set)) : \
((how) == SIG_SETMASK ? \
*(set) : sigblock(0))))), \
((oset) ? (*(oset ? oset : set) = sigsetmask(__sigtemp)) : \
sigsetmask(__sigtemp)), 0)
#endif
/*
* If your system doesn't have an include file with the appropriate
* byte order set, make sure you specify the correct one.
*/
#ifndef BYTE_ORDER
#define LITTLE_ENDIAN 1234 /* LSB first: i386, vax */
#define BIG_ENDIAN 4321 /* MSB first: 68000, ibm, net */
#define BYTE_ORDER BIG_ENDIAN /* Set for your system. */
#endif
#if defined(SYSV) || defined(SYSTEM5) || defined(__sun)
#define index(a, b) strchr(a, b)
#define rindex(a, b) strrchr(a, b)
#define bzero(a, b) memset(a, 0, b)
#define bcmp(a, b, n) memcmp(a, b, n)
#define bcopy(a, b, n) memmove(b, a, n)
#endif
#if defined(BSD) || defined(BSD4_3)
#define strchr(a, b) index(a, b)
#define strrchr(a, b) rindex(a, b)
#define memcmp(a, b, n) bcmp(a, b, n)
#define memmove(a, b, n) bcopy(b, a, n)
#endif
/*
* 32-bit machine. The db routines are theoretically independent of
* the size of u_shorts and u_longs, but I don't know that anyone has
* ever actually tried it. At a minimum, change the following #define's
* if you are trying to compile on a different type of system.
*/
#ifndef USHRT_MAX
#define USHRT_MAX 0xFFFF
#define ULONG_MAX 0xFFFFFFFF
#endif
#ifndef O_ACCMODE /* POSIX 1003.1 access mode mask. */
#define O_ACCMODE (O_RDONLY|O_WRONLY|O_RDWR)
#endif
#ifndef _POSIX2_RE_DUP_MAX /* POSIX 1003.2 RE limit. */
#define _POSIX2_RE_DUP_MAX 255
#endif
/*
* If you can't provide lock values in the open(2) call. Note, this
* allows races to happen.
*/
#ifndef O_EXLOCK /* 4.4BSD extension. */
#define O_EXLOCK 0
#endif
#ifndef O_SHLOCK /* 4.4BSD extension. */
#define O_SHLOCK 0
#endif
#ifndef EFTYPE
#define EFTYPE EINVAL /* POSIX 1003.1 format errno. */
#endif
#ifndef WCOREDUMP /* 4.4BSD extension */
#define WCOREDUMP(a) 0
#endif
#ifndef STDERR_FILENO
#define STDIN_FILENO 0 /* ANSI C #defines */
#define STDOUT_FILENO 1
#define STDERR_FILENO 2
#endif
#ifndef SEEK_END
#define SEEK_SET 0 /* POSIX 1003.1 seek values */
#define SEEK_CUR 1
#define SEEK_END 2
#endif
#ifndef _POSIX_VDISABLE /* POSIX 1003.1 disabling char. */
#define _POSIX_VDISABLE 0 /* Some systems used 0. */
#endif
#ifndef TCSASOFT /* 4.4BSD extension. */
#define TCSASOFT 0
#endif
#ifndef _POSIX2_RE_DUP_MAX /* POSIX 1003.2 values. */
#define _POSIX2_RE_DUP_MAX 255
#endif
#ifndef NULL /* ANSI C #defines NULL everywhere. */
#define NULL 0
#endif
#ifndef MAX /* Usually found in <sys/param.h>. */
#define MAX(_a,_b) ((_a)<(_b)?(_b):(_a))
#endif
#ifndef MIN /* Usually found in <sys/param.h>. */
#define MIN(_a,_b) ((_a)<(_b)?(_a):(_b))
#endif
/* Default file permissions. */
#ifndef DEFFILEMODE /* 4.4BSD extension. */
#define DEFFILEMODE (S_IRUSR|S_IWUSR|S_IRGRP|S_IWGRP|S_IROTH|S_IWOTH)
#endif
#ifndef __sun
#ifndef S_ISDIR /* POSIX 1003.1 file type tests. */
#define S_ISDIR(m) ((m & 0170000) == 0040000) /* directory */
#define S_ISCHR(m) ((m & 0170000) == 0020000) /* char special */
#define S_ISBLK(m) ((m & 0170000) == 0060000) /* block special */
#define S_ISREG(m) ((m & 0170000) == 0100000) /* regular file */
#define S_ISFIFO(m) ((m & 0170000) == 0010000) /* fifo */
#endif
#ifndef S_ISLNK /* BSD POSIX 1003.1 extensions */
#define S_ISLNK(m) ((m & 0170000) == 0120000) /* symbolic link */
#define S_ISSOCK(m) ((m & 0170000) == 0140000) /* socket */
#endif
#endif /* __sun */
/* The type of a va_list. */
#ifndef _BSD_VA_LIST_ /* 4.4BSD #define. */
#define _BSD_VA_LIST_ char *
#endif
#endif /* !_COMPAT_H_ */

View File

@@ -1,77 +0,0 @@
/*-
* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Margo Seltzer.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)ndbm.h 8.1 (Berkeley) 6/2/93
*/
#ifndef _NDBM_H_
#define _NDBM_H_
#include "mcom_db.h"
/* Map dbm interface onto db(3). */
#define DBM_RDONLY O_RDONLY
/* Flags to dbm_store(). */
#define DBM_INSERT 0
#define DBM_REPLACE 1
/*
* The db(3) support for ndbm(3) always appends this suffix to the
* file name to avoid overwriting the user's original database.
*/
#define DBM_SUFFIX ".db"
typedef struct {
char *dptr;
int dsize;
} datum;
typedef DB DBM;
#define dbm_pagfno(a) DBM_PAGFNO_NOT_AVAILABLE
__BEGIN_DECLS
void dbm_close (DBM *);
int dbm_delete (DBM *, datum);
datum dbm_fetch (DBM *, datum);
datum dbm_firstkey (DBM *);
long dbm_forder (DBM *, datum);
datum dbm_nextkey (DBM *);
DBM *dbm_open (const char *, int, int);
int dbm_store (DBM *, datum, datum, int);
int dbm_dirfno (DBM *);
__END_DECLS
#endif /* !_NDBM_H_ */

View File

@@ -1,41 +0,0 @@
#ifndef NSRES_H
#define NSRES_H
#include "mcom_db.h"
__BEGIN_DECLS
/* C version */
#define NSRESHANDLE void *
typedef void (*NSRESTHREADFUNC)(void *);
typedef struct NSRESTHREADINFO
{
void *lock;
NSRESTHREADFUNC fn_lock;
NSRESTHREADFUNC fn_unlock;
} NSRESTHREADINFO;
#define MAXBUFNUM 10
#define MAXSTRINGLEN 300
#define NSRES_CREATE 1
#define NSRES_OPEN 2
NSRESHANDLE NSResCreateTable(const char *filename, NSRESTHREADINFO *threadinfo);
NSRESHANDLE NSResOpenTable(const char *filename, NSRESTHREADINFO *threadinfo);
void NSResCloseTable(NSRESHANDLE handle);
char *NSResLoadString(NSRESHANDLE handle, const char * library, int32 id,
unsigned int charsetid, char *retbuf);
int32 NSResGetSize(NSRESHANDLE handle, const char *library, int32 id);
int32 NSResLoadResource(NSRESHANDLE handle, const char *library, int32 id, char *retbuf);
int NSResAddString(NSRESHANDLE handle, const char *library, int32 id, const char *string, unsigned int charset);
__END_DECLS
#endif

View File

@@ -1,96 +0,0 @@
/*-
* Copyright (c) 1990, 1993, 1994
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Margo Seltzer.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)page.h 8.2 (Berkeley) 5/31/94
*/
/*
* Definitions for hashing page file format.
*/
/*
* routines dealing with a data page
*
* page format:
* +------------------------------+
* p | n | keyoff | datoff | keyoff |
* +------------+--------+--------+
* | datoff | free | ptr | --> |
* +--------+---------------------+
* | F R E E A R E A |
* +--------------+---------------+
* | <---- - - - | data |
* +--------+-----+----+----------+
* | key | data | key |
* +--------+----------+----------+
*
* Pointer to the free space is always: p[p[0] + 2]
* Amount of free space on the page is: p[p[0] + 1]
*/
/*
* How many bytes required for this pair?
* 2 shorts in the table at the top of the page + room for the
* key and room for the data
*
* We prohibit entering a pair on a page unless there is also room to append
* an overflow page. The reason for this it that you can get in a situation
* where a single key/data pair fits on a page, but you can't append an
* overflow page and later you'd have to split the key/data and handle like
* a big pair.
* You might as well do this up front.
*/
#ifndef PAGE_H
#define PAGE_H
#define PAIRSIZE(K,D) (2*sizeof(uint16) + (K)->size + (D)->size)
#define BIGOVERHEAD (4*sizeof(uint16))
#define KEYSIZE(K) (4*sizeof(uint16) + (K)->size);
#define OVFLSIZE (2*sizeof(uint16))
#define FREESPACE(P) ((P)[(P)[0]+1])
#define OFFSET(P) ((P)[(P)[0]+2])
#define PAIRFITS(P,K,D) \
(((P)[2] >= REAL_KEY) && \
(PAIRSIZE((K),(D)) + OVFLSIZE) <= FREESPACE((P)))
#define PAGE_META(N) (((N)+3) * sizeof(uint16))
typedef struct {
BUFHEAD *newp;
BUFHEAD *oldp;
BUFHEAD *nextp;
uint16 next_addr;
} SPLIT_RETURN;
#endif

View File

@@ -1,245 +0,0 @@
/*
* Copyright (c) 1991, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)queue.h 8.3 (Berkeley) 12/13/93
*/
#ifndef _QUEUE_H_
#define _QUEUE_H_
/*
* This file defines three types of data structures: lists, tail queues,
* and circular queues.
*
* A list is headed by a single forward pointer (or an array of forward
* pointers for a hash table header). The elements are doubly linked
* so that an arbitrary element can be removed without a need to
* traverse the list. New elements can be added to the list after
* an existing element or at the head of the list. A list may only be
* traversed in the forward direction.
*
* A tail queue is headed by a pair of pointers, one to the head of the
* list and the other to the tail of the list. The elements are doubly
* linked so that an arbitrary element can be removed without a need to
* traverse the list. New elements can be added to the list after
* an existing element, at the head of the list, or at the end of the
* list. A tail queue may only be traversed in the forward direction.
*
* A circle queue is headed by a pair of pointers, one to the head of the
* list and the other to the tail of the list. The elements are doubly
* linked so that an arbitrary element can be removed without a need to
* traverse the list. New elements can be added to the list before or after
* an existing element, at the head of the list, or at the end of the list.
* A circle queue may be traversed in either direction, but has a more
* complex end of list detection.
*
* For details on the use of these macros, see the queue(3) manual page.
*/
/*
* List definitions.
*/
#define LIST_HEAD(name, type) \
struct name { \
struct type *lh_first; /* first element */ \
}
#define LIST_ENTRY(type) \
struct { \
struct type *le_next; /* next element */ \
struct type **le_prev; /* address of previous next element */ \
}
/*
* List functions.
*/
#define LIST_INIT(head) { \
(head)->lh_first = NULL; \
}
#define LIST_INSERT_AFTER(listelm, elm, field) { \
if (((elm)->field.le_next = (listelm)->field.le_next) != NULL) \
(listelm)->field.le_next->field.le_prev = \
&(elm)->field.le_next; \
(listelm)->field.le_next = (elm); \
(elm)->field.le_prev = &(listelm)->field.le_next; \
}
#define LIST_INSERT_HEAD(head, elm, field) { \
if (((elm)->field.le_next = (head)->lh_first) != NULL) \
(head)->lh_first->field.le_prev = &(elm)->field.le_next;\
(head)->lh_first = (elm); \
(elm)->field.le_prev = &(head)->lh_first; \
}
#define LIST_REMOVE(elm, field) { \
if ((elm)->field.le_next != NULL) \
(elm)->field.le_next->field.le_prev = \
(elm)->field.le_prev; \
*(elm)->field.le_prev = (elm)->field.le_next; \
}
/*
* Tail queue definitions.
*/
#define TAILQ_HEAD(name, type) \
struct name { \
struct type *tqh_first; /* first element */ \
struct type **tqh_last; /* addr of last next element */ \
}
#define TAILQ_ENTRY(type) \
struct { \
struct type *tqe_next; /* next element */ \
struct type **tqe_prev; /* address of previous next element */ \
}
/*
* Tail queue functions.
*/
#define TAILQ_INIT(head) { \
(head)->tqh_first = NULL; \
(head)->tqh_last = &(head)->tqh_first; \
}
#define TAILQ_INSERT_HEAD(head, elm, field) { \
if (((elm)->field.tqe_next = (head)->tqh_first) != NULL) \
(elm)->field.tqe_next->field.tqe_prev = \
&(elm)->field.tqe_next; \
else \
(head)->tqh_last = &(elm)->field.tqe_next; \
(head)->tqh_first = (elm); \
(elm)->field.tqe_prev = &(head)->tqh_first; \
}
#define TAILQ_INSERT_TAIL(head, elm, field) { \
(elm)->field.tqe_next = NULL; \
(elm)->field.tqe_prev = (head)->tqh_last; \
*(head)->tqh_last = (elm); \
(head)->tqh_last = &(elm)->field.tqe_next; \
}
#define TAILQ_INSERT_AFTER(head, listelm, elm, field) { \
if (((elm)->field.tqe_next = (listelm)->field.tqe_next) != NULL)\
(elm)->field.tqe_next->field.tqe_prev = \
&(elm)->field.tqe_next; \
else \
(head)->tqh_last = &(elm)->field.tqe_next; \
(listelm)->field.tqe_next = (elm); \
(elm)->field.tqe_prev = &(listelm)->field.tqe_next; \
}
#define TAILQ_REMOVE(head, elm, field) { \
if (((elm)->field.tqe_next) != NULL) \
(elm)->field.tqe_next->field.tqe_prev = \
(elm)->field.tqe_prev; \
else \
(head)->tqh_last = (elm)->field.tqe_prev; \
*(elm)->field.tqe_prev = (elm)->field.tqe_next; \
}
/*
* Circular queue definitions.
*/
#define CIRCLEQ_HEAD(name, type) \
struct name { \
struct type *cqh_first; /* first element */ \
struct type *cqh_last; /* last element */ \
}
#define CIRCLEQ_ENTRY(type) \
struct { \
struct type *cqe_next; /* next element */ \
struct type *cqe_prev; /* previous element */ \
}
/*
* Circular queue functions.
*/
#define CIRCLEQ_INIT(head) { \
(head)->cqh_first = (void *)(head); \
(head)->cqh_last = (void *)(head); \
}
#define CIRCLEQ_INSERT_AFTER(head, listelm, elm, field) { \
(elm)->field.cqe_next = (listelm)->field.cqe_next; \
(elm)->field.cqe_prev = (listelm); \
if ((listelm)->field.cqe_next == (void *)(head)) \
(head)->cqh_last = (elm); \
else \
(listelm)->field.cqe_next->field.cqe_prev = (elm); \
(listelm)->field.cqe_next = (elm); \
}
#define CIRCLEQ_INSERT_BEFORE(head, listelm, elm, field) { \
(elm)->field.cqe_next = (listelm); \
(elm)->field.cqe_prev = (listelm)->field.cqe_prev; \
if ((listelm)->field.cqe_prev == (void *)(head)) \
(head)->cqh_first = (elm); \
else \
(listelm)->field.cqe_prev->field.cqe_next = (elm); \
(listelm)->field.cqe_prev = (elm); \
}
#define CIRCLEQ_INSERT_HEAD(head, elm, field) { \
(elm)->field.cqe_next = (head)->cqh_first; \
(elm)->field.cqe_prev = (void *)(head); \
if ((head)->cqh_last == (void *)(head)) \
(head)->cqh_last = (elm); \
else \
(head)->cqh_first->field.cqe_prev = (elm); \
(head)->cqh_first = (elm); \
}
#define CIRCLEQ_INSERT_TAIL(head, elm, field) { \
(elm)->field.cqe_next = (void *)(head); \
(elm)->field.cqe_prev = (head)->cqh_last; \
if ((head)->cqh_first == (void *)(head)) \
(head)->cqh_first = (elm); \
else \
(head)->cqh_last->field.cqe_next = (elm); \
(head)->cqh_last = (elm); \
}
#define CIRCLEQ_REMOVE(head, elm, field) { \
if ((elm)->field.cqe_next == (void *)(head)) \
(head)->cqh_last = (elm)->field.cqe_prev; \
else \
(elm)->field.cqe_next->field.cqe_prev = \
(elm)->field.cqe_prev; \
if ((elm)->field.cqe_prev == (void *)(head)) \
(head)->cqh_first = (elm)->field.cqe_next; \
else \
(elm)->field.cqe_prev->field.cqe_next = \
(elm)->field.cqe_next; \
}
#endif /* !_QUEUE_H_ */

View File

@@ -1,51 +0,0 @@
/*-
* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Margo Seltzer.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)search.h 8.1 (Berkeley) 6/4/93
*/
/* Backward compatibility to hsearch interface. */
typedef struct entry {
char *key;
char *data;
} ENTRY;
typedef enum {
FIND, ENTER
} ACTION;
int hcreate (unsigned int);
void hdestroy (void);
ENTRY *hsearch (ENTRY, ACTION);

View File

@@ -1,26 +0,0 @@
#if defined(__WATCOMC__) || defined(__WATCOM_CPLUSPLUS__)
#ifndef __WATCOM_FIX_H__
#define __WATCOM_FIX_H__ 1
/*
* WATCOM's C compiler doesn't default to "__cdecl" conventions for external
* symbols and functions. Rather than adding an explicit __cdecl modifier to
* every external symbol and function declaration and definition, we use the
* following pragma to (attempt to) change WATCOM c's default to __cdecl.
* These pragmas were taken from pages 180-181, 266 & 269 of the
* Watcom C/C++ version 11 User's Guide, 3rd edition.
*/
#if defined(XP_WIN16) || defined(WIN16)
#pragma aux default "_*" \
parm caller [] \
value struct float struct routine [ax] \
modify [ax bx cx dx es]
#else
#pragma aux default "_*" \
parm caller [] \
value struct float struct routine [eax] \
modify [eax ecx edx]
#endif
#pragma aux default far
#endif /* once */
#endif /* WATCOM compiler */

View File

@@ -1,106 +0,0 @@
/* ---------------------------------------------------------------------------
Stuff to fake unix file I/O on windows boxes
------------------------------------------------------------------------*/
#ifndef WINFILE_H
#define WINFILE_H
#ifdef _WINDOWS
/* hacked out of <dirent.h> on an SGI */
#if defined(XP_WIN32) || defined(_WIN32)
/* 32-bit stuff here */
#include <windows.h>
#include <stdlib.h>
#ifdef __MINGW32__
#include <sys/types.h>
#include <sys/stat.h>
#else
#include <sys\types.h>
#include <sys\stat.h>
#endif
typedef struct DIR_Struct {
void * directoryPtr;
WIN32_FIND_DATA data;
} DIR;
#define _ST_FSTYPSZ 16
#if !defined(__BORLANDC__) && !defined(__GNUC__)
typedef unsigned long mode_t;
typedef long uid_t;
typedef long gid_t;
typedef long off_t;
typedef unsigned long nlink_t;
#endif
typedef struct timestruc {
time_t tv_sec; /* seconds */
long tv_nsec; /* and nanoseconds */
} timestruc_t;
struct dirent { /* data from readdir() */
ino_t d_ino; /* inode number of entry */
off_t d_off; /* offset of disk direntory entry */
unsigned short d_reclen; /* length of this record */
char d_name[_MAX_FNAME]; /* name of file */
};
#if !defined(__BORLANDC__) && !defined (__GNUC__)
#define S_ISDIR(s) ((s) & _S_IFDIR)
#endif
#else /* _WIN32 */
/* 16-bit windows stuff */
#include <sys\types.h>
#include <sys\stat.h>
#include <dos.h>
/* Getting cocky to support multiple file systems */
typedef struct dirStruct_tag {
struct _find_t file_data;
char c_checkdrive;
} dirStruct;
typedef struct DIR_Struct {
void * directoryPtr;
dirStruct data;
} DIR;
#define _ST_FSTYPSZ 16
typedef unsigned long mode_t;
typedef long uid_t;
typedef long gid_t;
typedef long off_t;
typedef unsigned long nlink_t;
typedef struct timestruc {
time_t tv_sec; /* seconds */
long tv_nsec; /* and nanoseconds */
} timestruc_t;
struct dirent { /* data from readdir() */
ino_t d_ino; /* inode number of entry */
off_t d_off; /* offset of disk direntory entry */
unsigned short d_reclen; /* length of this record */
#ifdef XP_WIN32
char d_name[_MAX_FNAME]; /* name of file */
#else
char d_name[20]; /* name of file */
#endif
};
#define S_ISDIR(s) ((s) & _S_IFDIR)
#endif /* 16-bit windows */
#define CONST const
#endif /* _WINDOWS */
#endif /* WINFILE_H */

View File

@@ -1,33 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*/
//
// DBM.Prefix
//
// Global prefix file for the non-debug DBM project.
//
//
#include "MacPrefix.h"
#include "DBMConfig.h"

File diff suppressed because it is too large Load Diff

View File

@@ -1,23 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*/
#define __DBINTERFACE_PRIVATE 1

View File

@@ -1,32 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s):
*/
//
// DBMDebug.Prefix
//
// Global prefix file for the debug DBM project.
//
//
#include "MacPrefix_debug.h"
#include "DBMConfig.h"

View File

@@ -1,8 +0,0 @@
// Hack to define a never-called routine from libdbm
#include "mcom_db.h"
int mkstemp(const char* /*path*/)
{
return -1;
}

View File

@@ -1,38 +0,0 @@
# The contents of this file are subject to the Netscape Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/NPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is mozilla.org code.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
DEPTH=..
#//------------------------------------------------------------------------
#//
#// Specify any "command" targets. (ie. DIRS, INSTALL_FILES, ...)
#// (these must come before the common makefiles are included)
#//
#// DIRS - There are subdirectories to process
#//
#//------------------------------------------------------------------------
DIRS = include src
#//------------------------------------------------------------------------
#//
#// Include the common makefile rules
#//
#//------------------------------------------------------------------------
include <$(DEPTH)\config\rules.mak>

View File

@@ -1,77 +0,0 @@
#
# The contents of this file are subject to the Netscape Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/NPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is mozilla.org code.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
#
DEPTH = ../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
LIBRARY_NAME = mozdbm_s
LIB_IS_C_ONLY = 1
ifeq ($(OS_ARCH),WINNT)
LIBRARY_NAME = dbm$(MOZ_BITS)
endif
CSRCS = \
db.c \
h_bigkey.c \
h_func.c \
h_log2.c \
h_page.c \
hash.c \
hash_buf.c \
hsearch.c \
mktemp.c \
ndbm.c \
strerror.c \
nsres.c \
$(NULL)
ifeq ($(OS_ARCH),WINNT)
CSRCS += memmove.c snprintf.c
else
ifeq (,$(filter -DHAVE_MEMMOVE=1,$(DEFS)))
CSRCS += memmove.c
endif
ifeq (,$(filter -DHAVE_SNPRINTF=1,$(DEFS)))
CSRCS += snprintf.c
endif
endif # WINNT
LOCAL_INCLUDES = -I$(srcdir)/../include
FORCE_STATIC_LIB = 1
include $(topsrcdir)/config/rules.mk
DEFINES += -DMEMMOVE -D__DBINTERFACE_PRIVATE $(SECURITY_FLAG)
ifeq ($(OS_ARCH), Linux)
DEFINES += -D_BSD_SOURCE
endif
ifeq ($(OS_ARCH),AIX)
OS_LIBS += -lc_r
endif

View File

@@ -1,96 +0,0 @@
# The contents of this file are subject to the Netscape Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/NPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is mozilla.org code.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
#//------------------------------------------------------------------------
#//
#// Makefile to build the cert library
#//
#//------------------------------------------------------------------------
!if "$(MOZ_BITS)" == "16"
!ifndef MOZ_DEBUG
OPTIMIZER=-Os -UDEBUG -DNDEBUG
!endif
!endif
#//------------------------------------------------------------------------
#//
#// Specify the depth of the current directory relative to the
#// root of NS
#//
#//------------------------------------------------------------------------
DEPTH= ..\..
!ifndef MAKE_OBJ_TYPE
MAKE_OBJ_TYPE=EXE
!endif
#//------------------------------------------------------------------------
#//
#// Define any Public Make Variables here: (ie. PDFFILE, MAPFILE, ...)
#//
#//------------------------------------------------------------------------
LIBNAME=dbm$(MOZ_BITS)
PDBFILE=$(LIBNAME).pdb
#//------------------------------------------------------------------------
#//
#// Define the files necessary to build the target (ie. OBJS)
#//
#//------------------------------------------------------------------------
OBJS= \
.\$(OBJDIR)\db.obj \
.\$(OBJDIR)\h_bigkey.obj \
.\$(OBJDIR)\h_func.obj \
.\$(OBJDIR)\h_log2.obj \
.\$(OBJDIR)\h_page.obj \
.\$(OBJDIR)\hash.obj \
.\$(OBJDIR)\hash_buf.obj \
.\$(OBJDIR)\hsearch.obj \
.\$(OBJDIR)\memmove.obj \
.\$(OBJDIR)\mktemp.obj \
.\$(OBJDIR)\ndbm.obj \
.\$(OBJDIR)\snprintf.obj \
.\$(OBJDIR)\strerror.obj \
.\$(OBJDIR)\nsres.obj \
$(NULL)
#//------------------------------------------------------------------------
#//
#// Define any Public Targets here (ie. PROGRAM, LIBRARY, DLL, ...)
#// (these must be defined before the common makefiles are included)
#//
#//------------------------------------------------------------------------
LIBRARY = .\$(OBJDIR)\$(LIBNAME).lib
LINCS = -I..\include
#//------------------------------------------------------------------------
#//
#// Include the common makefile rules
#//
#//------------------------------------------------------------------------
include <$(DEPTH)/config/rules.mak>
CFLAGS = $(CFLAGS) -DMOZILLA_CLIENT -D__DBINTERFACE_PRIVATE
install:: $(LIBRARY)
$(MAKE_INSTALL) $(LIBRARY) $(DIST)\lib

View File

@@ -1,144 +0,0 @@
/*-
* Copyright (c) 1991, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)db.c 8.4 (Berkeley) 2/21/94";
#endif /* LIBC_SCCS and not lint */
#include "watcomfx.h"
#ifndef __DBINTERFACE_PRIVATE
#define __DBINTERFACE_PRIVATE
#endif
#ifdef macintosh
#include <unix.h>
#else
#include <sys/types.h>
#endif
#include <errno.h>
#include <fcntl.h>
#include <stddef.h>
#include <stdio.h>
#include "mcom_db.h"
/* a global flag that locks closed all databases */
int all_databases_locked_closed = 0;
/* set or unset a global lock flag to disable the
* opening of any DBM file
*/
void
dbSetOrClearDBLock(DBLockFlagEnum type)
{
if(type == LockOutDatabase)
all_databases_locked_closed = 1;
else
all_databases_locked_closed = 0;
}
#if defined(__WATCOMC__) || defined(__WATCOM_CPLUSPLUS__)
DB *
#else
PR_IMPLEMENT(DB *)
#endif
dbopen(const char *fname, int flags,int mode, DBTYPE type, const void *openinfo)
{
/* lock out all file databases. Let in-memory databases through
*/
if(all_databases_locked_closed && fname)
{
errno = EINVAL;
return(NULL);
}
#define DB_FLAGS (DB_LOCK | DB_SHMEM | DB_TXN)
#if 0 /* most systems dont have EXLOCK and SHLOCK */
#define USE_OPEN_FLAGS \
(O_CREAT | O_EXCL | O_EXLOCK | O_NONBLOCK | O_RDONLY | \
O_RDWR | O_SHLOCK | O_TRUNC)
#else
#define USE_OPEN_FLAGS \
(O_CREAT | O_EXCL | O_RDONLY | \
O_RDWR | O_TRUNC)
#endif
if ((flags & ~(USE_OPEN_FLAGS | DB_FLAGS)) == 0)
switch (type) {
/* we don't need btree and recno right now */
#if 0
case DB_BTREE:
return (__bt_open(fname, flags & USE_OPEN_FLAGS,
mode, openinfo, flags & DB_FLAGS));
case DB_RECNO:
return (__rec_open(fname, flags & USE_OPEN_FLAGS,
mode, openinfo, flags & DB_FLAGS));
#endif
case DB_HASH:
return (__hash_open(fname, flags & USE_OPEN_FLAGS,
mode, (const HASHINFO *)openinfo, flags & DB_FLAGS));
default:
break;
}
errno = EINVAL;
return (NULL);
}
static int
__dberr()
{
return (RET_ERROR);
}
/*
* __DBPANIC -- Stop.
*
* Parameters:
* dbp: pointer to the DB structure.
*/
void
__dbpanic(DB *dbp)
{
/* The only thing that can succeed is a close. */
dbp->del = (int (*)(const struct __db *, const DBT *, uint))__dberr;
dbp->fd = (int (*)(const struct __db *))__dberr;
dbp->get = (int (*)(const struct __db *, const DBT *, DBT *, uint))__dberr;
dbp->put = (int (*)(const struct __db *, DBT *, const DBT *, uint))__dberr;
dbp->seq = (int (*)(const struct __db *, DBT *, DBT *, uint))__dberr;
dbp->sync = (int (*)(const struct __db *, uint))__dberr;
}

View File

@@ -1,709 +0,0 @@
/*-
* Copyright (c) 1990, 1993, 1994
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Margo Seltzer.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)hash_bigkey.c 8.3 (Berkeley) 5/31/94";
#endif /* LIBC_SCCS and not lint */
#include "watcomfx.h"
/*
* PACKAGE: hash
* DESCRIPTION:
* Big key/data handling for the hashing package.
*
* ROUTINES:
* External
* __big_keydata
* __big_split
* __big_insert
* __big_return
* __big_delete
* __find_last_page
* Internal
* collect_key
* collect_data
*/
#if !defined(_WIN32) && !defined(_WINDOWS) && !defined(macintosh) && !defined(XP_OS2_VACPP)
#include <sys/param.h>
#endif
#include <errno.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef DEBUG
#include <assert.h>
#endif
#include "mcom_db.h"
#include "hash.h"
#include "page.h"
/* #include "extern.h" */
static int collect_key __P((HTAB *, BUFHEAD *, int, DBT *, int));
static int collect_data __P((HTAB *, BUFHEAD *, int, int));
/*
* Big_insert
*
* You need to do an insert and the key/data pair is too big
*
* Returns:
* 0 ==> OK
*-1 ==> ERROR
*/
extern int
__big_insert(HTAB *hashp, BUFHEAD *bufp, const DBT *key, const DBT *val)
{
register uint16 *p;
uint key_size, n, val_size;
uint16 space, move_bytes, off;
char *cp, *key_data, *val_data;
cp = bufp->page; /* Character pointer of p. */
p = (uint16 *)cp;
key_data = (char *)key->data;
key_size = key->size;
val_data = (char *)val->data;
val_size = val->size;
/* First move the Key */
for (space = FREESPACE(p) - BIGOVERHEAD; key_size;
space = FREESPACE(p) - BIGOVERHEAD) {
move_bytes = PR_MIN(space, key_size);
off = OFFSET(p) - move_bytes;
memmove(cp + off, key_data, move_bytes);
key_size -= move_bytes;
key_data += move_bytes;
n = p[0];
p[++n] = off;
p[0] = ++n;
FREESPACE(p) = off - PAGE_META(n);
OFFSET(p) = off;
p[n] = PARTIAL_KEY;
bufp = __add_ovflpage(hashp, bufp);
if (!bufp)
return (-1);
n = p[0];
if (!key_size) {
if (FREESPACE(p)) {
move_bytes = PR_MIN(FREESPACE(p), val_size);
off = OFFSET(p) - move_bytes;
p[n] = off;
memmove(cp + off, val_data, move_bytes);
val_data += move_bytes;
val_size -= move_bytes;
p[n - 2] = FULL_KEY_DATA;
FREESPACE(p) = FREESPACE(p) - move_bytes;
OFFSET(p) = off;
} else
p[n - 2] = FULL_KEY;
}
p = (uint16 *)bufp->page;
cp = bufp->page;
bufp->flags |= BUF_MOD;
}
/* Now move the data */
for (space = FREESPACE(p) - BIGOVERHEAD; val_size;
space = FREESPACE(p) - BIGOVERHEAD) {
move_bytes = PR_MIN(space, val_size);
/*
* Here's the hack to make sure that if the data ends on the
* same page as the key ends, FREESPACE is at least one.
*/
if (space == val_size && val_size == val->size)
move_bytes--;
off = OFFSET(p) - move_bytes;
memmove(cp + off, val_data, move_bytes);
val_size -= move_bytes;
val_data += move_bytes;
n = p[0];
p[++n] = off;
p[0] = ++n;
FREESPACE(p) = off - PAGE_META(n);
OFFSET(p) = off;
if (val_size) {
p[n] = FULL_KEY;
bufp = __add_ovflpage(hashp, bufp);
if (!bufp)
return (-1);
cp = bufp->page;
p = (uint16 *)cp;
} else
p[n] = FULL_KEY_DATA;
bufp->flags |= BUF_MOD;
}
return (0);
}
/*
* Called when bufp's page contains a partial key (index should be 1)
*
* All pages in the big key/data pair except bufp are freed. We cannot
* free bufp because the page pointing to it is lost and we can't get rid
* of its pointer.
*
* Returns:
* 0 => OK
*-1 => ERROR
*/
extern int
__big_delete(HTAB *hashp, BUFHEAD *bufp)
{
register BUFHEAD *last_bfp, *rbufp;
uint16 *bp, pageno;
int key_done, n;
rbufp = bufp;
last_bfp = NULL;
bp = (uint16 *)bufp->page;
pageno = 0;
key_done = 0;
while (!key_done || (bp[2] != FULL_KEY_DATA)) {
if (bp[2] == FULL_KEY || bp[2] == FULL_KEY_DATA)
key_done = 1;
/*
* If there is freespace left on a FULL_KEY_DATA page, then
* the data is short and fits entirely on this page, and this
* is the last page.
*/
if (bp[2] == FULL_KEY_DATA && FREESPACE(bp))
break;
pageno = bp[bp[0] - 1];
rbufp->flags |= BUF_MOD;
rbufp = __get_buf(hashp, pageno, rbufp, 0);
if (last_bfp)
__free_ovflpage(hashp, last_bfp);
last_bfp = rbufp;
if (!rbufp)
return (-1); /* Error. */
bp = (uint16 *)rbufp->page;
}
/*
* If we get here then rbufp points to the last page of the big
* key/data pair. Bufp points to the first one -- it should now be
* empty pointing to the next page after this pair. Can't free it
* because we don't have the page pointing to it.
*/
/* This is information from the last page of the pair. */
n = bp[0];
pageno = bp[n - 1];
/* Now, bp is the first page of the pair. */
bp = (uint16 *)bufp->page;
if (n > 2) {
/* There is an overflow page. */
bp[1] = pageno;
bp[2] = OVFLPAGE;
bufp->ovfl = rbufp->ovfl;
} else
/* This is the last page. */
bufp->ovfl = NULL;
n -= 2;
bp[0] = n;
FREESPACE(bp) = hashp->BSIZE - PAGE_META(n);
OFFSET(bp) = hashp->BSIZE - 1;
bufp->flags |= BUF_MOD;
if (rbufp)
__free_ovflpage(hashp, rbufp);
if (last_bfp != rbufp)
__free_ovflpage(hashp, last_bfp);
hashp->NKEYS--;
return (0);
}
/*
* Returns:
* 0 = key not found
* -1 = get next overflow page
* -2 means key not found and this is big key/data
* -3 error
*/
extern int
__find_bigpair(HTAB *hashp, BUFHEAD *bufp, int ndx, char *key, int size)
{
register uint16 *bp;
register char *p;
int ksize;
uint16 bytes;
char *kkey;
bp = (uint16 *)bufp->page;
p = bufp->page;
ksize = size;
kkey = key;
for (bytes = hashp->BSIZE - bp[ndx];
bytes <= size && bp[ndx + 1] == PARTIAL_KEY;
bytes = hashp->BSIZE - bp[ndx]) {
if (memcmp(p + bp[ndx], kkey, bytes))
return (-2);
kkey += bytes;
ksize -= bytes;
bufp = __get_buf(hashp, bp[ndx + 2], bufp, 0);
if (!bufp)
return (-3);
p = bufp->page;
bp = (uint16 *)p;
ndx = 1;
}
if (bytes != ksize || memcmp(p + bp[ndx], kkey, bytes)) {
#ifdef HASH_STATISTICS
++hash_collisions;
#endif
return (-2);
} else
return (ndx);
}
/*
* Given the buffer pointer of the first overflow page of a big pair,
* find the end of the big pair
*
* This will set bpp to the buffer header of the last page of the big pair.
* It will return the pageno of the overflow page following the last page
* of the pair; 0 if there isn't any (i.e. big pair is the last key in the
* bucket)
*/
extern uint16
__find_last_page(HTAB *hashp, BUFHEAD **bpp)
{
BUFHEAD *bufp;
uint16 *bp, pageno;
uint n;
bufp = *bpp;
bp = (uint16 *)bufp->page;
for (;;) {
n = bp[0];
/*
* This is the last page if: the tag is FULL_KEY_DATA and
* either only 2 entries OVFLPAGE marker is explicit there
* is freespace on the page.
*/
if (bp[2] == FULL_KEY_DATA &&
((n == 2) || (bp[n] == OVFLPAGE) || (FREESPACE(bp))))
break;
/* LJM bound the size of n to reasonable limits
*/
if(n > hashp->BSIZE/sizeof(uint16))
return(0);
pageno = bp[n - 1];
bufp = __get_buf(hashp, pageno, bufp, 0);
if (!bufp)
return (0); /* Need to indicate an error! */
bp = (uint16 *)bufp->page;
}
*bpp = bufp;
if (bp[0] > 2)
return (bp[3]);
else
return (0);
}
/*
* Return the data for the key/data pair that begins on this page at this
* index (index should always be 1).
*/
extern int
__big_return(
HTAB *hashp,
BUFHEAD *bufp,
int ndx,
DBT *val,
int set_current)
{
BUFHEAD *save_p;
uint16 *bp, len, off, save_addr;
char *tp;
int save_flags;
bp = (uint16 *)bufp->page;
while (bp[ndx + 1] == PARTIAL_KEY) {
bufp = __get_buf(hashp, bp[bp[0] - 1], bufp, 0);
if (!bufp)
return (-1);
bp = (uint16 *)bufp->page;
ndx = 1;
}
if (bp[ndx + 1] == FULL_KEY) {
bufp = __get_buf(hashp, bp[bp[0] - 1], bufp, 0);
if (!bufp)
return (-1);
bp = (uint16 *)bufp->page;
save_p = bufp;
save_addr = save_p->addr;
off = bp[1];
len = 0;
} else
if (!FREESPACE(bp)) {
/*
* This is a hack. We can't distinguish between
* FULL_KEY_DATA that contains complete data or
* incomplete data, so we require that if the data
* is complete, there is at least 1 byte of free
* space left.
*/
off = bp[bp[0]];
len = bp[1] - off;
save_p = bufp;
save_addr = bufp->addr;
bufp = __get_buf(hashp, bp[bp[0] - 1], bufp, 0);
if (!bufp)
return (-1);
bp = (uint16 *)bufp->page;
} else {
/* The data is all on one page. */
tp = (char *)bp;
off = bp[bp[0]];
val->data = (uint8 *)tp + off;
val->size = bp[1] - off;
if (set_current) {
if (bp[0] == 2) { /* No more buckets in
* chain */
hashp->cpage = NULL;
hashp->cbucket++;
hashp->cndx = 1;
} else {
hashp->cpage = __get_buf(hashp,
bp[bp[0] - 1], bufp, 0);
if (!hashp->cpage)
return (-1);
hashp->cndx = 1;
if (!((uint16 *)
hashp->cpage->page)[0]) {
hashp->cbucket++;
hashp->cpage = NULL;
}
}
}
return (0);
}
/* pin our saved buf so that we don't lose if
* we run out of buffers */
save_flags = save_p->flags;
save_p->flags |= BUF_PIN;
val->size = collect_data(hashp, bufp, (int)len, set_current);
save_p->flags = save_flags;
if (val->size == (size_t)-1)
return (-1);
if (save_p->addr != save_addr) {
/* We are pretty short on buffers. */
errno = EINVAL; /* OUT OF BUFFERS */
return (-1);
}
memmove(hashp->tmp_buf, (save_p->page) + off, len);
val->data = (uint8 *)hashp->tmp_buf;
return (0);
}
/*
* Count how big the total datasize is by looping through the pages. Then
* allocate a buffer and copy the data in the second loop. NOTE: Our caller
* may already have a bp which it is holding onto. The caller is
* responsible for copying that bp into our temp buffer. 'len' is how much
* space to reserve for that buffer.
*/
static int
collect_data(
HTAB *hashp,
BUFHEAD *bufp,
int len, int set)
{
register uint16 *bp;
BUFHEAD *save_bufp;
int save_flags;
int mylen, totlen;
/*
* save the input buf head because we need to walk the list twice.
* pin it to make sure it doesn't leave the buffer pool.
* This has the effect of growing the buffer pool if necessary.
*/
save_bufp = bufp;
save_flags = save_bufp->flags;
save_bufp->flags |= BUF_PIN;
/* read the length of the buffer */
for (totlen = len; bufp ; bufp = __get_buf(hashp, bp[bp[0]-1], bufp, 0)) {
bp = (uint16 *)bufp->page;
mylen = hashp->BSIZE - bp[1];
if (mylen < 0) {
save_bufp->flags = save_flags;
return (-1);
}
totlen += mylen;
if (bp[2] == FULL_KEY_DATA) {
break;
}
}
if (!bufp) {
save_bufp->flags = save_flags;
return (-1);
}
/* allocate a temp buf */
if (hashp->tmp_buf)
free(hashp->tmp_buf);
if ((hashp->tmp_buf = (char *)malloc((size_t)totlen)) == NULL) {
save_bufp->flags = save_flags;
return (-1);
}
/* copy the buffers back into temp buf */
for (bufp = save_bufp; bufp ;
bufp = __get_buf(hashp, bp[bp[0]-1], bufp, 0)) {
bp = (uint16 *)bufp->page;
mylen = hashp->BSIZE - bp[1];
memmove(&hashp->tmp_buf[len], (bufp->page) + bp[1], (size_t)mylen);
len += mylen;
if (bp[2] == FULL_KEY_DATA) {
break;
}
}
/* 'clear' the pin flags */
save_bufp->flags = save_flags;
/* update the database cursor */
if (set) {
hashp->cndx = 1;
if (bp[0] == 2) { /* No more buckets in chain */
hashp->cpage = NULL;
hashp->cbucket++;
} else {
hashp->cpage = __get_buf(hashp, bp[bp[0] - 1], bufp, 0);
if (!hashp->cpage)
return (-1);
else if (!((uint16 *)hashp->cpage->page)[0]) {
hashp->cbucket++;
hashp->cpage = NULL;
}
}
}
return (totlen);
}
/*
* Fill in the key and data for this big pair.
*/
extern int
__big_keydata(
HTAB *hashp,
BUFHEAD *bufp,
DBT *key, DBT *val,
int set)
{
key->size = collect_key(hashp, bufp, 0, val, set);
if (key->size == (size_t)-1)
return (-1);
key->data = (uint8 *)hashp->tmp_key;
return (0);
}
/*
* Count how big the total key size is by recursing through the pages. Then
* collect the data, allocate a buffer and copy the key as you recurse up.
*/
static int
collect_key(
HTAB *hashp,
BUFHEAD *bufp,
int len,
DBT *val,
int set)
{
BUFHEAD *xbp;
char *p;
int mylen, totlen;
uint16 *bp, save_addr;
p = bufp->page;
bp = (uint16 *)p;
mylen = hashp->BSIZE - bp[1];
save_addr = bufp->addr;
totlen = len + mylen;
if (bp[2] == FULL_KEY || bp[2] == FULL_KEY_DATA) { /* End of Key. */
if (hashp->tmp_key != NULL)
free(hashp->tmp_key);
if ((hashp->tmp_key = (char *)malloc((size_t)totlen)) == NULL)
return (-1);
if (__big_return(hashp, bufp, 1, val, set))
return (-1);
} else {
xbp = __get_buf(hashp, bp[bp[0] - 1], bufp, 0);
if (!xbp || ((totlen =
collect_key(hashp, xbp, totlen, val, set)) < 1))
return (-1);
}
if (bufp->addr != save_addr) {
errno = EINVAL; /* MIS -- OUT OF BUFFERS */
return (-1);
}
memmove(&hashp->tmp_key[len], (bufp->page) + bp[1], (size_t)mylen);
return (totlen);
}
/*
* Returns:
* 0 => OK
* -1 => error
*/
extern int
__big_split(
HTAB *hashp,
BUFHEAD *op, /* Pointer to where to put keys that go in old bucket */
BUFHEAD *np, /* Pointer to new bucket page */
/* Pointer to first page containing the big key/data */
BUFHEAD *big_keyp,
uint32 addr, /* Address of big_keyp */
uint32 obucket,/* Old Bucket */
SPLIT_RETURN *ret)
{
register BUFHEAD *tmpp;
register uint16 *tp;
BUFHEAD *bp;
DBT key, val;
uint32 change;
uint16 free_space, n, off;
bp = big_keyp;
/* Now figure out where the big key/data goes */
if (__big_keydata(hashp, big_keyp, &key, &val, 0))
return (-1);
change = (__call_hash(hashp,(char*) key.data, key.size) != obucket);
if ((ret->next_addr = __find_last_page(hashp, &big_keyp))) {
if (!(ret->nextp =
__get_buf(hashp, ret->next_addr, big_keyp, 0)))
return (-1);;
} else
ret->nextp = NULL;
/* Now make one of np/op point to the big key/data pair */
#ifdef DEBUG
assert(np->ovfl == NULL);
#endif
if (change)
tmpp = np;
else
tmpp = op;
tmpp->flags |= BUF_MOD;
#ifdef DEBUG1
(void)fprintf(stderr,
"BIG_SPLIT: %d->ovfl was %d is now %d\n", tmpp->addr,
(tmpp->ovfl ? tmpp->ovfl->addr : 0), (bp ? bp->addr : 0));
#endif
tmpp->ovfl = bp; /* one of op/np point to big_keyp */
tp = (uint16 *)tmpp->page;
#if 0 /* this get's tripped on database corrupted error */
assert(FREESPACE(tp) >= OVFLSIZE);
#endif
if(FREESPACE(tp) < OVFLSIZE)
return(DATABASE_CORRUPTED_ERROR);
n = tp[0];
off = OFFSET(tp);
free_space = FREESPACE(tp);
tp[++n] = (uint16)addr;
tp[++n] = OVFLPAGE;
tp[0] = n;
OFFSET(tp) = off;
FREESPACE(tp) = free_space - OVFLSIZE;
/*
* Finally, set the new and old return values. BIG_KEYP contains a
* pointer to the last page of the big key_data pair. Make sure that
* big_keyp has no following page (2 elements) or create an empty
* following page.
*/
ret->newp = np;
ret->oldp = op;
tp = (uint16 *)big_keyp->page;
big_keyp->flags |= BUF_MOD;
if (tp[0] > 2) {
/*
* There may be either one or two offsets on this page. If
* there is one, then the overflow page is linked on normally
* and tp[4] is OVFLPAGE. If there are two, tp[4] contains
* the second offset and needs to get stuffed in after the
* next overflow page is added.
*/
n = tp[4];
free_space = FREESPACE(tp);
off = OFFSET(tp);
tp[0] -= 2;
FREESPACE(tp) = free_space + OVFLSIZE;
OFFSET(tp) = off;
tmpp = __add_ovflpage(hashp, big_keyp);
if (!tmpp)
return (-1);
tp[4] = n;
} else
tmpp = big_keyp;
if (change)
ret->newp = tmpp;
else
ret->oldp = tmpp;
return (0);
}

View File

@@ -1,211 +0,0 @@
/*-
* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Margo Seltzer.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)hash_func.c 8.2 (Berkeley) 2/21/94";
#endif /* LIBC_SCCS and not lint */
#include "watcomfx.h"
#ifndef macintosh
#include <sys/types.h>
#endif
#include "mcom_db.h"
#include "hash.h"
#include "page.h"
/* #include "extern.h" */
#if 0
static uint32 hash1 __P((const void *, size_t));
static uint32 hash2 __P((const void *, size_t));
static uint32 hash3 __P((const void *, size_t));
#endif
static uint32 hash4 __P((const void *, size_t));
/* Global default hash function */
uint32 (*__default_hash) __P((const void *, size_t)) = hash4;
/*
* HASH FUNCTIONS
*
* Assume that we've already split the bucket to which this key hashes,
* calculate that bucket, and check that in fact we did already split it.
*
* This came from ejb's hsearch.
*/
#define PRIME1 37
#define PRIME2 1048583
#if 0
static uint32
hash1(const void *keyarg, register size_t len)
{
register const uint8 *key;
register uint32 h;
/* Convert string to integer */
for (key = (const uint8 *)keyarg, h = 0; len--;)
h = h * PRIME1 ^ (*key++ - ' ');
h %= PRIME2;
return (h);
}
/*
* Phong's linear congruential hash
*/
#define dcharhash(h, c) ((h) = 0x63c63cd9*(h) + 0x9c39c33d + (c))
static uint32
hash2(const void *keyarg, size_t len)
{
register const uint8 *e, *key;
register uint32 h;
register uint8 c;
key = (const uint8 *)keyarg;
e = key + len;
for (h = 0; key != e;) {
c = *key++;
if (!c && key > e)
break;
dcharhash(h, c);
}
return (h);
}
/*
* This is INCREDIBLY ugly, but fast. We break the string up into 8 byte
* units. On the first time through the loop we get the "leftover bytes"
* (strlen % 8). On every other iteration, we perform 8 HASHC's so we handle
* all 8 bytes. Essentially, this saves us 7 cmp & branch instructions. If
* this routine is heavily used enough, it's worth the ugly coding.
*
* OZ's original sdbm hash
*/
static uint32
hash3(const void *keyarg, register size_t len)
{
register const uint8 *key;
register size_t loop;
register uint32 h;
#define HASHC h = *key++ + 65599 * h
h = 0;
key = (const uint8 *)keyarg;
if (len > 0) {
loop = (len + 8 - 1) >> 3;
switch (len & (8 - 1)) {
case 0:
do {
HASHC;
/* FALLTHROUGH */
case 7:
HASHC;
/* FALLTHROUGH */
case 6:
HASHC;
/* FALLTHROUGH */
case 5:
HASHC;
/* FALLTHROUGH */
case 4:
HASHC;
/* FALLTHROUGH */
case 3:
HASHC;
/* FALLTHROUGH */
case 2:
HASHC;
/* FALLTHROUGH */
case 1:
HASHC;
} while (--loop);
}
}
return (h);
}
#endif /* 0 */
/* Hash function from Chris Torek. */
static uint32
hash4(const void *keyarg, register size_t len)
{
register const uint8 *key;
register size_t loop;
register uint32 h;
#define HASH4a h = (h << 5) - h + *key++;
#define HASH4b h = (h << 5) + h + *key++;
#define HASH4 HASH4b
h = 0;
key = (const uint8 *)keyarg;
if (len > 0) {
loop = (len + 8 - 1) >> 3;
switch (len & (8 - 1)) {
case 0:
do {
HASH4;
/* FALLTHROUGH */
case 7:
HASH4;
/* FALLTHROUGH */
case 6:
HASH4;
/* FALLTHROUGH */
case 5:
HASH4;
/* FALLTHROUGH */
case 4:
HASH4;
/* FALLTHROUGH */
case 3:
HASH4;
/* FALLTHROUGH */
case 2:
HASH4;
/* FALLTHROUGH */
case 1:
HASH4;
} while (--loop);
}
}
return (h);
}

View File

@@ -1,56 +0,0 @@
/*-
* Copyright (c) 1990, 1993, 1994
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Margo Seltzer.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)hash_log2.c 8.2 (Berkeley) 5/31/94";
#endif /* LIBC_SCCS and not lint */
#include "watcomfx.h"
#include <stdio.h>
#ifndef macintosh
#include <sys/types.h>
#endif
#include "mcom_db.h"
uint32 __log2(uint32 num)
{
register uint32 i, limit;
limit = 1;
for (i = 0; limit < num; limit = limit << 1, i++) {}
return (i);
}

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@@ -1,414 +0,0 @@
/*-
* Copyright (c) 1990, 1993, 1994
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Margo Seltzer.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)hash_buf.c 8.5 (Berkeley) 7/15/94";
#endif /* LIBC_SCCS and not lint */
#include "watcomfx.h"
/*
* PACKAGE: hash
*
* DESCRIPTION:
* Contains buffer management
*
* ROUTINES:
* External
* __buf_init
* __get_buf
* __buf_free
* __reclaim_buf
* Internal
* newbuf
*/
#if !defined(_WIN32) && !defined(_WINDOWS) && !defined(macintosh) && !defined(XP_OS2_VACPP)
#include <sys/param.h>
#endif
#include <errno.h>
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#ifdef DEBUG
#include <assert.h>
#endif
#include "mcom_db.h"
#include "hash.h"
#include "page.h"
/* #include "extern.h" */
static BUFHEAD *newbuf __P((HTAB *, uint32, BUFHEAD *));
/* Unlink B from its place in the lru */
#define BUF_REMOVE(B) { \
(B)->prev->next = (B)->next; \
(B)->next->prev = (B)->prev; \
}
/* Insert B after P */
#define BUF_INSERT(B, P) { \
(B)->next = (P)->next; \
(B)->prev = (P); \
(P)->next = (B); \
(B)->next->prev = (B); \
}
#define MRU hashp->bufhead.next
#define LRU hashp->bufhead.prev
#define MRU_INSERT(B) BUF_INSERT((B), &hashp->bufhead)
#define LRU_INSERT(B) BUF_INSERT((B), LRU)
/*
* We are looking for a buffer with address "addr". If prev_bp is NULL, then
* address is a bucket index. If prev_bp is not NULL, then it points to the
* page previous to an overflow page that we are trying to find.
*
* CAVEAT: The buffer header accessed via prev_bp's ovfl field may no longer
* be valid. Therefore, you must always verify that its address matches the
* address you are seeking.
*/
extern BUFHEAD *
__get_buf(HTAB *hashp, uint32 addr, BUFHEAD *prev_bp, int newpage)
/* If prev_bp set, indicates a new overflow page. */
{
register BUFHEAD *bp;
register uint32 is_disk_mask;
register int is_disk, segment_ndx = 0;
SEGMENT segp = 0;
is_disk = 0;
is_disk_mask = 0;
if (prev_bp) {
bp = prev_bp->ovfl;
if (!bp || (bp->addr != addr))
bp = NULL;
if (!newpage)
is_disk = BUF_DISK;
} else {
/* Grab buffer out of directory */
segment_ndx = addr & (hashp->SGSIZE - 1);
/* valid segment ensured by __call_hash() */
segp = hashp->dir[addr >> hashp->SSHIFT];
#ifdef DEBUG
assert(segp != NULL);
#endif
bp = PTROF(segp[segment_ndx]);
is_disk_mask = ISDISK(segp[segment_ndx]);
is_disk = is_disk_mask || !hashp->new_file;
}
if (!bp) {
bp = newbuf(hashp, addr, prev_bp);
if (!bp)
return(NULL);
if(__get_page(hashp, bp->page, addr, !prev_bp, is_disk, 0))
{
/* free bp and its page */
if(prev_bp)
{
/* if prev_bp is set then the new page that
* failed is hooked onto prev_bp as an overflow page.
* if we don't remove the pointer to the bad page
* we may try and access it later and we will die
* horribly because it will have already been
* free'd and overwritten with bogus data.
*/
prev_bp->ovfl = NULL;
}
BUF_REMOVE(bp);
free(bp->page);
free(bp);
return (NULL);
}
if (!prev_bp)
{
#if 0
/* 16 bit windows and mac can't handle the
* oring of the is disk flag.
*/
segp[segment_ndx] =
(BUFHEAD *)((ptrdiff_t)bp | is_disk_mask);
#else
/* set the is_disk thing inside the structure
*/
bp->is_disk = is_disk_mask;
segp[segment_ndx] = bp;
#endif
}
} else {
BUF_REMOVE(bp);
MRU_INSERT(bp);
}
return (bp);
}
/*
* We need a buffer for this page. Either allocate one, or evict a resident
* one (if we have as many buffers as we're allowed) and put this one in.
*
* If newbuf finds an error (returning NULL), it also sets errno.
*/
static BUFHEAD *
newbuf(HTAB *hashp, uint32 addr, BUFHEAD *prev_bp)
{
register BUFHEAD *bp; /* The buffer we're going to use */
register BUFHEAD *xbp; /* Temp pointer */
register BUFHEAD *next_xbp;
SEGMENT segp;
int segment_ndx;
uint16 oaddr, *shortp;
oaddr = 0;
bp = LRU;
/*
* If LRU buffer is pinned, the buffer pool is too small. We need to
* allocate more buffers.
*/
if (hashp->nbufs || (bp->flags & BUF_PIN)) {
/* Allocate a new one */
if ((bp = (BUFHEAD *)malloc(sizeof(BUFHEAD))) == NULL)
return (NULL);
/* this memset is supposedly unnecessary but lets add
* it anyways.
*/
memset(bp, 0xff, sizeof(BUFHEAD));
if ((bp->page = (char *)malloc((size_t)hashp->BSIZE)) == NULL) {
free(bp);
return (NULL);
}
/* this memset is supposedly unnecessary but lets add
* it anyways.
*/
memset(bp->page, 0xff, (size_t)hashp->BSIZE);
if (hashp->nbufs)
hashp->nbufs--;
} else {
/* Kick someone out */
BUF_REMOVE(bp);
/*
* If this is an overflow page with addr 0, it's already been
* flushed back in an overflow chain and initialized.
*/
if ((bp->addr != 0) || (bp->flags & BUF_BUCKET)) {
/*
* Set oaddr before __put_page so that you get it
* before bytes are swapped.
*/
shortp = (uint16 *)bp->page;
if (shortp[0])
{
if(shortp[0] > (hashp->BSIZE / sizeof(uint16)))
{
return(NULL);
}
oaddr = shortp[shortp[0] - 1];
}
if ((bp->flags & BUF_MOD) && __put_page(hashp, bp->page,
bp->addr, (int)IS_BUCKET(bp->flags), 0))
return (NULL);
/*
* Update the pointer to this page (i.e. invalidate it).
*
* If this is a new file (i.e. we created it at open
* time), make sure that we mark pages which have been
* written to disk so we retrieve them from disk later,
* rather than allocating new pages.
*/
if (IS_BUCKET(bp->flags)) {
segment_ndx = bp->addr & (hashp->SGSIZE - 1);
segp = hashp->dir[bp->addr >> hashp->SSHIFT];
#ifdef DEBUG
assert(segp != NULL);
#endif
if (hashp->new_file &&
((bp->flags & BUF_MOD) ||
ISDISK(segp[segment_ndx])))
segp[segment_ndx] = (BUFHEAD *)BUF_DISK;
else
segp[segment_ndx] = NULL;
}
/*
* Since overflow pages can only be access by means of
* their bucket, free overflow pages associated with
* this bucket.
*/
for (xbp = bp; xbp->ovfl;) {
next_xbp = xbp->ovfl;
xbp->ovfl = 0;
xbp = next_xbp;
/* leave pinned pages alone, we are still using
* them. */
if (xbp->flags & BUF_PIN) {
continue;
}
/* Check that ovfl pointer is up date. */
if (IS_BUCKET(xbp->flags) ||
(oaddr != xbp->addr))
break;
shortp = (uint16 *)xbp->page;
if (shortp[0])
{
/* LJM is the number of reported
* pages way too much?
*/
if(shortp[0] > hashp->BSIZE/sizeof(uint16))
return NULL;
/* set before __put_page */
oaddr = shortp[shortp[0] - 1];
}
if ((xbp->flags & BUF_MOD) && __put_page(hashp,
xbp->page, xbp->addr, 0, 0))
return (NULL);
xbp->addr = 0;
xbp->flags = 0;
BUF_REMOVE(xbp);
LRU_INSERT(xbp);
}
}
}
/* Now assign this buffer */
bp->addr = addr;
#ifdef DEBUG1
(void)fprintf(stderr, "NEWBUF1: %d->ovfl was %d is now %d\n",
bp->addr, (bp->ovfl ? bp->ovfl->addr : 0), 0);
#endif
bp->ovfl = NULL;
if (prev_bp) {
/*
* If prev_bp is set, this is an overflow page, hook it in to
* the buffer overflow links.
*/
#ifdef DEBUG1
(void)fprintf(stderr, "NEWBUF2: %d->ovfl was %d is now %d\n",
prev_bp->addr, (prev_bp->ovfl ? bp->ovfl->addr : 0),
(bp ? bp->addr : 0));
#endif
prev_bp->ovfl = bp;
bp->flags = 0;
} else
bp->flags = BUF_BUCKET;
MRU_INSERT(bp);
return (bp);
}
extern void __buf_init(HTAB *hashp, int32 nbytes)
{
BUFHEAD *bfp;
int npages;
bfp = &(hashp->bufhead);
npages = (nbytes + hashp->BSIZE - 1) >> hashp->BSHIFT;
npages = PR_MAX(npages, MIN_BUFFERS);
hashp->nbufs = npages;
bfp->next = bfp;
bfp->prev = bfp;
/*
* This space is calloc'd so these are already null.
*
* bfp->ovfl = NULL;
* bfp->flags = 0;
* bfp->page = NULL;
* bfp->addr = 0;
*/
}
extern int
__buf_free(HTAB *hashp, int do_free, int to_disk)
{
BUFHEAD *bp;
int status = -1;
/* Need to make sure that buffer manager has been initialized */
if (!LRU)
return (0);
for (bp = LRU; bp != &hashp->bufhead;) {
/* Check that the buffer is valid */
if (bp->addr || IS_BUCKET(bp->flags)) {
if (to_disk && (bp->flags & BUF_MOD) &&
(status = __put_page(hashp, bp->page,
bp->addr, IS_BUCKET(bp->flags), 0))) {
if (do_free) {
if (bp->page)
free(bp->page);
BUF_REMOVE(bp);
free(bp);
}
return (status);
}
}
/* Check if we are freeing stuff */
if (do_free) {
if (bp->page)
free(bp->page);
BUF_REMOVE(bp);
free(bp);
bp = LRU;
} else
bp = bp->prev;
}
return (0);
}
extern void
__reclaim_buf(HTAB *hashp, BUFHEAD *bp)
{
bp->ovfl = 0;
bp->addr = 0;
bp->flags = 0;
BUF_REMOVE(bp);
LRU_INSERT(bp);
}

View File

@@ -1,108 +0,0 @@
/*-
* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Margo Seltzer.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)hsearch.c 8.4 (Berkeley) 7/21/94";
#endif /* LIBC_SCCS and not lint */
#include "watcomfx.h"
#ifndef macintosh
#include <sys/types.h>
#endif
#include <fcntl.h>
#include <string.h>
#include "mcom_db.h"
#include "hsearch.h"
static DB *dbp = NULL;
static ENTRY retval;
extern int
hcreate(uint nel)
{
HASHINFO info;
info.nelem = nel;
info.bsize = 256;
info.ffactor = 8;
info.cachesize = 0;
info.hash = NULL;
info.lorder = 0;
dbp = (DB *)__hash_open(NULL, O_CREAT | O_RDWR, 0600, &info, 0);
return ((int)dbp);
}
extern ENTRY *
hsearch(ENTRY item, ACTION action)
{
DBT key, val;
int status;
if (!dbp)
return (NULL);
key.data = (uint8 *)item.key;
key.size = strlen(item.key) + 1;
if (action == ENTER) {
val.data = (uint8 *)item.data;
val.size = strlen(item.data) + 1;
status = (dbp->put)(dbp, &key, &val, R_NOOVERWRITE);
if (status)
return (NULL);
} else {
/* FIND */
status = (dbp->get)(dbp, &key, &val, 0);
if (status)
return (NULL);
else
item.data = (char *)val.data;
}
retval.key = item.key;
retval.data = item.data;
return (&retval);
}
extern void
hdestroy()
{
if (dbp) {
(void)(dbp->close)(dbp);
dbp = NULL;
}
}

View File

@@ -1,150 +0,0 @@
#if defined(__sun) && !defined(__SVR4)
/*-
* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Chris Torek.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)bcopy.c 8.1 (Berkeley) 6/4/93";
#endif /* LIBC_SCCS and not lint */
#include "watcomfx.h"
#ifdef HAVE_SYS_CDEFS_H
#include <sys/cdefs.h>
#else
#include "cdefs.h"
#endif
#include <string.h>
/*
* sizeof(word) MUST BE A POWER OF TWO
* SO THAT wmask BELOW IS ALL ONES
*/
typedef int word; /* "word" used for optimal copy speed */
#define wsize sizeof(word)
#define wmask (wsize - 1)
/*
* Copy a block of memory, handling overlap.
* This is the routine that actually implements
* (the portable versions of) bcopy, memcpy, and memmove.
*/
#ifdef MEMCOPY
void *
memcpy(dst0, src0, length)
#else
#ifdef MEMMOVE
void *
memmove(dst0, src0, length)
#else
void
bcopy(src0, dst0, length)
#endif
#endif
void *dst0;
const void *src0;
register size_t length;
{
register char *dst = dst0;
register const char *src = src0;
register size_t t;
if (length == 0 || dst == src) /* nothing to do */
goto done;
/*
* Macros: loop-t-times; and loop-t-times, t>0
*/
#define TLOOP(s) if (t) TLOOP1(s)
#define TLOOP1(s) do { s; } while (--t)
if ((unsigned long)dst < (unsigned long)src) {
/*
* Copy forward.
*/
t = (int)src; /* only need low bits */
if ((t | (int)dst) & wmask) {
/*
* Try to align operands. This cannot be done
* unless the low bits match.
*/
if ((t ^ (int)dst) & wmask || length < wsize)
t = length;
else
t = wsize - (t & wmask);
length -= t;
TLOOP1(*dst++ = *src++);
}
/*
* Copy whole words, then mop up any trailing bytes.
*/
t = length / wsize;
TLOOP(*(word *)dst = *(word *)src; src += wsize; dst += wsize);
t = length & wmask;
TLOOP(*dst++ = *src++);
} else {
/*
* Copy backwards. Otherwise essentially the same.
* Alignment works as before, except that it takes
* (t&wmask) bytes to align, not wsize-(t&wmask).
*/
src += length;
dst += length;
t = (int)src;
if ((t | (int)dst) & wmask) {
if ((t ^ (int)dst) & wmask || length <= wsize)
t = length;
else
t &= wmask;
length -= t;
TLOOP1(*--dst = *--src);
}
t = length / wsize;
TLOOP(src -= wsize; dst -= wsize; *(word *)dst = *(word *)src);
t = length & wmask;
TLOOP(*--dst = *--src);
}
done:
#if defined(MEMCOPY) || defined(MEMMOVE)
return (dst0);
#else
return;
#endif
}
#endif /* no __sgi */
/* Some compilers don't like an empty source file. */
static int dummy = 0;

View File

@@ -1,168 +0,0 @@
/*
* Copyright (c) 1987, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)mktemp.c 8.1 (Berkeley) 6/4/93";
#endif /* LIBC_SCCS and not lint */
#include "watcomfx.h"
#ifdef macintosh
#include <unix.h>
#else
#include <sys/types.h>
#include <sys/stat.h>
#endif
#include <fcntl.h>
#include <errno.h>
#include <stdio.h>
#include <ctype.h>
#include "mcom_db.h"
#if !defined(_WINDOWS) && !defined(XP_OS2_VACPP)
#include <unistd.h>
#endif
#ifdef XP_OS2_VACPP
#define ENOTDIR EBADPOS
#include <process.h>
#include <dirent.h>
#endif
#ifdef _WINDOWS
#include <process.h>
#include "winfile.h"
#endif
static int _gettemp(char *path, register int *doopen, int extraFlags);
int
mkstemp(char *path)
{
#ifdef XP_OS2
FILE *temp = tmpfile();
return (temp ? fileno(temp) : -1);
#else
int fd;
return (_gettemp(path, &fd, 0) ? fd : -1);
#endif
}
int
mkstempflags(char *path, int extraFlags)
{
int fd;
return (_gettemp(path, &fd, extraFlags) ? fd : -1);
}
char *
mktemp(char *path)
{
return(_gettemp(path, (int *)NULL, 0) ? path : (char *)NULL);
}
/* NB: This routine modifies its input string, and does not always restore it.
** returns 1 on success, 0 on failure.
*/
static int
_gettemp(char *path, register int *doopen, int extraFlags)
{
#if !defined(_WINDOWS) || defined(_WIN32)
extern int errno;
#endif
register char *start, *trv;
struct stat sbuf;
unsigned int pid;
pid = getpid();
for (trv = path; *trv; ++trv); /* extra X's get set to 0's */
while (*--trv == 'X') {
*trv = (pid % 10) + '0';
pid /= 10;
}
/*
* check the target directory; if you have six X's and it
* doesn't exist this runs for a *very* long time.
*/
for (start = trv + 1;; --trv) {
char saved;
if (trv <= path)
break;
saved = *trv;
if (saved == '/' || saved == '\\') {
int rv;
*trv = '\0';
rv = stat(path, &sbuf);
*trv = saved;
if (rv)
return(0);
if (!S_ISDIR(sbuf.st_mode)) {
errno = ENOTDIR;
return(0);
}
break;
}
}
for (;;) {
if (doopen) {
if ((*doopen =
open(path, O_CREAT|O_EXCL|O_RDWR|extraFlags, 0600)) >= 0)
return(1);
if (errno != EEXIST)
return(0);
}
else if (stat(path, &sbuf))
return(errno == ENOENT ? 1 : 0);
/* tricky little algorithm for backward compatibility */
for (trv = start;;) {
if (!*trv)
return(0);
if (*trv == 'z')
*trv++ = 'a';
else {
if (isdigit(*trv))
*trv = 'a';
else
++*trv;
break;
}
}
}
/*NOTREACHED*/
}

View File

@@ -1,199 +0,0 @@
/*-
* Copyright (c) 1990, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Margo Seltzer.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)ndbm.c 8.4 (Berkeley) 7/21/94";
#endif /* LIBC_SCCS and not lint */
#include "watcomfx.h"
/*
* This package provides a dbm compatible interface to the new hashing
* package described in db(3).
*/
#if !defined(_WIN32) && !defined(_WINDOWS) && !defined(XP_OS2_VACPP)
#include <sys/param.h>
#endif
#if defined(__linux)
#include <linux/limits.h>
#endif
#ifdef __OS2__
#include "dirent.h"
#endif
#include <stdio.h>
#include <string.h>
#include "ndbm.h"
#include "hash.h"
/*
* Returns:
* *DBM on success
* NULL on failure
*/
extern DBM *
dbm_open(const char *file, int flags, int mode)
{
HASHINFO info;
char path[MAXPATHLEN];
info.bsize = 4096;
info.ffactor = 40;
info.nelem = 1;
info.cachesize = 0;
info.hash = NULL;
info.lorder = 0;
(void)strcpy(path, file);
(void)strcat(path, DBM_SUFFIX);
return ((DBM *)__hash_open(path, flags, mode, &info, 0));
}
extern void
dbm_close(DBM *db)
{
(void)(db->close)(db);
}
/*
* Returns:
* DATUM on success
* NULL on failure
*/
extern datum
dbm_fetch(DBM *db, datum key)
{
datum retval;
int status;
status = (db->get)(db, (DBT *)&key, (DBT *)&retval, 0);
if (status) {
retval.dptr = NULL;
retval.dsize = 0;
}
return (retval);
}
/*
* Returns:
* DATUM on success
* NULL on failure
*/
extern datum
dbm_firstkey(DBM *db)
{
int status;
datum retdata, retkey;
status = (db->seq)(db, (DBT *)&retkey, (DBT *)&retdata, R_FIRST);
if (status)
retkey.dptr = NULL;
return (retkey);
}
/*
* Returns:
* DATUM on success
* NULL on failure
*/
extern datum
dbm_nextkey(DBM *db)
{
int status;
datum retdata, retkey;
status = (db->seq)(db, (DBT *)&retkey, (DBT *)&retdata, R_NEXT);
if (status)
retkey.dptr = NULL;
return (retkey);
}
/*
* Returns:
* 0 on success
* <0 failure
*/
extern int
dbm_delete(DBM *db, datum key)
{
int status;
status = (db->del)(db, (DBT *)&key, 0);
if (status)
return (-1);
else
return (0);
}
/*
* Returns:
* 0 on success
* <0 failure
* 1 if DBM_INSERT and entry exists
*/
extern int
dbm_store(DBM *db, datum key, datum content, int flags)
{
return ((db->put)(db, (DBT *)&key, (DBT *)&content,
(flags == DBM_INSERT) ? R_NOOVERWRITE : 0));
}
extern int
dbm_error(DBM *db)
{
HTAB *hp;
hp = (HTAB *)db->internal;
return (hp->dbmerrno);
}
extern int
dbm_clearerr(DBM *db)
{
HTAB *hp;
hp = (HTAB *)db->internal;
hp->dbmerrno = 0;
return (0);
}
extern int
dbm_dirfno(DBM *db)
{
return(((HTAB *)db->internal)->fp);
}

View File

@@ -1,307 +0,0 @@
#include "watcomfx.h"
#include "nsres.h"
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
struct RESDATABASE
{
DB *hdb;
NSRESTHREADINFO *threadinfo;
char * pbuf[MAXBUFNUM];
} ;
typedef struct RESDATABASE * RESHANDLE;
typedef struct STRINGDATA
{
char *str;
unsigned int charsetid;
} STRINGDATA;
typedef unsigned int CHARSETTYPE;
#define RES_LOCK if (hres->threadinfo) hres->threadinfo->fn_lock(hres->threadinfo->lock);
#define RES_UNLOCK if (hres->threadinfo) hres->threadinfo->fn_unlock(hres->threadinfo->lock);
int GenKeyData(const char *library, int32 id, DBT *key);
/*
Right now, the page size used for resource is same as for Navigator cache
database
*/
HASHINFO res_hash_info = {
32*1024,
0,
0,
0,
0, /* 64 * 1024U */
0};
int GenKeyData(const char *library, int32 id, DBT *key)
{
char idstr[10];
static char * strdata = NULL;
size_t len;
if (strdata)
free (strdata);
if (id == 0)
idstr[0] = '\0';
else
{
sprintf(idstr, "%d", id);
/* itoa(id, idstr, 10); */
}
if (library == NULL)
len = strlen(idstr) + 1;
else
len = strlen(library) + strlen(idstr) + 1;
strdata = (char *) malloc (len);
strcpy(strdata, library);
strcat(strdata, idstr);
key->size = len;
key->data = strdata;
return 1;
}
NSRESHANDLE NSResCreateTable(const char *filename, NSRESTHREADINFO *threadinfo)
{
RESHANDLE hres;
int flag;
flag = O_RDWR | O_CREAT;
hres = (RESHANDLE) malloc ( sizeof(struct RESDATABASE) );
memset(hres, 0, sizeof(struct RESDATABASE));
if (threadinfo && threadinfo->lock && threadinfo->fn_lock
&& threadinfo->fn_unlock)
{
hres->threadinfo = (NSRESTHREADINFO *) malloc( sizeof(NSRESTHREADINFO) );
hres->threadinfo->lock = threadinfo->lock;
hres->threadinfo->fn_lock = threadinfo->fn_lock;
hres->threadinfo->fn_unlock = threadinfo->fn_unlock;
}
RES_LOCK
hres->hdb = dbopen(filename, flag, 0644, DB_HASH, &res_hash_info);
RES_UNLOCK
if(!hres->hdb)
return NULL;
return (NSRESHANDLE) hres;
}
NSRESHANDLE NSResOpenTable(const char *filename, NSRESTHREADINFO *threadinfo)
{
RESHANDLE hres;
int flag;
flag = O_RDONLY; /* only open database for reading */
hres = (RESHANDLE) malloc ( sizeof(struct RESDATABASE) );
memset(hres, 0, sizeof(struct RESDATABASE));
if (threadinfo && threadinfo->lock && threadinfo->fn_lock
&& threadinfo->fn_unlock)
{
hres->threadinfo = (NSRESTHREADINFO *) malloc( sizeof(NSRESTHREADINFO) );
hres->threadinfo->lock = threadinfo->lock;
hres->threadinfo->fn_lock = threadinfo->fn_lock;
hres->threadinfo->fn_unlock = threadinfo->fn_unlock;
}
RES_LOCK
hres->hdb = dbopen(filename, flag, 0644, DB_HASH, &res_hash_info);
RES_UNLOCK
if(!hres->hdb)
return NULL;
return (NSRESHANDLE) hres;
}
void NSResCloseTable(NSRESHANDLE handle)
{
RESHANDLE hres;
int i;
if (handle == NULL)
return;
hres = (RESHANDLE) handle;
RES_LOCK
(*hres->hdb->sync)(hres->hdb, 0);
(*hres->hdb->close)(hres->hdb);
RES_UNLOCK
for (i = 0; i < MAXBUFNUM; i++)
{
if (hres->pbuf[i])
free (hres->pbuf[i]);
}
if (hres->threadinfo)
free (hres->threadinfo);
free (hres);
}
char *NSResLoadString(NSRESHANDLE handle, const char * library, int32 id,
unsigned int charsetid, char *retbuf)
{
int status;
RESHANDLE hres;
DBT key, data;
if (handle == NULL)
return NULL;
hres = (RESHANDLE) handle;
GenKeyData(library, id, &key);
RES_LOCK
status = (*hres->hdb->get)(hres->hdb, &key, &data, 0);
RES_UNLOCK
if (retbuf)
{
memcpy(retbuf, (char *)data.data + sizeof(CHARSETTYPE), data.size - sizeof(CHARSETTYPE));
return retbuf;
}
else
{
static int WhichString = 0;
static int bFirstTime = 1;
char *szLoadedString;
int i;
RES_LOCK
if (bFirstTime) {
for (i = 0; i < MAXBUFNUM; i++)
hres->pbuf[i] = (char *) malloc(MAXSTRINGLEN * sizeof(char));
bFirstTime = 0;
}
szLoadedString = hres->pbuf[WhichString];
WhichString++;
/* reset to 0, if WhichString reaches to the end */
if (WhichString == MAXBUFNUM)
WhichString = 0;
if (status == 0)
memcpy(szLoadedString, (char *) data.data + sizeof(CHARSETTYPE),
data.size - sizeof(CHARSETTYPE));
else
szLoadedString[0] = 0;
RES_UNLOCK
return szLoadedString;
}
}
int32 NSResGetSize(NSRESHANDLE handle, const char *library, int32 id)
{
int status;
RESHANDLE hres;
DBT key, data;
if (handle == NULL)
return 0;
hres = (RESHANDLE) handle;
GenKeyData(library, id, &key);
RES_LOCK
status = (*hres->hdb->get)(hres->hdb, &key, &data, 0);
RES_UNLOCK
return data.size - sizeof(CHARSETTYPE);
}
int32 NSResLoadResource(NSRESHANDLE handle, const char *library, int32 id, char *retbuf)
{
int status;
RESHANDLE hres;
DBT key, data;
if (handle == NULL)
return 0;
hres = (RESHANDLE) handle;
GenKeyData(library, id, &key);
RES_LOCK
status = (*hres->hdb->get)(hres->hdb, &key, &data, 0);
RES_UNLOCK
if (retbuf)
{
memcpy(retbuf, (char *)data.data + sizeof(CHARSETTYPE), data.size - sizeof(CHARSETTYPE));
return data.size;
}
else
return 0;
}
int NSResAddString(NSRESHANDLE handle, const char *library, int32 id,
const char *string, unsigned int charset)
{
int status;
RESHANDLE hres;
DBT key, data;
char * recdata;
if (handle == NULL)
return 0;
hres = (RESHANDLE) handle;
GenKeyData(library, id, &key);
data.size = sizeof(CHARSETTYPE) + (strlen(string) + 1) ;
recdata = (char *) malloc(data.size) ;
/* set charset to the first field of record data */
*((CHARSETTYPE *)recdata) = (CHARSETTYPE)charset;
/* set data field */
memcpy(recdata+sizeof(CHARSETTYPE), string, strlen(string) + 1);
data.data = recdata;
RES_LOCK
status = (*hres->hdb->put)(hres->hdb, &key, &data, 0);
if (recdata)
free(recdata);
RES_UNLOCK
return status;
}

View File

@@ -1,75 +0,0 @@
#ifndef HAVE_SNPRINTF
#include "watcomfx.h"
#include <sys/types.h>
#include <stddef.h>
#include <stdio.h>
#ifdef HAVE_SYS_CDEFS_H
#include <sys/cdefs.h>
#else
#include "cdefs.h"
#endif
#include "prtypes.h"
#include <ncompat.h>
/* The OS/2 VAC compiler doesn't appear to define __STDC__ and won't let us define it either */
#if defined(__STDC__) || defined(XP_OS2_VACPP)
#include <stdarg.h>
#else
#include <varargs.h>
#endif
int
#if defined(__STDC__) || defined(XP_OS2_VACPP)
snprintf(char *str, size_t n, const char *fmt, ...)
#else
snprintf(str, n, fmt, va_alist)
char *str;
size_t n;
const char *fmt;
va_dcl
#endif
{
va_list ap;
#ifdef VSPRINTF_CHARSTAR
char *rp;
#else
int rval;
#endif
#if defined(__STDC__) || defined(XP_OS2_VACPP)
va_start(ap, fmt);
#else
va_start(ap);
#endif
#ifdef VSPRINTF_CHARSTAR
rp = vsprintf(str, fmt, ap);
va_end(ap);
return (strlen(rp));
#else
rval = vsprintf(str, fmt, ap);
va_end(ap);
return (rval);
#endif
}
int
vsnprintf(str, n, fmt, ap)
char *str;
size_t n;
const char *fmt;
va_list ap;
{
#ifdef VSPRINTF_CHARSTAR
return (strlen(vsprintf(str, fmt, ap)));
#else
return (vsprintf(str, fmt, ap));
#endif
}
#endif /* HAVE_SNPRINTF */
/* Some compilers don't like an empty source file. */
static int dummy = 0;

View File

@@ -1,78 +0,0 @@
/*
* Copyright (c) 1988, 1993
* The Regents of the University of California. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*/
#if defined(LIBC_SCCS) && !defined(lint)
static char sccsid[] = "@(#)strerror.c 8.1 (Berkeley) 6/4/93";
#endif /* LIBC_SCCS and not lint */
#include "watcomfx.h"
#include <string.h>
#ifdef _DLL
#define sys_nerr (*_sys_nerr_dll)
#endif
#ifndef HAVE_STRERROR
#ifndef _AFXDLL
char *
strerror(num)
int num;
{
extern int sys_nerr;
extern char *sys_errlist[];
#define UPREFIX "Unknown error: "
static char ebuf[40] = UPREFIX; /* 64-bit number + slop */
register unsigned int errnum;
register char *p, *t;
char tmp[40];
errnum = num; /* convert to unsigned */
if (errnum < sys_nerr)
return(sys_errlist[errnum]);
/* Do this by hand, so we don't include stdio(3). */
t = tmp;
do {
*t++ = "0123456789"[errnum % 10];
} while (errnum /= 10);
for (p = ebuf + sizeof(UPREFIX) - 1;;) {
*p++ = *--t;
if (t <= tmp)
break;
}
return(ebuf);
}
#endif
#endif /* !HAVE_STRERROR */

View File

@@ -1,46 +0,0 @@
#
# The contents of this file are subject to the Netscape Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/NPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is mozilla.org code.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s):
#
DEPTH = ../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
MODULE = dbm
PROGRAM = lots$(BIN_SUFFIX)
CSRCS = lots.c
ifeq ($(OS_ARCH),WINNT)
EXTRA_DSO_LIBS = dbm$(MOZ_BITS)
else
EXTRA_DSO_LIBS = mozdbm_s
endif
LIBS = $(EXTRA_DSO_LIBS)
include $(topsrcdir)/config/rules.mk
ifeq ($(OS_ARCH), Linux)
DEFINES += -D_BSD_SOURCE
endif

View File

@@ -1,639 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/* ***** BEGIN LICENSE BLOCK *****
* Version: NPL 1.1/GPL 2.0/LGPL 2.1
*
* The contents of this file are subject to the Netscape Public License
* Version 1.1 (the "License"); you may not use this file except in
* compliance with the License. You may obtain a copy of the License at
* http://www.mozilla.org/NPL/
*
* Software distributed under the License is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
* for the specific language governing rights and limitations under the
* License.
*
* The Original Code is mozilla.org code.
*
* The Initial Developer of the Original Code is
* Netscape Communications Corporation.
* Portions created by the Initial Developer are Copyright (C) 1998
* the Initial Developer. All Rights Reserved.
*
* Contributor(s):
*
*
* Alternatively, the contents of this file may be used under the terms of
* either the GNU General Public License Version 2 or later (the "GPL"), or
* the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
* in which case the provisions of the GPL or the LGPL are applicable instead
* of those above. If you wish to allow use of your version of this file only
* under the terms of either the GPL or the LGPL, and not to allow others to
* use your version of this file under the terms of the NPL, indicate your
* decision by deleting the provisions above and replace them with the notice
* and other provisions required by the GPL or the LGPL. If you do not delete
* the provisions above, a recipient may use your version of this file under
* the terms of any one of the NPL, the GPL or the LGPL.
*
* ***** END LICENSE BLOCK ***** */
/* use sequental numbers printed to strings
* to store lots and lots of entries in the
* database.
*
* Start with 100 entries, put them and then
* read them out. Then delete the first
* half and verify that all of the first half
* is gone and then verify that the second
* half is still there.
* Then add the first half back and verify
* again. Then delete the middle third
* and verify again.
* Then increase the size by 1000 and do
* the whole add delete thing again.
*
* The data for each object is the number string translated
* to hex and replicated a random number of times. The
* number of times that the data is replicated is the first
* int32 in the data.
*/
#include <stdio.h>
#include <stdlib.h>
#ifdef STDC_HEADERS
#include <stdarg.h>
#else
#include <varargs.h>
#endif
#ifdef HAVE_MEMORY_H
#include <memory.h>
#endif
#include <string.h>
#include <assert.h>
#include "mcom_db.h"
DB *database=0;
int MsgPriority=5;
#if defined(_WINDOWS) && !defined(WIN32)
#define int32 long
#define uint32 unsigned long
#else
#define int32 int
#define uint32 unsigned int
#endif
typedef enum {
USE_LARGE_KEY,
USE_SMALL_KEY
} key_type_enum;
#define TraceMe(priority, msg) \
do { \
if(priority <= MsgPriority) \
{ \
ReportStatus msg; \
} \
} while(0)
int
ReportStatus(char *string, ...)
{
va_list args;
#ifdef STDC_HEADERS
va_start(args, string);
#else
va_start(args);
#endif
vfprintf(stderr, string, args);
va_end(args);
fprintf (stderr, "\n");
return(0);
}
int
ReportError(char *string, ...)
{
va_list args;
#ifdef STDC_HEADERS
va_start(args, string);
#else
va_start(args);
#endif
fprintf (stderr, "\n ");
vfprintf(stderr, string, args);
fprintf (stderr, "\n");
va_end(args);
return(0);
}
DBT * MakeLargeKey(int32 num)
{
int32 low_bits;
static DBT rv;
static char *string_rv=0;
int rep_char;
size_t size;
if(string_rv)
free(string_rv);
/* generate a really large text key derived from
* an int32
*/
low_bits = (num % 10000) + 1;
/* get the repeat char from the low 26 */
rep_char = (char) ((low_bits % 26) + 'a');
/* malloc a string low_bits wide */
size = low_bits*sizeof(char);
string_rv = (char *)malloc(size);
memset(string_rv, rep_char, size);
rv.data = string_rv;
rv.size = size;
return(&rv);
}
DBT * MakeSmallKey(int32 num)
{
static DBT rv;
static char data_string[64];
rv.data = data_string;
sprintf(data_string, "%ld", (long)num);
rv.size = strlen(data_string);
return(&rv);
}
DBT * GenKey(int32 num, key_type_enum key_type)
{
DBT *key;
switch(key_type)
{
case USE_LARGE_KEY:
key = MakeLargeKey(num);
break;
case USE_SMALL_KEY:
key = MakeSmallKey(num);
break;
default:
abort();
break;
}
return(key);
}
int
SeqDatabase()
{
int status;
DBT key, data;
ReportStatus("SEQuencing through database...");
/* seq throught the whole database */
if(!(status = (*database->seq)(database, &key, &data, R_FIRST)))
{
while(!(status = (database->seq) (database, &key, &data, R_NEXT)));
; /* null body */
}
if(status < 0)
ReportError("Error seq'ing database");
return(status);
}
int
VerifyData(DBT *data, int32 num, key_type_enum key_type)
{
int32 count, compare_num;
size_t size;
int32 *int32_array;
/* The first int32 is count
* The other n entries should
* all equal num
*/
if(data->size < sizeof(int32))
{
ReportError("Data size corrupted");
return -1;
}
memcpy(&count, data->data, sizeof(int32));
size = sizeof(int32)*(count+1);
if(size != data->size)
{
ReportError("Data size corrupted");
return -1;
}
int32_array = (int32*)data->data;
for(;count > 0; count--)
{
memcpy(&compare_num, &int32_array[count], sizeof(int32));
if(compare_num != num)
{
ReportError("Data corrupted");
return -1;
}
}
return(0);
}
/* verify that a range of number strings exist
* or don't exist. And that the data is valid
*/
#define SHOULD_EXIST 1
#define SHOULD_NOT_EXIST 0
int
VerifyRange(int32 low, int32 high, int32 should_exist, key_type_enum key_type)
{
DBT *key, data;
int32 num;
int status;
TraceMe(1, ("Verifying: %ld to %ld, using %s keys",
low, high, key_type == USE_SMALL_KEY ? "SMALL" : "LARGE"));
for(num = low; num <= high; num++)
{
key = GenKey(num, key_type);
status = (*database->get)(database, key, &data, 0);
if(status == 0)
{
/* got the item */
if(!should_exist)
{
ReportError("Item exists but shouldn't: %ld", num);
}
else
{
/* else verify the data */
VerifyData(&data, num, key_type);
}
}
else if(status > 0)
{
/* item not found */
if(should_exist)
{
ReportError("Item not found but should be: %ld", num);
}
}
else
{
/* database error */
ReportError("Database error");
return(-1);
}
}
TraceMe(1, ("Correctly verified: %ld to %ld", low, high));
return(0);
}
DBT *
GenData(int32 num)
{
int32 n;
static DBT *data=0;
int32 *int32_array;
size_t size;
if(!data)
{
data = (DBT*)malloc(sizeof(DBT));
data->size = 0;
data->data = 0;
}
else if(data->data)
{
free(data->data);
}
n = rand();
n = n % 512; /* bound to a 2K size */
size = sizeof(int32)*(n+1);
int32_array = (int32 *) malloc(size);
memcpy(&int32_array[0], &n, sizeof(int32));
for(; n > 0; n--)
{
memcpy(&int32_array[n], &num, sizeof(int32));
}
data->data = (void*)int32_array;
data->size = size;
return(data);
}
#define ADD_RANGE 1
#define DELETE_RANGE 2
int
AddOrDelRange(int32 low, int32 high, int action, key_type_enum key_type)
{
DBT *key, *data;
#if 0 /* only do this if your really analy checking the puts */
DBT tmp_data;
#endif
int32 num;
int status;
if(action != ADD_RANGE && action != DELETE_RANGE)
assert(0);
if(action == ADD_RANGE)
{
TraceMe(1, ("Adding: %ld to %ld: %s keys", low, high,
key_type == USE_SMALL_KEY ? "SMALL" : "LARGE"));
}
else
{
TraceMe(1, ("Deleting: %ld to %ld: %s keys", low, high,
key_type == USE_SMALL_KEY ? "SMALL" : "LARGE"));
}
for(num = low; num <= high; num++)
{
key = GenKey(num, key_type);
if(action == ADD_RANGE)
{
data = GenData(num);
status = (*database->put)(database, key, data, 0);
}
else
{
status = (*database->del)(database, key, 0);
}
if(status < 0)
{
ReportError("Database error %s item: %ld",
action == ADD_RANGE ? "ADDING" : "DELETING",
num);
}
else if(status > 0)
{
ReportError("Could not %s item: %ld",
action == ADD_RANGE ? "ADD" : "DELETE",
num);
}
else if(action == ADD_RANGE)
{
#define SYNC_EVERY_TIME
#ifdef SYNC_EVERY_TIME
status = (*database->sync)(database, 0);
if(status != 0)
ReportError("Database error syncing after add");
#endif
#if 0 /* only do this if your really analy checking the puts */
/* make sure we can still get it
*/
status = (*database->get)(database, key, &tmp_data, 0);
if(status != 0)
{
ReportError("Database error checking item just added: %d",
num);
}
else
{
/* now verify that none of the ones we already
* put in have disappeared
*/
VerifyRange(low, num, SHOULD_EXIST, key_type);
}
#endif
}
}
if(action == ADD_RANGE)
{
TraceMe(1, ("Successfully added: %ld to %ld", low, high));
}
else
{
TraceMe(1, ("Successfully deleted: %ld to %ld", low, high));
}
return(0);
}
int
TestRange(int32 low, int32 range, key_type_enum key_type)
{
int status; int32 low_of_range1, high_of_range1; int32 low_of_range2, high_of_range2;
int32 low_of_range3, high_of_range3;
status = AddOrDelRange(low, low+range, ADD_RANGE, key_type);
status = VerifyRange(low, low+range, SHOULD_EXIST, key_type);
TraceMe(1, ("Finished with sub test 1"));
SeqDatabase();
low_of_range1 = low;
high_of_range1 = low+(range/2);
low_of_range2 = high_of_range1+1;
high_of_range2 = low+range;
status = AddOrDelRange(low_of_range1, high_of_range1, DELETE_RANGE, key_type);
status = VerifyRange(low_of_range1, high_of_range1, SHOULD_NOT_EXIST, key_type);
status = VerifyRange(low_of_range2, low_of_range2, SHOULD_EXIST, key_type);
TraceMe(1, ("Finished with sub test 2"));
SeqDatabase();
status = AddOrDelRange(low_of_range1, high_of_range1, ADD_RANGE, key_type);
/* the whole thing should exist now */
status = VerifyRange(low, low+range, SHOULD_EXIST, key_type);
TraceMe(1, ("Finished with sub test 3"));
SeqDatabase();
status = AddOrDelRange(low_of_range2, high_of_range2, DELETE_RANGE, key_type);
status = VerifyRange(low_of_range1, high_of_range1, SHOULD_EXIST, key_type);
status = VerifyRange(low_of_range2, high_of_range2, SHOULD_NOT_EXIST, key_type);
TraceMe(1, ("Finished with sub test 4"));
SeqDatabase();
status = AddOrDelRange(low_of_range2, high_of_range2, ADD_RANGE, key_type);
/* the whole thing should exist now */
status = VerifyRange(low, low+range, SHOULD_EXIST, key_type);
TraceMe(1, ("Finished with sub test 5"));
SeqDatabase();
low_of_range1 = low;
high_of_range1 = low+(range/3);
low_of_range2 = high_of_range1+1;
high_of_range2 = high_of_range1+(range/3);
low_of_range3 = high_of_range2+1;
high_of_range3 = low+range;
/* delete range 2 */
status = AddOrDelRange(low_of_range2, high_of_range2, DELETE_RANGE, key_type);
status = VerifyRange(low_of_range1, high_of_range1, SHOULD_EXIST, key_type);
status = VerifyRange(low_of_range2, low_of_range2, SHOULD_NOT_EXIST, key_type);
status = VerifyRange(low_of_range3, low_of_range2, SHOULD_EXIST, key_type);
TraceMe(1, ("Finished with sub test 6"));
SeqDatabase();
status = AddOrDelRange(low_of_range2, high_of_range2, ADD_RANGE, key_type);
/* the whole thing should exist now */
status = VerifyRange(low, low+range, SHOULD_EXIST, key_type);
TraceMe(1, ("Finished with sub test 7"));
return(0);
}
#define START_RANGE 109876
int
main(int argc, char **argv)
{
int32 i, j=0;
int quick_exit = 0;
int large_keys = 0;
HASHINFO hash_info = {
16*1024,
0,
0,
0,
0,
0};
if(argc > 1)
{
while(argc > 1)
{
if(!strcmp(argv[argc-1], "-quick"))
quick_exit = 1;
else if(!strcmp(argv[argc-1], "-large"))
{
large_keys = 1;
}
argc--;
}
}
database = dbopen("test.db", O_RDWR | O_CREAT, 0644, DB_HASH, &hash_info);
if(!database)
{
ReportError("Could not open database");
#ifdef unix
perror("");
#endif
exit(1);
}
if(quick_exit)
{
if(large_keys)
TestRange(START_RANGE, 200, USE_LARGE_KEY);
else
TestRange(START_RANGE, 200, USE_SMALL_KEY);
(*database->sync)(database, 0);
(*database->close)(database);
exit(0);
}
for(i=100; i < 10000000; i+=200)
{
if(1 || j)
{
TestRange(START_RANGE, i, USE_LARGE_KEY);
j = 0;
}
else
{
TestRange(START_RANGE, i, USE_SMALL_KEY);
j = 1;
}
if(1 == rand() % 3)
{
(*database->sync)(database, 0);
}
if(1 == rand() % 3)
{
/* close and reopen */
(*database->close)(database);
database = dbopen("test.db", O_RDWR | O_CREAT, 0644, DB_HASH, 0);
if(!database)
{
ReportError("Could not reopen database");
#ifdef unix
perror("");
#endif
exit(1);
}
}
else
{
/* reopen database without closeing the other */
database = dbopen("test.db", O_RDWR | O_CREAT, 0644, DB_HASH, 0);
if(!database)
{
ReportError("Could not reopen database "
"after not closing the other");
#ifdef unix
perror("");
#endif
exit(1);
}
}
}
return(0);
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 82 B

View File

@@ -0,0 +1,97 @@
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Terry Weissman <terry@mozilla.org>
# Myk Melez <myk@mozilla.org>
############################################################################
# Module Initialization
############################################################################
use diagnostics;
use strict;
package Attachment;
# This module requires that its caller have said "require CGI.pl" to import
# relevant functions from that script and its companion globals.pl.
############################################################################
# Functions
############################################################################
sub query
{
# Retrieves and returns an array of attachment records for a given bug.
# This data should be given to attachment/list.atml in an
# "attachments" variable.
my ($bugid) = @_;
my $in_editbugs = &::UserInGroup("editbugs");
# Retrieve a list of attachments for this bug and write them into an array
# of hashes in which each hash represents a single attachment.
&::SendSQL("
SELECT attach_id, creation_ts, mimetype, description, ispatch,
isobsolete, submitter_id
FROM attachments WHERE bug_id = $bugid ORDER BY attach_id
");
my @attachments = ();
while (&::MoreSQLData()) {
my %a;
my $submitter_id;
($a{'attachid'}, $a{'date'}, $a{'contenttype'}, $a{'description'},
$a{'ispatch'}, $a{'isobsolete'}, $submitter_id) = &::FetchSQLData();
# Format the attachment's creation/modification date into a standard
# format (YYYY-MM-DD HH:MM)
if ($a{'date'} =~ /^(\d\d\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/) {
$a{'date'} = "$1-$2-$3 $4:$5";
}
# Retrieve a list of status flags that have been set on the attachment.
&::PushGlobalSQLState();
&::SendSQL("
SELECT name
FROM attachstatuses, attachstatusdefs
WHERE attach_id = $a{'attachid'}
AND attachstatuses.statusid = attachstatusdefs.id
ORDER BY sortkey
");
my @statuses = ();
while (&::MoreSQLData()) {
my ($status) = &::FetchSQLData();
push @statuses , $status;
}
$a{'statuses'} = \@statuses;
&::PopGlobalSQLState();
# We will display the edit link if the user can edit the attachment;
# ie the are the submitter, or they have canedit.
# Also show the link if the user is not logged in - in that cae,
# They'll be prompted later
$a{'canedit'} = ($::userid == 0 || $submitter_id == $::userid ||
$in_editbugs);
push @attachments, \%a;
}
return \@attachments;
}
1;

547
mozilla/webtools/bugzilla/Bug.pm Executable file
View File

@@ -0,0 +1,547 @@
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Dawn Endico <endico@mozilla.org>
# Terry Weissman <terry@mozilla.org>
# Chris Yeh <cyeh@bluemartini.com>
use diagnostics;
use strict;
use DBI;
use RelationSet;
use vars qw($unconfirmedstate $legal_keywords);
require "globals.pl";
require "CGI.pl";
package Bug;
use CGI::Carp qw(fatalsToBrowser);
my %ok_field;
for my $key (qw (bug_id product version rep_platform op_sys bug_status
resolution priority bug_severity component assigned_to
reporter bug_file_loc short_desc target_milestone
qa_contact status_whiteboard creation_ts groupset
delta_ts votes whoid usergroupset comment query error) ){
$ok_field{$key}++;
}
# create a new empty bug
#
sub new {
my $type = shift();
my %bug;
# create a ref to an empty hash and bless it
#
my $self = {%bug};
bless $self, $type;
# construct from a hash containing a bug's info
#
if ($#_ == 1) {
$self->initBug(@_);
} else {
confess("invalid number of arguments \($#_\)($_)");
}
# bless as a Bug
#
return $self;
}
# dump info about bug into hash unless user doesn't have permission
# user_id 0 is used when person is not logged in.
#
sub initBug {
my $self = shift();
my ($bug_id, $user_id) = (@_);
my $old_bug_id = $bug_id;
if ((! defined $bug_id) || (!$bug_id) || (!&::detaint_natural($bug_id))) {
# no bug number given
$self->{'bug_id'} = $old_bug_id;
$self->{'error'} = "InvalidBugId";
return $self;
}
# default userid 0, or get DBID if you used an email address
unless (defined $user_id) {
$user_id = 0;
}
else {
if ($user_id =~ /^\@/) {
$user_id = &::DBname_to_id($user_id);
}
}
&::ConnectToDatabase();
&::GetVersionTable();
# this verification should already have been done by caller
# my $loginok = quietly_check_login();
$self->{'whoid'} = $user_id;
&::SendSQL("SELECT groupset FROM profiles WHERE userid=$self->{'whoid'}");
my $usergroupset = &::FetchOneColumn();
if (!$usergroupset) { $usergroupset = '0' }
$self->{'usergroupset'} = $usergroupset;
# Check to see if we can see this bug
if (!&::CanSeeBug($bug_id, $user_id, $usergroupset)) {
# Permission denied to see bug
$self->{'bug_id'} = $old_bug_id;
$self->{'error'} = "PermissionDenied";
return $self;
}
my $query = "";
if ($::driver eq 'mysql') {
$query = "
select
bugs.bug_id, product, version, rep_platform, op_sys, bug_status,
resolution, priority, bug_severity, component, assigned_to, reporter,
bug_file_loc, short_desc, target_milestone, qa_contact,
status_whiteboard, date_format(creation_ts,'%Y-%m-%d %H:%i'),
groupset, delta_ts, sum(votes.count)
from bugs left join votes using(bug_id)
where bugs.bug_id = $bug_id
group by bugs.bug_id";
} elsif ($::driver eq 'Pg') {
$query = "
select
bugs.bug_id, product, version, rep_platform, op_sys, bug_status,
resolution, priority, bug_severity, component, assigned_to, reporter,
bug_file_loc, short_desc, target_milestone, qa_contact,
status_whiteboard, creation_ts,
groupset, delta_ts, sum(votes.count)
from bugs left join votes using(bug_id)
where bugs.bug_id = $bug_id
and (bugs.groupset & int8($usergroupset)) = bugs.groupset
group by bugs.bug_id, product, version, rep_platform, op_sys, bug_status,
resolution, priority, bug_severity, component, assigned_to, reporter,
bug_file_loc, short_desc, target_milestone, qa_contact, status_whiteboard,
creation_ts, groupset, delta_ts";
}
&::SendSQL($query);
my @row;
if (@row = &::FetchSQLData()) {
my $count = 0;
my %fields;
foreach my $field ("bug_id", "product", "version", "rep_platform",
"op_sys", "bug_status", "resolution", "priority",
"bug_severity", "component", "assigned_to", "reporter",
"bug_file_loc", "short_desc", "target_milestone",
"qa_contact", "status_whiteboard", "creation_ts",
"groupset", "delta_ts", "votes") {
$fields{$field} = shift @row;
if ($fields{$field}) {
$self->{$field} = $fields{$field};
}
$count++;
}
} else {
&::SendSQL("select groupset from bugs where bug_id = $bug_id");
if (@row = &::FetchSQLData()) {
$self->{'bug_id'} = $bug_id;
$self->{'error'} = "NotPermitted";
return $self;
} else {
$self->{'bug_id'} = $bug_id;
$self->{'error'} = "NotFound";
return $self;
}
}
$self->{'assigned_to'} = &::DBID_to_name($self->{'assigned_to'});
$self->{'reporter'} = &::DBID_to_name($self->{'reporter'});
my $ccSet = new RelationSet;
$ccSet->mergeFromDB("select who from cc where bug_id=$bug_id");
my @cc = $ccSet->toArrayOfStrings();
if (@cc) {
$self->{'cc'} = \@cc;
}
if (&::Param("useqacontact") && (defined $self->{'qa_contact'}) ) {
my $name = $self->{'qa_contact'} > 0 ? &::DBID_to_name($self->{'qa_contact'}) :"";
if ($name) {
$self->{'qa_contact'} = $name;
}
}
if (@::legal_keywords) {
&::SendSQL("SELECT keyworddefs.name
FROM keyworddefs, keywords
WHERE keywords.bug_id = $bug_id
AND keyworddefs.id = keywords.keywordid
ORDER BY keyworddefs.name");
my @list;
while (&::MoreSQLData()) {
push(@list, &::FetchOneColumn());
}
if (@list) {
$self->{'keywords'} = join(', ', @list);
}
}
&::SendSQL("select attach_id, creation_ts, description
from attachments
where bug_id = $bug_id");
my @attachments;
while (&::MoreSQLData()) {
my ($attachid, $date, $desc) = (&::FetchSQLData());
if ($date =~ /^(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/) {
$date = "$3/$4/$2 $5:$6";
my %attach;
$attach{'attachid'} = $attachid;
$attach{'date'} = $date;
$attach{'desc'} = $desc;
push @attachments, \%attach;
}
}
if (@attachments) {
$self->{'attachments'} = \@attachments;
}
&::SendSQL("select bug_id, who, bug_when, thetext
from longdescs
where bug_id = $bug_id");
my @longdescs;
while (&::MoreSQLData()) {
my ($bug_id, $who, $bug_when, $thetext) = (&::FetchSQLData());
my %longdesc;
$longdesc{'who'} = $who;
$longdesc{'bug_when'} = $bug_when;
$longdesc{'thetext'} = $thetext;
push @longdescs, \%longdesc;
}
if (@longdescs) {
$self->{'longdescs'} = \@longdescs;
}
if (&::Param("usedependencies")) {
my @depends = EmitDependList("blocked", "dependson", $bug_id);
if ( @depends ) {
$self->{'dependson'} = \@depends;
}
my @blocks = EmitDependList("dependson", "blocked", $bug_id);
if ( @blocks ) {
$self->{'blocks'} = \@blocks;
}
}
return $self;
}
# given a bug hash, emit xml for it. with file header provided by caller
#
sub emitXML {
( $#_ == 0 ) || confess("invalid number of arguments");
my $self = shift();
my $xml;
if (exists $self->{'error'}) {
$xml .= "<bug error=\"$self->{'error'}\">\n";
$xml .= " <bug_id>$self->{'bug_id'}</bug_id>\n";
$xml .= "</bug>\n";
return $xml;
}
$xml .= "<bug>\n";
foreach my $field ("bug_id", "bug_status", "product",
"priority", "version", "rep_platform", "assigned_to", "delta_ts",
"component", "reporter", "target_milestone", "bug_severity",
"creation_ts", "qa_contact", "op_sys", "resolution", "bug_file_loc",
"short_desc", "keywords", "status_whiteboard") {
if ($self->{$field}) {
$xml .= " <$field>" . QuoteXMLChars($self->{$field}) . "</$field>\n";
}
}
foreach my $field ("dependson", "blocks", "cc") {
if (defined $self->{$field}) {
for (my $i=0 ; $i < @{$self->{$field}} ; $i++) {
$xml .= " <$field>" . $self->{$field}[$i] . "</$field>\n";
}
}
}
if (defined $self->{'longdescs'}) {
for (my $i=0 ; $i < @{$self->{'longdescs'}} ; $i++) {
$xml .= " <long_desc>\n";
$xml .= " <who>" . &::DBID_to_name($self->{'longdescs'}[$i]->{'who'})
. "</who>\n";
$xml .= " <bug_when>" . $self->{'longdescs'}[$i]->{'bug_when'}
. "</bug_when>\n";
$xml .= " <thetext>" . QuoteXMLChars($self->{'longdescs'}[$i]->{'thetext'})
. "</thetext>\n";
$xml .= " </long_desc>\n";
}
}
if (defined $self->{'attachments'}) {
for (my $i=0 ; $i < @{$self->{'attachments'}} ; $i++) {
$xml .= " <attachment>\n";
$xml .= " <attachid>" . $self->{'attachments'}[$i]->{'attachid'}
. "</attachid>\n";
$xml .= " <date>" . $self->{'attachments'}[$i]->{'date'} . "</date>\n";
$xml .= " <desc>" . QuoteXMLChars($self->{'attachments'}[$i]->{'desc'}) . "</desc>\n";
# $xml .= " <type>" . $self->{'attachments'}[$i]->{'type'} . "</type>\n";
# $xml .= " <data>" . $self->{'attachments'}[$i]->{'data'} . "</data>\n";
$xml .= " </attachment>\n";
}
}
$xml .= "</bug>\n";
return $xml;
}
sub EmitDependList {
my ($myfield, $targetfield, $bug_id) = (@_);
my @list;
&::SendSQL("select dependencies.$targetfield, bugs.bug_status
from dependencies, bugs
where dependencies.$myfield = $bug_id
and bugs.bug_id = dependencies.$targetfield
order by dependencies.$targetfield");
while (&::MoreSQLData()) {
my ($i, $stat) = (&::FetchSQLData());
push @list, $i;
}
return @list;
}
sub QuoteXMLChars {
$_[0] =~ s/&/&amp;/g;
$_[0] =~ s/</&lt;/g;
$_[0] =~ s/>/&gt;/g;
$_[0] =~ s/'/&apos;/g;
$_[0] =~ s/"/&quot;/g;
# $_[0] =~ s/([\x80-\xFF])/&XmlUtf8Encode(ord($1))/ge;
return($_[0]);
}
sub XML_Header {
my ($urlbase, $version, $maintainer, $exporter) = (@_);
my $xml;
$xml = "<?xml version=\"1.0\" standalone=\"yes\"?>\n";
$xml .= "<!DOCTYPE bugzilla SYSTEM \"$urlbase";
if (! ($urlbase =~ /.+\/$/)) {
$xml .= "/";
}
$xml .= "bugzilla.dtd\">\n";
$xml .= "<bugzilla";
if (defined $exporter) {
$xml .= " exporter=\"$exporter\"";
}
$xml .= " version=\"$version\"";
$xml .= " urlbase=\"$urlbase\"";
$xml .= " maintainer=\"$maintainer\">\n";
return ($xml);
}
sub XML_Footer {
return ("</bugzilla>\n");
}
sub UserInGroup {
my $self = shift();
my ($groupname) = (@_);
if ($self->{'usergroupset'} eq "0") {
return 0;
}
&::ConnectToDatabase();
&::SendSQL("select (group_bit & int8($self->{'usergroupset'})) != 0 from groups where name = "
. &::SqlQuote($groupname));
my $bit = &::FetchOneColumn();
if ($bit) {
return 1;
}
return 0;
}
sub CanChangeField {
my $self = shift();
my ($f, $oldvalue, $newvalue) = (@_);
my $UserInEditGroupSet = -1;
my $UserInCanConfirmGroupSet = -1;
my $ownerid;
my $reporterid;
my $qacontactid;
if ($f eq "assigned_to" || $f eq "reporter" || $f eq "qa_contact") {
if ($oldvalue =~ /^\d+$/) {
if ($oldvalue == 0) {
$oldvalue = "";
} else {
$oldvalue = &::DBID_to_name($oldvalue);
}
}
}
if ($oldvalue eq $newvalue) {
return 1;
}
if (&::trim($oldvalue) eq &::trim($newvalue)) {
return 1;
}
if ($f =~ /^longdesc/) {
return 1;
}
if ($UserInEditGroupSet < 0) {
$UserInEditGroupSet = UserInGroup($self, "editbugs");
}
if ($UserInEditGroupSet) {
return 1;
}
&::SendSQL("SELECT reporter, assigned_to, qa_contact FROM bugs " .
"WHERE bug_id = $self->{'bug_id'}");
($reporterid, $ownerid, $qacontactid) = (&::FetchSQLData());
# Let reporter change bug status, even if they can't edit bugs.
# If reporter can't re-open their bug they will just file a duplicate.
# While we're at it, let them close their own bugs as well.
if ( ($f eq "bug_status") && ($self->{'whoid'} eq $reporterid) ) {
return 1;
}
if ($f eq "bug_status" && $newvalue ne $::unconfirmedstate &&
&::IsOpenedState($newvalue)) {
# Hmm. They are trying to set this bug to some opened state
# that isn't the UNCONFIRMED state. Are they in the right
# group? Or, has it ever been confirmed? If not, then this
# isn't legal.
if ($UserInCanConfirmGroupSet < 0) {
$UserInCanConfirmGroupSet = &::UserInGroup("canconfirm");
}
if ($UserInCanConfirmGroupSet) {
return 1;
}
&::SendSQL("SELECT everconfirmed FROM bugs WHERE bug_id = $self->{'bug_id'}");
my $everconfirmed = FetchOneColumn();
if ($everconfirmed) {
return 1;
}
} elsif ($reporterid eq $self->{'whoid'} || $ownerid eq $self->{'whoid'} ||
$qacontactid eq $self->{'whoid'}) {
return 1;
}
$self->{'error'} = "
Only the owner or submitter of the bug, or a sufficiently
empowered user, may make that change to the $f field."
}
sub Collision {
my $self = shift();
my $write = "WRITE"; # Might want to make a param to control
# whether we do LOW_PRIORITY ...
if ($::driver eq 'mysql') {
&::SendSQL("LOCK TABLES bugs $write, bugs_activity $write, cc $write, " .
"cc AS selectVisible_cc $write, " .
"profiles $write, dependencies $write, votes $write, " .
"keywords $write, longdescs $write, fielddefs $write, " .
"keyworddefs READ, groups READ, attachments READ, products READ");
}
&::SendSQL("SELECT delta_ts FROM bugs where bug_id=$self->{'bug_id'}");
my $delta_ts = &::FetchOneColumn();
if ($::driver eq 'mysql') {
&::SendSQL("unlock tables");
}
if ($self->{'delta_ts'} ne $delta_ts) {
return 1;
}
else {
return 0;
}
}
sub AppendComment {
my $self = shift();
my ($comment) = (@_);
$comment =~ s/\r\n/\n/g; # Get rid of windows-style line endings.
$comment =~ s/\r/\n/g; # Get rid of mac-style line endings.
if ($comment =~ /^\s*$/) { # Nothin' but whitespace.
return;
}
&::SendSQL("INSERT INTO longdescs (bug_id, who, bug_when, thetext) " .
"VALUES($self->{'bug_id'}, $self->{'whoid'}, now(), " . &::SqlQuote($comment) . ")");
&::SendSQL("UPDATE bugs SET delta_ts = now() WHERE bug_id = $self->{'bug_id'}");
}
#from o'reilley's Programming Perl
sub display {
my $self = shift;
my @keys;
if (@_ == 0) { # no further arguments
@keys = sort keys(%$self);
} else {
@keys = @_; # use the ones given
}
foreach my $key (@keys) {
print "\t$key => $self->{$key}\n";
}
}
sub CommitChanges {
#snapshot bug
#snapshot dependencies
#check can change fields
#check collision
#lock and change fields
#notify through mail
}
sub AUTOLOAD {
use vars qw($AUTOLOAD);
my $self = shift;
my $type = ref($self) || $self;
my $attr = $AUTOLOAD;
$attr =~ s/.*:://;
return unless $attr=~ /[^A-Z]/;
if (@_) {
$self->{$attr} = shift;
return;
}
confess ("invalid bug attribute $attr") unless $ok_field{$attr};
if (defined $self->{$attr}) {
return $self->{$attr};
} else {
return '';
}
}
1;

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,16 @@
* This README is no longer used to house installation instructions. Instead,
it contains pointers to where you may find the information you need.
* Installation instructions are now found in docs/, with a variety of document
types available. Please refer to these documents when installing, configuring,
and maintaining your Bugzilla installation. A helpful starting point is
docs/txt/Bugzilla-Guide.txt, or with a web browser at docs/html/index.html.
* Release notes for people upgrading to a new version of Bugzilla are
available at docs/rel_notes.txt.
* If you wish to contribute to the documentation, please read docs/README.docs.
* The Bugzilla web site is at "http://www.mozilla.org/projects/bugzilla/".
This site will contain the latest Bugzilla information, including how to
report bugs and how to get help with Bugzilla.

View File

@@ -0,0 +1,268 @@
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are
# Copyright (C) 2000 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Dan Mosedale <dmose@mozilla.org>
# Terry Weissman <terry@mozilla.org>
# Dave Miller <justdave@syndicomm.com>
# This object models a set of relations between one item and a group
# of other items. An example is the set of relations between one bug
# and the users CCed on that bug. Currently, the relation objects are
# expected to be bugzilla userids. However, this could and perhaps
# should be generalized to work with non userid objects, such as
# keywords associated with a bug. That shouldn't be hard to do; it
# might involve turning this into a virtual base class, and having
# UserSet and KeywordSet types that inherit from it.
use diagnostics;
use strict;
# Everything that uses RelationSet should already have globals.pl loaded
# so we don't want to load it here. Doing so causes a loop in Perl because
# globals.pl turns around and does a 'use RelationSet'
# See http://bugzilla.mozilla.org/show_bug.cgi?id=72862
#require "globals.pl";
package RelationSet;
use CGI::Carp qw(fatalsToBrowser);
# create a new empty RelationSet
#
sub new {
my $type = shift();
# create a ref to an empty hash and bless it
#
my $self = {};
bless $self, $type;
# construct from a comma-delimited string
#
if ($#_ == 0) {
$self->mergeFromString($_[0]);
}
# unless this was a constructor for an empty list, somebody screwed up.
#
elsif ( $#_ != -1 ) {
confess("invalid number of arguments");
}
# bless as a RelationSet
#
return $self;
}
# Assumes that the set of relations "FROM $table WHERE $constantSql and
# $column = $value" is currently represented by $self, and this set should
# be updated to look like $other.
#
# Returns an array of two strings, one INSERT and one DELETE, which will
# make this change. Either or both strings may be the empty string,
# meaning that no INSERT or DELETE or both (respectively) need to be done.
#
# THE CALLER IS RESPONSIBLE FOR ANY DESIRED LOCKING AND/OR CONSISTENCY
# CHECKS (not to mention doing the SendSQL() calls).
#
sub generateSqlDeltas {
($#_ == 5) || confess("invalid number of arguments");
my ( $self, # instance ptr to set representing the existing state
$endState, # instance ptr to set representing the desired state
$table, # table where these relations are kept
$invariantName, # column held const for a RelationSet (often "bug_id")
$invariantValue, # what to hold the above column constant at
$columnName # the column which varies (often a userid)
) = @_;
# construct the insert list by finding relations which exist in the
# end state but not the current state.
#
my @endStateRelations = keys(%$endState);
my @insertList = ();
foreach ( @endStateRelations ) {
push ( @insertList, $_ ) if ( ! exists $$self{"$_"} );
}
# we've built the list. If it's non-null, add required sql chrome.
#
my $sqlInsert="";
if ( $#insertList > -1 ) {
$sqlInsert = "INSERT INTO $table ($invariantName, $columnName) VALUES " .
join (",",
map ( "($invariantValue, $_)" , @insertList )
);
}
# construct the delete list by seeing which relations exist in the
# current state but not the end state
#
my @selfRelations = keys(%$self);
my @deleteList = ();
foreach ( @selfRelations ) {
push (@deleteList, $_) if ( ! exists $$endState{"$_"} );
}
# we've built the list. if it's non-empty, add required sql chrome.
#
my $sqlDelete = "";
if ( $#deleteList > -1 ) {
$sqlDelete = "DELETE FROM $table WHERE $invariantName = $invariantValue " .
"AND $columnName IN ( " . join (",", @deleteList) . " )";
}
return ($sqlInsert, $sqlDelete);
}
# compare the current object with another.
#
sub isEqual {
($#_ == 1) || confess("invalid number of arguments");
my $self = shift();
my $other = shift();
# get arrays of the keys for faster processing
#
my @selfRelations = keys(%$self);
my @otherRelations = keys(%$other);
# make sure the arrays are the same size
#
return 0 if ( $#selfRelations != $#otherRelations );
# bail out if any of the elements are different
#
foreach my $relation ( @selfRelations ) {
return 0 if ( !exists $$other{$relation})
}
# we made it!
#
return 1;
}
# merge the results of a SQL command into this set
#
sub mergeFromDB {
( $#_ == 1 ) || confess("invalid number of arguments");
my $self = shift();
&::SendSQL(shift());
while (my @row = &::FetchSQLData()) {
$$self{$row[0]} = 1;
}
return;
}
# merge a set in string form into this set
#
sub mergeFromString {
($#_ == 1) || confess("invalid number of arguments");
my $self = shift();
# do the merge
#
foreach my $person (split(/[ ,]/, shift())) {
if ($person ne "") {
$$self{&::DBNameToIdAndCheck($person)} = 1;
}
}
}
# remove a set in string form from this set
#
sub removeItemsInString {
($#_ == 1) || confess("invalid number of arguments");
my $self = shift();
# do the merge
#
foreach my $person (split(/[ ,]/, shift())) {
if ($person ne "") {
my $dbid = &::DBNameToIdAndCheck($person);
if (exists $$self{$dbid}) {
delete $$self{$dbid};
}
}
}
}
# remove a set in array form from this set
#
sub removeItemsInArray {
($#_ > 0) || confess("invalid number of arguments");
my $self = shift();
# do the merge
#
while (my $person = shift()) {
if ($person ne "") {
my $dbid = &::DBNameToIdAndCheck($person);
if (exists $$self{$dbid}) {
delete $$self{$dbid};
}
}
}
}
# return the number of elements in this set
#
sub size {
my $self = shift();
my @k = keys(%$self);
return $#k++;
}
# return this set in array form
#
sub toArray {
my $self= shift();
return keys(%$self);
}
# return this set as an array of strings
#
sub toArrayOfStrings {
($#_ == 0) || confess("invalid number of arguments");
my $self = shift();
my @result = ();
foreach my $i ( keys %$self ) {
push @result, &::DBID_to_name($i);
}
return sort { lc($a) cmp lc($b) } @result;
}
# return this set in string form (comma-separated and sorted)
#
sub toString {
($#_ == 0) || confess("invalid number of arguments");
my $self = shift();
my @result = ();
foreach my $i ( keys %$self ) {
push @result, &::DBID_to_name($i);
}
return join(',', sort(@result));
}
1;

View File

@@ -0,0 +1,273 @@
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Myk Melez <myk@mozilla.org>
################################################################################
# Module Initialization
################################################################################
# Make it harder for us to do dangerous things in Perl.
use diagnostics;
use strict;
# Bundle the functions in this file together into the "Token" package.
package Token;
use Date::Format;
# This module requires that its caller have said "require CGI.pl" to import
# relevant functions from that script and its companion globals.pl.
################################################################################
# Constants
################################################################################
# The maximum number of days a token will remain valid.
my $maxtokenage = 3;
################################################################################
# Functions
################################################################################
sub IssueEmailChangeToken {
my ($userid, $old_email, $new_email) = @_;
my $token_ts = time();
my $issuedate = time2str("%Y-%m-%d %H:%M", $token_ts);
# Generate a unique token and insert it into the tokens table.
# We have to lock the tokens table before generating the token,
# since the database must be queried for token uniqueness.
&::SendSQL("LOCK TABLES tokens WRITE");
my $token = GenerateUniqueToken();
my $quotedtoken = &::SqlQuote($token);
my $quoted_emails = &::SqlQuote($old_email . ":" . $new_email);
&::SendSQL("INSERT INTO tokens ( userid , issuedate , token ,
tokentype , eventdata )
VALUES ( $userid , '$issuedate' , $quotedtoken ,
'emailold' , $quoted_emails )");
my $newtoken = GenerateUniqueToken();
$quotedtoken = &::SqlQuote($newtoken);
&::SendSQL("INSERT INTO tokens ( userid , issuedate , token ,
tokentype , eventdata )
VALUES ( $userid , '$issuedate' , $quotedtoken ,
'emailnew' , $quoted_emails )");
&::SendSQL("UNLOCK TABLES");
# Mail the user the token along with instructions for using it.
my $template = $::template;
my $vars = $::vars;
$vars->{'oldemailaddress'} = $old_email . &::Param('emailsuffix');
$vars->{'newemailaddress'} = $new_email . &::Param('emailsuffix');
$vars->{'max_token_age'} = $maxtokenage;
$vars->{'token_ts'} = $token_ts;
$vars->{'token'} = $token;
$vars->{'emailaddress'} = $old_email . &::Param('emailsuffix');
my $message;
$template->process("account/email/change-old.txt.tmpl", $vars, \$message)
|| &::ThrowTemplateError($template->error());
open SENDMAIL, "|/usr/lib/sendmail -t -i";
print SENDMAIL $message;
close SENDMAIL;
$vars->{'token'} = $newtoken;
$vars->{'emailaddress'} = $new_email . &::Param('emailsuffix');
$message = "";
$template->process("account/email/change-new.txt.tmpl", $vars, \$message)
|| &::ThrowTemplateError($template->error());
open SENDMAIL, "|/usr/lib/sendmail -t -i";
print SENDMAIL $message;
close SENDMAIL;
}
sub IssuePasswordToken {
# Generates a random token, adds it to the tokens table, and sends it
# to the user with instructions for using it to change their password.
my ($loginname) = @_;
# Retrieve the user's ID from the database.
my $quotedloginname = &::SqlQuote($loginname);
&::SendSQL("SELECT userid FROM profiles WHERE login_name = $quotedloginname");
my ($userid) = &::FetchSQLData();
my $token_ts = time();
my $issuedate = time2str("%Y-%m-%d %H:%M", $token_ts);
# Generate a unique token and insert it into the tokens table.
# We have to lock the tokens table before generating the token,
# since the database must be queried for token uniqueness.
&::SendSQL("LOCK TABLE tokens WRITE") if $::driver eq 'mysql';
my $token = GenerateUniqueToken();
my $quotedtoken = &::SqlQuote($token);
my $quotedipaddr = &::SqlQuote($::ENV{'REMOTE_ADDR'});
&::SendSQL("INSERT INTO tokens ( userid , issuedate , token , tokentype , eventdata )
VALUES ( $userid , '$issuedate' , $quotedtoken , 'password' , $quotedipaddr )");
&::SendSQL("UNLOCK TABLES") if $::driver eq 'mysql';
# Mail the user the token along with instructions for using it.
my $template = $::template;
my $vars = $::vars;
$vars->{'token'} = $token;
$vars->{'emailaddress'} = $loginname . &::Param('emailsuffix');
$vars->{'max_token_age'} = $maxtokenage;
$vars->{'token_ts'} = $token_ts;
my $message = "";
$template->process("account/password/forgotten-password.txt.tmpl",
$vars, \$message)
|| &::ThrowTemplateError($template->error());
open SENDMAIL, "|/usr/lib/sendmail -t -i";
print SENDMAIL $message;
close SENDMAIL;
}
sub CleanTokenTable {
&::SendSQL("LOCK TABLES tokens WRITE") if $::driver eq 'mysql';
if ($::driver eq 'mysql') {
&::SendSQL("DELETE FROM tokens WHERE TO_DAYS(NOW()) - TO_DAYS(issuedate) >= " . $maxtokenage);
} elsif ($::driver eq 'Pg') {
&::SendSQL("DELETE FROM tokens WHERE now() - issuedate >= '$maxtokenage days'");
}
&::SendSQL("UNLOCK TABLES") if $::driver eq 'mysql';
}
sub GenerateUniqueToken {
# Generates a unique random token. Uses &GenerateRandomPassword
# for the tokens themselves and checks uniqueness by searching for
# the token in the "tokens" table. Gives up if it can't come up
# with a token after about one hundred tries.
my $token;
my $duplicate = 1;
my $tries = 0;
while ($duplicate) {
++$tries;
if ($tries > 100) {
&::DisplayError("Something is seriously wrong with the token generation system.");
exit;
}
$token = &::GenerateRandomPassword();
&::SendSQL("SELECT userid FROM tokens WHERE token = " . &::SqlQuote($token));
$duplicate = &::FetchSQLData();
}
return $token;
}
sub Cancel {
# Cancels a previously issued token and notifies the system administrator.
# This should only happen when the user accidentally makes a token request
# or when a malicious hacker makes a token request on behalf of a user.
my ($token, $cancelaction) = @_;
# Quote the token for inclusion in SQL statements.
my $quotedtoken = &::SqlQuote($token);
# Get information about the token being cancelled.
&::SendSQL("SELECT issuedate , tokentype , eventdata , login_name , realname
FROM tokens, profiles
WHERE tokens.userid = profiles.userid
AND token = $quotedtoken");
my ($issuedate, $tokentype, $eventdata, $loginname, $realname) = &::FetchSQLData();
# Get the email address of the Bugzilla maintainer.
my $maintainer = &::Param('maintainer');
# Format the user's real name and email address into a single string.
my $username = $realname ? $realname . " <" . $loginname . ">" : $loginname;
my $template = $::template;
my $vars = $::vars;
$vars->{'emailaddress'} = $username;
$vars->{'maintainer'} = $maintainer;
$vars->{'remoteaddress'} = $::ENV{'REMOTE_ADDR'};
$vars->{'token'} = $token;
$vars->{'tokentype'} = $tokentype;
$vars->{'issuedate'} = $issuedate;
$vars->{'eventdata'} = $eventdata;
$vars->{'cancelaction'} = $cancelaction;
# Notify the user via email about the cancellation.
my $message;
$template->process("account/cancel-token.txt.tmpl", $vars, \$message)
|| &::ThrowTemplateError($template->error());
open SENDMAIL, "|/usr/lib/sendmail -t -i";
print SENDMAIL $message;
close SENDMAIL;
# Delete the token from the database.
&::SendSQL("LOCK TABLE tokens WRITE") if $::driver eq 'mysql';
&::SendSQL("DELETE FROM tokens WHERE token = $quotedtoken");
&::SendSQL("UNLOCK TABLES") if $::driver eq 'mysql';
}
sub HasPasswordToken {
# Returns a password token if the user has one.
my ($userid) = @_;
&::SendSQL("SELECT token FROM tokens
WHERE userid = $userid AND tokentype = 'password' LIMIT 1");
my ($token) = &::FetchSQLData();
return $token;
}
sub HasEmailChangeToken {
# Returns an email change token if the user has one.
my ($userid) = @_;
&::SendSQL("SELECT token FROM tokens
WHERE userid = $userid
AND tokentype = 'emailnew'
OR tokentype = 'emailold' LIMIT 1");
my ($token) = &::FetchSQLData();
return $token;
}
1;

View File

@@ -0,0 +1,3 @@
Please consult The Bugzilla Guide for instructions on how to upgrade
Bugzilla from an older version. The Guide can be found with this
distribution, in docs/html, docs/txt, and docs/sgml.

View File

@@ -0,0 +1,407 @@
This file contains only important changes made to Bugzilla before release
2.8. If you are upgrading from version older than 2.8, please read this file.
If you are upgrading from 2.8 or newer, please read the Installation and
Upgrade instructions in The Bugzilla Guide, found with this distribution in
docs/html, docs/txt, and docs/sgml.
For a complete list of what changes, use Bonsai
(http://cvs-mirror.mozilla.org/webtools/bonsai/cvsqueryform.cgi) to
query the CVS tree. For example,
http://cvs-mirror.mozilla.org/webtools/bonsai/cvsquery.cgi?module=all&branch=HEAD&branchtype=match&dir=mozilla%2Fwebtools%2Fbugzilla&file=&filetype=match&who=&whotype=match&sortby=Date&hours=2&date=week&mindate=&maxdate=&cvsroot=%2Fcvsroot
will tell you what has been changed in the last week.
10/12/99 The CHANGES file is now obsolete! There is a new file called
checksetup.pl. You should get in the habit of running that file every time
you update your installation of Bugzilla. That file will be constantly
updated to automatically update your installation to match any code changes.
If you're curious as to what is going on, changes are commented in that file,
at the end.
Many thanks to Holger Schurig <holgerschurig@nikocity.de> for writing this
script!
10/11/99 Restructured voting database to add a cached value in each
bug recording how many total votes that bug has. While I'm at it, I
removed the unused "area" field from the bugs database. It is
distressing to realize that the bugs table has reached the maximum
number of indices allowed by MySQL (16), which may make future
enhancements awkward.
You must feed the following to MySQL:
alter table bugs drop column area;
alter table bugs add column votes mediumint not null, add index (votes);
You then *must* delete the data/versioncache file when you make this
change, as it contains references to the "area" field. Deleting it is safe,
bugzilla will correctly regenerate it.
If you have been using the voting feature at all, then you will then
need to update the voting cache. You can do this by visiting the
sanitycheck.cgi page, and taking it up on its offer to rebuild the
votes stuff.
10/7/99 Added voting ability. You must run the new script
"makevotestable.sh". You must also feed the following to mysql:
alter table products add column votesperuser smallint not null;
9/15/99 Apparently, newer alphas of MySQL won't allow you to have
"when" as a column name. So, I have had to rename a column in the
bugs_activity table. You must feed the below to mysql or you won't
work at all.
alter table bugs_activity change column when bug_when datetime not null;
8/16/99 Added "OpenVMS" to the list of OS's. Feed this to mysql:
alter table bugs change column op_sys op_sys enum("All", "Windows 3.1", "Windows 95", "Windows 98", "Windows NT", "Mac System 7", "Mac System 7.5", "Mac System 7.6.1", "Mac System 8.0", "Mac System 8.5", "Mac System 8.6", "AIX", "BSDI", "HP-UX", "IRIX", "Linux", "FreeBSD", "OSF/1", "Solaris", "SunOS", "Neutrino", "OS/2", "BeOS", "OpenVMS", "other") not null;
6/22/99 Added an entry to the attachments table to record who the submitter
was. Nothing uses this yet, but it still should be recorded.
alter table attachments add column submitter_id mediumint not null;
You should also run this script to populate the new field:
#!/usr/bonsaitools/bin/perl -w
use diagnostics;
use strict;
require "globals.pl";
$|=1;
ConnectToDatabase();
SendSQL("select bug_id, attach_id from attachments order by bug_id");
my @list;
while (MoreSQLData()) {
my @row = FetchSQLData();
push(@list, \@row);
}
foreach my $ref (@list) {
my ($bug, $attach) = (@$ref);
SendSQL("select long_desc from bugs where bug_id = $bug");
my $comment = FetchOneColumn() . "Created an attachment (id=$attach)";
if ($comment =~ m@-* Additional Comments From ([^ ]*)[- 0-9/:]*\nCreated an attachment \(id=$attach\)@) {
print "Found $1\n";
SendSQL("select userid from profiles where login_name=" .
SqlQuote($1));
my $userid = FetchOneColumn();
if (defined $userid && $userid > 0) {
SendSQL("update attachments set submitter_id=$userid where attach_id = $attach");
}
} else {
print "Bug $bug can't find comment for attachment $attach\n";
}
}
6/14/99 Added "BeOS" to the list of OS's. Feed this to mysql:
alter table bugs change column op_sys op_sys enum("All", "Windows 3.1", "Windows 95", "Windows 98", "Windows NT", "Mac System 7", "Mac System 7.5", "Mac System 7.6.1", "Mac System 8.0", "Mac System 8.5", "Mac System 8.6", "AIX", "BSDI", "HP-UX", "IRIX", "Linux", "FreeBSD", "OSF/1", "Solaris", "SunOS", "Neutrino", "OS/2", "BeOS", "other") not null;
5/27/99 Added support for dependency information. You must run the new
"makedependenciestable.sh" script. You can turn off dependencies with the new
"usedependencies" param, but it defaults to being on. Also, read very
carefully the description for the new "webdotbase" param; you will almost
certainly need to tweak it.
5/24/99 Added "Mac System 8.6" and "Neutrino" to the list of OS's.
Feed this to mysql:
alter table bugs change column op_sys op_sys enum("All", "Windows 3.1", "Windows 95", "Windows 98", "Windows NT", "Mac System 7", "Mac System 7.5", "Mac System 7.6.1", "Mac System 8.0", "Mac System 8.5", "Mac System 8.6", "AIX", "BSDI", "HP-UX", "IRIX", "Linux", "FreeBSD", "OSF/1", "Solaris", "SunOS", "Neutrino", "OS/2", "other") not null;
5/12/99 Added a pref to control how much email you get. This needs a new
column in the profiles table, so feed the following to mysql:
alter table profiles add column emailnotification enum("ExcludeSelfChanges", "CConly", "All") not null default "ExcludeSelfChanges";
5/5/99 Added the ability to search by creation date. To make this perform
well, you ought to do the following:
alter table bugs change column creation_ts creation_ts datetime not null, add index (creation_ts);
4/30/99 Added a new severity, "blocker". To get this into your running
Bugzilla, do the following:
alter table bugs change column bug_severity bug_severity enum("blocker", "critical", "major", "normal", "minor", "trivial", "enhancement") not null;
4/22/99 There was a bug where the long descriptions of bugs had a variety of
newline characters at the end, depending on the operating system of the browser
that submitted the text. This bug has been fixed, so that no further changes
like that will happen. But to fix problems that have already crept into your
database, you can run the following perl script (which is slow and ugly, but
does work:)
#!/usr/bonsaitools/bin/perl -w
use diagnostics;
use strict;
require "globals.pl";
$|=1;
ConnectToDatabase();
SendSQL("select bug_id from bugs order by bug_id");
my @list;
while (MoreSQLData()) {
push(@list, FetchOneColumn());
}
foreach my $id (@list) {
if ($id % 50 == 0) {
print "\n$id ";
}
SendSQL("select long_desc from bugs where bug_id = $id");
my $comment = FetchOneColumn();
my $orig = $comment;
$comment =~ s/\r\n/\n/g; # Get rid of windows-style line endings.
$comment =~ s/\r/\n/g; # Get rid of mac-style line endings.
if ($comment ne $orig) {
SendSQL("update bugs set long_desc = " . SqlQuote($comment) .
" where bug_id = $id");
print ".";
} else {
print "-";
}
}
4/8/99 Added ability to store patches with bugs. This requires a new table
to store the data, so you will need to run the "makeattachmenttable.sh" script.
3/25/99 Unfortunately, the HTML::FromText CPAN module had too many bugs, and
so I had to roll my own. We no longer use the HTML::FromText CPAN module.
3/24/99 (This entry has been removed. It used to say that we required the
HTML::FromText CPAN module, but that's no longer true.)
3/22/99 Added the ability to query by fields which have changed within a date
range. To make this perform a bit better, we need a new index:
alter table bugs_activity add index (field);
3/10/99 Added 'groups' stuff, where we have different group bits that we can
put on a person or on a bug. Some of the group bits control access to bugzilla
features. And a person can't access a bug unless he has every group bit set
that is also set on the bug. See the comments in makegroupstable.sh for a bit
more info.
The 'maintainer' param is now used only as an email address for people to send
complaints to. The groups table is what is now used to determine permissions.
You will need to run the new script "makegroupstable.sh". And then you need to
feed the following lines to MySQL (replace XXX with the login name of the
maintainer, the person you wish to be all-powerful).
alter table bugs add column groupset bigint not null;
alter table profiles add column groupset bigint not null;
update profiles set groupset=0x7fffffffffffffff where login_name = XXX;
3/8/99 Added params to control how priorities are set in a new bug. You can
now choose whether to let submitters of new bugs choose a priority, or whether
they should just accept the default priority (which is now no longer hardcoded
to "P2", but is instead a param.) The default value of the params will cause
the same behavior as before.
3/3/99 Added a "disallownew" field to the products table. If non-zero, then
don't let people file new bugs against this product. (This is for when a
product is retired, but you want to keep the bug reports around for posterity.)
Feed this to MySQL:
alter table products add column disallownew tinyint not null;
2/8/99 Added FreeBSD to the list of OS's. Feed this to MySQL:
alter table bugs change column op_sys op_sys enum("All", "Windows 3.1", "Windows 95", "Windows 98", "Windows NT", "Mac System 7", "Mac System 7.5", "Mac System 7.6.1", "Mac System 8.0", "Mac System 8.5", "AIX", "BSDI", "HP-UX", "IRIX", "Linux", "FreeBSD", "OSF/1", "Solaris", "SunOS", "OS/2", "other") not null;
2/4/99 Added a new column "description" to the components table, and added
links to a new page which will use this to describe the components of a
given product. Feed this to MySQL:
alter table components add column description mediumtext not null;
2/3/99 Added a new column "initialqacontact" to the components table that gives
an initial QA contact field. It may be empty if you wish the initial qa
contact to be empty. If you're not using the QA contact field, you don't need
to add this column, but you might as well be safe and add it anyway:
alter table components add column initialqacontact tinytext not null;
2/2/99 Added a new column "milestoneurl" to the products table that gives a URL
which is to describe the currently defined milestones for a product. If you
don't use target milestone, you might be able to get away without adding this
column, but you might as well be safe and add it anyway:
alter table products add column milestoneurl tinytext not null;
1/29/99 Whoops; had a misspelled op_sys. It was "Mac System 7.1.6"; it should
be "Mac System 7.6.1". It turns out I had no bugs with this value set, so I
could just do the below simple command. If you have bugs with this value, you
may need to do something more complicated.
alter table bugs change column op_sys op_sys enum("All", "Windows 3.1", "Windows 95", "Windows 98", "Windows NT", "Mac System 7", "Mac System 7.5", "Mac System 7.6.1", "Mac System 8.0", "Mac System 8.5", "AIX", "BSDI", "HP-UX", "IRIX", "Linux", "OSF/1", "Solaris", "SunOS", "OS/2", "other") not null;
1/20/99 Added new fields: Target Milestone, QA Contact, and Status Whiteboard.
These fields are all optional in the UI; there are parameters to turn them on.
However, whether or not you use them, the fields need to be in the DB. There
is some code that needs them, even if you don't.
To update your DB to have these fields, send the following to MySQL:
alter table bugs add column target_milestone varchar(20) not null,
add column qa_contact mediumint not null,
add column status_whiteboard mediumtext not null,
add index (target_milestone), add index (qa_contact);
1/18/99 You can now query by CC. To make this perform reasonably, the CC table
needs some indices. The following MySQL does the necessary stuff:
alter table cc add index (bug_id), add index (who);
1/15/99 The op_sys field can now be queried by (and more easily tweaked).
To make this perform reasonably, it needs an index. The following MySQL
command will create the necessary index:
alter table bugs add index (op_sys);
12/2/98 The op_sys and rep_platform fields have been tweaked. op_sys
is now an enum, rather than having the legal values all hard-coded in
perl. rep_platform now no longer allows a value of "X-Windows".
Here's how I ported to the new world. This ought to work for you too.
Actually, it's probably overkill. I had a lot of illegal values for op_sys
in my tables, from importing bugs from strange places. If you haven't done
anything funky, then much of the below will be a no-op.
First, send the following commands to MySQL to make sure all your values for
rep_platform and op_sys are legal in the new world..
update bugs set rep_platform="Sun" where rep_platform="X-Windows" and op_sys like "Solaris%";
update bugs set rep_platform="SGI" where rep_platform="X-Windows" and op_sys = "IRIX";
update bugs set rep_platform="SGI" where rep_platform="X-Windows" and op_sys = "HP-UX";
update bugs set rep_platform="DEC" where rep_platform="X-Windows" and op_sys = "OSF/1";
update bugs set rep_platform="PC" where rep_platform="X-Windows" and op_sys = "Linux";
update bugs set rep_platform="other" where rep_platform="X-Windows";
update bugs set rep_platform="other" where rep_platform="";
update bugs set op_sys="Mac System 7" where op_sys="System 7";
update bugs set op_sys="Mac System 7.5" where op_sys="System 7.5";
update bugs set op_sys="Mac System 8.0" where op_sys="8.0";
update bugs set op_sys="OSF/1" where op_sys="Digital Unix 4.0";
update bugs set op_sys="IRIX" where op_sys like "IRIX %";
update bugs set op_sys="HP-UX" where op_sys like "HP-UX %";
update bugs set op_sys="Windows NT" where op_sys like "NT %";
update bugs set op_sys="OSF/1" where op_sys like "OSF/1 %";
update bugs set op_sys="Solaris" where op_sys like "Solaris %";
update bugs set op_sys="SunOS" where op_sys like "SunOS%";
update bugs set op_sys="other" where op_sys = "Motif";
update bugs set op_sys="other" where op_sys = "Other";
Next, send the following commands to make sure you now have only legal
entries in your table. If either of the queries do not come up empty, then
you have to do more stuff like the above.
select bug_id,op_sys,rep_platform from bugs where rep_platform not regexp "^(All|DEC|HP|Macintosh|PC|SGI|Sun|X-Windows|Other)$";
select bug_id,op_sys,rep_platform from bugs where op_sys not regexp "^(All|Windows 3.1|Windows 95|Windows 98|Windows NT|Mac System 7|Mac System 7.5|Mac System 7.1.6|Mac System 8.0|AIX|BSDI|HP-UX|IRIX|Linux|OSF/1|Solaris|SunOS|other)$";
Finally, once that's all clear, alter the table to make enforce the new legal
entries:
alter table bugs change column op_sys op_sys enum("All", "Windows 3.1", "Windows 95", "Windows 98", "Windows NT", "Mac System 7", "Mac System 7.5", "Mac System 7.1.6", "Mac System 8.0", "AIX", "BSDI", "HP-UX", "IRIX", "Linux", "OSF/1", "Solaris", "SunOS", "other") not null, change column rep_platform rep_platform enum("All", "DEC", "HP", "Macintosh", "PC", "SGI", "Sun", "Other");
11/20/98 Added searching of CC field. To better support this, added
some indexes to the CC table. You probably want to execute the following
mysql commands:
alter table cc add index (bug_id);
alter table cc add index (who);
10/27/98 security check for legal products in place. bug charts are not
available as an option if collectstats.pl has never been run. all products
get daily stats collected now. README updated: Chart::Base is listed as
a requirement, instructions for using collectstats.pl included as
an optional step. also got silly and added optional quips to bug
reports.
10/17/98 modified README installation instructions slightly.
10/7/98 Added a new table called "products". Right now, this is used
only to have a description for each product, and that description is
only used when initially adding a new bug. Anyway, you *must* create
the new table (which you can do by running the new makeproducttable.sh
script). If you just leave it empty, things will work much as they
did before, or you can add descriptions for some or all of your
products.
9/15/98 Everything has been ported to Perl. NO MORE TCL. This
transition should be relatively painless, except for the "params"
file. This is the file that contains parameters you've set up on the
editparams.cgi page. Before changing to Perl, this was a tcl-syntax
file, stored in the same directory as the code; after the change to
Perl, it becomes a perl-syntax file, stored in a subdirectory named
"data". See the README file for more details on what version of Perl
you need.
So, if updating from an older version of Bugzilla, you will need to
edit data/param, change the email address listed for
$::param{'maintainer'}, and then go revisit the editparams.cgi page
and reset all the parameters to your taste. Fortunately, your old
params file will still be around, and so you ought to be able to
cut&paste important bits from there.
Also, note that the "whineatnews" script has changed name (it now has
an extension of .pl instead of .tcl), so you'll need to change your
cron job.
And the "comments" file has been moved to the data directory. Just do
"cat comments >> data/comments" to restore any old comments that may
have been lost.
9/2/98 Changed the way password validation works. We now keep a
crypt'd version of the password in the database, and check against
that. (This is silly, because we're also keeping the plaintext
version there, but I have plans...) Stop passing the plaintext
password around as a cookie; instead, we have a cookie that references
a record in a new database table, logincookies.
IMPORTANT: if updating from an older version of Bugzilla, you must run
the following commands to keep things working:
./makelogincookiestable.sh
echo "alter table profiles add column cryptpassword varchar(64);" | mysql bugs
echo "update profiles set cryptpassword = encrypt(password,substring(rand(),3, 4));" | mysql bugs

Binary file not shown.

After

Width:  |  Height:  |  Size: 8.3 KiB

View File

@@ -0,0 +1,792 @@
#!/usr/bonsaitools/bin/perl -wT
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Terry Weissman <terry@mozilla.org>
# Myk Melez <myk@mozilla.org>
################################################################################
# Script Initialization
################################################################################
# Make it harder for us to do dangerous things in Perl.
use diagnostics;
use strict;
use lib qw(.);
use vars qw(
$template
$vars
);
# Include the Bugzilla CGI and general utility library.
require "CGI.pl";
# Establish a connection to the database backend.
ConnectToDatabase();
# Check whether or not the user is logged in and, if so, set the $::userid
# and $::usergroupset variables.
quietly_check_login();
################################################################################
# Main Body Execution
################################################################################
# All calls to this script should contain an "action" variable whose value
# determines what the user wants to do. The code below checks the value of
# that variable and runs the appropriate code.
# Determine whether to use the action specified by the user or the default.
my $action = $::FORM{'action'} || 'view';
if ($action eq "view")
{
validateID();
view();
}
elsif ($action eq "viewall")
{
ValidateBugID($::FORM{'bugid'});
viewall();
}
elsif ($action eq "enter")
{
confirm_login();
ValidateBugID($::FORM{'bugid'});
enter();
}
elsif ($action eq "insert")
{
confirm_login();
ValidateBugID($::FORM{'bugid'});
ValidateComment($::FORM{'comment'});
validateFilename();
validateData();
validateDescription();
validateIsPatch();
validateContentType() unless $::FORM{'ispatch'};
validateObsolete() if $::FORM{'obsolete'};
insert();
}
elsif ($action eq "edit")
{
quietly_check_login();
validateID();
validateCanEdit($::FORM{'id'});
edit();
}
elsif ($action eq "update")
{
confirm_login();
ValidateComment($::FORM{'comment'});
validateID();
validateCanEdit($::FORM{'id'});
validateDescription();
validateIsPatch();
validateContentType() unless $::FORM{'ispatch'};
validateIsObsolete();
validateStatuses();
update();
}
else
{
DisplayError("I could not figure out what you wanted to do.")
}
exit;
################################################################################
# Data Validation / Security Authorization
################################################################################
sub validateID
{
# Validate the value of the "id" form field, which must contain an
# integer that is the ID of an existing attachment.
detaint_natural($::FORM{'id'})
|| DisplayError("You did not enter a valid attachment number.")
&& exit;
# Make sure the attachment exists in the database.
SendSQL("SELECT bug_id FROM attachments WHERE attach_id = $::FORM{'id'}");
MoreSQLData()
|| DisplayError("Attachment #$::FORM{'id'} does not exist.")
&& exit;
# Make sure the user is authorized to access this attachment's bug.
my ($bugid) = FetchSQLData();
ValidateBugID($bugid);
}
sub validateCanEdit
{
my ($attach_id) = (@_);
# If the user is not logged in, claim that they can edit. This allows
# the edit scrren to be displayed to people who aren't logged in.
# People not logged in can't actually commit changes, because that code
# calls confirm_login, not quietly_check_login, before calling this sub
return if $::userid == 0;
# People in editbugs can edit all attachments
return if UserInGroup("editbugs");
# Bug 97729 - the submitter can edit their attachments
SendSQL("SELECT attach_id FROM attachments WHERE " .
"attach_id = $attach_id AND submitter_id = $::userid");
FetchSQLData()
|| DisplayError("You are not authorised to edit attachment #$attach_id")
&& exit;
}
sub validateDescription
{
$::FORM{'description'}
|| DisplayError("You must enter a description for the attachment.")
&& exit;
}
sub validateIsPatch
{
# Set the ispatch flag to zero if it is undefined, since the UI uses
# an HTML checkbox to represent this flag, and unchecked HTML checkboxes
# do not get sent in HTML requests.
$::FORM{'ispatch'} = $::FORM{'ispatch'} ? 1 : 0;
# Set the content type to text/plain if the attachment is a patch.
$::FORM{'contenttype'} = "text/plain" if $::FORM{'ispatch'};
}
sub validateContentType
{
if (!$::FORM{'contenttypemethod'})
{
DisplayError("You must choose a method for determining the content type,
either <em>auto-detect</em>, <em>select from list</em>, or <em>enter
manually</em>.");
exit;
}
elsif ($::FORM{'contenttypemethod'} eq 'autodetect')
{
# The user asked us to auto-detect the content type, so use the type
# specified in the HTTP request headers.
if ( !$::FILE{'data'}->{'contenttype'} )
{
DisplayError("You asked Bugzilla to auto-detect the content type, but
your browser did not specify a content type when uploading the file,
so you must enter a content type manually.");
exit;
}
$::FORM{'contenttype'} = $::FILE{'data'}->{'contenttype'};
}
elsif ($::FORM{'contenttypemethod'} eq 'list')
{
# The user selected a content type from the list, so use their selection.
$::FORM{'contenttype'} = $::FORM{'contenttypeselection'};
}
elsif ($::FORM{'contenttypemethod'} eq 'manual')
{
# The user entered a content type manually, so use their entry.
$::FORM{'contenttype'} = $::FORM{'contenttypeentry'};
}
else
{
my $htmlcontenttypemethod = html_quote($::FORM{'contenttypemethod'});
DisplayError("Your form submission got corrupted somehow. The <em>content
method</em> field, which specifies how the content type gets determined,
should have been either <em>autodetect</em>, <em>list</em>,
or <em>manual</em>, but was instead <em>$htmlcontenttypemethod</em>.");
exit;
}
if ( $::FORM{'contenttype'} !~ /^(application|audio|image|message|model|multipart|text|video)\/.+$/ )
{
my $htmlcontenttype = html_quote($::FORM{'contenttype'});
DisplayError("The content type <em>$htmlcontenttype</em> is invalid.
Valid types must be of the form <em>foo/bar</em> where <em>foo</em>
is either <em>application, audio, image, message, model, multipart,
text,</em> or <em>video</em>.");
exit;
}
}
sub validateIsObsolete
{
# Set the isobsolete flag to zero if it is undefined, since the UI uses
# an HTML checkbox to represent this flag, and unchecked HTML checkboxes
# do not get sent in HTML requests.
$::FORM{'isobsolete'} = $::FORM{'isobsolete'} ? 1 : 0;
}
sub validateStatuses
{
# Get a list of attachment statuses that are valid for this attachment.
PushGlobalSQLState();
SendSQL("SELECT attachstatusdefs.id
FROM attachments, bugs, attachstatusdefs
WHERE attachments.attach_id = $::FORM{'id'}
AND attachments.bug_id = bugs.bug_id
AND attachstatusdefs.product = bugs.product");
my @statusdefs;
push(@statusdefs, FetchSQLData()) while MoreSQLData();
PopGlobalSQLState();
foreach my $status (@{$::MFORM{'status'}})
{
grep($_ == $status, @statusdefs)
|| DisplayError("One of the statuses you entered is not a valid status
for this attachment.")
&& exit;
# We have tested that the status is valid, so it can be detainted
detaint_natural($status);
}
}
sub validateData
{
$::FORM{'data'}
|| DisplayError("The file you are trying to attach is empty!")
&& exit;
my $len = length($::FORM{'data'});
my $maxpatchsize = Param('maxpatchsize');
my $maxattachmentsize = Param('maxattachmentsize');
# Makes sure the attachment does not exceed either the "maxpatchsize" or
# the "maxattachmentsize" parameter.
if ( $::FORM{'ispatch'} && $maxpatchsize && $len > $maxpatchsize*1024 )
{
my $lenkb = sprintf("%.0f", $len/1024);
DisplayError("The file you are trying to attach is ${lenkb} kilobytes (KB) in size.
Patches cannot be more than ${maxpatchsize}KB in size.
Try breaking your patch into several pieces.");
exit;
} elsif ( !$::FORM{'ispatch'} && $maxattachmentsize && $len > $maxattachmentsize*1024 ) {
my $lenkb = sprintf("%.0f", $len/1024);
DisplayError("The file you are trying to attach is ${lenkb} kilobytes (KB) in size.
Non-patch attachments cannot be more than ${maxattachmentsize}KB.
If your attachment is an image, try converting it to a compressable
format like JPG or PNG, or put it elsewhere on the web and
link to it from the bug's URL field or in a comment on the bug.");
exit;
}
}
sub validateFilename
{
defined $::FILE{'data'}
|| DisplayError("You did not specify a file to attach.")
&& exit;
}
sub validateObsolete
{
# Make sure the attachment id is valid and the user has permissions to view
# the bug to which it is attached.
foreach my $attachid (@{$::MFORM{'obsolete'}}) {
detaint_natural($attachid)
|| DisplayError("The attachment number of one of the attachments
you wanted to obsolete is invalid.")
&& exit;
SendSQL("SELECT bug_id, isobsolete, description
FROM attachments WHERE attach_id = $attachid");
# Make sure the attachment exists in the database.
MoreSQLData()
|| DisplayError("Attachment #$attachid does not exist.")
&& exit;
my ($bugid, $isobsolete, $description) = FetchSQLData();
if ($bugid != $::FORM{'bugid'})
{
$description = html_quote($description);
DisplayError("Attachment #$attachid ($description) is attached
to bug #$bugid, but you tried to flag it as obsolete while
creating a new attachment to bug #$::FORM{'bugid'}.");
exit;
}
if ( $isobsolete )
{
$description = html_quote($description);
DisplayError("Attachment #$attachid ($description) is already obsolete.");
exit;
}
# Check that the user can modify this attachment
validateCanEdit($attachid);
}
}
################################################################################
# Functions
################################################################################
sub view
{
# Display an attachment.
# Retrieve the attachment content and its content type from the database.
SendSQL("SELECT mimetype, thedata FROM attachments WHERE attach_id = $::FORM{'id'}");
my ($contenttype, $thedata) = FetchSQLData();
# Return the appropriate HTTP response headers.
print "Content-Type: $contenttype\n\n";
print $thedata;
}
sub viewall
{
# Display all attachments for a given bug in a series of IFRAMEs within one HTML page.
# Retrieve the attachments from the database and write them into an array
# of hashes where each hash represents one attachment.
SendSQL("SELECT attach_id, creation_ts, mimetype, description, ispatch, isobsolete
FROM attachments WHERE bug_id = $::FORM{'bugid'} ORDER BY attach_id");
my @attachments; # the attachments array
while (MoreSQLData())
{
my %a; # the attachment hash
($a{'attachid'}, $a{'date'}, $a{'contenttype'},
$a{'description'}, $a{'ispatch'}, $a{'isobsolete'}) = FetchSQLData();
# Format the attachment's creation/modification date into something readable.
if ($a{'date'} =~ /^(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)(\d\d)$/) {
$a{'date'} = "$3/$4/$2&nbsp;$5:$6";
}
# Flag attachments as to whether or not they can be viewed (as opposed to
# being downloaded). Currently I decide they are viewable if their MIME type
# is either text/*, image/*, or application/vnd.mozilla.*.
# !!! Yuck, what an ugly hack. Fix it!
$a{'isviewable'} = ( $a{'contenttype'} =~ /^(text|image|application\/vnd\.mozilla\.)/ );
# Retrieve a list of status flags that have been set on the attachment.
PushGlobalSQLState();
SendSQL("SELECT name
FROM attachstatuses, attachstatusdefs
WHERE attach_id = $a{'attachid'}
AND attachstatuses.statusid = attachstatusdefs.id
ORDER BY sortkey");
my @statuses;
push(@statuses, FetchSQLData()) while MoreSQLData();
$a{'statuses'} = \@statuses;
PopGlobalSQLState();
# Add the hash representing the attachment to the array of attachments.
push @attachments, \%a;
}
# Retrieve the bug summary for displaying on screen.
SendSQL("SELECT short_desc FROM bugs WHERE bug_id = $::FORM{'bugid'}");
my ($bugsummary) = FetchSQLData();
# Define the variables and functions that will be passed to the UI template.
$vars->{'bugid'} = $::FORM{'bugid'};
$vars->{'bugsummary'} = $bugsummary;
$vars->{'attachments'} = \@attachments;
# Return the appropriate HTTP response headers.
print "Content-Type: text/html\n\n";
# Generate and return the UI (HTML page) from the appropriate template.
$template->process("attachment/show-multiple.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
}
sub enter
{
# Display a form for entering a new attachment.
# Retrieve the attachments the user can edit from the database and write
# them into an array of hashes where each hash represents one attachment.
my $canEdit = "";
if (!UserInGroup("editbugs")) {
$canEdit = "AND submitter_id = $::userid";
}
SendSQL("SELECT attach_id, description
FROM attachments
WHERE bug_id = $::FORM{'bugid'}
AND isobsolete = 0 $canEdit
ORDER BY attach_id");
my @attachments; # the attachments array
while ( MoreSQLData() ) {
my %a; # the attachment hash
($a{'id'}, $a{'description'}) = FetchSQLData();
# Add the hash representing the attachment to the array of attachments.
push @attachments, \%a;
}
# Retrieve the bug summary for displaying on screen.
SendSQL("SELECT short_desc FROM bugs WHERE bug_id = $::FORM{'bugid'}");
my ($bugsummary) = FetchSQLData();
# Define the variables and functions that will be passed to the UI template.
$vars->{'bugid'} = $::FORM{'bugid'};
$vars->{'bugsummary'} = $bugsummary;
$vars->{'attachments'} = \@attachments;
# Return the appropriate HTTP response headers.
print "Content-Type: text/html\n\n";
# Generate and return the UI (HTML page) from the appropriate template.
$template->process("attachment/create.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
}
sub insert
{
# Insert a new attachment into the database.
# Escape characters in strings that will be used in SQL statements.
my $filename = SqlQuote($::FILE{'data'}->{'filename'});
my $description = SqlQuote($::FORM{'description'});
my $contenttype = SqlQuote($::FORM{'contenttype'});
my $thedata = SqlQuote($::FORM{'data'});
# Insert the attachment into the database.
SendSQL("INSERT INTO attachments (bug_id, filename, description, mimetype, ispatch, submitter_id, thedata)
VALUES ($::FORM{'bugid'}, $filename, $description, $contenttype, $::FORM{'ispatch'}, $::userid, $thedata)");
# Retrieve the ID of the newly created attachment record.
SendSQL("SELECT LAST_INSERT_ID()");
my $attachid = FetchOneColumn();
# Insert a comment about the new attachment into the database.
my $comment = "Created an attachment (id=$attachid)\n$::FORM{'description'}\n";
$comment .= ("\n" . $::FORM{'comment'}) if $::FORM{'comment'};
use Text::Wrap;
$Text::Wrap::columns = 80;
$Text::Wrap::huge = 'overflow';
$comment = Text::Wrap::wrap('', '', $comment);
AppendComment($::FORM{'bugid'},
$::COOKIE{"Bugzilla_login"},
$comment);
# Make existing attachments obsolete.
my $fieldid = GetFieldID('attachments.isobsolete');
foreach my $attachid (@{$::MFORM{'obsolete'}}) {
SendSQL("UPDATE attachments SET isobsolete = 1 WHERE attach_id = $attachid");
SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when, fieldid, removed, added)
VALUES ($::FORM{'bugid'}, $attachid, $::userid, NOW(), $fieldid, '0', '1')");
}
# Send mail to let people know the attachment has been created. Uses a
# special syntax of the "open" and "exec" commands to capture the output of
# "processmail", which "system" doesn't allow, without running the command
# through a shell, which backticks (``) do.
#system ("./processmail", $bugid , $::userid);
#my $mailresults = `./processmail $bugid $::userid`;
my $mailresults = '';
open(PMAIL, "-|") or exec('./processmail', $::FORM{'bugid'}, $::COOKIE{'Bugzilla_login'});
$mailresults .= $_ while <PMAIL>;
close(PMAIL);
# Define the variables and functions that will be passed to the UI template.
$vars->{'bugid'} = $::FORM{'bugid'};
$vars->{'attachid'} = $attachid;
$vars->{'description'} = $description;
$vars->{'mailresults'} = $mailresults;
$vars->{'contenttypemethod'} = $::FORM{'contenttypemethod'};
$vars->{'contenttype'} = $::FORM{'contenttype'};
# Return the appropriate HTTP response headers.
print "Content-Type: text/html\n\n";
# Generate and return the UI (HTML page) from the appropriate template.
$template->process("attachment/created.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
}
sub edit
{
# Edit an attachment record. Users with "editbugs" privileges, (or the
# original attachment's submitter) can edit the attachment's description,
# content type, ispatch and isobsolete flags, and statuses, and they can
# also submit a comment that appears in the bug.
# Users cannot edit the content of the attachment itself.
# Retrieve the attachment from the database.
SendSQL("SELECT description, mimetype, bug_id, ispatch, isobsolete
FROM attachments WHERE attach_id = $::FORM{'id'}");
my ($description, $contenttype, $bugid, $ispatch, $isobsolete) = FetchSQLData();
# Flag attachment as to whether or not it can be viewed (as opposed to
# being downloaded). Currently I decide it is viewable if its content
# type is either text/.* or application/vnd.mozilla.*.
# !!! Yuck, what an ugly hack. Fix it!
my $isviewable = ( $contenttype =~ /^(text|image|application\/vnd\.mozilla\.)/ );
# Retrieve a list of status flags that have been set on the attachment.
my %statuses;
SendSQL("SELECT id, name
FROM attachstatuses JOIN attachstatusdefs
WHERE attachstatuses.statusid = attachstatusdefs.id
AND attach_id = $::FORM{'id'}");
while ( my ($id, $name) = FetchSQLData() )
{
$statuses{$id} = $name;
}
# Retrieve a list of statuses for this bug's product, and build an array
# of hashes in which each hash is a status flag record.
# ???: Move this into versioncache or its own routine?
my @statusdefs;
SendSQL("SELECT id, name
FROM attachstatusdefs, bugs
WHERE bug_id = $bugid
AND attachstatusdefs.product = bugs.product
ORDER BY sortkey");
while ( MoreSQLData() )
{
my ($id, $name) = FetchSQLData();
push @statusdefs, { 'id' => $id , 'name' => $name };
}
# Retrieve a list of attachments for this bug as well as a summary of the bug
# to use in a navigation bar across the top of the screen.
SendSQL("SELECT attach_id FROM attachments WHERE bug_id = $bugid ORDER BY attach_id");
my @bugattachments;
push(@bugattachments, FetchSQLData()) while (MoreSQLData());
SendSQL("SELECT short_desc FROM bugs WHERE bug_id = $bugid");
my ($bugsummary) = FetchSQLData();
# Define the variables and functions that will be passed to the UI template.
$vars->{'attachid'} = $::FORM{'id'};
$vars->{'description'} = $description;
$vars->{'contenttype'} = $contenttype;
$vars->{'bugid'} = $bugid;
$vars->{'bugsummary'} = $bugsummary;
$vars->{'ispatch'} = $ispatch;
$vars->{'isobsolete'} = $isobsolete;
$vars->{'isviewable'} = $isviewable;
$vars->{'statuses'} = \%statuses;
$vars->{'statusdefs'} = \@statusdefs;
$vars->{'attachments'} = \@bugattachments;
# Return the appropriate HTTP response headers.
print "Content-Type: text/html\n\n";
# Generate and return the UI (HTML page) from the appropriate template.
$template->process("attachment/edit.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
}
sub update
{
# Update an attachment record.
# Get the bug ID for the bug to which this attachment is attached.
SendSQL("SELECT bug_id FROM attachments WHERE attach_id = $::FORM{'id'}");
my $bugid = FetchSQLData()
|| DisplayError("Cannot figure out bug number.")
&& exit;
# Lock database tables in preparation for updating the attachment.
if ($::driver eq 'mysql') {
SendSQL("LOCK TABLES attachments WRITE , attachstatuses WRITE ,
attachstatusdefs READ , fielddefs READ , bugs_activity WRITE");
}
# Get a copy of the attachment record before we make changes
# so we can record those changes in the activity table.
SendSQL("SELECT description, mimetype, ispatch, isobsolete
FROM attachments WHERE attach_id = $::FORM{'id'}");
my ($olddescription, $oldcontenttype, $oldispatch, $oldisobsolete) = FetchSQLData();
# Get the list of old status flags.
SendSQL("SELECT attachstatusdefs.name
FROM attachments, attachstatuses, attachstatusdefs
WHERE attachments.attach_id = $::FORM{'id'}
AND attachments.attach_id = attachstatuses.attach_id
AND attachstatuses.statusid = attachstatusdefs.id
ORDER BY attachstatusdefs.sortkey
");
my @oldstatuses;
while (MoreSQLData()) {
push(@oldstatuses, FetchSQLData());
}
my $oldstatuslist = join(', ', @oldstatuses);
# Update the database with the new status flags.
SendSQL("DELETE FROM attachstatuses WHERE attach_id = $::FORM{'id'}");
foreach my $statusid (@{$::MFORM{'status'}})
{
SendSQL("INSERT INTO attachstatuses (attach_id, statusid) VALUES ($::FORM{'id'}, $statusid)");
}
# Get the list of new status flags.
SendSQL("SELECT attachstatusdefs.name
FROM attachments, attachstatuses, attachstatusdefs
WHERE attachments.attach_id = $::FORM{'id'}
AND attachments.attach_id = attachstatuses.attach_id
AND attachstatuses.statusid = attachstatusdefs.id
ORDER BY attachstatusdefs.sortkey
");
my @newstatuses;
while (MoreSQLData()) {
push(@newstatuses, FetchSQLData());
}
my $newstatuslist = join(', ', @newstatuses);
# Quote the description and content type for use in the SQL UPDATE statement.
my $quoteddescription = SqlQuote($::FORM{'description'});
my $quotedcontenttype = SqlQuote($::FORM{'contenttype'});
# Update the attachment record in the database.
# Sets the creation timestamp to itself to avoid it being updated automatically.
SendSQL("UPDATE attachments
SET description = $quoteddescription ,
mimetype = $quotedcontenttype ,
ispatch = $::FORM{'ispatch'} ,
isobsolete = $::FORM{'isobsolete'} ,
creation_ts = creation_ts
WHERE attach_id = $::FORM{'id'}
");
# Record changes in the activity table.
if ($olddescription ne $::FORM{'description'}) {
my $quotedolddescription = SqlQuote($olddescription);
my $fieldid = GetFieldID('attachments.description');
SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when, fieldid, removed, added)
VALUES ($bugid, $::FORM{'id'}, $::userid, NOW(), $fieldid, $quotedolddescription, $quoteddescription)");
}
if ($oldcontenttype ne $::FORM{'contenttype'}) {
my $quotedoldcontenttype = SqlQuote($oldcontenttype);
my $fieldid = GetFieldID('attachments.mimetype');
SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when, fieldid, removed, added)
VALUES ($bugid, $::FORM{'id'}, $::userid, NOW(), $fieldid, $quotedoldcontenttype, $quotedcontenttype)");
}
if ($oldispatch ne $::FORM{'ispatch'}) {
my $fieldid = GetFieldID('attachments.ispatch');
SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when, fieldid, removed, added)
VALUES ($bugid, $::FORM{'id'}, $::userid, NOW(), $fieldid, $oldispatch, $::FORM{'ispatch'})");
}
if ($oldisobsolete ne $::FORM{'isobsolete'}) {
my $fieldid = GetFieldID('attachments.isobsolete');
SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when, fieldid, removed, added)
VALUES ($bugid, $::FORM{'id'}, $::userid, NOW(), $fieldid, $oldisobsolete, $::FORM{'isobsolete'})");
}
if ($oldstatuslist ne $newstatuslist) {
my ($removed, $added) = DiffStrings($oldstatuslist, $newstatuslist);
my $quotedremoved = SqlQuote($removed);
my $quotedadded = SqlQuote($added);
my $fieldid = GetFieldID('attachstatusdefs.name');
SendSQL("INSERT INTO bugs_activity (bug_id, attach_id, who, bug_when, fieldid, removed, added)
VALUES ($bugid, $::FORM{'id'}, $::userid, NOW(), $fieldid, $quotedremoved, $quotedadded)");
}
# Unlock all database tables now that we are finished updating the database.
if ($::driver eq 'mysql') {
SendSQL("UNLOCK TABLES");
}
# If this installation has enabled the request manager, let the manager know
# an attachment was updated so it can check for requests on that attachment
# and fulfill them. The request manager allows users to request database
# changes of other users and tracks the fulfillment of those requests. When
# an attachment record is updated and the request manager is called, it will
# fulfill those requests that were requested of the user performing the update
# which are requests for the attachment being updated.
#my $requests;
#if (Param('userequestmanager'))
#{
# use Request;
# # Specify the fieldnames that have been updated.
# my @fieldnames = ('description', 'mimetype', 'status', 'ispatch', 'isobsolete');
# # Fulfill pending requests.
# $requests = Request::fulfillRequest('attachment', $::FORM{'id'}, @fieldnames);
# $vars->{'requests'} = $requests;
#}
# If the user submitted a comment while editing the attachment,
# add the comment to the bug.
if ( $::FORM{'comment'} )
{
use Text::Wrap;
$Text::Wrap::columns = 80;
$Text::Wrap::huge = 'wrap';
# Append a string to the comment to let users know that the comment came from
# the "edit attachment" screen.
my $comment = qq|(From update of attachment $::FORM{'id'})\n| . $::FORM{'comment'};
my $wrappedcomment = "";
foreach my $line (split(/\r\n|\r|\n/, $comment))
{
if ( $line =~ /^>/ )
{
$wrappedcomment .= $line . "\n";
}
else
{
$wrappedcomment .= wrap('', '', $line) . "\n";
}
}
# Get the user's login name since the AppendComment function needs it.
my $who = DBID_to_name($::userid);
# Mention $::userid again so Perl doesn't give me a warning about it.
my $neverused = $::userid;
# Append the comment to the list of comments in the database.
AppendComment($bugid, $who, $wrappedcomment);
}
# Send mail to let people know the bug has changed. Uses a special syntax
# of the "open" and "exec" commands to capture the output of "processmail",
# which "system" doesn't allow, without running the command through a shell,
# which backticks (``) do.
#system ("./processmail", $bugid , $::userid);
#my $mailresults = `./processmail $bugid $::userid`;
my $mailresults = '';
open(PMAIL, "-|") or exec('./processmail', $bugid, DBID_to_name($::userid));
$mailresults .= $_ while <PMAIL>;
close(PMAIL);
# Define the variables and functions that will be passed to the UI template.
$vars->{'attachid'} = $::FORM{'id'};
$vars->{'bugid'} = $bugid;
$vars->{'mailresults'} = $mailresults;
# Return the appropriate HTTP response headers.
print "Content-Type: text/html\n\n";
# Generate and return the UI (HTML page) from the appropriate template.
$template->process("attachment/updated.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
}

View File

@@ -0,0 +1,378 @@
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Terry Weissman <terry@mozilla.org>
# Dave Miller <justdave@syndicomm.com>
use diagnostics;
use strict;
use RelationSet;
# Use the Attachment module to display attachments for the bug.
use Attachment;
sub show_bug {
# Shut up misguided -w warnings about "used only once". For some reason,
# "use vars" chokes on me when I try it here.
sub bug_form_pl_sillyness {
my $zz;
$zz = %::FORM;
$zz = %::proddesc;
$zz = %::prodmaxvotes;
$zz = @::enterable_products;
$zz = @::settable_resolution;
$zz = $::unconfirmedstate;
$zz = $::milestoneurl;
$zz = $::template;
$zz = $::vars;
$zz = @::legal_priority;
$zz = @::legal_platform;
$zz = @::legal_severity;
$zz = @::legal_bug_status;
$zz = @::target_milestone;
$zz = @::components;
$zz = @::legal_keywords;
$zz = @::versions;
$zz = @::legal_opsys;
}
# Use templates
my $template = $::template;
my $vars = $::vars;
$vars->{'GetBugLink'} = \&GetBugLink;
$vars->{'quoteUrls'} = \&quoteUrls,
$vars->{'lsearch'} = \&lsearch,
$vars->{'header_done'} = (@_),
quietly_check_login();
my $id = $::FORM{'id'};
if (!defined($id)) {
$template->process("bug/choose.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
exit;
}
my %user = %{$vars->{'user'}};
my %bug;
# Populate the bug hash with the info we get directly from the DB.
my $query = "
SELECT
bugs.bug_id,
product,
version,
rep_platform,
op_sys,
bug_status,
resolution,
priority,
bug_severity,
component,
assigned_to,
reporter,
bug_file_loc,
short_desc,
target_milestone,
qa_contact,
status_whiteboard, ";
if ($::driver eq 'mysql') {
$query .= "
date_format(creation_ts, '%Y-%m-%d %H:%i'),
groupset,
delta_ts, ";
} elsif ($::driver eq 'Pg') {
$query .= "
TO_CHAR(creation_ts, 'YYYY-MM-DD HH24:MI:SS'),
groupset,
TO_CHAR(delta_ts, 'YYYYMMDDHH24MISS'), ";
}
$query .= "
SUM(votes.count)
FROM
bugs LEFT JOIN votes USING(bug_id)
WHERE
bugs.bug_id = $id
GROUP BY
bugs.bug_id,
product,
version,
rep_platform,
op_sys,
bug_status,
resolution,
priority,
bug_severity,
component,
assigned_to,
reporter,
bug_file_loc,
short_desc,
target_milestone,
qa_contact,
status_whiteboard,
creation_ts,
groupset,
delta_ts ";
SendSQL($query);
my $value;
my @row = FetchSQLData();
foreach my $field ("bug_id", "product", "version", "rep_platform",
"op_sys", "bug_status", "resolution", "priority",
"bug_severity", "component", "assigned_to", "reporter",
"bug_file_loc", "short_desc", "target_milestone",
"qa_contact", "status_whiteboard", "creation_ts",
"groupset", "delta_ts", "votes")
{
$value = shift(@row);
$bug{$field} = defined($value) ? $value : "";
}
# General arrays of info about the database state
GetVersionTable();
# Fiddle the product list.
my $seen_curr_prod;
my @prodlist;
foreach my $product (@::enterable_products) {
if ($product eq $bug{'product'}) {
# if it's the product the bug is already in, it's ALWAYS in
# the popup, period, whether the user can see it or not, and
# regardless of the disallownew setting.
$seen_curr_prod = 1;
push(@prodlist, $product);
next;
}
if (Param("usebuggroupsentry")
&& GroupExists($product)
&& !UserInGroup($product))
{
# If we're using bug groups to restrict entry on products, and
# this product has a bug group, and the user is not in that
# group, we don't want to include that product in this list.
next;
}
push(@prodlist, $product);
}
# The current product is part of the popup, even if new bugs are no longer
# allowed for that product
if (!$seen_curr_prod) {
push (@prodlist, $bug{'product'});
@prodlist = sort @prodlist;
}
$vars->{'product'} = \@prodlist;
$vars->{'rep_platform'} = \@::legal_platform;
$vars->{'priority'} = \@::legal_priority;
$vars->{'bug_severity'} = \@::legal_severity;
$vars->{'op_sys'} = \@::legal_opsys;
$vars->{'bug_status'} = \@::legal_bug_status;
# Hack - this array contains "" for some reason. See bug 106589.
shift @::settable_resolution;
$vars->{'resolution'} = \@::settable_resolution;
$vars->{'component_'} = $::components{$bug{'product'}};
$vars->{'version'} = $::versions{$bug{'product'}};
$vars->{'target_milestone'} = $::target_milestone{$bug{'product'}};
$bug{'milestoneurl'} = $::milestoneurl{$bug{'product'}} ||
"notargetmilestone.html";
$vars->{'use_votes'} = $::prodmaxvotes{$bug{'product'}};
# Add additional, calculated fields to the bug hash
if (@::legal_keywords) {
$vars->{'use_keywords'} = 1;
SendSQL("SELECT keyworddefs.name
FROM keyworddefs, keywords
WHERE keywords.bug_id = $id
AND keyworddefs.id = keywords.keywordid
ORDER BY keyworddefs.name");
my @keywords;
while (MoreSQLData()) {
push(@keywords, FetchOneColumn());
}
$bug{'keywords'} = \@keywords;
}
# Attachments
$bug{'attachments'} = Attachment::query($id);
# Dependencies
my @list;
SendSQL("SELECT dependson FROM dependencies WHERE
blocked = $id ORDER BY dependson");
while (MoreSQLData()) {
my ($i) = FetchSQLData();
push(@list, $i);
}
$bug{'dependson'} = \@list;
my @list2;
SendSQL("SELECT blocked FROM dependencies WHERE
dependson = $id ORDER BY blocked");
while (MoreSQLData()) {
my ($i) = FetchSQLData();
push(@list2, $i);
}
$bug{'blocked'} = \@list2;
# Groups
my @groups;
if ($::usergroupset ne '0' || $bug{'groupset'} ne '0') {
my $bug_groupset = $bug{'groupset'};
if ($::driver eq 'mysql') {
SendSQL("select bit, name, description, (bit & $bug{'groupset'} != 0), " .
"(bit & $::usergroupset != 0) from groups where isbuggroup != 0 " .
# Include active groups as well as inactive groups to which
# the bug already belongs. This way the bug can be removed
# from an inactive group but can only be added to active ones.
"and ((isactive = 1 or (bit & $bug{'groupset'} != 0)) or " .
"(bit & $bug{'groupset'} != 0)) " .
"order by description");
} elsif ($::driver eq 'Pg') {
SendSQL("select group_bit, name, description, (group_bit & int8($bug{'groupset'}) != 0), " .
"(group_bit & int8($::usergroupset) != 0) from groups where isbuggroup != 0 " .
# Include active groups as well as inactive groups to which
# the bug already belongs. This way the bug can be removed
# from an inactive group but can only be added to active ones.
"and ((isactive = 1 or (group_bit & int8($bug{'groupset'}) != 0)) or " .
"(group_bit & int8($bug{'groupset'}) != 0)) " .
"order by description");
}
$user{'inallgroups'} = 1;
while (MoreSQLData()) {
my ($bit, $name, $description, $ison, $ingroup) = FetchSQLData();
# For product groups, we only want to display the checkbox if either
# (1) The bit is already set, or
# (2) The user is in the group, but either:
# (a) The group is a product group for the current product, or
# (b) The group name isn't a product name
# This means that all product groups will be skipped, but
# non-product bug groups will still be displayed.
if($ison ||
($ingroup && (($name eq $bug{'product'}) ||
(!defined $::proddesc{$name}))))
{
$user{'inallgroups'} &= $ingroup;
push (@groups, { "bit" => $bit,
"ison" => $ison,
"ingroup" => $ingroup,
"description" => $description });
}
}
# If the bug is restricted to a group, display checkboxes that allow
# the user to set whether or not the reporter
# and cc list can see the bug even if they are not members of all
# groups to which the bug is restricted.
if ($bug{'groupset'} != 0) {
$bug{'inagroup'} = 1;
# Determine whether or not the bug is always accessible by the
# reporter, QA contact, and/or users on the cc: list.
SendSQL("SELECT reporter_accessible, cclist_accessible
FROM bugs
WHERE bug_id = $id
");
($bug{'reporter_accessible'},
$bug{'cclist_accessible'}) = FetchSQLData();
}
}
$vars->{'groups'} = \@groups;
my $movers = Param("movers");
$user{'canmove'} = Param("move-enabled")
&& (defined $::COOKIE{"Bugzilla_login"})
&& ($::COOKIE{"Bugzilla_login"} =~ /\Q$movers\E/);
# User permissions
# In the below, if the person hasn't logged in ($::userid == 0), then
# we treat them as if they can do anything. That's because we don't
# know why they haven't logged in; it may just be because they don't
# use cookies. Display everything as if they have all the permissions
# in the world; their permissions will get checked when they log in
# and actually try to make the change.
$user{'canedit'} = $::userid == 0
|| $::userid == $bug{'reporter'}
|| $::userid == $bug{'qa_contact'}
|| $::userid == $bug{'assigned_to'}
|| UserInGroup("editbugs");
$user{'canconfirm'} = ($::userid == 0) || UserInGroup("canconfirm");
# Bug states
$bug{'isunconfirmed'} = ($bug{'bug_status'} eq $::unconfirmedstate);
$bug{'isopened'} = IsOpenedState($bug{'bug_status'});
# People involved with the bug
$bug{'assigned_to_email'} = DBID_to_name($bug{'assigned_to'});
$bug{'assigned_to'} = DBID_to_real_or_loginname($bug{'assigned_to'});
$bug{'reporter'} = DBID_to_real_or_loginname($bug{'reporter'});
$bug{'qa_contact'} = $bug{'qa_contact'} > 0 ?
DBID_to_name($bug{'qa_contact'}) : "";
my $ccset = new RelationSet;
$ccset->mergeFromDB("SELECT who FROM cc WHERE bug_id=$id");
my @cc = $ccset->toArrayOfStrings();
$bug{'cc'} = \@cc if $cc[0];
# Next bug in list (if there is one)
my @bug_list;
if ($::COOKIE{"BUGLIST"} && $id)
{
@bug_list = split(/:/, $::COOKIE{"BUGLIST"});
}
$vars->{'bug_list'} = \@bug_list;
$bug{'comments'} = GetComments($bug{'bug_id'});
# This is length in number of comments
$bug{'longdesclength'} = scalar(@{$bug{'comments'}});
# Add the bug and user hashes to the variables
$vars->{'bug'} = \%bug;
$vars->{'user'} = \%user;
# Generate and return the UI (HTML page) from the appropriate template.
$template->process("bug/edit.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
}
1;

View File

@@ -0,0 +1,206 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<HTML>
<!--
The contents of this file are subject to the Mozilla Public
License Version 1.1 (the "License"); you may not use this file
except in compliance with the License. You may obtain a copy of
the License at http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS
IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
implied. See the License for the specific language governing
rights and limitations under the License.
The Original Code is the Bugzilla Bug Tracking System.
The Initial Developer of the Original Code is Netscape Communications
Corporation. Portions created by Netscape are
Copyright (C) 1998 Netscape Communications Corporation. All
Rights Reserved.
Contributor(s):
Contributor(s): Terry Weissman <terry@mozilla.org>
-->
<head>
<TITLE>A Bug's Life Cycle</TITLE>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
</head>
<body>
<h1 ALIGN=CENTER>A Bug's Life Cycle</h1>
The <B>status</B> and <B>resolution</B> field define and track the
life cycle of a bug.
<a name="status"></a>
<p>
<TABLE BORDER=1 CELLPADDING=4>
<TR ALIGN=CENTER VALIGN=TOP>
<TD WIDTH="50%"><H1>STATUS</H1> <TD><H1>RESOLUTION</H1>
<TR VALIGN=TOP>
<TD>The <B>status</B> field indicates the general health of a bug. Only
certain status transitions are allowed.
<TD>The <b>resolution</b> field indicates what happened to this bug.
<TR VALIGN=TOP><TD>
<DL><DT><B>
<A HREF="confirmhelp.html">UNCONFIRMED</A></B>
<DD> This bug has recently been added to the database. Nobody has
validated that this bug is true. Users who have the "canconfirm"
permission set may confirm this bug, changing its state to NEW.
Or, it may be directly resolved and marked RESOLVED.
<DT><B>NEW</B>
<DD> This bug has recently been added to the assignee's list of bugs
and must be processed. Bugs in this state may be accepted, and
become <B>ASSIGNED</B>, passed on to someone else, and remain
<B>NEW</B>, or resolved and marked <B>RESOLVED</B>.
<DT><B>ASSIGNED</B>
<DD> This bug is not yet resolved, but is assigned to the proper
person. From here bugs can be given to another person and become
<B>NEW</B>, or resolved and become <B>RESOLVED</B>.
<DT><B>REOPENED</B>
<DD>This bug was once resolved, but the resolution was deemed
incorrect. For example, a <B>WORKSFORME</B> bug is
<B>REOPENED</B> when more information shows up and the bug is now
reproducible. From here bugs are either marked <B>ASSIGNED</B>
or <B>RESOLVED</B>.
</DL>
<TD>
<DL>
<DD> No resolution yet. All bugs which are in one of these "open" states
have the resolution set to blank. All other bugs
will be marked with one of the following resolutions.
</DL>
<TR VALIGN=TOP><TD>
<DL>
<DT><B>RESOLVED</B>
<DD> A resolution has been taken, and it is awaiting verification by
QA. From here bugs are either re-opened and become
<B>REOPENED</B>, are marked <B>VERIFIED</B>, or are closed for good
and marked <B>CLOSED</B>.
<DT><B>VERIFIED</B>
<DD> QA has looked at the bug and the resolution and agrees that the
appropriate resolution has been taken. Bugs remain in this state
until the product they were reported against actually ships, at
which point they become <B>CLOSED</B>.
<DT><B>CLOSED</B>
<DD> The bug is considered dead, the resolution is correct. Any zombie
bugs who choose to walk the earth again must do so by becoming
<B>REOPENED</B>.
</DL>
<TD>
<DL>
<DT><B>FIXED</B>
<DD> A fix for this bug is checked into the tree and tested.
<DT><B>INVALID</B>
<DD> The problem described is not a bug
<DT><B>WONTFIX</B>
<DD> The problem described is a bug which will never be fixed.
<DT><B>LATER</B>
<DD> The problem described is a bug which will not be fixed in this
version of the product.
<DT><B>REMIND</B>
<DD> The problem described is a bug which will probably not be fixed in this
version of the product, but might still be.
<DT><B>DUPLICATE</B>
<DD> The problem is a duplicate of an existing bug. Marking a bug
duplicate requires the bug# of the duplicating bug and will at
least put that bug number in the description field.
<DT><B>WORKSFORME</B>
<DD> All attempts at reproducing this bug were futile, reading the
code produces no clues as to why this behavior would occur. If
more information appears later, please re-assign the bug, for
now, file it.
</DL>
</TABLE>
<H1>Other Fields</H1>
<table border=1 cellpadding=4><tr><td>
<h2><a name="severity">Severity</a></h2>
This field describes the impact of a bug.
<p>
<p>
<table>
<tr><th>Blocker</th><td>Blocks development and/or testing work
<tr><th>Critical</th><td>crashes, loss of data, severe memory leak
<tr><th>Major</th><td>major loss of function
<tr><th>Minor</th><td>minor loss of function, or other problem where easy workaround is present
<tr><th>Trivial</th><td>cosmetic problem like misspelled words or misaligned text
<tr><th>Enhancement</th><td>Request for enhancement
</table>
</td><td>
<h2><a name="priority">Priority</a></h2>
This field describes the importance and order in which a bug should be
fixed. This field is utilized by the programmers/engineers to
prioritize their work to be done. The available priorities are:
<p>
<p>
<table>
<tr><th>P1</th><td>Most important
<tr><th>P2</th><td>
<tr><th>P3</th><td>
<tr><th>P4</th><td>
<tr><th>P5</th><td>Least important
</table>
</tr></table>
<h2><a name="rep_platform">Platform</a></h2>
This is the hardware platform against which the bug was reported. Legal
platforms include:
<UL>
<LI> All (happens on all platform; cross-platform bug)
<LI> Macintosh
<LI> PC
<LI> Sun
<LI> HP
</UL>
<b>Note:</b> Selecting the option "All" does not select bugs assigned against all platforms. It
merely selects bugs that <b>occur</b> on all platforms.
<h2><a name="op_sys">Operating System</a></h2>
This is the operating system against which the bug was reported. Legal
operating systems include:
<UL>
<LI> All (happens on all operating systems; cross-platform bug)
<LI> Windows 95
<LI> Mac System 8.0
<LI> Linux
</UL>
Note that the operating system implies the platform, but not always.
For example, Linux can run on PC and Macintosh and others.
<h2><a name="assigned_to">Assigned To</a></h2>
This is the person in charge of resolving the bug. Every time this
field changes, the status changes to <B>NEW</B> to make it easy to see
which new bugs have appeared on a person's list.
The default status for queries is set to NEW, ASSIGNED and REOPENED. When
searching for bugs that have been resolved or verified, remember to set the
status field appropriately.
<hr>
<!-- hhmts start -->
Last modified: Sun Apr 14 12:51:23 EST 2002
<!-- hhmts end -->
</body> </html>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,392 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=iso-8859-1">
<title>Bug Writing Guidelines</title>
</head>
<body>
<center>
<h1>Bug Writing Guidelines</h1>
</center>
<h3>Why You Should Read This</h3>
<blockquote>
<p>Simply put, the more effectively you report a bug, the more
likely an engineer will actually fix it.</p>
<p>These guidelines are a general
tutorial to teach novice and intermediate bug reporters how to compose effective bug reports. Not every sentence may precisely apply to
your software project.</p>
</blockquote>
<h3>How to Write a Useful Bug Report</h3>
<blockquote>
<p>Useful bug reports are ones that get bugs fixed. A useful bug
report normally has two qualities:</p>
<ol>
<li><b>Reproducible.</b> If an engineer can't see the bug herself to prove that it exists, she'll probably stamp your bug report "WORKSFORME" or "INVALID" and move on to the next bug. Every detail you can provide helps.<br>
<br>
</li>
<li><b>Specific.</b> The quicker the engineer can isolate the bug
to a specific area, the more likely she'll expediently fix it.
(If a programmer or tester has to decypher a bug, they may spend
more time cursing the submitter than solving the problem.)
<br>
<br>
[ <a href="#tips" name="Anchor">Tell Me More</a> ]
</li>
</ol>
<p>Let's say the application you're testing is a web browser. You
crash at foo.com, and want to write up a bug report:</p>
<blockquote>
<p><b>BAD:</b> "My browser crashed. I think I was on www.foo.com. I play golf with Bill Gates, so you better fix this problem, or I'll report you to him. By the way, your Back icon looks like a squashed rodent. UGGGLY. And my grandmother's home page is all messed up in your browser. Thx 4 UR help."
</p>
<p>
<b>GOOD:</b> "I crashed each time I went to www.foo.com, using
the 2002-02-25 build on a Windows 2000 system. I also
rebooted into Linux, and reproduced this problem using the 2002-02-24
Linux build.
</p>
<p>
It again crashed each time upon drawing the Foo banner at the top
of the page. I broke apart the page, and discovered that the
following image link will crash the application reproducibly,
unless you remove the "border=0" attribute:
</p>
<p>
<tt>&lt;IMG SRC="http://www.foo.com/images/topics/topicfoos.gif"
width="34" height="44" border="0" alt="News"&gt;</tt>
</p>
</blockquote>
</blockquote>
<h3>How to Enter your Useful Bug Report into Bugzilla:</h3>
<blockquote>
<p>Before you enter your bug, use Bugzilla's
<a href="query.cgi">search page</a> to determine whether the defect you've discovered is a known, already-reported bug. If your bug is the 37th duplicate of a known issue, you're more likely to annoy the engineer. (Annoyed
engineers fix fewer bugs.)
</p>
<p>
Next, be sure to reproduce your bug using a recent
build. Engineers tend to be most interested in problems affecting
the code base that they're actively working on. After all, the bug you're reporting
may already be fixed.
</p>
<p>
If you've discovered a new bug using a current build, report it in
Bugzilla:
</p>
<ol>
<li>From your Bugzilla main page, choose
"<a href="enter_bug.cgi">Enter a new bug</a>".</li>
<li>Select the product that you've found a bug in.</li>
<li>Enter your e-mail address, password, and press the "Login"
button. (If you don't yet have a password, leave the password field empty,
and press the "E-mail me a password" button instead.
You'll quickly receive an e-mail message with your password.)</li>
</ol>
<p>Now, fill out the form. Here's what it all means:</p>
<p><b>Where did you find the bug?</b></p>
<blockquote>
<p><b>Product: In which product did you find the bug?</b><br>
You just specified this on the last page, so you can't edit it here.</p>
<p><b>Version: In which product version did you find the
bug?</b><br>
(If applicable)</p>
<p><b>Component: In which component does the bug exist?</b><br>
Bugzilla requires that you select a component to enter a bug. (Not sure which to choose?
Click on the Component link. You'll see a description of each component, to help you make the best choice.)</p>
<p><b>OS: On which Operating System (OS) did you find this bug?</b>
(e.g. Linux, Windows 2000, Mac OS 9.)<br>
If you know the bug happens on all OSs, choose 'All'. Otherwise,
select the OS that you found the bug on, or "Other" if your OS
isn't listed.</p>
</blockquote>
<p><b>How important is the bug?</b></p>
<blockquote>
<p><b>Severity: How damaging is the bug?</b><br>
This item defaults to 'normal'. If you're not sure what severity your bug deserves, click on the Severity link.
You'll see a description of each severity rating. <br>
</p>
</blockquote>
<p><b>Who will be following up on the bug?</b></p>
<blockquote>
<p><b>Assigned To: Which engineer should be responsible for fixing
this bug?</b><br>
Bugzilla will automatically assign the bug to a default engineer
upon submitting a bug report. If you'd prefer to directly assign the bug to
someone else, enter their e-mail address into this field. (To see the list of
default engineers for each component, click on the Component
link.)</p>
<p><b>Cc: Who else should receive e-mail updates on changes to this
bug?</b><br>
List the full e-mail addresses of other individuals who should
receive an e-mail update upon every change to the bug report. You
can enter as many e-mail addresses as you'd like, separated by spaces or commas, as long as those
people have Bugzilla accounts.</p>
</blockquote>
<p><b>What else can you tell the engineer about the bug?</b></p>
<blockquote>
<p><b>Summary:</b> <b>How would you describe the bug, in
approximately 60 or fewer characters?</b><br>
A good summary should <b>quickly and uniquely identify a bug
report</b>. Otherwise, an engineer cannot meaningfully identify
your bug by its summary, and will often fail to pay attention to
your bug report when skimming through a 10 page bug list.<br>
<br>
A useful summary might be
"<tt>PCMCIA install fails on Tosh Tecra 780DVD w/ 3c589C</tt>".
"<tt>Software fails</tt>" or "<tt>install problem</tt>" would be
examples of a bad summary.<br>
<br>
[ <a href="#summary">Tell Me More</a> ]<br>
<br>
<b>Description: </b><br>
Please provide a detailed problem report in this field.
Your bug's recipients will most likely expect the following information:</p>
<blockquote>
<p><b>Overview Description:</b> More detailed expansion of
summary.</p>
<blockquote>
<pre>
Drag-selecting any page crashes Mac builds in NSGetFactory
</pre>
</blockquote>
<p><b>Steps to Reproduce:</b> Minimized, easy-to-follow steps that will
trigger the bug. Include any special setup steps.</p>
<blockquote>
<pre>
1) View any web page. (I used the default sample page,
resource:/res/samples/test0.html)
2) Drag-select the page. (Specifically, while holding down
the mouse button, drag the mouse pointer downwards from any
point in the browser's content region to the bottom of the
browser's content region.)
</pre>
</blockquote>
<p>
<b>Actual Results:</b> What the application did after performing
the above steps.
</p>
<blockquote>
<pre>
The application crashed. Stack crawl appended below from MacsBug.
</pre>
</blockquote>
<p><b>Expected Results:</b> What the application should have done,
were the bug not present.</p>
<blockquote>
<pre>
The window should scroll downwards. Scrolled content should be selected.
(Or, at least, the application should not crash.)
</pre>
</blockquote>
<p><b>Build Date &amp; Platform:</b> Date and platform of the build
that you first encountered the bug in.</p>
<blockquote>
<pre>
Build 2002-03-15 on Mac OS 9.0
</pre>
</blockquote>
<p><b>Additional Builds and Platforms:</b> Whether or not the bug
takes place on other platforms (or browsers, if applicable).</p>
<blockquote>
<pre>
- Also Occurs On
Mozilla (2002-03-15 build on Windows NT 4.0)
- Doesn't Occur On
Mozilla (2002-03-15 build on Red Hat Linux; feature not supported)
Internet Explorer 5.0 (shipping build on Windows NT 4.0)
Netscape Communicator 4.5 (shipping build on Mac OS 9.0)
</pre>
</blockquote>
<p><b>Additional Information:</b> Any other debugging information.
For crashing bugs:</p>
<ul>
<li><b>Win32:</b> if you receive a Dr. Watson error, please note
the type of the crash, and the module that the application crashed
in. (e.g. access violation in apprunner.exe)</li>
<li><b>Mac OS:</b> if you're running MacsBug, please provide the
results of a <b>how</b> and an <b>sc</b>:</li>
</ul>
<blockquote>
<pre>
*** MACSBUG STACK CRAWL OF CRASH (Mac OS)
Calling chain using A6/R1 links
Back chain ISA Caller
00000000 PPC 0BA85E74
03AEFD80 PPC 0B742248
03AEFD30 PPC 0B50FDDC NSGetFactory+027FC
PowerPC unmapped memory exception at 0B512BD0 NSGetFactory+055F0
</pre>
</blockquote>
</blockquote>
</blockquote>
<p>You're done!<br>
<br>
After double-checking your entries for any possible errors, press
the "Commit" button, and your bug report will now be in the
Bugzilla database.<br>
</p>
</blockquote>
<hr>
<h3>More Information on Writing Good Bugs</h3>
<blockquote>
<p><b><a name="tips"></a> 1. General Tips for a Useful Bug
Report</b>
</p>
<blockquote>
<p>
<b>Use an explicit structure, so your bug reports are easy to
skim.</b> Bug report users often need immediate access to specific
sections of your bug. If your Bugzilla installation supports the
Bugzilla Helper, use it.
</p>
<p>
<b>Avoid cuteness if it costs clarity.</b> Nobody will be laughing
at your funny bug title at 3:00 AM when they can't remember how to
find your bug.
</p>
<p>
<b>One bug per report.</b> Completely different people typically
fix, verify, and prioritize different bugs. If you mix a handful of
bugs into a single report, the right people probably won't discover
your bugs in a timely fashion, or at all. Certain bugs are also
more important than others. It's impossible to prioritize a bug
report when it contains four different issues, all of differing
importance.
</p>
<p>
<b>No bug is too trivial to report.</b> Unless you're reading the
source code, you can't see actual software bugs, like a dangling
pointer -- you'll see their visible manifestations, such as the
segfault when the application finally crashes. Severe software
problems can manifest themselves in superficially trivial ways.
File them anyway.<br>
</p>
</blockquote>
<p><b><a name="summary"></a>2. How and Why to Write Good Bug Summaries</b>
</p>
<blockquote>
<p><b>You want to make a good first impression on the bug
recipient.</b> Just like a New York Times headline guides readers
towards a relevant article from dozens of choices, will your bug summary
suggest that your bug report is worth reading from dozens or hundreds of
choices?
</p>
<p>
Conversely, a vague bug summary like <tt>install problem</tt> forces anyone
reviewing installation bugs to waste time opening up your bug to
determine whether it matters.
</p>
<p>
<b>Your bug will often be searched by its summary.</b> Just as
you'd find web pages with Google by searching by keywords through
intuition, so will other people locate your bugs. Descriptive bug
summaries are naturally keyword-rich, and easier to find.
</p>
<p>
For example, you'll find a bug titled "<tt>Dragging icons from List View to
gnome-terminal doesn't paste path</tt>" if you search on "List",
"terminal", or "path". Those search keywords wouldn't have found a
bug titled "<tt>Dragging icons
doesn't paste</tt>".
</p>
<p>
Ask yourself, "Would someone understand my bug from just this
summary?" If so, you've written a fine summary.
</p>
<p><b>Don't write titles like these:</b></p>
<ol>
<li>"Can't install" - Why can't you install? What happens when you
try to install?</li>
<li>"Severe Performance Problems" - ...and they occur when you do
what?</li>
<li>"back button does not work" - Ever? At all?</li>
</ol>
<p><b>Good bug titles:</b></p>
<ol>
<li>"1.0 upgrade installation fails if Mozilla M18 package present"
- Explains problem and the context.</li>
<li>"RPM 4 installer crashes if launched on Red Hat 6.2 (RPM 3)
system" - Explains what happens, and the context.</li>
</ol>
</blockquote>
</blockquote>
<p>(Written and maintained by
<a href="http://www.prometheus-music.com/eli">Eli Goldberg</a>. Claudius
Gayle, Gervase Markham, Peter Mock, Chris Pratt, Tom Schutter and Chris Yeh also
contributed significant changes. Constructive
<a href="mailto:eli@prometheus-music.com">suggestions</a> welcome.)</p>
</body>
</html>

View File

@@ -0,0 +1,46 @@
<!ELEMENT bugzilla (bug+)>
<!ATTLIST bugzilla
version CDATA #REQUIRED
urlbase CDATA #REQUIRED
maintainer CDATA #REQUIRED
exporter CDATA #IMPLIED
>
<!ELEMENT bug (bug_id, (bug_status, product, priority, version, rep_platform, assigned_to, delta_ts, component, reporter, target_milestone?, bug_severity, creation_ts, qa_contact?, op_sys, resolution?, bug_file_loc?, short_desc?, keywords*, status_whiteboard?, dependson*, blocks*, cc*, long_desc*, attachment*)?)>
<!ATTLIST bug
error (NotFound | NotPermitted | InvalidBugId) #IMPLIED
>
<!ELEMENT bug_id (#PCDATA)>
<!ELEMENT exporter (#PCDATA)>
<!ELEMENT urlbase (#PCDATA)>
<!ELEMENT bug_status (#PCDATA)>
<!ELEMENT product (#PCDATA)>
<!ELEMENT priority (#PCDATA)>
<!ELEMENT version (#PCDATA)>
<!ELEMENT rep_platform (#PCDATA)>
<!ELEMENT assigned_to (#PCDATA)>
<!ELEMENT delta_ts (#PCDATA)>
<!ELEMENT component (#PCDATA)>
<!ELEMENT reporter (#PCDATA)>
<!ELEMENT target_milestone (#PCDATA)>
<!ELEMENT bug_severity (#PCDATA)>
<!ELEMENT creation_ts (#PCDATA)>
<!ELEMENT qa_contact (#PCDATA)>
<!ELEMENT status_whiteboard (#PCDATA)>
<!ELEMENT op_sys (#PCDATA)>
<!ELEMENT resolution (#PCDATA)>
<!ELEMENT bug_file_loc (#PCDATA)>
<!ELEMENT short_desc (#PCDATA)>
<!ELEMENT keywords (#PCDATA)>
<!ELEMENT dependson (#PCDATA)>
<!ELEMENT blocks (#PCDATA)>
<!ELEMENT cc (#PCDATA)>
<!ELEMENT long_desc (who, bug_when, thetext)>
<!ELEMENT who (#PCDATA)>
<!ELEMENT bug_when (#PCDATA)>
<!ELEMENT thetext (#PCDATA)>
<!ELEMENT attachment (attachid, date, desc, type?, data?)>
<!ELEMENT attachid (#PCDATA)>
<!ELEMENT date (#PCDATA)>
<!ELEMENT desc (#PCDATA)>
<!ELEMENT type (#PCDATA)>
<!ELEMENT data (#PCDATA)>

View File

@@ -0,0 +1,39 @@
#!/usr/bonsaitools/bin/perl -wT
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Terry Weissman <terry@mozilla.org>
use strict;
print q{Content-type: text/html
<HTML>
<HEAD>
<META HTTP-EQUIV="Refresh"
CONTENT="0; URL=userprefs.cgi">
</HEAD>
<BODY>
This URL is obsolete. Forwarding you to the correct one.
<P>
Going to <A HREF="userprefs.cgi">userprefs.cgi</A>
<BR>
</BODY>
</HTML>
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,124 @@
#!/usr/bonsaitools/bin/perl -wT
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Terry Weissman <terry@mozilla.org>
use diagnostics;
use strict;
use lib qw(.);
use vars qw(
@legal_keywords
$buffer
$template
$vars
);
require "CGI.pl";
print "Content-type: text/html\n";
# The master list not only says what fields are possible, but what order
# they get displayed in.
ConnectToDatabase();
GetVersionTable();
my @masterlist = ("opendate", "changeddate", "severity", "priority",
"platform", "owner", "reporter", "status", "resolution",
"product", "component", "version", "os", "votes");
if (Param("usetargetmilestone")) {
push(@masterlist, "target_milestone");
}
if (Param("useqacontact")) {
push(@masterlist, "qa_contact");
}
if (Param("usestatuswhiteboard")) {
push(@masterlist, "status_whiteboard");
}
if (@::legal_keywords) {
push(@masterlist, "keywords");
}
push(@masterlist, ("summary", "summaryfull"));
$vars->{masterlist} = \@masterlist;
my @collist;
if (defined $::FORM{'rememberedquery'}) {
my $splitheader = 0;
if (defined $::FORM{'resetit'}) {
@collist = @::default_column_list;
} else {
foreach my $i (@masterlist) {
if (defined $::FORM{"column_$i"}) {
push @collist, $i;
}
}
if (exists $::FORM{'splitheader'}) {
$splitheader = $::FORM{'splitheader'};
}
}
my $list = join(" ", @collist);
my $urlbase = Param("urlbase");
my $cookiepath = Param("cookiepath");
print "Set-Cookie: COLUMNLIST=$list ; path=$cookiepath ; expires=Sun, 30-Jun-2029 00:00:00 GMT\n";
print "Set-Cookie: SPLITHEADER=$::FORM{'splitheader'} ; path=$cookiepath ; expires=Sun, 30-Jun-2029 00:00:00 GMT\n";
print "Refresh: 0; URL=buglist.cgi?$::FORM{'rememberedquery'}\n";
print "\n";
print "<META HTTP-EQUIV=Refresh CONTENT=\"1; URL=$urlbase"."buglist.cgi?$::FORM{'rememberedquery'}\">\n";
print "<TITLE>What a hack.</TITLE>\n";
PutHeader ("Change columns");
print "Resubmitting your query with new columns...\n";
exit;
}
if (defined $::COOKIE{'COLUMNLIST'}) {
@collist = split(/ /, $::COOKIE{'COLUMNLIST'});
} else {
@collist = @::default_column_list;
}
$vars->{collist} = \@collist;
$vars->{splitheader} = 0;
if ($::COOKIE{'SPLITHEADER'}) {
$vars->{splitheader} = 1;
}
my %desc = ();
foreach my $i (@masterlist) {
$desc{$i} = $i;
}
$desc{'summary'} = "Summary (first 60 characters)";
$desc{'summaryfull'} = "Full Summary";
$vars->{desc} = \%desc;
$vars->{buffer} = $::buffer;
# Generate and return the UI (HTML page) from the appropriate template.
print "Content-type: text/html\n\n";
$template->process("list/change-columns.html.tmpl", $vars)
|| ThrowTemplateError($template->error());

View File

@@ -0,0 +1,202 @@
#!/usr/bonsaitools/bin/perl -w
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Terry Weissman <terry@mozilla.org>,
# Harrison Page <harrison@netscape.com>
# Gervase Markham <gerv@gerv.net>
# Run me out of cron at midnight to collect Bugzilla statistics.
use AnyDBM_File;
use diagnostics;
use strict;
use vars @::legal_product;
require "globals.pl";
# tidy up after graphing module
if (chdir("graphs")) {
unlink <./*.gif>;
unlink <./*.png>;
chdir("..");
}
ConnectToDatabase(1);
GetVersionTable();
my @myproducts;
push( @myproducts, "-All-", @::legal_product );
foreach (@myproducts) {
my $dir = "data/mining";
&check_data_dir ($dir);
&collect_stats ($dir, $_);
}
&calculate_dupes();
sub check_data_dir {
my $dir = shift;
if (! -d) {
mkdir $dir, 0777;
chmod 0777, $dir;
}
}
sub collect_stats {
my $dir = shift;
my $product = shift;
my $when = localtime (time);
# NB: Need to mangle the product for the filename, but use the real
# product name in the query
my $file_product = $product;
$file_product =~ s/\//-/gs;
my $file = join '/', $dir, $file_product;
my $exists = -f $file;
if (open DATA, ">>$file") {
push my @row, &today;
foreach my $status ('NEW', 'ASSIGNED', 'REOPENED', 'UNCONFIRMED', 'RESOLVED', 'VERIFIED', 'CLOSED') {
if( $product eq "-All-" ) {
SendSQL("select count(bug_status) from bugs where bug_status='$status'");
} else {
SendSQL("select count(bug_status) from bugs where bug_status='$status' and product='$product'");
}
push @row, FetchOneColumn();
}
foreach my $resolution ('FIXED', 'INVALID', 'WONTFIX', 'LATER', 'REMIND', 'DUPLICATE', 'WORKSFORME', 'MOVED') {
if( $product eq "-All-" ) {
SendSQL("select count(resolution) from bugs where resolution='$resolution'");
} else {
SendSQL("select count(resolution) from bugs where resolution='$resolution' and product='$product'");
}
push @row, FetchOneColumn();
}
if (! $exists) {
print DATA <<FIN;
# Bugzilla Daily Bug Stats
#
# Do not edit me! This file is generated.
#
# fields: DATE|NEW|ASSIGNED|REOPENED|UNCONFIRMED|RESOLVED|VERIFIED|CLOSED|FIXED|INVALID|WONTFIX|LATER|REMIND|DUPLICATE|WORKSFORME|MOVED
# Product: $product
# Created: $when
FIN
}
print DATA (join '|', @row) . "\n";
close DATA;
} else {
print "$0: $file, $!";
}
}
sub calculate_dupes {
SendSQL("SELECT * FROM duplicates");
my %dupes;
my %count;
my @row;
my $key;
my $changed = 1;
my $today = &today_dash;
# Save % count here in a date-named file
# so we can read it back in to do changed counters
# First, delete it if it exists, so we don't add to the contents of an old file
if (my @files = <data/duplicates/dupes$today*>) {
unlink @files;
}
dbmopen(%count, "data/duplicates/dupes$today", 0644) || die "Can't open DBM dupes file: $!";
# Create a hash with key "a bug number", value "bug which that bug is a
# direct dupe of" - straight from the duplicates table.
while (@row = FetchSQLData()) {
my $dupe_of = shift @row;
my $dupe = shift @row;
$dupes{$dupe} = $dupe_of;
}
# Total up the number of bugs which are dupes of a given bug
# count will then have key = "bug number",
# value = "number of immediate dupes of that bug".
foreach $key (keys(%dupes))
{
my $dupe_of = $dupes{$key};
if (!defined($count{$dupe_of})) {
$count{$dupe_of} = 0;
}
$count{$dupe_of}++;
}
# Now we collapse the dupe tree by iterating over %count until
# there is no further change.
while ($changed == 1)
{
$changed = 0;
foreach $key (keys(%count)) {
# if this bug is actually itself a dupe, and has a count...
if (defined($dupes{$key}) && $count{$key} > 0) {
# add that count onto the bug it is a dupe of,
# and zero the count; the check is to avoid
# loops
if ($count{$dupes{$key}} != 0) {
$count{$dupes{$key}} += $count{$key};
$count{$key} = 0;
$changed = 1;
}
}
}
}
# Remove the values for which the count is zero
foreach $key (keys(%count))
{
if ($count{$key} == 0) {
delete $count{$key};
}
}
dbmclose(%count);
}
sub today {
my ($dom, $mon, $year) = (localtime(time))[3, 4, 5];
return sprintf "%04d%02d%02d", 1900 + $year, ++$mon, $dom;
}
sub today_dash {
my ($dom, $mon, $year) = (localtime(time))[3, 4, 5];
return sprintf "%04d-%02d-%02d", 1900 + $year, ++$mon, $dom;
}

View File

@@ -0,0 +1,168 @@
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html><head>
<!--
The contents of this file are subject to the Mozilla Public
License Version 1.1 (the "License"); you may not use this file
except in compliance with the License. You may obtain a copy of
the License at http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS
IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
implied. See the License for the specific language governing
rights and limitations under the License.
The Original Code is the Bugzilla Bug Tracking System.
The Initial Developer of the Original Code is Netscape Communications
Corporation. Portions created by Netscape are
Copyright (C) 2000 Netscape Communications Corporation. All
Rights Reserved.
Contributor(s): Terry Weissman <terry@mozilla.org>
-->
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Understanding the UNCONFIRMED state, and other recent changes</title>
</head>
<body>
<h1>Understanding the UNCONFIRMED state, and other recent changes</h1>
<p>
[This document is aimed primarily at people who have used Bugzilla
before the UNCONFIRMED state was implemented. It might be helpful for
newer users as well.]
</p>
<p>
New bugs in some products will now show up in a new state,
UNCONFIRMED. This means that we have nobody has confirmed that the
bug is real. Very busy engineers will probably generally ignore
UNCONFIRMED that have been assigned to them, until they have been
confirmed in one way or another. (Engineers with more time will
hopefully glance over their UNCONFIRMED bugs regularly.)
</p>
<p>
The <a href="bug_status.html">page describing bug fields</a> has been
updated to include UNCONFIRMED.
</p>
<p>
There are two basic ways that a bug can become confirmed (and enter
the NEW) state.
</p>
<ul>
<li> A user with the appropriate permissions (see below for more on
permissions) decides that the bug is a valid one, and confirms
it. We hope to gather a small army of responsible volunteers
to regularly go through bugs for us.</li>
<li> The bug gathers a certain number of votes. <b>Any</b> valid Bugzilla user may vote for
bugs (each user gets a certain number of bugs); any UNCONFIRMED bug which
gets enough votes becomes automatically confirmed, and enters the NEW state.</li>
</ul>
<p>
One implication of this is that it is worth your time to search the
bug system for duplicates of your bug to vote on them, before
submitting your own bug. If we can spread around knowledge of this
fact, it ought to help cut down the number of duplicate bugs in the
system.
</p>
<h2>Permissions.</h2>
<p>
Users now have a certain set of permissions. To see your permissions,
check out the
<a href="userprefs.cgi?bank=permissions">user preferences</a> page.
</p>
<p>
If you have the "Can confirm a bug" permission, then you will be able
to move UNCONFIRMED bugs into the NEW state.
</p>
<p>
If you have the "Can edit all aspects of any bug" permission, then you
can tweak anything about any bug. If not, you may only edit those
bugs that you have submitted, or that you have assigned to you (or
qa-assigned to you). However, anyone may add a comment to any bug.
</p>
<p>
Some people (initially, the initial owners and initial qa-contacts for
components in the system) have the ability to give the above two
permissions to other people. So, if you really feel that you ought to
have one of these permissions, a good person to ask (via private
email, please!) is the person who is assigned a relevant bug.
</p>
<h2>Other details.</h2>
<p>
An initial stab was taken to decide who would be given which of the
above permissions. This was determined by some simple heurstics of
who was assigned bugs, and who the default owners of bugs were, and a
look at people who seem to have submitted several bugs that appear to
have been interesting and valid. Inevitably, we have failed to give
someone the permissions they deserve. Please don't take it
personally; just bear with us as we shake out the new system.
</p>
<p>
People with one of the two bits above can easily confirm their own
bugs, so bugs they submit will actually start out in the NEW state.
They can override this when submitting a bug.
</p>
<p>
People can ACCEPT or RESOLVE a bug assigned to them, even if they
aren't allowed to confirm it. However, the system remembers, and if
the bug gets REOPENED or reassigned to someone else, it will revert
back to the UNCONFIRMED state. If the bug has ever been confirmed,
then REOPENing or reassigning will cause it to go to the NEW or
REOPENED state.
</p>
<p>
Note that only some products support the UNCONFIRMED state. In other
products, all new bugs will automatically start in the NEW state.
</p>
<h2>Things still to be done.</h2>
<p>
There probably ought to be a way to get a bug back into the
UNCONFIRMED state, but there isn't yet.
</p>
<p>
If a person has submitted several bugs that get confirmed, then this
is probably a person who understands the system well, and deserves the
"Can confirm a bug" permission. This kind of person should be
detected and promoted automatically.
</p>
<p>
There should also be a way to automatically promote people to get the
"Can edit all aspects of any bug" permission.
</p>
<p>
The "enter a new bug" page needs to be revamped with easy ways for new
people to educate themselves on the benefit of searching for a bug
like the one they're about to submit and voting on it, rather than
adding a new useless duplicate.
</p>
<hr>
<p>
<!-- hhmts start -->
Last modified: Sun Apr 14 12:55:14 EST 2002
<!-- hhmts end -->
</p>
</body> </html>

View File

@@ -0,0 +1,79 @@
# -*- Mode: perl; indent-tabs-mode: nil -*-
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# This code is based on code found in bug_email.pl from the bugzilla
# email tracker. Initial contributors are ::
# Terry Weissman <terry@mozilla.org>
# Gregor Fischer <fischer@suse.de>
# Klaas Freitag <freitag@suse.de>
# Seth Landsman <seth@dworkin.net>
# The purpose of this module is to abstract out a bunch of the code
# that is central to email interfaces to bugzilla and its database
# Contributor : Seth Landsman <seth@dworkin.net>
# Initial checkin : 03/15/00 (SML)
# findUser() function moved from bug_email.pl to here
push @INC, "../."; # this script now lives in contrib
require "globals.pl";
use diagnostics;
use strict;
my $EMAIL_TRANSFORM_NONE = "email_transform_none";
my $EMAIL_TRANSFORM_BASE_DOMAIN = "email_transform_base_domain";
my $EMAIL_TRANSFORM_NAME_ONLY = "email_transform_name_only";
# change to do incoming email address fuzzy matching
my $email_transform = $EMAIL_TRANSFORM_NAME_ONLY;
# findUser()
# This function takes an email address and returns the user email.
# matching is sloppy based on the $email_transform parameter
sub findUser($) {
my ($address) = @_;
# if $email_transform is $EMAIL_TRANSFORM_NONE, return the address, otherwise, return undef
if ($email_transform eq $EMAIL_TRANSFORM_NONE) {
my $stmt = "SELECT login_name FROM profiles WHERE profiles.login_name = \'$address\';";
SendSQL($stmt);
my $found_address = FetchOneColumn();
return $found_address;
} elsif ($email_transform eq $EMAIL_TRANSFORM_BASE_DOMAIN) {
my ($username) = ($address =~ /(.+)@/);
my $stmt = "SELECT login_name FROM profiles WHERE profiles.login_name RLIKE \'$username\';";
SendSQL($stmt);
my $domain;
my $found = undef;
my $found_address;
my $new_address = undef;
while ((!$found) && ($found_address = FetchOneColumn())) {
($domain) = ($found_address =~ /.+@(.+)/);
if ($address =~ /$domain/) {
$found = 1;
$new_address = $found_address;
}
}
return $new_address;
} elsif ($email_transform eq $EMAIL_TRANSFORM_NAME_ONLY) {
my ($username) = ($address =~ /(.+)@/);
my $stmt = "SELECT login_name FROM profiles WHERE profiles.login_name RLIKE \'$username\';";
SendSQL($stmt);
my $found_address = FetchOneColumn();
return $found_address;
}
}
1;

View File

@@ -0,0 +1,22 @@
This directory contains contributed software related to Bugzilla.
Things in here have not necessarily been tested or tried by anyone
except the original contributor, so tred carefully. But it may still
be useful to you.
This directory includes:
mysqld-watcher.pl -- This script can be installed as a frequent cron
job to clean up stalled/dead queries.
gnats2bz.pl -- A perl script to help import bugs from a GNATS
database into a Bugzilla database. Contributed by
Tom Schutter <tom@platte.com>
bug_email.pl -- A perl script that can receive email containing
bug reports (email-interface). Contributed by
Klaas Freitag <freitag@SuSE.de>
README.Mailif -- Readme describing the mail interface.
bugmail_help.html -- User help page for the mail interface.
yp_nomail.sh -- Script you can run via cron that regularly updates
the nomail file for terminated employees

View File

@@ -0,0 +1,80 @@
The Bugzilla Mail interface
===========================
(UPDATE 03/14/00 to better reflect reality by SML)
The Bugzilla Mail interface allows to submit bugs to Bugzilla by email.
The Mail Interface Contribution consists of three files:
README.Mailif - this readme.
bug_email.pl - the script
bugmail_help.html - a user help html site
Installation:
Next is to add a user who receives the bugmails, e. g. bugmail. Create a
mail account and a home directory for the user.
The mailinterface script bug_email.pl needs to get the mail through stdin.
I use procmail for that, with the following line in the .procmailrc:
BUGZILLA_HOME=/usr/local/httpd/htdocs/bugzilla
:0 c
|(cd $BUGZILLA_HOME/contrib; ./bug_email.pl)
This defines the Bugzilla directory as the variable BUGZILLA_HOME and passes
all incoming mail to the script after cd'ing into the bugzilla home.
In some cases, it is necessary to alter the headers of incoming email. The
additional line to procmail :
:0 fhw
| formail -I "From " -a "From "
fixes many problems.
See bugzilla.procmailrc for a sample procmailrc that works for me (SML) and
also deals with bugzilla_email_append.pl
Customation:
There are some values inside the script which need to be customized for your
needs:
1. In sub-routine Reply (search 'sub Reply':
there is the line
print MAIL "From: Bugzilla Mailinterface<yourmail\@here.com>\n";
^^^^^^^^^^^^^^^^^^^^
Fill in your correct mail here. That will make it easy for people to reply
to the mail.
2. check, if your sendmail resides in /usr/sbin/sendmail, change the path if neccessary.
Search the script after 'default' - you find some default-Settings for bug
reports, which are used, if the sender did not send a field for it. The defaults
should be checked and changed.
Thats hopefully all, we will come up with any configuration file or something.
If your mail works, your script will insert mails from now on.
The mailinterface supports two commandline switches:
There are two command line switches :
-t: Testmode
The mailinterface does not really insert the bug into the database, but
writes some debug output to stdout and writes the mail into the file
bug_email_test.log in the data-dir.
-r: restricted mode
All lines before the first line with a keyword character are skipped.
In not restricted, default mode, these lines are added to the long
description of the bug.
02/2000 - Klaas Freitag, SuSE GmbH <freitag@suse.de>
03/2000 - Seth M. Landsman <seth@cs.brandeis.edu>
bug_email.pl now lives out of bugzilla/contrib
added line about formail

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,223 @@
<HTML>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<!--
The contents of this file are subject to the Mozilla Public
License Version 1.1 (the "License"); you may not use this file
except in compliance with the License. You may obtain a copy of
the License at http://www.mozilla.org/MPL/
Software distributed under the License is distributed on an "AS
IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
implied. See the License for the specific language governing
rights and limitations under the License.
The Original Code is the Bugzilla Bug Tracking System.
Contributor(s): Klaas Freitag <Freitag@SuSE.de>
-->
<HEAD> <TITLE>Bugzilla Mail Interface</TITLE> </HEAD>
<BODY BGCOLOR="#FFFFFF">
<CENTER><H1>The Bugzilla Mail Interface</H1>
Contributor: <A HREF="mailto:freitag@suse.de">Klaas Freitag</A>, SuSE GmbH
</CENTER>
<P>
The bugzilla Mail interface allows the registered bugzilla users to submit bugs by
sending email with a bug description. This is usefull for people, who do not work
inhouse and want to submitt bugs to the bugzilla system.
<p>
I know, show me the <A HREF="#examplemail">example-mail !</A>
<H2>What do you need to do to submitt a bug by mail ?</H2>
You need to send a email in the described format to the bugmail-user of the
bugzilla-system. This is <A HREF="mailto:our_bugzilla@xyz.com">yourbugzilla@here.com</A>
You receive a reply mail with the new bug-ID if your request was ok.
If not, you get a mail with
some help on the bugmail system and a specific analysis of your request.
<P>
Please dont refuse to send one or two wrong mails, you will get all the information
you need in the replies, and <I>only</I> in the mail replies. The information on this
page, concerning available products, versions and so on, is not dynamicly generated and
may be old therefore.
<H1>The Mail Format</H1>
The bugmail needs a special format , which consists of some keywords and suitable
values for them and a description text. Note that the keyword block needs to be
above of the description text.
<H2>Keywords</H2>
You need to tell bugzilla some properties of the bugs. This is done by keywords, which
start on a new line with a @, followed by the keyword and and equal-sign, followed by a
hopefully valid value.
<TABLE BORDER=4 FRAME=box CELLSPACING="5" width=95%> <COLGROUP> <col width="2*">
<col width="5*"> <col width="1*"> </COLGROUP>
<TR>
<TH>Keyword</TH>
<TH>Value description</TH>
<TH>required and default value</TH>
</TR>
<TR>
<TD>@product</TD>
<TD>The product which has a bug</TD>
<TD>yes. <br> This is the most important information. Many other
fields depend on the product.</TD>
</TR>
<TR>
<TD>@component</TD>
<TD>the desired component which is affected by the bug</TD>
<TD>yes. <br> As the @product, this is a very important
field.</TD>
</TR>
<TR>
<TD>@version</TD>
<TD>The version of the product</TD>
<TD>yes. <br>See @product and @component</TD>
</TR>
<TR>
<TD>@short_desc</TD>
<TD>A summary of your bug report</TD>
<TD>yes. <br>This summary of the error you want to report
describes what happen. You may skip the long description,
but not this summary.<br>
<b>Note:</b>The short description may be given in the mail subject
instead of using the keyword !</TD>
</TR>
<TR>
<TD>@rep_platform</TD>
<TD>The desired platform</TD>
<TD>no.<br>If you dont give a value, this field is set to <I>All</I>.</TD>
</TR>
<TR>
<TD>@bug_severity</TD>
<TD>The severity of the bug</TD>
<TD>no. <br> If you dont give a value, this field is set to
<I>normal</I></TD>
</TR>
<TR>
<TD>@priority</TD>
<TD>The priority of the bug</TD>
<TD>no.<br>If you dont give a value, this field is set to <I>P3</I></TD>
</TR>
<TR>
<TD>@op_sys</TD>
<TD>The operating system</TD>
<TD>no.<br>If you dont give a value, this field is set to <I>Linux</I>.</TD>
</TR>
<TR>
<TD>@assigned_to</TD>
<TD>The one to whom the bug is assigned to</TD>
<TD>no. <br>There is an initial owner for every product/version/component.
He owns the bug by default. The initial owner can only be found if
product, version and component are valid.</TD>
</TR>
<TR>
<TD>@bug_file_loc</TD>
<TD>?</TD>
<TD>no.</TD>
</TR>
<TR>
<TD>@status_whiteboard</TD>
<TD>?</TD>
<TD>no.</TD>
</TR>
<TR>
<TD>@target_milestone</TD>
<TD>?</TD>
<TD>no.</TD>
</TR>
<TR>
<TD>@groupset</TD>
<TD>rules the visibility of the bug.</TD>
<TD>no.<br>This value defaults to the smallest of the available groups,
which is <I>readInternal</I>.</TD>
</TR>
<TR>
<TD>@qa_contact</TD>
<TD>the quality manager for the product</TD>
<TD>no.<br>This value can be retrieved from product, component and
version</TD>
</TR>
</TABLE>
<H2>Valid values</H2>
Give string values for the most keys above. Some keywords require special values:<br>
<ol>
<li>E-Mail adresses: If you want to set the qa-contact, specify a email-adress for @qa_contact. The email must be known by bugzilla of course.</li>
<li>Listvalues: Most of the values have to be one of a list of valid values. Try by sending
a mail and read the reply. Skip fields if you dont get help for them unless you dont know
which values you may choose.</li>
<li>free Text: The descriptions may be free text. </li>
<li>Special: The field groupset may be specified in different in three different kinds:
<ol>
<li> A plain numeric way, which is one usually huge number, e. g. <I>65536</I></li>
<li> a string with added numbers e.g. <I>65536+131072</I></li>
<li> a string list, e.g. <I>ReadInternal, ReadBeta </I></li>
</ol>
</li>
</ol>
<p>
But most of them need <b>valid</b> values.
<p>
Sorry, you will not find lists of valid products, components and the other stuff
here. Send a mail to with any text, and you will get a list of valid keywords in the reply.
<p>
Some of the values must be choosen from a list:<br>
<ol>
<li>bug_severity: blocker, critical, major, normal, minor, trivial, enhancement</li>
<li>op_sys: Linux </li>
<li>priority: P1, P2, P3, P4, P5</li>
<li>rep_platform: All, i386, AXP, i686, Other</li></ol>
<p>
After you have specified the required keywords and maybe some other value, you may
describe your bug. You dont need a keyword for starting your bug description. All
text which follows the keyword block is handled as long description of the bug.
<p>
The bugmail interface is able to find required information by itself. E.g. if you specify
a product which has exactly one component, this component will be found by the interface
automatically.
<H1>Attachments</H1>
The mail interface is able to cope with MIME-attachments.
People could for example add a logfile as a mail attachment, and it will appear in
bugzilla as attachment. A comment for the attachment should be added, it will describe
the attachment in bugzilla.
<H1><A NAME="examplemail">Example Mail</A></H1>
See the example of the mail <b>body</b> (Dont forget to specify the short description
in the mail subject):<hr><pre>
@product = Bugzilla
@component = general
@version = All
@groupset = ReadWorld ReadPartners
@op_sys = Linux
@priority = P3
@rep_platform = i386
This is the description of the bug I found. It is not neccessary to start
it with a keyword.
Note: The short_description is neccessary and may be given with the keyword
@short_description or will be retrieved from the mail subject.
</pre><hr>
</BODY>
</HTML>

View File

@@ -0,0 +1,30 @@
:0 fhw
| formail -I "From " -a "From "
BUGZILLA_HOME=/home/bugzilla/WEB/bugzilla/contrib
:0
* ^Subject: .*\[Bug .*\]
RESULT=|(cd $BUGZILLA_HOME && ./bugzilla_email_append.pl)
# Feed mail to stdin of bug_email.pl
:0 Ec
#* !^Subject: .*[Bug .*]
RESULT=|(cd $BUGZILLA_HOME && ./bug_email.pl )
# write result to a logfile
:0 c
|echo `date '+%d.%m.%y %H:%M: '` $RESULT >> $HOME/bug_email.log
:0 c
|echo "----------------------------------" >> $HOME/bug_email.log
:0 c
$HOME/bug_email.log
# Move mail to the inbox
:0
$HOME/Mail/INBOX

View File

@@ -0,0 +1,189 @@
#!/usr/bin/perl -w
# -*- Mode: perl; indent-tabs-mode: nil -*-
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
# The purpose of this script is to take an email message, which
# specifies a bugid and append it to the bug as part of the longdesc
# table
# Contributor : Seth M. Landsman <seth@dworkin.net>
# 03/15/00 : Initial version by SML
# 03/15/00 : processmail gets called
# Email subject must be of format :
# .* Bug ### .*
# replying to a typical bugzilla email should be valid
# TODO :
# 1. better way to get the body text (I don't know what dump_entity() is
# actually doing
use diagnostics;
use strict;
use MIME::Parser;
push @INC, "../."; # this script lives in contrib
require "globals.pl";
require "BugzillaEmail.pm";
# Create a new MIME parser:
my $parser = new MIME::Parser;
my $Comment = "";
# Create and set the output directory:
# FIXME: There should be a $BUGZILLA_HOME variable (SML)
(-d "../data/mimedump-tmp") or mkdir "../data/mimedump-tmp",0755 or die "mkdir: $!";
(-w "../data/mimedump-tmp") or die "can't write to directory";
$parser->output_dir("../data/mimedump-tmp");
# Read the MIME message:
my $entity = $parser->read(\*STDIN) or die "couldn't parse MIME stream";
$entity->remove_sig(10); # Removes the signature in the last 10 lines
# Getting values from parsed mail
my $Sender = $entity->get( 'From' );
$Sender ||= $entity->get( 'Reply-To' );
my $Message_ID = $entity->get( 'Message-Id' );
die (" *** Cant find Sender-adress in sent mail ! ***\n" ) unless defined( $Sender );
chomp( $Sender );
chomp( $Message_ID );
print "Dealing with the sender $Sender\n";
ConnectToDatabase();
my $SenderShort = $Sender;
$SenderShort =~ s/^.*?([a-zA-Z0-9_.-]+?\@[a-zA-Z0-9_.-]+\.[a-zA-Z0-9_.-]+).*$/$1/;
$SenderShort = findUser($SenderShort);
print "SenderShort is $SenderShort\n";
if (!defined($SenderShort)) {
$SenderShort = $Sender;
$SenderShort =~ s/^.*?([a-zA-Z0-9_.-]+?\@[a-zA-Z0-9_.-]+\.[a-zA-Z0-9_.-]+).*$/$1/;
}
print "The sendershort is now $SenderShort\n";
if (!defined($SenderShort)) {
DealWithError("No such user $SenderShort exists.");
}
my $Subject = $entity->get('Subject');
print "The subject is $Subject\n";
my ($bugid) = ($Subject =~ /\[Bug ([\d]+)\]/);
print "The bugid is $bugid\n";
# make sure the bug exists
SendSQL("SELECT bug_id FROM bugs WHERE bug_id = $bugid;");
my $found_id = FetchOneColumn();
print "Did we find the bug? $found_id-\n";
if (!defined($found_id)) {
DealWithError("Bug $bugid does not exist");
}
# get the user id
SendSQL("SELECT userid FROM profiles WHERE login_name = \'$SenderShort\';");
my $userid = FetchOneColumn();
if (!defined($userid)) {
DealWithError("Userid not found for $SenderShort");
}
# parse out the text of the message
dump_entity($entity);
# Get rid of the bug id
$Subject =~ s/\[Bug [\d]+\]//;
#my $Comment = "This is only a test ...";
my $Body = "Subject: " . $Subject . "\n" . $Comment;
# shove it in the table
my $long_desc_query = "INSERT INTO longdescs SET bug_id=$found_id, who=$userid, bug_when=NOW(), thetext=" . SqlQuote($Body) . ";";
SendSQL($long_desc_query);
system("cd .. ; ./processmail $found_id '$SenderShort'");
sub DealWithError {
my ($reason) = @_;
print $reason . "\n";
}
# Yanking this wholesale from bug_email, 'cause I know this works. I'll
# figure out what it really does later
#------------------------------
#
# dump_entity ENTITY, NAME
#
# Recursive routine for parsing a mime coded mail.
# One mail may contain more than one mime blocks, which need to be
# handled. Therefore, this function is called recursively.
#
# It gets the for bugzilla important information from the mailbody and
# stores them into the global attachment-list @attachments. The attachment-list
# is needed in storeAttachments.
#
sub dump_entity {
my ($entity, $name) = @_;
defined($name) or $name = "'anonymous'";
my $IO;
# Output the body:
my @parts = $entity->parts;
if (@parts) { # multipart...
my $i;
foreach $i (0 .. $#parts) { # dump each part...
dump_entity($parts[$i], ("$name, part ".(1+$i)));
}
} else { # single part...
# Get MIME type, and display accordingly...
my $msg_part = $entity->head->get( 'Content-Disposition' );
$msg_part ||= "";
my ($type, $subtype) = split('/', $entity->head->mime_type);
my $body = $entity->bodyhandle;
my ($data, $on_disk );
if( $msg_part =~ /^attachment/ ) {
# Attached File
my $des = $entity->head->get('Content-Description');
$des ||= "";
if( defined( $body->path )) { # Data is on disk
$on_disk = 1;
$data = $body->path;
} else { # Data is in core
$on_disk = 0;
$data = $body->as_string;
}
# push ( @attachments, [ $data, $entity->head->mime_type, $on_disk, $des ] );
} else {
# Real Message
if ($type =~ /^(text|message)$/) { # text: display it...
if ($IO = $body->open("r")) {
$Comment .= $_ while (defined($_ = $IO->getline));
$IO->close;
} else { # d'oh!
print "$0: couldn't find/open '$name': $!";
}
} else { print "Oooops - no Body !\n"; }
}
}
}

View File

@@ -0,0 +1,94 @@
#!/bin/sh
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is
# Andreas Franke <afranke@ags.uni-sb.de>.
# Corporation. Portions created by Andreas Franke are
# Copyright (C) 2001 Andreas Franke. All
# Rights Reserved.
#
# Contributor(s):
conf="`dirname $0`/query.conf"
query="http://bugzilla.mozilla.org/buglist.cgi?cmd=doit"
defaultcolumnlist="severity priority platform status resolution target_milestone status_whiteboard keywords summaryfull"
chart=0
and=0
while test "$1" != ""; do
arg=$1
arg_len=`expr length ${arg}`
if test `expr substr "${arg}" 1 2` == "--"; then
eq_pos=`expr match ${arg} '--.*='`
if test "${eq_pos}" == "0"; then
echo 'Missing value for long option '"${arg}"' ("=" not found)' 1>&2
exit 1;
fi
# extract option name
let name_len=${eq_pos}-3
name=`expr substr ${arg} 3 ${name_len}`
# extract option value
let val_start=${eq_pos}+1
let val_len=${arg_len}-${eq_pos}
val=`expr substr ${arg} ${val_start} ${val_len}`
elif test `expr substr ${arg} 1 1` == "-" &&
test "`expr substr ${arg} 2 1`" != ""; then
# extract
name=`expr substr ${arg} 2 1`
let val_len=${arg_len}-2
val=`expr substr ${arg} 3 ${val_len}`
else
name="default"
val="${arg}"
#echo "Unrecognized option ${arg}" 1>&2
#exit 1
fi
# find field and comparison type for option ${name}
field=`grep '"'${name}'"' ${conf} | awk '{printf $1}'`
type=`grep '"'${name}'"' ${conf} | awk '{printf $2}'`
if test "${field}" == "" || test "${type}" == ""; then
echo "Field name & comparison type not found for option ${name}." 1>&2
exit 1;
fi
or=0
while test "${val}" != ""; do
comma_idx=`expr index ${val} ,`
if test ${comma_idx} == "0"; then
val1="${val}"
val=""
else
let val1_len=${comma_idx}-1
val1=`expr substr ${val} 1 ${val1_len}`
val_len=`expr length ${val}`
let rest_start=${comma_idx}+1
let rest_len=${val_len}-${comma_idx}
val=`expr substr ${val} ${rest_start} ${rest_len}`
fi
query="${query}&field${chart}-${and}-${or}=${field}"
query="${query}&type${chart}-${and}-${or}=${type}"
query="${query}&value${chart}-${and}-${or}=${val1}"
#echo "----- ${name} : ${field} : ${type} : ${val1} -----" 1>&2
let or=${or}+1
done
let chart=${chart}+1
shift
done
outputfile="/dev/stdout"
#outputfile="buglist.html"
#\rm -f ${outputfile}
wget -q -O ${outputfile} --header="Cookie: COLUMNLIST=${COLUMNLIST-${defaultcolumnlist}}" "${query}"

View File

@@ -0,0 +1,31 @@
#!/bin/sh
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is
# Andreas Franke <afranke@ags.uni-sb.de>.
# Corporation. Portions created by Andreas Franke are
# Copyright (C) 2001 Andreas Franke. All
# Rights Reserved.
#
# Contributor(s):
buglist="`dirname $0`/buglist"
htmlfile="`dirname $0`/buglist.html"
${buglist} "$@" 2>&1 1>${htmlfile}
if test ${?} == "0"; then
echo `grep 'TR VALIGN=TOP ALIGN=LEFT CLASS=' ${htmlfile} | sed -e 's/<TR.*id=//' | sed -e 's/".*//'` | sed -e 's/ /\,/g'
else
cat ${htmlfile} 1>&2
exit 1
fi

View File

@@ -0,0 +1,49 @@
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is
# Andreas Franke <afranke@ags.uni-sb.de>.
# Corporation. Portions created by Andreas Franke are
# Copyright (C) 2001 Andreas Franke. All
# Rights Reserved.
#
# Contributor(s):
#
# This is `query.conf', the config file for `buglist'.
#
# Columns: 1: field_name, 2: comparison_type, 3: cmd-line options
#
bug_status substring "s","status"
resolution substring "r","resolution"
rep_platform substring "p","platform"
op_sys substring "o","os","opsys"
priority substring "p","priority"
bug_severity substring "S","severity"
assigned_to substring "A","O","owner","assignedto"
reporter substring "R","reporter"
qa_contact substring "Q","qa","qacontact"
cc substring "C","cc"
product substring "product"
version substring "V","version"
component substring "c","component"
target_milestone substring "M","milestone"
short_desc substring "default","summary"
longdesc substring "d","description","longdesc"
bug_file_loc substring "u","url"
status_whiteboard substring "w","whiteboard"
keywords substring "k","K","keywords"
attachments.description substring "attachdesc"
attachments.thedata substring "attachdata"
attachments.mimetype substring "attachmime"
dependson substring # bug 30823
blocked substring # bug 30823

View File

@@ -0,0 +1,40 @@
#!/bin/sh
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Dawn Endico <endico@mozilla.org>
# Keep a record of all cvs updates made from a given directory.
#
# Later, if changes need to be backed out, look at the log file
# and run the cvs command with the date that you want to back
# out to. (Probably the second to last entry).
#DATE=`date +%e/%m/%Y\ %k:%M:%S\ %Z`
DATE=`date`
COMMAND="cvs update -d -P -D"
echo $COMMAND \"$DATE\" >> cvs-update.log
$COMMAND "$DATE"
# sample log file
#cvs update -P -D "11/04/2000 20:22:08 PDT"
#cvs update -P -D "11/05/2000 20:22:22 PDT"
#cvs update -P -D "11/07/2000 20:26:29 PDT"
#cvs update -P -D "11/08/2000 20:27:10 PDT"

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,303 @@
#!/usr/local/bin/python
# -*- mode: python -*-
"""
jb2bz.py - a nonce script to import bugs from JitterBug to Bugzilla
Written by Tom Emerson, tree@basistech.com
This script is provided in the hopes that it will be useful. No
rights reserved. No guarantees expressed or implied. Use at your own
risk. May be dangerous if swallowed. If it doesn't work for you, don't
blame me. It did what I needed it to do.
This code requires a recent version of Andy Dustman's MySQLdb interface,
http://sourceforge.net/projects/mysql-python
Share and enjoy.
"""
import rfc822, mimetools, multifile, mimetypes
import sys, re, glob, StringIO, os, stat, time
import MySQLdb, getopt
# mimetypes doesn't include everything we might encounter, yet.
if not mimetypes.types_map.has_key('.doc'):
mimetypes.types_map['.doc'] = 'application/msword'
if not mimetypes.encodings_map.has_key('.bz2'):
mimetypes.encodings_map['.bz2'] = "bzip2"
bug_status='NEW'
component="default"
version=""
product="" # this is required, the rest of these are defaulted as above
"""
Each bug in JitterBug is stored as a text file named by the bug number.
Additions to the bug are indicated by suffixes to this:
<bug>
<bug>.followup.*
<bug>.reply.*
<bug>.notes
The dates on the files represent the respective dates they were created/added.
All <bug>s and <bug>.reply.*s include RFC 822 mail headers. These could include
MIME file attachments as well that would need to be extracted.
There are other additions to the file names, such as
<bug>.notify
which are ignored.
Bugs in JitterBug are organized into directories. At Basis we used the following
naming conventions:
<product>-bugs Open bugs
<product>-requests Open Feature Requests
<product>-resolved Bugs/Features marked fixed by engineering, but not verified
<product>-verified Resolved defects that have been verified by QA
where <product> is either:
<product-name>
or
<product-name>-<version>
"""
def process_notes_file(current, fname):
try:
new_note = {}
notes = open(fname, "r")
s = os.fstat(notes.fileno())
new_note['text'] = notes.read()
new_note['timestamp'] = time.gmtime(s[stat.ST_MTIME])
notes.close()
current['notes'].append(new_note)
except IOError:
pass
def process_reply_file(current, fname):
new_note = {}
reply = open(fname, "r")
msg = rfc822.Message(reply)
new_note['text'] = "%s\n%s" % (msg['From'], msg.fp.read())
new_note['timestamp'] = rfc822.parsedate_tz(msg['Date'])
current["notes"].append(new_note)
def add_notes(current):
"""Add any notes that have been recorded for the current bug."""
process_notes_file(current, "%d.notes" % current['number'])
for f in glob.glob("%d.reply.*" % current['number']):
process_reply_file(current, f)
for f in glob.glob("%d.followup.*" % current['number']):
process_reply_file(current, f)
def maybe_add_attachment(current, file, submsg):
"""Adds the attachment to the current record"""
cd = submsg["Content-Disposition"]
m = re.search(r'filename="([^"]+)"', cd)
if m == None:
return
attachment_filename = m.group(1)
if (submsg.gettype() == 'application/octet-stream'):
# try get a more specific content-type for this attachment
type, encoding = mimetypes.guess_type(m.group(1))
if type == None:
type = submsg.gettype()
else:
type = submsg.gettype()
try:
data = StringIO.StringIO()
mimetools.decode(file, data, submsg.getencoding())
except:
return
current['attachments'].append( ( attachment_filename, type, data.getvalue() ) )
def process_mime_body(current, file, submsg):
data = StringIO.StringIO()
mimetools.decode(file, data, submsg.getencoding())
current['description'] = data.getvalue()
def process_text_plain(msg, current):
print "Processing: %d" % current['number']
current['description'] = msg.fp.read()
def process_multi_part(file, msg, current):
print "Processing: %d" % current['number']
mf = multifile.MultiFile(file)
mf.push(msg.getparam("boundary"))
while mf.next():
submsg = mimetools.Message(file)
if submsg.has_key("Content-Disposition"):
maybe_add_attachment(current, mf, submsg)
else:
# This is the message body itself (always?), so process
# accordingly
process_mime_body(current, mf, submsg)
def process_jitterbug(filename):
current = {}
current['number'] = int(filename)
current['notes'] = []
current['attachments'] = []
current['description'] = ''
current['date-reported'] = ()
current['short-description'] = ''
file = open(filename, "r")
msg = mimetools.Message(file)
msgtype = msg.gettype()
add_notes(current)
current['date-reported'] = rfc822.parsedate_tz(msg['Date'])
current['short-description'] = msg['Subject']
if msgtype[:5] == 'text/':
process_text_plain(msg, current)
elif msgtype[:10] == "multipart/":
process_multi_part(file, msg, current)
else:
# Huh? This should never happen.
print "Unknown content-type: %s" % msgtype
sys.exit(1)
# At this point we have processed the message: we have all of the notes and
# attachments stored, so it's time to add things to the database.
# The schema for JitterBug 2.14 can be found at:
#
# http://www.trilobyte.net/barnsons/html/dbschema.html
#
# The following fields need to be provided by the user:
#
# bug_status
# product
# version
# reporter
# component
# resolution
# change this to the user_id of the Bugzilla user who is blessed with the
# imported defects
reporter=6
# the resolution will need to be set manually
resolution=""
db = MySQLdb.connect(db='bugs',user='root',host='localhost')
cursor = db.cursor()
cursor.execute( "INSERT INTO bugs SET " \
"bug_id=%s," \
"bug_severity='normal'," \
"bug_status=%s," \
"creation_ts=%s," \
"short_desc=%s," \
"product=%s," \
"rep_platform='All'," \
"assigned_to=%s,"
"reporter=%s," \
"version=%s," \
"component=%s," \
"resolution=%s",
[ current['number'],
bug_status,
time.strftime("%Y-%m-%d %H:%M:%S", current['date-reported'][:9]),
current['short-description'],
product,
reporter,
reporter,
version,
component,
resolution] )
# This is the initial long description associated with the bug report
cursor.execute( "INSERT INTO longdescs VALUES (%s,%s,%s,%s)",
[ current['number'],
reporter,
time.strftime("%Y-%m-%d %H:%M:%S", current['date-reported'][:9]),
current['description'] ] )
# Add whatever notes are associated with this defect
for n in current['notes']:
cursor.execute( "INSERT INTO longdescs VALUES (%s,%s,%s,%s)",
[current['number'],
reporter,
time.strftime("%Y-%m-%d %H:%M:%S", n['timestamp'][:9]),
n['text']])
# add attachments associated with this defect
for a in current['attachments']:
cursor.execute( "INSERT INTO attachments SET " \
"bug_id=%s, creation_ts=%s, description='', mimetype=%s," \
"filename=%s, thedata=%s, submitter_id=%s",
[ current['number'],
time.strftime("%Y-%m-%d %H:%M:%S", current['date-reported'][:9]),
a[1], a[0], a[2], reporter ])
cursor.close()
db.close()
def usage():
print """Usage: jb2bz.py [OPTIONS] Product
Where OPTIONS are one or more of the following:
-h This help information.
-s STATUS One of UNCONFIRMED, NEW, ASSIGNED, REOPENED, RESOLVED, VERIFIED, CLOSED
(default is NEW)
-c COMPONENT The component to attach to each bug as it is important. This should be
valid component for the Product.
-v VERSION Version to assign to these defects.
Product is the Product to assign these defects to.
All of the JitterBugs in the current directory are imported, including replies, notes,
attachments, and similar noise.
"""
sys.exit(1)
def main():
global bug_status, component, version, product
opts, args = getopt.getopt(sys.argv[1:], "hs:c:v:")
for o,a in opts:
if o == "-s":
if a in ('UNCONFIRMED','NEW','ASSIGNED','REOPENED','RESOLVED','VERIFIED','CLOSED'):
bug_status = a
elif o == '-c':
component = a
elif o == '-v':
version = a
elif o == '-h':
usage()
if len(args) != 1:
sys.stderr.write("Must specify the Product.\n")
sys.exit(1)
product = args[0]
for bug in filter(lambda x: re.match(r"\d+$", x), glob.glob("*")):
process_jitterbug(bug)
if __name__ == "__main__":
main()

View File

@@ -0,0 +1,102 @@
#!/usr/bonsaitools/bin/perl -w
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are
# Copyright (C) 2000 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Dan Mosedale <dmose@mozilla.org>
#
# mysqld-watcher.pl - a script that watches the running instance of
# mysqld and kills off any long-running SELECTs against the shadow_db
#
use diagnostics;
use strict;
require "globals.pl";
# some configurables:
# length of time before a thread is eligible to be killed, in seconds
#
my $long_query_time = 600;
#
# the From header for any messages sent out
#
my $mail_from = "root\@lounge.mozilla.org";
#
# mail transfer agent. this should probably really be converted to a Param().
#
my $mta_program = "/usr/lib/sendmail -t -ODeliveryMode=deferred";
# and STDIN is where we get the info about running threads
#
close(STDIN);
open(STDIN, "/usr/bonsaitools/bin/mysqladmin processlist |");
# iterate through the running threads
#
my @LONGEST = (0,0,0,0,0,0,0,0,0);
while ( <STDIN> ) {
my @F = split(/\|/);
# if this line is not the correct number of fields, or if the thread-id
# field contains Id, skip this line. both these cases indicate that this
# line contains pretty-printing gunk and not thread info.
#
next if ( $#F != 9 || $F[1] =~ /Id/);
if ( $F[4] =~ /shadow_bugs/ # shadowbugs database in use
&& $F[5] =~ /Query/ # this is actually a query
&& $F[6] > $long_query_time # this query has taken too long
&& $F[8] =~ /(select|SELECT)/ # only kill a select
&& $F[6] > $LONGEST[6] ) { # the longest running query seen
@LONGEST = @F;
}
}
# send an email message
#
# should perhaps be moved to somewhere more global for use in bugzilla as a
# whole; should also do more error-checking
#
sub sendEmail($$$$) {
($#_ == 3) || die("sendEmail: invalid number of arguments");
my ($from, $to, $subject, $body) = @_;
open(MTA, "|$mta_program");
print MTA "From: $from\n";
print MTA "To: $to\n";
print MTA "Subject: $subject\n";
print MTA "\n";
print MTA $body;
print MTA "\n";
close(MTA);
}
# if we found anything, kill the database thread and send mail about it
#
if ($LONGEST[6] != 0) {
system ("/usr/bonsaitools/bin/mysqladmin", "kill", $LONGEST[1]);
# fire off an email telling the maintainer that we had to kill a thread
#
sendEmail($mail_from, Param("maintainer"),
"long running MySQL thread killed",
join(" ", @LONGEST) . "\n");
}

View File

@@ -0,0 +1,78 @@
#!/bin/sh
# -*- Mode: ksh -*-
##############################################################################
# $Id: yp_nomail.sh,v 1.1 2000-09-12 23:50:31 cyeh%bluemartini.com Exp $
# yp_nomail
#
# Our mail admins got annoyed when bugzilla kept sending email
# to people who'd had bugzilla entries and left the company. They
# were no longer in the list of valid email users so it'd bounce.
# Maintaining the 'data/nomail' file was a pain. Luckily, our UNIX
# admins list all the users that ever were, but the people who've left
# have a distinct marker in their password file. For example:
#
# fired:*LK*:2053:1010:You're Fired Dude:/home/loser:/bin/false
#
# This script takes advantage of the "*LK*" convention seen via
# ypcat passwd and dumps those people into the nomail file. Any
# manual additions are kept in a "nomail.(domainname)" file and
# appended to the list of yp lockouts every night via Cron
#
# 58 23 * * * /export/bugzilla/contrib/yp_nomail.sh > /dev/null 2>&1
#
# Tak ( Mark Takacs ) 08/2000
#
# XXX: Maybe should crosscheck w/bugzilla users?
##############################################################################
####
# Configure this section to suite yer installation
####
DOMAIN=`domainname`
MOZILLA_HOME="/export/mozilla"
BUGZILLA_HOME="${MOZILLA_HOME}/bugzilla"
NOMAIL_DIR="${BUGZILLA_HOME}/data"
NOMAIL="${NOMAIL_DIR}/nomail"
NOMAIL_ETIME="${NOMAIL}.${DOMAIN}"
NOMAIL_YP="${NOMAIL}.yp"
FIRED_FLAG="\*LK\*"
YPCAT="/usr/bin/ypcat"
GREP="/usr/bin/grep"
SORT="/usr/bin/sort"
########################## no more config needed #################
# This dir comes w/Bugzilla. WAY too paranoid
if [ ! -d ${NOMAIL_DIR} ] ; then
echo "Creating $date_dir"
mkdir -p ${NOMAIL_DIR}
fi
#
# Do some (more) paranoid checking
#
touch ${NOMAIL}
if [ ! -w ${NOMAIL} ] ; then
echo "Can't write nomail file: ${NOMAIL} -- exiting"
exit
fi
if [ ! -r ${NOMAIL_ETIME} ] ; then
echo "Can't access custom nomail file: ${NOMAIL_ETIME} -- skipping"
NOMAIL_ETIME=""
fi
#
# add all the people with '*LK*' password to the nomail list
# XXX: maybe I should customize the *LK* string. Doh.
#
LOCKOUT=`$YPCAT passwd | $GREP "${FIRED_FLAG}" | cut -d: -f1 | sort > ${NOMAIL_YP}`
`cat ${NOMAIL_YP} ${NOMAIL_ETIME} > ${NOMAIL}`
exit
# end

View File

@@ -0,0 +1,88 @@
#!/usr/bonsaitools/bin/perl -wT
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Terry Weissman <terry@mozilla.org>
# David Gardiner <david.gardiner@unisa.edu.au>
# Joe Robins <jmrobins@tgix.com>
# Christopher Aillon <christopher@aillon.com>
# Gervase Markham <gerv@gerv.net>
use diagnostics;
use strict;
use lib qw(.);
require "CGI.pl";
require "globals.pl";
# Shut up misguided -w warnings about "used only once":
use vars qw(
%FORM
$template
$vars
);
ConnectToDatabase();
# If we're using LDAP for login, then we can't create a new account here.
if(Param('useLDAP')) {
DisplayError("This site is using LDAP for authentication. Please contact
an LDAP administrator to get a new account created.",
"Can't create LDAP accounts");
PutFooter();
exit;
}
# Clear out the login cookies. Make people log in again if they create an
# account; otherwise, they'll probably get confused.
my $cookiepath = Param("cookiepath");
print "Set-Cookie: Bugzilla_login= ; path=$cookiepath; expires=Sun, 30-Jun-80 00:00:00 GMT
Set-Cookie: Bugzilla_logincookie= ; path=$cookiepath; expires=Sun, 30-Jun-80 00:00:00 GMT\n";
print "Content-Type: text/html\n\n";
my $login = $::FORM{'login'};
my $realname = trim($::FORM{'realname'});
if (defined($login)) {
# We've been asked to create an account.
CheckEmailSyntax($login);
trick_taint($login);
$vars->{'login'} = $login;
if (!ValidateNewUser($login)) {
# Account already exists
$template->process("account/exists.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
exit;
}
# Create account
my $password = InsertNewUser($login, $realname);
MailPassword($login, $password);
$template->process("account/created.html.tmpl", $vars)
|| ThrowTemplateError($template->error());
exit;
}
# Show the standard "would you like to create an account?" form.
$template->process("account/create.html.tmpl", $vars)
|| ThrowTemplateError($template->error());

View File

@@ -0,0 +1,38 @@
/* The contents of this file are subject to the Mozilla Public
* License Version 1.1 (the "License"); you may not use this file
* except in compliance with the License. You may obtain a copy of
* the License at http://www.mozilla.org/MPL/
*
* Software distributed under the License is distributed on an "AS
* IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
* implied. See the License for the specific language governing
* rights and limitations under the License.
*
* The Original Code is the Bugzilla Bug Tracking System.
*
* The Initial Developer of the Original Code is Netscape Communications
* Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s): Myk Melez <myk@mozilla.org>
*/
/* Right align bug IDs. */
.bz_id_column { text-align: right; }
/* Style bug rows according to severity. */
.bz_blocker { color: red; font-weight: bold; }
.bz_critical { color: red; }
.bz_enhancement { font-style: italic; }
/* Style secure bugs if the installation is not using bug groups.
* Installations that *are* using bug groups are likely to be using
* them for almost all bugs, in which case special styling is not
* informative and generally a nuisance.
*/
.bz_secure { color: black; background-color: lightgrey; }
/* Align columns in the "change multiple bugs" form to the right. */
table#form tr th { text-align: right; }

View File

@@ -0,0 +1,37 @@
body
{
font-family: sans-serif;
font-size: 10pt;
background-color: white;
}
ul
{
padding-left: 12px;
}
radio
{
-moz-user-select: ignore;
}
.text-link
{
margin-left: 3px;
}
.text-link:hover
{
text-decoration: underline;
cursor: pointer;
}
.descriptive-content
{
color: #AAAAAA;
}
.descriptive-content[focused=true]
{
color: black;
}

View File

@@ -0,0 +1,601 @@
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Terry Weissman <terry@mozilla.org>
# Dawn Endico <endico@mozilla.org>
# Dan Mosedale <dmose@mozilla.org>
# Joe Robins <jmrobins@tgix.com>
# Jake <jake@acutex.net>
#
# This file defines all the parameters that we have a GUI to edit within
# Bugzilla.
# ATTENTION!!!! THIS FILE ONLY CONTAINS THE DEFAULTS.
# You cannot change your live settings by editing this file.
# Only adding new parameters is done here. Once the parameter exists, you
# must use %baseurl%/editparams.cgi from the web to edit the settings.
use diagnostics;
use strict;
# Shut up misguided -w warnings about "used only once". For some reason,
# "use vars" chokes on me when I try it here.
sub defparams_pl_sillyness {
my $zz;
$zz = %::param_checker;
$zz = %::param_desc;
$zz = %::param_type;
}
sub WriteParams {
foreach my $i (@::param_list) {
if (!defined $::param{$i}) {
$::param{$i} = $::param_default{$i};
if (!defined $::param{$i}) {
die "No default parameter ever specified for $i";
}
}
}
my $tmpname = "data/params.$$";
open(FID, ">$tmpname") || die "Can't create $tmpname";
my $v = $::param{'version'};
delete $::param{'version'}; # Don't write the version number out to
# the params file.
print FID GenerateCode('%::param');
$::param{'version'} = $v;
print FID "1;\n";
close FID;
rename $tmpname, "data/params" || die "Can't rename $tmpname to data/params";
ChmodDataFile('data/params', 0666);
}
sub DefParam {
my ($id, $desc, $type, $default, $checker) = (@_);
push @::param_list, $id;
$::param_desc{$id} = $desc;
$::param_type{$id} = $type;
$::param_default{$id} = $default;
if (defined $checker) {
$::param_checker{$id} = $checker;
}
}
sub check_numeric {
my ($value) = (@_);
if ($value !~ /^[0-9]+$/) {
return "must be a numeric value";
}
return "";
}
sub check_shadowdb {
my ($value) = (@_);
$value = trim($value);
if ($value eq "") {
return "";
}
SendSQL("SHOW DATABASES");
while (MoreSQLData()) {
my $n = FetchOneColumn();
if (lc($n) eq lc($value)) {
return "The $n database already exists. If that's really the name you want to use for the backup, please CAREFULLY make the existing database go away somehow, and then try again.";
}
}
SendSQL("CREATE DATABASE $value");
SendSQL("INSERT INTO shadowlog (command) VALUES ('SYNCUP')", 1);
return "";
}
@::param_list = ();
# OK, here are the definitions themselves.
#
# The type of parameters (the third parameter to DefParam) can be one
# of the following:
#
# t -- A short text entry field (suitable for a single line)
# l -- A long text field (suitable for many lines)
# b -- A boolean value (either 1 or 0)
DefParam("maintainer",
"The email address of the person who maintains this installation of Bugzilla.",
"t",
'THE MAINTAINER HAS NOT YET BEEN SET');
DefParam("urlbase",
"The URL that is the common initial leading part of all Bugzilla URLs.",
"t",
"http://cvs-mirror.mozilla.org/webtools/bugzilla/",
\&check_urlbase);
sub check_urlbase {
my ($url) = (@_);
if ($url !~ m:^http.*/$:) {
return "must be a legal URL, that starts with http and ends with a slash.";
}
return "";
}
DefParam("cookiepath",
"Directory path under your document root that holds your Bugzilla installation. Make sure to begin with a /.",
"t",
"/");
DefParam("usequip",
"If this is on, Bugzilla displays a silly quip at the beginning of buglists, and lets users add to the list of quips.",
"b",
1);
# Added parameter - JMR, 2/16/00
DefParam("usebuggroups",
"If this is on, Bugzilla will associate a bug group with each product in the database, and use it for querying bugs.",
"b",
0);
# Added parameter - JMR, 2/16/00
DefParam("usebuggroupsentry",
"If this is on, Bugzilla will use product bug groups to restrict who can enter bugs. Requires usebuggroups to be on as well.",
"b",
0);
DefParam("shadowdb",
"If non-empty, then this is the name of another database in which Bugzilla will keep a shadow read-only copy of everything. This is done so that long slow read-only operations can be used against this db, and not lock up things for everyone else. Turning on this parameter will create the given database; be careful not to use the name of an existing database with useful data in it!",
"t",
"",
\&check_shadowdb);
DefParam("queryagainstshadowdb",
"If this is on, and the shadowdb is set, then queries will happen against the shadow database.",
"b",
0);
# Adding in four parameters for LDAP authentication. -JMR, 7/28/00
DefParam("useLDAP",
"Turn this on to use an LDAP directory for user authentication ".
"instead of the Bugzilla database. (User profiles will still be ".
"stored in the database, and will match against the LDAP user by ".
"email address.)",
"b",
0);
DefParam("LDAPserver",
"The name (and optionally port) of your LDAP server. (e.g. ldap.company.com, or ldap.company.com:portnum)",
"t",
"");
DefParam("LDAPBaseDN",
"The BaseDN for authenticating users against. (e.g. \"ou=People,o=Company\")",
"t",
"");
DefParam("LDAPmailattribute",
"The name of the attribute of a user in your directory that ".
"contains the email address.",
"t",
"mail");
#End of LDAP parameters
DefParam("mostfreqthreshold",
"The minimum number of duplicates a bug needs to show up on the <A HREF=\"duplicates.cgi\">most frequently reported bugs page</a>. If you have a large database and this page takes a long time to load, try increasing this number.",
"t",
"2");
DefParam("mybugstemplate",
"This is the URL to use to bring up a simple 'all of my bugs' list for a user. %userid% will get replaced with the login name of a user.",
"t",
"buglist.cgi?bug_status=NEW&amp;bug_status=ASSIGNED&amp;bug_status=REOPENED&amp;email1=%userid%&amp;emailtype1=exact&amp;emailassigned_to1=1&amp;emailreporter1=1");
DefParam("shutdownhtml",
"If this field is non-empty, then Bugzilla will be completely disabled and this text will be displayed instead of all the Bugzilla pages.",
"l",
"");
DefParam("sendmailnow",
"If this is on, Bugzilla will tell sendmail to send any e-mail immediately. If you have a large number of users with a large amount of e-mail traffic, enabling this option may dramatically slow down Bugzilla. Best used for smaller installations of Bugzilla.",
"b",
0);
DefParam("passwordmail",
q{The email that gets sent to people to tell them their password. Within
this text, %mailaddress% gets replaced by the person's email address,
%login% gets replaced by the person's login (usually the same thing), and
%password% gets replaced by their password. %<i>anythingelse</i>% gets
replaced by the definition of that parameter (as defined on this page).},
"l",
q{From: bugzilla-daemon
To: %mailaddress%
Subject: Your Bugzilla password.
To use the wonders of Bugzilla, you can use the following:
E-mail address: %login%
Password: %password%
To change your password, go to:
%urlbase%userprefs.cgi
});
DefParam("newchangedmail",
q{The email that gets sent to people when a bug changes. Within this
text, %to% gets replaced with the e-mail address of the person recieving
the mail. %bugid% gets replaced by the bug number. %diffs% gets
replaced with what's changed. %neworchanged% is "New:" if this mail is
reporting a new bug or empty if changes were made to an existing one.
%summary% gets replaced by the summary of this bug. %reasonsheader%
is replaced by an abbreviated list of reasons why the user is getting the email,
suitable for use in an email header (such as X-Bugzilla-Reason).
%reasonsbody% is replaced by text that explains why the user is getting the email
in more user friendly text than %reasonsheader%.
%<i>anythingelse</i>% gets replaced by the definition of
that parameter (as defined on this
page).},
"l",
"From: bugzilla-daemon
To: %to%
Subject: [Bug %bugid%] %neworchanged%%summary%
X-Bugzilla-Reason: %reasonsheader%
%urlbase%show_bug.cgi?id=%bugid%
%diffs%
%reasonsbody%");
DefParam("whinedays",
"The number of days that we'll let a bug sit untouched in a NEW state before our cronjob will whine at the owner.",
"t",
7,
\&check_numeric);
DefParam("whinemail",
"The email that gets sent to anyone who has a NEW bug that hasn't been touched for more than <b>whinedays</b>. Within this text, %email% gets replaced by the offender's email address. %userid% gets replaced by the offender's bugzilla login (which, in most installations, is the same as the email address.) %<i>anythingelse</i>% gets replaced by the definition of that parameter (as defined on this page).<p> It is a good idea to make sure this message has a valid From: address, so that if the mail bounces, a real person can know that there are bugs assigned to an invalid address.",
"l",
q{From: %maintainer%
To: %email%
Subject: Your Bugzilla buglist needs attention.
[This e-mail has been automatically generated.]
You have one or more bugs assigned to you in the Bugzilla
bugsystem (%urlbase%) that require
attention.
All of these bugs are in the NEW state, and have not been touched
in %whinedays% days or more. You need to take a look at them, and
decide on an initial action.
Generally, this means one of three things:
(1) You decide this bug is really quick to deal with (like, it's INVALID),
and so you get rid of it immediately.
(2) You decide the bug doesn't belong to you, and you reassign it to someone
else. (Hint: if you don't know who to reassign it to, make sure that
the Component field seems reasonable, and then use the "Reassign bug to
owner of selected component" option.)
(3) You decide the bug belongs to you, but you can't solve it this moment.
Just use the "Accept bug" command.
To get a list of all NEW bugs, you can use this URL (bookmark it if you like!):
%urlbase%buglist.cgi?bug_status=NEW&assigned_to=%userid%
Or, you can use the general query page, at
%urlbase%query.cgi.
Appended below are the individual URLs to get to all of your NEW bugs that
haven't been touched for a week or more.
You will get this message once a day until you've dealt with these bugs!
});
DefParam("defaultquery",
"This is the default query that initially comes up when you submit a bug. It's in URL parameter format, which makes it hard to read. Sorry!",
"t",
"bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&emailassigned_to1=1&emailassigned_to2=1&emailreporter2=1&emailcc2=1&emailqa_contact2=1&order=%22Importance%22");
DefParam("letsubmitterchoosepriority",
"If this is on, then people submitting bugs can choose an initial priority for that bug. If off, then all bugs initially have the default priority selected below.",
"b",
1);
sub check_priority {
my ($value) = (@_);
GetVersionTable();
if (lsearch(\@::legal_priority, $value) < 0) {
return "Must be a legal priority value: one of " .
join(", ", @::legal_priority);
}
return "";
}
DefParam("defaultpriority",
"This is the priority that newly entered bugs are set to.",
"t",
"P2",
\&check_priority);
DefParam("usetargetmilestone",
"Do you wish to use the Target Milestone field?",
"b",
0);
DefParam("nummilestones",
"If using Target Milestone, how many milestones do you wish to
appear?",
"t",
10,
\&check_numeric);
DefParam("curmilestone",
"If using Target Milestone, Which milestone are we working toward right now?",
"t",
1,
\&check_numeric);
DefParam("musthavemilestoneonaccept",
"If you are using Target Milestone, do you want to require that the milestone be set in order for a user to ACCEPT a bug?",
"b",
0);
DefParam("useqacontact",
"Do you wish to use the QA Contact field?",
"b",
0);
DefParam("usestatuswhiteboard",
"Do you wish to use the Status Whiteboard field?",
"b",
0);
DefParam("usebrowserinfo",
"Do you want bug reports to be assigned an OS & Platform based on the browser
the user makes the report from?",
"b",
1);
DefParam("usedependencies",
"Do you wish to use dependencies (allowing you to mark which bugs depend on which other ones)?",
"b",
1);
DefParam("webdotbase",
"It is possible to show graphs of dependent bugs. You may set this parameter to
any of the following:
<ul>
<li>A complete file path to \'dot\' (part of <a
href=\"http://www.graphviz.org\">GraphViz</a>) will generate the graphs
locally.</li>
<li>A URL prefix pointing to an installation of the <a
href=\"http://www.research.att.com/~north/cgi-bin/webdot.cgi\">webdot
package</a> will generate the graphs remotely.</li>
<li>A blank value will disable dependency graphing.</li>
</ul>
The default value is a publically-accessible webdot server.",
"t",
"http://www.research.att.com/~north/cgi-bin/webdot.cgi/%urlbase%",
\&check_webdotbase);
sub check_webdotbase {
my ($value) = (@_);
$value = trim($value);
if ($value eq "") {
return "";
}
if($value !~ /^https?:/) {
if(! -x $value) {
return "The file path \"$value\" is not a valid executable. Please specify the complete file path to 'dot' if you intend to generate graphs locally.";
}
# Check .htaccess allows access to generated images
if(-e "data/webdot/.htaccess") {
open HTACCESS, "data/webdot/.htaccess";
if(! grep(/png/,<HTACCESS>)) {
print "Dependency graph images are not accessible.\nDelete data/webdot/.htaccess and re-run checksetup.pl to rectify.\n";
}
close HTACCESS;
}
}
return "";
}
DefParam("expectbigqueries",
"If this is on, then we will tell mysql to <tt>set option SQL_BIG_TABLES=1</tt> before doing queries on bugs. This will be a little slower, but one will not get the error <tt>The table ### is full</tt> for big queries that require a big temporary table.",
"b",
0);
DefParam("emailregexp",
'This defines the regexp to use for legal email addresses. The default tries to match fully qualified email addresses. Another popular value to put here is <tt>^[^@]+$</tt>, which means "local usernames, no @ allowed."',
"t",
q:^[^@]+@[^@]+\\.[^@]+$:);
DefParam("emailregexpdesc",
"This describes in english words what kinds of legal addresses are allowed by the <tt>emailregexp</tt> param.",
"l",
"A legal address must contain exactly one '\@', and at least one '.' after the \@.");
DefParam("emailsuffix",
"This is a string to append to any email addresses when actually sending mail to that address. It is useful if you have changed the <tt>emailregexp</tt> param to only allow local usernames, but you want the mail to be delivered to username\@my.local.hostname.",
"t",
"");
DefParam("voteremovedmail",
q{This is a mail message to send to anyone who gets a vote removed from a bug for any reason. %to% gets replaced by the person who used to be voting for this bug. %bugid% gets replaced by the bug number. %reason% gets replaced by a short reason describing why the vote(s) were removed. %votesremoved%, %votesold% and %votesnew% is the number of votes removed, before and after respectively. %votesremovedtext%, %votesoldtext% and %votesnewtext% are these as sentences, eg "You had 2 votes on this bug." %count% is also supported for backwards compatibility. %<i>anythingelse</i>% gets replaced by the definition of that parameter (as defined on this page).},
"l",
"From: bugzilla-daemon
To: %to%
Subject: [Bug %bugid%] Some or all of your votes have been removed.
Some or all of your votes have been removed from bug %bugid%.
%votesoldtext%
%votesnewtext%
Reason: %reason%
%urlbase%show_bug.cgi?id=%bugid%
");
DefParam("allowbugdeletion",
q{The pages to edit products and components and versions can delete all associated bugs when you delete a product (or component or version). Since that is a pretty scary idea, you have to turn on this option before any such deletions will ever happen.},
"b",
0);
DefParam("allowemailchange",
q{Users can change their own email address through the preferences. Note that the change is validated by emailing both addresses, so switching this option on will not let users use an invalid address.},
"b",
0);
DefParam("allowuserdeletion",
q{The pages to edit users can also let you delete a user. But there is no code that goes and cleans up any references to that user in other tables, so such deletions are kinda scary. So, you have to turn on this option before any such deletions will ever happen.},
"b",
0);
DefParam("browserbugmessage",
"If bugzilla gets unexpected data from the browser, in addition to displaying the cause of the problem, it will output this HTML as well.",
"l",
"this may indicate a bug in your browser.\n");
#
# Parameters to force users to comment their changes for different actions.
DefParam("commentonaccept",
"If this option is on, the user needs to enter a short comment if he accepts the bug",
"b", 0 );
DefParam("commentonclearresolution",
"If this option is on, the user needs to enter a short comment if the bugs resolution is cleared",
"b", 0 );
DefParam("commentonconfirm",
"If this option is on, the user needs to enter a short comment when confirming a bug",
"b", 0 );
DefParam("commentonresolve",
"If this option is on, the user needs to enter a short comment if the bug is resolved",
"b", 0 );
DefParam("commentonreassign",
"If this option is on, the user needs to enter a short comment if the bug is reassigned",
"b", 0 );
DefParam("commentonreassignbycomponent",
"If this option is on, the user needs to enter a short comment if the bug is reassigned by component",
"b", 0 );
DefParam("commentonreopen",
"If this option is on, the user needs to enter a short comment if the bug is reopened",
"b", 0 );
DefParam("commentonverify",
"If this option is on, the user needs to enter a short comment if the bug is verified",
"b", 0 );
DefParam("commentonclose",
"If this option is on, the user needs to enter a short comment if the bug is closed",
"b", 0 );
DefParam("commentonduplicate",
"If this option is on, the user needs to enter a short comment if the bug is marked as duplicate",
"b", 0 );
DefParam("supportwatchers",
"Support one user watching (ie getting copies of all related email" .
" about) another's bugs. Useful for people going on vacation, and" .
" QA folks watching particular developers' bugs",
"b", 0 );
DefParam("move-enabled",
"If this is on, Bugzilla will allow certain people to move bugs to the defined database.",
"b",
0);
DefParam("move-button-text",
"The text written on the Move button. Explain where the bug is being moved to.",
"t",
'Move To Bugscape');
DefParam("move-to-url",
"The URL of the database we allow some of our bugs to be moved to.",
"t",
'');
DefParam("move-to-address",
"To move bugs, an email is sent to the target database. This is the email address that database
uses to listen for incoming bugs.",
"t",
'bugzilla-import');
DefParam("moved-from-address",
"To move bugs, an email is sent to the target database. This is the email address from which
this mail, and error messages are sent.",
"t",
'bugzilla-admin');
DefParam("movers",
"A list of people with permission to move bugs and reopen moved bugs (in case the move operation fails).",
"t",
'');
DefParam("moved-default-product",
"Bugs moved from other databases to here are assigned to this product.",
"t",
'');
DefParam("moved-default-component",
"Bugs moved from other databases to here are assigned to this component.",
"t",
'');
# The maximum size (in bytes) for patches and non-patch attachments.
# The default limit is 1000KB, which is 24KB less than mysql's default
# maximum packet size (which determines how much data can be sent in a
# single mysql packet and thus how much data can be inserted into the
# database) to provide breathing space for the data in other fields of
# the attachment record as well as any mysql packet overhead (I don't
# know of any, but I suspect there may be some.)
DefParam("maxpatchsize",
"The maximum size (in kilobytes) of patches. Bugzilla will not
accept patches greater than this number of kilobytes in size.
To accept patches of any size (subject to the limitations of
your server software), set this value to zero." ,
"t",
'1000');
DefParam("maxattachmentsize" ,
"The maximum size (in kilobytes) of non-patch attachments. Bugzilla
will not accept attachments greater than this number of kilobytes
in size. To accept attachments of any size (subject to the
limitations of your server software), set this value to zero." ,
"t" ,
'1000');
1;

View File

@@ -0,0 +1,128 @@
#!/usr/bonsaitools/bin/perl -wT
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Netscape Communications
# Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Terry Weissman <terry@mozilla.org>
# Bradley Baetz <bbaetz@student.usyd.edu.au>
use vars qw(
%FORM
$userid
);
use diagnostics;
use strict;
use lib qw(.);
require "CGI.pl";
ConnectToDatabase();
GetVersionTable();
if (!defined $::FORM{'product'}) {
# Reference to a subset of %::proddesc, which the user is allowed to see
my %products;
if (Param("usebuggroups")) {
# OK, now only add products the user can see
confirm_login();
foreach my $p (@::legal_product) {
if (!GroupExists($p) || UserInGroup($p)) {
$products{$p} = $::proddesc{$p};
}
}
}
else {
%products = %::proddesc;
}
my $prodsize = scalar(keys %products);
if ($prodsize == 0) {
DisplayError("Either no products have been defined ".
"or you have not been given access to any.\n");
exit;
}
elsif ($prodsize > 1) {
$::vars->{'proddesc'} = \%products;
$::vars->{'target'} = "describecomponents.cgi";
$::vars->{'title'} = "Bugzilla component description";
$::vars->{'h2'} =
"Please specify the product whose components you want described.";
print "Content-type: text/html\n\n";
$::template->process("global/choose-product.html.tmpl", $::vars)
|| ThrowTemplateError($::template->error());
exit;
}
$::FORM{'product'} = (keys %::proddesc)[0];
}
my $product = $::FORM{'product'};
# Make sure the user specified a valid product name. Note that
# if the user specifies a valid product name but is not authorized
# to access that product, they will receive a different error message
# which could enable people guessing product names to determine
# whether or not certain products exist in Bugzilla, even if they
# cannot get any other information about that product.
grep($product eq $_ , @::legal_product)
|| DisplayError("The product name is invalid.")
&& exit;
# Make sure the user is authorized to access this product.
if (Param("usebuggroups") && GroupExists($product) && !$::userid) {
confirm_login();
UserInGroup($product)
|| DisplayError("You are not authorized to access that product.")
&& exit;
}
######################################################################
# End Data/Security Validation
######################################################################
my @components;
SendSQL("SELECT value, initialowner, initialqacontact, description FROM " .
"components WHERE program = " . SqlQuote($product) . " ORDER BY " .
"value");
while (MoreSQLData()) {
my ($name, $initialowner, $initialqacontact, $description) =
FetchSQLData();
my %component;
$component{'name'} = $name;
$component{'initialowner'} = $initialowner ?
DBID_to_name($initialowner) : '';
$component{'initialqacontact'} = $initialqacontact ?
DBID_to_name($initialqacontact) : '';
$component{'description'} = $description;
push @components, \%component;
}
$::vars->{'product'} = $product;
$::vars->{'components'} = \@components;
print "Content-type: text/html\n\n";
$::template->process("reports/components.html.tmpl", $::vars)
|| ThrowTemplateError($::template->error());

View File

@@ -0,0 +1,58 @@
#!/usr/bonsaitools/bin/perl -wT
# -*- Mode: perl; indent-tabs-mode: nil -*-
#
# The contents of this file are subject to the Mozilla Public
# License Version 1.1 (the "License"); you may not use this file
# except in compliance with the License. You may obtain a copy of
# the License at http://www.mozilla.org/MPL/
#
# Software distributed under the License is distributed on an "AS
# IS" basis, WITHOUT WARRANTY OF ANY KIND, either express or
# implied. See the License for the specific language governing
# rights and limitations under the License.
#
# The Original Code is the Bugzilla Bug Tracking System.
#
# The Initial Developer of the Original Code is Terry Weissman.
# Portions created by Terry Weissman are
# Copyright (C) 2000 Terry Weissman. All
# Rights Reserved.
#
# Contributor(s): Terry Weissman <terry@mozilla.org>
# Contributor(s): Gervase Markham <gerv@gerv.net>
use diagnostics;
use strict;
use lib ".";
require "CGI.pl";
# Use the global template variables.
use vars qw($vars $template);
ConnectToDatabase();
quietly_check_login();
SendSQL("SELECT keyworddefs.name, keyworddefs.description,
COUNT(keywords.bug_id)
FROM keyworddefs LEFT JOIN keywords ON keyworddefs.id=keywords.keywordid
GROUP BY keyworddefs.id, keyworddefs.name, keyworddefs.description, keywords.bug_id
ORDER BY keyworddefs.name");
my @keywords;
while (MoreSQLData()) {
my ($name, $description, $bugs) = FetchSQLData();
push (@keywords, { name => $name,
description => $description,
bugcount => $bugs });
}
$vars->{'keywords'} = \@keywords;
$vars->{'caneditkeywords'} = UserInGroup("editkeywords");
print "Content-type: text/html\n\n";
$template->process("reports/keywords.html.tmpl", $vars)
|| ThrowTemplateError($template->error());

View File

@@ -0,0 +1,149 @@
Welcome to the Bugzilla documentation project!
You'll find these directories and files here:
README.docs # This README file
html/ # The compiled HTML docs from SGML sources (do not edit)
sgml/ # The original SGML doc sources (edit these)
txt/ # The compiled text docs from SGML sources
ps/ # The compiled PostScript docs from SGML sources
pdf/ # The compiled Adobe PDF docs from SGML sources
A note about SGML:
The documentation is written in DocBook 3.1/4.1 SGML, and attempts to adhere
to the LinuxDoc standards everywhere applicable (http://www.linuxdoc.org).
Please consult "The LDP Author Guide" at linuxdoc.org for details on how
to set up your personal environment for compiling SGML files.
If you need to make corrections to typographical errors, or other minor
editing duties, feel free to use any text editor to make the changes. SGML
is not rocket science -- simply make sure your text appears between
appropriate tags (like <para>This is a paragraph</para>) and we'll be fine.
If you are making more extensive changes, please ensure you at least validate
your SGML before checking it in with something like:
nsgmls -s Bugzilla-Guide.sgml
When you validate, please validate the master document (Bugzilla-Guide.sgml)
as well as the document you edited to ensure there are no critical errors.
The following errors are considered "normal" when validating with nsgmls:
DTDDECL catalog entries are not supported
"DOCTYPE" declaration not allowed in instance
The reason these occur is that free sgml validators do not yet support
the DTDDECL catalog entries, and I've included DOCTYPE declarations in
entities referenced from Bugzilla-Guide.sgml so these entities can compile
individually, if necessary. I suppose I ought to comment them out at some
point, but for now they are convenient and don't hurt anything.
Thanks for taking the time to read these notes and consulting the
documentation. Please address comments and questions to the newsgroup:
news://news.mozilla.org/netscape/public/mozilla/webtools .
==========
HOW TO SET UP YOUR OWN SGML EDITING ENVIRONMENT:
==========
Trying to set up an SGML/XML Docbook editing environment the
first time can be a daunting task.
I use Linux-Mandrake, in part, because it has a fully-functional
SGML/XML Docbook editing environment included as part of the
distribution CD's. If you have easier instructions for how to
do this for a particular Linux distribution or platform, please
let the team know at the mailing list: mozilla-webtools@mozilla.org.
The following text is taken nearly verbatim from
http://bugzilla.mozilla.org/show_bug.cgi?id=95970, where I gave
these instructions to someone who wanted the greater manageability
maintaining a document in Docbook brings:
This is just off the top of my head, but here goes. Note some of these may
NOT be necessary, but I don't think they hurt anything by being installed.
rpms:
openjade
jadetex
docbook-dtds
docbook-style-dsssl
docbook-style-dsssl-doc
docbook-utils
xemacs
psgml
sgml-tools
sgml-common
If you're getting these from RedHat, make sure you get the ones in the
rawhide area. The ones in the 7.2 distribution are too old and don't
include the XML stuff.
Download "ldp.dsl" from the Resources page on linuxdoc.org. This is the
stylesheet I use to get the HTML and text output. It works well, and has a
nice, consistent look with the rest of the linuxdoc documents. You'll have to
adjust the paths in ldp.dsl at the top of the file to reflect the actual
locations of your docbook catalog files. I created a directory,
/usr/share/sgml/docbook/ldp, and put the ldp.dsl file there. I then edited
ldp.dsl and changed two lines near the top:
<!ENTITY docbook.dsl SYSTEM "../dsssl-stylesheets/html/docbook.dsl" CDATA
dsssl>
...and...
<!ENTITY docbook.dsl SYSTEM "../dsssl-stylesheets/print/docbook.dsl" CDATA
dsssl>
Note the difference is the top one points to the HTML docbook stylesheet,
and the next one points to the PRINT docbook stylesheet.
You know, this sure looks awful involved. Anyway, once you have this in
place, add to your .bashrc:
export SGML_CATALOG_FILES=/etc/sgml/catalog
export LDP_HOME=/usr/share/sgml/docbook/ldp
export JADE_PUB=/usr/share/doc/openjade-1.3.1/pubtext
or in .tcshrc:
setenv SGML_CATALOG_FILES /etc/sgml/catalog
setenv LDP_HOME /usr/share/sgml/docbook/ldp
setenv JADE_PUB /usr/share/doc/openjade-1.3.1/pubtext
If you have root access and want to set this up for anyone on your box,
you can add those lines to /etc/profile for bash users and /etc/csh.login
for tcsh users.
Make sure you edit the paths in the above environment variables if those
folders are anywhere else on your system (for example, the openjade version
might change if you get a new version at some point).
I suggest xemacs for editing your SGML/XML Docbook documents. The darn
thing just works, and generally includes PSGML mode by default. Not to
mention you can validate the SGML from right within it without having to
remember the command-line syntax for nsgml (not that it's that hard
anyway). If not, you can download psgml at
http://www.sourceforge.net/projects/psgml.
==========
NOTES:
==========
Here are the commands I use to maintain this documentation.
You MUST have DocBook 4.1.2 set up correctly in order for this to work.
To create HTML documentation:
bash$ cd html
bash$ jade -t sgml -i html -d $LDP_HOME/ldp.dsl\#html \
$JADE_PUB/xml.dcl ../sgml/Bugzilla-Guide.sgml
To create HTML documentation as a single big HTML file:
bash$ cd html
bash$ jade -V nochunks -t sgml -i html -d $LDP_HOME/ldp.dsl\#html \
$JADE_PUB/xml.dcl ../sgml/Bugzilla-Guide.sgml >Bugzilla-Guide.html
To create TXT documentation as a single big TXT file:
bash$ cd txt
bash$ lynx -dump -nolist ../html/Bugzilla-Guide.html >Bugzilla-Guide.txt
Sincerely,
Matthew P. Barnson
The Bugzilla "Doc Knight"
mbarnson@sisna.com
with major edits by Dave Miller <justdave@syndicomm.com> based on
experience setting this up on the Landfill test server.

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,178 @@
<HTML
><HEAD
><TITLE
>About This Guide</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="NEXT"
TITLE="Purpose and Scope of this Guide"
HREF="aboutthisguide.html"></HEAD
><BODY
CLASS="chapter"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="index.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="aboutthisguide.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="chapter"
><H1
><A
NAME="about">Chapter 1. About This Guide</H1
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
>1.1. <A
HREF="aboutthisguide.html"
>Purpose and Scope of this Guide</A
></DT
><DT
>1.2. <A
HREF="copyright.html"
>Copyright Information</A
></DT
><DT
>1.3. <A
HREF="disclaimer.html"
>Disclaimer</A
></DT
><DT
>1.4. <A
HREF="newversions.html"
>New Versions</A
></DT
><DT
>1.5. <A
HREF="credits.html"
>Credits</A
></DT
><DT
>1.6. <A
HREF="translations.html"
>Translations</A
></DT
><DT
>1.7. <A
HREF="conventions.html"
>Document Conventions</A
></DT
></DL
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="aboutthisguide.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>The Bugzilla Guide</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Purpose and Scope of this Guide</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@@ -0,0 +1,184 @@
<HTML
><HEAD
><TITLE
>Purpose and Scope of this Guide</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="About This Guide"
HREF="about.html"><LINK
REL="PREVIOUS"
TITLE="About This Guide"
HREF="about.html"><LINK
REL="NEXT"
TITLE="Copyright Information"
HREF="copyright.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="about.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 1. About This Guide</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="copyright.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="aboutthisguide">1.1. Purpose and Scope of this Guide</H1
><P
>&#13; Bugzilla is simply the best piece of bug-tracking software the
world has ever seen. This document is intended to be the
comprehensive guide to the installation, administration,
maintenance, and use of the Bugzilla bug-tracking system.
</P
><P
>&#13; This release of the Bugzilla Guide is the
<EM
>2.16</EM
> release. It is so named that it
may match the current version of Bugzilla. The numbering
tradition stems from that used for many free software projects,
in which <EM
>even-numbered</EM
> point releases (1.2,
1.14, etc.) are considered "stable releases", intended for
public consumption; on the other hand,
<EM
>odd-numbered</EM
> point releases (1.3, 2.09,
etc.) are considered unstable <EM
>development</EM
>
releases intended for advanced users, systems administrators,
developers, and those who enjoy a lot of pain.
</P
><P
>&#13; Newer revisions of the Bugzilla Guide follow the numbering
conventions of the main-tree Bugzilla releases, available at
<A
HREF="http://www.bugzilla.org/"
TARGET="_top"
>http://www.bugzilla.org/</A
>. Intermediate releases will have
a minor revision number following a period. The current version
of Bugzilla, as of this writing (April 2nd, 2002) is 2.16; if
something were seriously wrong with that edition of the Guide,
subsequent releases would receive an additional dotted-decimal
digit to indicate the update (2.16.1, 2.16.2, etc.).
Got it? Good.
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="copyright.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>About This Guide</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Copyright Information</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@@ -0,0 +1,233 @@
<HTML
><HEAD
><TITLE
>Administering Bugzilla</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Win32 Installation Notes"
HREF="win32.html"><LINK
REL="NEXT"
TITLE="Post-Installation Checklist"
HREF="postinstall-check.html"></HEAD
><BODY
CLASS="chapter"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="win32.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="postinstall-check.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="chapter"
><H1
><A
NAME="administration">Chapter 4. Administering Bugzilla</H1
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
>4.1. <A
HREF="postinstall-check.html"
>Post-Installation Checklist</A
></DT
><DT
>4.2. <A
HREF="useradmin.html"
>User Administration</A
></DT
><DD
><DL
><DT
>4.2.1. <A
HREF="useradmin.html#defaultuser"
>Creating the Default User</A
></DT
><DT
>4.2.2. <A
HREF="useradmin.html#manageusers"
>Managing Other Users</A
></DT
></DL
></DD
><DT
>4.3. <A
HREF="programadmin.html"
>Product, Component, Milestone, and Version
Administration</A
></DT
><DD
><DL
><DT
>4.3.1. <A
HREF="programadmin.html#products"
>Products</A
></DT
><DT
>4.3.2. <A
HREF="programadmin.html#components"
>Components</A
></DT
><DT
>4.3.3. <A
HREF="programadmin.html#versions"
>Versions</A
></DT
><DT
>4.3.4. <A
HREF="programadmin.html#milestones"
>Milestones</A
></DT
><DT
>4.3.5. <A
HREF="programadmin.html#voting"
>Voting</A
></DT
><DT
>4.3.6. <A
HREF="programadmin.html#groups"
>Groups and Group Security</A
></DT
></DL
></DD
><DT
>4.4. <A
HREF="security.html"
>Bugzilla Security</A
></DT
></DL
></DIV
><FONT
COLOR="RED"
>&#13; Or, I just got this cool thing installed. Now what the heck do I
do with it?
</FONT
><P
>&#13; So you followed <SPAN
CLASS="QUOTE"
>"<A
HREF="installation.html"
>Bugzilla Installation</A
>"</SPAN
> to the
letter, and logged into Bugzilla for the very first time with your
super-duper god account. You sit, contentedly staring at the
Bugzilla Query Screen, the worst of the whole mad business of
installing this terrific program behind you. It seems, though, you
have nothing yet to query! Your first act of business should be to
setup the operating parameters for Bugzilla so you can get busy
getting data into your bug tracker.
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="win32.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="postinstall-check.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Win32 Installation Notes</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Post-Installation Checklist</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@@ -0,0 +1,160 @@
<HTML
><HEAD
><TITLE
>Bonsai</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="Integrating Bugzilla with Third-Party Tools"
HREF="integration.html"><LINK
REL="PREVIOUS"
TITLE="Integrating Bugzilla with Third-Party Tools"
HREF="integration.html"><LINK
REL="NEXT"
TITLE="CVS"
HREF="cvs.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="integration.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 5. Integrating Bugzilla with Third-Party Tools</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="cvs.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="bonsai">5.1. Bonsai</H1
><P
>Bonsai is a web-based tool for managing <A
HREF="cvs.html"
>CVS, the Concurrent Versioning System</A
>
. Using Bonsai, administrators can control open/closed status
of trees, query a fast relational database back-end for change,
branch, and comment information, and view changes made since the
last time the tree was closed. These kinds of changes cause the
engineer responsible to be <SPAN
CLASS="QUOTE"
>"on the hook"</SPAN
> (include
cool URL link here for Hook policies at mozilla.org). Bonsai
also includes gateways to <A
HREF="tinderbox.html"
>Tinderbox, the Mozilla automated build management system</A
> and Bugzilla </P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="integration.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="cvs.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Integrating Bugzilla with Third-Party Tools</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="integration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>CVS</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@@ -0,0 +1,149 @@
<HTML
><HEAD
><TITLE
>BSD Installation Notes</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="Installation"
HREF="installation.html"><LINK
REL="PREVIOUS"
TITLE="Mac OS X Installation Notes"
HREF="osx.html"><LINK
REL="NEXT"
TITLE="Installation General Notes"
HREF="geninstall.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="osx.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 3. Installation</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="geninstall.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="bsdinstall">3.4. BSD Installation Notes</H1
><P
>&#13; For instructions on how to set up Bugzilla on FreeBSD, NetBSD, OpenBSD, BSDi, etc. please
consult <A
HREF="osx.html"
>Section 3.3</A
>.
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="osx.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="geninstall.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Mac OS X Installation Notes</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="installation.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Installation General Notes</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@@ -0,0 +1,492 @@
<HTML
><HEAD
><TITLE
>Hacking Bugzilla</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="Useful Patches and Utilities for Bugzilla"
HREF="patches.html"><LINK
REL="PREVIOUS"
TITLE="The Quicksearch Utility"
HREF="quicksearch.html"><LINK
REL="NEXT"
TITLE="GNU Free Documentation License"
HREF="gfdl.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="quicksearch.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Appendix D. Useful Patches and Utilities for Bugzilla</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="gfdl.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="bzhacking">D.5. Hacking Bugzilla</H1
><P
>&#13; The following is a guide for reviewers when checking code into Bugzilla's
CVS repostory at mozilla.org. If you wish to submit patches to Bugzilla,
you should follow the rules and style conventions below. Any code that
does not adhere to these basic rules will not be added to Bugzilla's
codebase.
</P
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN2436">D.5.1. Things that have caused problems and should be avoided</H2
><P
></P
><OL
TYPE="1"
><LI
><P
>&#13; Usage of variables in Regular Expressions
</P
><P
>&#13; It is very important that you don't use a variable in a regular
expression unless that variable is supposed to contain an expression.
This especially applies when using grep. You should use:
</P
><P
>&#13; <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;grep ($_ eq $value, @array);
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13; -- NOT THIS --
</P
><P
>&#13; <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;grep (/$value/, @array);
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13; If you need to use a non-expression variable inside of an expression, be
sure to quote it properly (using <TT
CLASS="function"
>\Q..\E</TT
>).
</P
></TD
></TR
></TABLE
></DIV
></LI
></OL
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN2450">D.5.2. Coding Style for Bugzilla</H2
><P
>&#13; While it's true that not all of the code currently in Bugzilla adheres to
this (or any) styleguide, it is something that is being worked toward. Therefore,
we ask that all new code (submitted patches and new files) follow this guide
as closely as possible (if you're only changing 1 or 2 lines, you don't have
to reformat the entire file :).
</P
><P
>&#13; The Bugzilla development team has decided to adopt the perl style guide as
published by Larry Wall. This giude can be found in <SPAN
CLASS="QUOTE"
>"Programming
Perl"</SPAN
> (the camel book) or by typing <B
CLASS="command"
>man perlstyle</B
> at
your favorite shell prompt.
</P
><P
>&#13; What appears below if a brief summary, please refer to the perl style
guide if you don't see your question covered here. It is much better to submit
a patch which fails these criteria than no patch at all, but please try to meet
these minimum standards when submitting code to Bugzilla.
</P
><P
></P
><UL
><LI
><P
>&#13; Whitespace
</P
><P
>&#13; Bugzilla's preferred indentation is 4 spaces (no tabs, please).
</P
></LI
><LI
><P
>&#13; Curly braces.
</P
><P
>&#13; The opening brace of a block should be on the same line as the statement
that is causing the block and the closing brace should be at the same
indentation level as that statement, for example:
</P
><P
>&#13; <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;if ($var) {
print "The variable is true";
}
else {
print "Try again";
}
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
><P
>&#13; -- NOT THIS --
</P
><P
>&#13; <TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
>&#13;if ($var)
{
print "The variable is true";
}
else
{
print "Try again";
}
</PRE
></FONT
></TD
></TR
></TABLE
>
</P
></LI
><LI
><P
>&#13; Cookies
</P
><P
>&#13; Bugzilla uses cookies to ease the user experience, but no new patches
should <EM
>require</EM
> user-side cookies.
</P
></LI
><LI
><P
>&#13; File Names
</P
><P
>&#13; File names for bugzilla code and support documention should be legal across
multiple platforms. <TT
CLASS="computeroutput"
>\ / : * ? " &#60; &#62;</TT
>
and <TT
CLASS="computeroutput"
>|</TT
> are all illegal characters for filenames
on various platforms. Also, file names should not have spaces in them as they
can cause confusion in CVS and other mozilla.org utilities.
</P
></LI
><LI
><P
>&#13; Javascript dependencies
</P
><P
>&#13; While Bugzilla uses Javascript to make the user experience easier, no patch
to Bugzilla should <EM
>require</EM
> Javascript.
</P
></LI
><LI
><P
>&#13; Patch Format
</P
><P
>&#13; All patches submitted for inclusion into Bugzilla should be in the form of a
<SPAN
CLASS="QUOTE"
>"unified diff"</SPAN
>. This comes from using <SPAN
CLASS="QUOTE"
>"diff -u"</SPAN
>
instead of simply <SPAN
CLASS="QUOTE"
>"diff"</SPAN
> when creating your patch. This will
result in quicker acceptance of the patch.
</P
></LI
><LI
><P
>&#13; Schema Changes
</P
><P
>&#13; If you make schema changes, you should modify <TT
CLASS="filename"
>sanitycheck.cgi</TT
>
to support the new schema. All referential columns should be checked.
</P
></LI
><LI
><P
>&#13; Taint Mode
</P
><P
>&#13; All new cgis must run in Taint mode (Perl taint and DBI taint), and existing cgi's
which run in taint mode must not have taint mode turned off.
</P
></LI
><LI
><P
>&#13; Templatization
</P
><P
>&#13; Patches to Bugzilla need to support templates so they do not force user interface choices
on Bugzilla administrators.
</P
></LI
><LI
><P
>&#13; Variable Names
</P
><P
>&#13; If a variable is scoped globally (<TT
CLASS="computeroutput"
>$::variable</TT
>)
its name should be descriptive of what it contains. Local variables can be named
a bit looser, provided the context makes their content obvious. For example,
<TT
CLASS="computeroutput"
>$ret</TT
> could be used as a staging variable for a
routine's return value as the line <TT
CLASS="computeroutput"
>return $ret;</TT
>
will make it blatantly obvious what the variable holds and most likely be shown
on the same screen as <TT
CLASS="computeroutput"
>my $ret = "";</TT
>.
</P
></LI
><LI
><P
>&#13; Cross Database Compatability
</P
><P
>&#13; Bugzilla was originally written to work with MySQL and therefore took advantage
of some of its features that aren't contained in other RDBMS software. These
should be avoided in all new code. Examples of these features are enums and
<TT
CLASS="function"
>encrypt()</TT
>.
</P
></LI
><LI
><P
>&#13; Cross Platform Compatability
</P
><P
>&#13; While Bugzilla was written to be used on Unix based systems (and Unix/Linux is
still the only officially supported platform) there are many who desire/need to
run Bugzilla on Microsoft Windows boxes. Whenever possible, we should strive
not to make the lives of these people any more complicated and avoid doing things
that break Bugzilla's ability to run on multiple operating systems.
</P
></LI
></UL
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="quicksearch.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="gfdl.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>The Quicksearch Utility</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="patches.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>GNU Free Documentation License</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@@ -0,0 +1,269 @@
<HTML
><HEAD
><TITLE
>Command-line Bugzilla Queries</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="Useful Patches and Utilities for Bugzilla"
HREF="patches.html"><LINK
REL="PREVIOUS"
TITLE="The setperl.csh Utility"
HREF="setperl.html"><LINK
REL="NEXT"
TITLE="The Quicksearch Utility"
HREF="quicksearch.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="setperl.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Appendix D. Useful Patches and Utilities for Bugzilla</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="quicksearch.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="cmdline">D.3. Command-line Bugzilla Queries</H1
><P
>&#13; Users can query Bugzilla from the command line using this suite
of utilities.
</P
><P
>&#13; The query.conf file contains the mapping from options to field
names and comparison types. Quoted option names are "grepped"
for, so it should be easy to edit this file. Comments (#) have
no effect; you must make sure these lines do not contain any
quoted "option"
</P
><P
>&#13; buglist is a shell script which submits a Bugzilla query and
writes the resulting HTML page to stdout. It supports both
short options, (such as "-Afoo" or "-Rbar") and long options
(such as "--assignedto=foo" or "--reporter=bar"). If the first
character of an option is not "-", it is treated as if it were
prefixed with "--default=".
</P
><P
>&#13; The columlist is taken from the COLUMNLIST environment variable.
This is equivalent to the "Change Columns" option when you list
bugs in buglist.cgi. If you have already used Bugzilla, use
<B
CLASS="command"
>grep COLUMLIST ~/.netscape/cookies</B
> to see
your current COLUMNLIST setting.
</P
><P
>&#13; bugs is a simple shell script which calls buglist and extracts
the bug numbers from the output. Adding the prefix
"http://bugzilla.mozilla.org/buglist.cgi?bug_id=" turns the bug
list into a working link if any bugs are found. Counting bugs is
easy. Pipe the results through <B
CLASS="command"
>sed -e 's/,/ /g' | wc |
awk '{printf $2 "\n"}'</B
>
</P
><P
>&#13; Akkana says she has good results piping buglist output through
<B
CLASS="command"
>w3m -T text/html -dump</B
>
</P
><DIV
CLASS="procedure"
><OL
TYPE="1"
><LI
><P
>&#13; Download three files:
</P
><OL
CLASS="SUBSTEPS"
TYPE="a"
><LI
><P
>&#13; <TT
CLASS="computeroutput"
> <TT
CLASS="prompt"
>bash$</TT
> <B
CLASS="command"
>wget -O
query.conf
'http://bugzilla.mozilla.org/showattachment.cgi?attach_id=26157'</B
> </TT
>
</P
></LI
><LI
><P
>&#13; <TT
CLASS="computeroutput"
> <TT
CLASS="prompt"
>bash$</TT
> <B
CLASS="command"
>wget -O
buglist
'http://bugzilla.mozilla.org/showattachment.cgi?attach_id=26944'</B
> </TT
>
</P
></LI
><LI
><P
>&#13; <TT
CLASS="computeroutput"
> <TT
CLASS="prompt"
>bash#</TT
> <B
CLASS="command"
>wget -O
bugs
'http://bugzilla.mozilla.org/showattachment.cgi?attach_id=26215'</B
> </TT
>
</P
></LI
></OL
></LI
><LI
><P
>&#13; Make your utilities executable:
<TT
CLASS="computeroutput"
>&#13; <TT
CLASS="prompt"
>bash$</TT
>
<B
CLASS="command"
>chmod u+x buglist bugs</B
>
</TT
>
</P
></LI
></OL
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="setperl.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="quicksearch.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>The setperl.csh Utility</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="patches.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>The Quicksearch Utility</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@@ -0,0 +1,150 @@
<HTML
><HEAD
><TITLE
>Contributors</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="About This Guide"
HREF="about.html"><LINK
REL="PREVIOUS"
TITLE="Credits"
HREF="credits.html"><LINK
REL="NEXT"
TITLE="Feedback"
HREF="feedback.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="credits.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 1. About This Guide</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="feedback.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="contributors">1.6. Contributors</H1
><P
>&#13; Thanks go to these people for significant contributions to this
documentation (in no particular order):
</P
><P
>&#13; Andrew Pearson, Spencer Smith, Eric Hanson, Kevin Brannen, Ron
Teitelbaum, Jacob Steenhagen, Joe Robins
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="credits.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="feedback.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Credits</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Feedback</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@@ -0,0 +1,462 @@
<HTML
><HEAD
><TITLE
>Document Conventions</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="About This Guide"
HREF="about.html"><LINK
REL="PREVIOUS"
TITLE="Translations"
HREF="translations.html"><LINK
REL="NEXT"
TITLE="Using Bugzilla"
HREF="using.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="translations.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 1. About This Guide</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="using.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="conventions">1.7. Document Conventions</H1
><P
>&#13; This document uses the following conventions
</P
><DIV
CLASS="informaltable"
><A
NAME="AEN91"><P
></P
><TABLE
BORDER="0"
CLASS="CALSTABLE"
><THEAD
><TR
><TH
ALIGN="LEFT"
VALIGN="MIDDLE"
>Descriptions</TH
><TH
ALIGN="LEFT"
VALIGN="MIDDLE"
>Appearance</TH
></TR
></THEAD
><TBODY
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>Warnings</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
><DIV
CLASS="caution"
><P
></P
><TABLE
CLASS="caution"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/caution.gif"
HSPACE="5"
ALT="Caution"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Don't run with scissors!</P
></TD
></TR
></TABLE
></DIV
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>Hint</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
><DIV
CLASS="tip"
><P
></P
><TABLE
CLASS="tip"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/tip.gif"
HSPACE="5"
ALT="Tip"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Warm jar lids under the hot tap to loosen them.</P
></TD
></TR
></TABLE
></DIV
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>Notes</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Dear John...</P
></TD
></TR
></TABLE
></DIV
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>Information requiring special attention</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
><DIV
CLASS="warning"
><P
></P
><TABLE
CLASS="warning"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/warning.gif"
HSPACE="5"
ALT="Warning"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>Read this or the cat gets it.</P
></TD
></TR
></TABLE
></DIV
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>File Names</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
><TT
CLASS="filename"
>file.extension</TT
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>Directory Names</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
><TT
CLASS="filename"
>directory</TT
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>Commands to be typed</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
><B
CLASS="command"
>command</B
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>Applications Names</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
><SPAN
CLASS="application"
>application</SPAN
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
><I
CLASS="foreignphrase"
>Prompt</I
> of users command under bash shell</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>bash$</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
><I
CLASS="foreignphrase"
>Prompt</I
> of root users command under bash shell</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>bash#</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
><I
CLASS="foreignphrase"
>Prompt</I
> of user command under tcsh shell</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>tcsh$</TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>Environment Variables</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
><TT
CLASS="envar"
>VARIABLE</TT
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>Emphasized word</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
><EM
>word</EM
></TD
></TR
><TR
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
>Code Example</TD
><TD
ALIGN="LEFT"
VALIGN="MIDDLE"
><TABLE
BORDER="0"
BGCOLOR="#E0E0E0"
WIDTH="100%"
><TR
><TD
><FONT
COLOR="#000000"
><PRE
CLASS="programlisting"
><TT
CLASS="sgmltag"
>&#60;para&#62;</TT
>Beginning and end of paragraph<TT
CLASS="sgmltag"
>&#60;/para&#62;</TT
></PRE
></FONT
></TD
></TR
></TABLE
></TD
></TR
></TBODY
></TABLE
><P
></P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="translations.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="using.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Translations</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Using Bugzilla</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@@ -0,0 +1,191 @@
<HTML
><HEAD
><TITLE
>Copyright Information</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="About This Guide"
HREF="about.html"><LINK
REL="PREVIOUS"
TITLE="Purpose and Scope of this Guide"
HREF="aboutthisguide.html"><LINK
REL="NEXT"
TITLE="Disclaimer"
HREF="disclaimer.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="aboutthisguide.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 1. About This Guide</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="disclaimer.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="copyright">1.2. Copyright Information</H1
><A
NAME="AEN39"><TABLE
BORDER="0"
WIDTH="100%"
CELLSPACING="0"
CELLPADDING="0"
CLASS="BLOCKQUOTE"
><TR
><TD
WIDTH="10%"
VALIGN="TOP"
>&nbsp;</TD
><TD
WIDTH="80%"
VALIGN="TOP"
><P
>&#13; Permission is granted to copy, distribute and/or modify this
document under the terms of the GNU Free Documentation
License, Version 1.1 or any later version published by the
Free Software Foundation; with no Invariant Sections, no
Front-Cover Texts, and with no Back-Cover Texts. A copy of
the license is included in the section entitled "GNU Free
Documentation License".
</P
></TD
><TD
WIDTH="10%"
VALIGN="TOP"
>&nbsp;</TD
></TR
><TR
><TD
COLSPAN="2"
ALIGN="RIGHT"
VALIGN="TOP"
>--<SPAN
CLASS="attribution"
>Copyright (c) 2000-2002 Matthew P. Barnson and The Bugzilla Team</SPAN
></TD
><TD
WIDTH="10%"
>&nbsp;</TD
></TR
></TABLE
><P
>&#13; If you have any questions regarding this document, its
copyright, or publishing this document in non-electronic form,
please contact The Bugzilla Team.
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="aboutthisguide.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="disclaimer.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Purpose and Scope of this Guide</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Disclaimer</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@@ -0,0 +1,208 @@
<HTML
><HEAD
><TITLE
>Credits</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="About This Guide"
HREF="about.html"><LINK
REL="PREVIOUS"
TITLE="New Versions"
HREF="newversions.html"><LINK
REL="NEXT"
TITLE="Translations"
HREF="translations.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="newversions.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 1. About This Guide</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="translations.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="credits">1.5. Credits</H1
><P
>&#13; The people listed below have made enormous contributions to the
creation of this Guide, through their dedicated hacking efforts,
numerous e-mail and IRC support sessions, and overall excellent
contribution to the Bugzilla community:
</P
><P
>&#13; <A
HREF="mailto://mbarnson@sisna.com"
TARGET="_top"
>Matthew P. Barnson</A
>
for pulling together the Bugzilla Guide and shepherding it to 2.14.
</P
><P
>&#13; <A
HREF="mailto://terry@mozilla.org"
TARGET="_top"
>Terry Weissman</A
>
for initially writing Bugzilla and creating the
README upon which the UNIX installation documentation is largely based.
</P
><P
>&#13; <A
HREF="mailto://tara@tequilarista.org"
TARGET="_top"
>Tara
Hernandez</A
> for keeping Bugzilla development going
strong after Terry left Mozilla.org
</P
><P
>&#13; <A
HREF="mailto://dkl@redhat.com"
TARGET="_top"
>Dave Lawrence</A
> for
providing insight into the key differences between Red Hat's
customized Bugzilla, and being largely responsible for the "Red
Hat Bugzilla" appendix
</P
><P
>&#13; <A
HREF="mailto://endico@mozilla.org"
TARGET="_top"
>Dawn Endico</A
> for
being a hacker extraordinaire and putting up with my incessant
questions and arguments on irc.mozilla.org in #mozwebtools
</P
><P
>&#13; Last but not least, all the members of the <A
HREF="news://news.mozilla.org/netscape/public/mozilla/webtools"
TARGET="_top"
> netscape.public.mozilla.webtools</A
> newsgroup. Without your discussions, insight, suggestions, and patches, this could never have happened.
</P
><P
>&#13; Thanks also go to the following people for significant contributions
to this documentation (in no particular order):
</P
><P
>&#13; Zach Liption, Andrew Pearson, Spencer Smith, Eric Hanson, Kevin Brannen,
Ron Teitelbaum, Jacob Steenhagen, Joe Robins.
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="newversions.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="translations.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>New Versions</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="about.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Translations</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@@ -0,0 +1,306 @@
<HTML
><HEAD
><TITLE
>Template Customisation</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="Administering Bugzilla"
HREF="administration.html"><LINK
REL="PREVIOUS"
TITLE="Bugzilla Security"
HREF="security.html"><LINK
REL="NEXT"
TITLE="Integrating Bugzilla with Third-Party Tools"
HREF="integration.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="security.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 5. Administering Bugzilla</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="integration.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="cust-templates">5.7. Template Customisation</H1
><P
>&#13; One of the large changes for 2.16 was the templatisation of the
entire user-facing UI, using the
<A
HREF="http://www.template-toolkit.org"
TARGET="_top"
>Template Toolkit</A
>.
Administrators can now configure the look and feel of Bugzilla without
having to edit Perl files or face the nightmare of massive merge
conflicts when they upgrade to a newer version in the future.
</P
><P
>&#13; Templatisation also makes localised versions of Bugzilla possible,
for the first time. In the future, a Bugzilla installation may
have templates installed for multiple localisations, and select
which ones to use based on the user's browser language setting.
</P
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN1611">5.7.1. What to Edit</H2
><P
>&#13; There are several ways to take advantage of Bugzilla's templates,
and which you use depends on what you want to do. The Bugzilla
template directory structure is that there's a top level directory,
<TT
CLASS="filename"
>template</TT
>, which contains a directory for
each installed localisation. The default English templates are
therefore in <TT
CLASS="filename"
>en</TT
>. Underneath that, there
are two directories - <TT
CLASS="filename"
>default</TT
> and
<TT
CLASS="filename"
>custom</TT
>. The <TT
CLASS="filename"
>default</TT
>
directory contains all the templates shipped with Bugzilla.
</P
><P
>&#13; One method of making customisations is to directly edit the templates
in <TT
CLASS="filename"
>template/en/default</TT
>. This is probably the
best method for small changes, because if you then execute a
<B
CLASS="command"
>cvs update</B
>, any template fixes will get
automagically merged into your modified versions.
</P
><P
>&#13; The other method is to copy the templates into
<TT
CLASS="filename"
>template/en/custom</TT
>. This method is better if
you are going to make major changes, because it is guaranteed that
the contents of this directory will not be touched during an upgrade,
and you can then decide whether to continue using your own templates,
or make the effort to merge your changes into the new versions by
hand.
</P
><P
>&#13; The syntax of the Template Toolkit language is beyond the scope of
this guide. It's reasonably easy to pick up by looking at the current
templates; or, you can read the manual, available on the
<A
HREF="http://www.template-toolkit.org"
TARGET="_top"
>Template Toolkit home
page </A
>.
</P
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN1626">5.7.2. Particular Templates</H2
><P
>&#13; There are a few templates you may be particularly interested in
customising for your installation.
</P
><P
>&#13; <B
CLASS="command"
>global/header.html.tmpl</B
> and
<B
CLASS="command"
>global/footer.html.tmpl</B
>:
These define the header and footer that go on all Bugzilla pages.
Editing these is a way to quickly get a distinctive look and
feel for your Bugzilla installation.
</P
></DIV
><DIV
CLASS="section"
><H2
CLASS="section"
><A
NAME="AEN1632">5.7.3. Template Formats</H2
><P
>&#13; Some CGIs have the ability to use more than one template. For
example, buglist.cgi can output bug lists as RDF or two
different forms of HTML (complex and simple). (Try this out
by appending <TT
CLASS="filename"
>&#38;format=simple</TT
> to a buglist.cgi
URL on your Bugzilla installation.) This
mechanism, called template 'formats', is extensible.
</P
><P
>&#13; To see if a CGI supports multiple output formats, grep the
CGI for "ValidateOutputFormat". If it's not present, adding
multiple format support isn't too hard - see how it's done in
other CGIs.
</P
><P
>&#13; To make a new format template for a CGI which supports this,
open a current template for
that CGI and take note of the INTERFACE comment (if present.) This
comment defines what variables are passed into this template. If
there isn't one, I'm afraid you'll have to read the template and
the code to find out what information you get.
</P
><P
>&#13; Write your template in whatever markup or text style is appropriate.
</P
><P
>&#13; You now need to decide what content type you want your template
served as. Open up the localconfig file and find the $contenttypes
variable. If your content type is not there, add it. Remember
the three- or four-letter tag assigned to you content type.
This tag will be part of the template filename.
</P
><P
>&#13; Save the template as <TT
CLASS="filename"
>&#60;stubname&#62;-&#60;formatname&#62;.&#60;contenttypetag&#62;.tmpl</TT
>.
Try out the template by calling the CGI as
<TT
CLASS="filename"
>&#60;cginame&#62;.cgi?format=&#60;formatname&#62;</TT
> .
</P
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="security.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="integration.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Bugzilla Security</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="administration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Integrating Bugzilla with Third-Party Tools</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@@ -0,0 +1,174 @@
<HTML
><HEAD
><TITLE
>CVS</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="UP"
TITLE="Integrating Bugzilla with Third-Party Tools"
HREF="integration.html"><LINK
REL="PREVIOUS"
TITLE="Bonsai"
HREF="bonsai.html"><LINK
REL="NEXT"
TITLE="Perforce SCM"
HREF="scm.html"></HEAD
><BODY
CLASS="section"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="bonsai.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
>Chapter 5. Integrating Bugzilla with Third-Party Tools</TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="scm.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="section"
><H1
CLASS="section"
><A
NAME="cvs">5.2. CVS</H1
><P
>CVS integration is best accomplished, at this point, using
the Bugzilla Email Gateway. There have been some files
submitted to allow greater CVS integration, but we need to make
certain that Bugzilla is not tied into one particular software
management package.</P
><P
>&#13; Follow the instructions in the FAQ for enabling Bugzilla e-mail
integration. Ensure that your check-in script sends an email to
your Bugzilla e-mail gateway with the subject of <SPAN
CLASS="QUOTE"
>"[Bug
XXXX]"</SPAN
>, and you can have CVS check-in comments append
to your Bugzilla bug. If you have your check-in script include
an @resolution field, you can even change the Bugzilla bug
state.
</P
><P
>&#13; There is also a project, based upon somewhat dated Bugzilla
code, to integrate CVS and Bugzilla through CVS' ability to
email. Check it out at:
<A
HREF="http://homepages.kcbbs.gen.nz/~tonyg/"
TARGET="_top"
>&#13; http://homepages.kcbbs.gen.nz/~tonyg/</A
>, under the
<SPAN
CLASS="QUOTE"
>"cvszilla"</SPAN
> link.
</P
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="bonsai.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="scm.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Bonsai</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="integration.html"
ACCESSKEY="U"
>Up</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Perforce SCM</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

View File

@@ -0,0 +1,185 @@
<HTML
><HEAD
><TITLE
>The Bugzilla Database</TITLE
><META
NAME="GENERATOR"
CONTENT="Modular DocBook HTML Stylesheet Version 1.76b+
"><LINK
REL="HOME"
TITLE="The Bugzilla Guide"
HREF="index.html"><LINK
REL="PREVIOUS"
TITLE="Software Download Links"
HREF="downloadlinks.html"><LINK
REL="NEXT"
TITLE="Database Schema Chart"
HREF="dbschema.html"></HEAD
><BODY
CLASS="appendix"
BGCOLOR="#FFFFFF"
TEXT="#000000"
LINK="#0000FF"
VLINK="#840084"
ALINK="#0000FF"
><DIV
CLASS="NAVHEADER"
><TABLE
SUMMARY="Header navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TH
COLSPAN="3"
ALIGN="center"
>The Bugzilla Guide</TH
></TR
><TR
><TD
WIDTH="10%"
ALIGN="left"
VALIGN="bottom"
><A
HREF="downloadlinks.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="80%"
ALIGN="center"
VALIGN="bottom"
></TD
><TD
WIDTH="10%"
ALIGN="right"
VALIGN="bottom"
><A
HREF="dbschema.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
></TABLE
><HR
ALIGN="LEFT"
WIDTH="100%"></DIV
><DIV
CLASS="appendix"
><H1
><A
NAME="database">Appendix C. The Bugzilla Database</H1
><DIV
CLASS="TOC"
><DL
><DT
><B
>Table of Contents</B
></DT
><DT
>C.1. <A
HREF="dbschema.html"
>Database Schema Chart</A
></DT
><DT
>C.2. <A
HREF="dbdoc.html"
>MySQL Bugzilla Database Introduction</A
></DT
><DT
>C.3. <A
HREF="granttables.html"
>MySQL Permissions &#38; Grant Tables</A
></DT
></DL
></DIV
><DIV
CLASS="note"
><P
></P
><TABLE
CLASS="note"
WIDTH="100%"
BORDER="0"
><TR
><TD
WIDTH="25"
ALIGN="CENTER"
VALIGN="TOP"
><IMG
SRC="../images/note.gif"
HSPACE="5"
ALT="Note"></TD
><TD
ALIGN="LEFT"
VALIGN="TOP"
><P
>&#13; This document really needs to be updated with more fleshed out information about primary keys, interrelationships, and maybe some nifty tables to document dependencies. Any takers?
</P
></TD
></TR
></TABLE
></DIV
></DIV
><DIV
CLASS="NAVFOOTER"
><HR
ALIGN="LEFT"
WIDTH="100%"><TABLE
SUMMARY="Footer navigation table"
WIDTH="100%"
BORDER="0"
CELLPADDING="0"
CELLSPACING="0"
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
><A
HREF="downloadlinks.html"
ACCESSKEY="P"
>Prev</A
></TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
><A
HREF="index.html"
ACCESSKEY="H"
>Home</A
></TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
><A
HREF="dbschema.html"
ACCESSKEY="N"
>Next</A
></TD
></TR
><TR
><TD
WIDTH="33%"
ALIGN="left"
VALIGN="top"
>Software Download Links</TD
><TD
WIDTH="34%"
ALIGN="center"
VALIGN="top"
>&nbsp;</TD
><TD
WIDTH="33%"
ALIGN="right"
VALIGN="top"
>Database Schema Chart</TD
></TR
></TABLE
></DIV
></BODY
></HTML
>

Some files were not shown because too many files have changed in this diff Show More