Compare commits

..

464 Commits

Author SHA1 Message Date
cltbld%netscape.com
1b212f0cce Updating to pull from release tag. ycalonje checking in as cltbld
git-svn-id: svn://10.0.0.236/branches/NETSCAPE_6_2_2_RELEASE_MINI_BRANCH@117075 18797224-902f-48f8-a5cc-f745e15eee43
2002-03-21 19:14:28 +00:00
(no author)
18bee1681b This commit was manufactured by cvs2svn to create branch
'NETSCAPE_6_2_2_RELEASE_MINI_BRANCH'.

git-svn-id: svn://10.0.0.236/branches/NETSCAPE_6_2_2_RELEASE_MINI_BRANCH@116003 18797224-902f-48f8-a5cc-f745e15eee43
2002-03-06 23:47:56 +00:00
cltbld%netscape.com
1a52900772 updating to use tag NETSCAPE_6_2_2_BRANCH, kysmith checking in as cltbld
git-svn-id: svn://10.0.0.236/branches/NETSCAPE_6_2_2_BRANCH@116002 18797224-902f-48f8-a5cc-f745e15eee43
2002-03-06 23:47:55 +00:00
(no author)
5b52392817 This commit was manufactured by cvs2svn to create branch
'NETSCAPE_6_2_2_BRANCH'.

git-svn-id: svn://10.0.0.236/branches/NETSCAPE_6_2_2_BRANCH@114929 18797224-902f-48f8-a5cc-f745e15eee43
2002-02-19 12:28:22 +00:00
syd%netscape.com
0581a1f59d Checkin fix for 89436 on NETSCAPE_6_2_1_BRANCH for a respin. a=adt
git-svn-id: svn://10.0.0.236/branches/NETSCAPE_6_2_1_BRANCH@112425 18797224-902f-48f8-a5cc-f745e15eee43
2002-01-18 09:11:46 +00:00
alecf%netscape.com
fefa0b8482 final part of fix for bug 102043 sr=blake
git-svn-id: svn://10.0.0.236/branches/NETSCAPE_6_2_1_BRANCH@108918 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-26 21:42:59 +00:00
alecf%netscape.com
d865783e96 other part of bug 102043 r=radha sr=rpotts
git-svn-id: svn://10.0.0.236/branches/NETSCAPE_6_2_1_BRANCH@108632 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-20 22:30:53 +00:00
alecf%netscape.com
5a8e870248 check in bug 102043 to the 6.2.1 branch
git-svn-id: svn://10.0.0.236/branches/NETSCAPE_6_2_1_BRANCH@108631 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-20 22:28:23 +00:00
naving%netscape.com
0dd07fcb44 110067 r=naving sr=mscott. patch by bienvenu to fix corruption of mail attachments when configured
for offline use.


git-svn-id: svn://10.0.0.236/branches/NETSCAPE_6_2_1_BRANCH@108623 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-20 20:57:31 +00:00
mstoltz%netscape.com
a5d0cd6701 Bug 109113 - remove __call__ property of function objects, and add
same-origin check on the caller property. r=jst, sr=brendan, a=jaime


git-svn-id: svn://10.0.0.236/branches/NETSCAPE_6_2_1_BRANCH@108614 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-20 20:01:12 +00:00
joki%netscape.com
16aed83af0 Fix for 108104, prevent key/mouse events from untrusted scripts to spoof UI into thinking it got real native events. r:saari,sr:jst
git-svn-id: svn://10.0.0.236/branches/NETSCAPE_6_2_1_BRANCH@108572 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-20 10:08:09 +00:00
jst%netscape.com
1299c286cc Fixing bug 110242. Fix crash in text.substringData() when a count large enough to make count+start not fit in 32 bits is passed in. r=rayw@netscape.com, sr=vidur@netscape.com, a=jaimejr@netscape.com
git-svn-id: svn://10.0.0.236/branches/NETSCAPE_6_2_1_BRANCH@108553 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-20 04:28:16 +00:00
darin%netscape.com
a7ffb58fe2 fixes bug 97958 "[CRASH] on :jar protocol - M094 [@ ntdll.dll - nsInputStreamTee::TeeSegment]"
r=dbaron, sr=dougt, a=PDT


git-svn-id: svn://10.0.0.236/branches/NETSCAPE_6_2_1_BRANCH@108540 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-20 02:44:47 +00:00
darin%netscape.com
d8f4c33192 fixes bug 110418; r=morse, sr=alecf, a=pdt
git-svn-id: svn://10.0.0.236/branches/NETSCAPE_6_2_1_BRANCH@108532 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-20 02:23:18 +00:00
dougt%netscape.com
7ead48dbe8 fixes 108573. AutoRegisterComponent crashes when registered component loaders are not already created. r=dp, sr=rpotts, a=pdt
git-svn-id: svn://10.0.0.236/branches/NETSCAPE_6_2_1_BRANCH@108501 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-19 22:24:13 +00:00
leaf%mozilla.org
f1860fbadc Bumped up vers 2 to 6.2.1
git-svn-id: svn://10.0.0.236/branches/NETSCAPE_6_2_1_BRANCH@108200 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-15 23:04:25 +00:00
cltbld%netscape.com
818270ff9e updating to use NETSCAPE_6_2_1_BRANCH
git-svn-id: svn://10.0.0.236/branches/NETSCAPE_6_2_1_BRANCH@108191 18797224-902f-48f8-a5cc-f745e15eee43
2001-11-15 21:52:36 +00:00
(no author)
ee71b5ceac This commit was manufactured by cvs2svn to create branch
'NETSCAPE_6_2_1_BRANCH'.

git-svn-id: svn://10.0.0.236/branches/NETSCAPE_6_2_1_BRANCH@106175 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-24 17:20:10 +00:00
jj%netscape.com
4ba6ac6172 bugscape 10608: added oji.shlb to MacOS 9 installer & MacOS X package. r=granrose, sr=leaf+sfraser
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105992 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 23:57:08 +00:00
jj%netscape.com
de8322aab8 bugscape 10609: updated 'vers' 2 for 6.2
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105990 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 23:53:39 +00:00
mstoltz%netscape.com
43b4280a30 Bug 105705, temporary fix - remove security check optimization
(needsSecurityCheck) on global property access, since it misses an
important case. r=harishd, jband, sr=jst, a=jaimejr


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105986 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-22 23:26:22 +00:00
mscott%netscape.com
785f70d84d Bug 97497 --> fix a crash when expuning messages from the imap server by backing out part of an earlier
change from bienvenu
r=naving
sr=sspitzer


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105786 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-19 19:59:02 +00:00
racham%netscape.com
220bdb30be 105162 r=racham sr=mscott. Fix pop3 message size download limit pref. remove unused code.
This is naving


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105646 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 22:59:49 +00:00
racham%netscape.com
4bf6af20b9 105162 r=racham sr=mscott Remove unused prefs. This is naving
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105645 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 22:59:43 +00:00
rpotts%netscape.com
632cfc715e bug #104769 (r=pavlov@netscape.com, sr=jst@netscape.com, a=pdt). Opening new windows sometimes stalls...
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105604 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 05:50:22 +00:00
sdagley%netscape.com
ddc6be30ee Fix Bugscape #7630 - checking in for bnesse, r/sr=darin
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105596 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-17 04:34:12 +00:00
ssu%netscape.com
d0b0caddc4 fixing bug 103232 - Simple MAPI: Uninstaller needs to restore previous mapi32.dll if replaced. r=srilatha, sr=dveditz, sr=mscott
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105563 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-16 23:52:34 +00:00
law%netscape.com
e6ca9fead3 Branch fix for bug 104910; changes default for Don't ask me again checkbox on Quick Launch dialog; r=pchen, sr=blake, a=pdt
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105562 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-16 23:50:15 +00:00
srilatha%netscape.com
0760514fb0 Fix for bug 104943. Added SendMessage in Set and Unset default mailClient to
broadcast the message once the registry is updated.
r=ssu, sr=dveditz, a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105549 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-16 23:20:54 +00:00
srilatha%netscape.com
2b0f8da028 Fix for bug # 104938. Changed the return value for all the APIs that are not
implemented to MAPI_E_FAILURE.
Checking in for kkhandrika@netscape.com
r=rdayal, sr=mscott, a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105548 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-16 23:07:45 +00:00
sfraser%netscape.com
5d2c1e284e Landing the fix for bug 42817 (Page setup UI on Mac) on the 0.9.4 branch. a=pdt2
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105482 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-16 07:00:52 +00:00
sfraser%netscape.com
ef568e7a83 Landing changes for bug 36796 (implement Page Setup on Mac) on the 0.9.4 branch. a=pdt2
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105481 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-16 06:48:18 +00:00
ssu%netscape.com
ef74dae0e8 fixing bug 10471 - The Netscape 6 item under WinXPs Start menu needs to be Netscape 6.2. sr=mscott r=syd
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105466 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-16 05:10:48 +00:00
mscott%netscape.com
b81b213d04 Checking in 98797 for bill law. Don't disable the keep me open checkbox when the download is complete.
sr=blake/mscott


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105463 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-16 04:34:33 +00:00
srilatha%netscape.com
1ccf8da466 Fix for Front Page crash and WordPad message after MAPI send.
Bug # 102645, r=ducarroz, sr=mscott.
Checking in for rdayal@netscape.com


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105454 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-16 02:08:17 +00:00
jelwell%netscape.com
2bb5dd3a5d Fix for Bugzilla bug 104953, r=jj, sr=sfraser PDT+
This ensures that the skin select statement is always last, which is necessary when generating the user-chrome.rdf file.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105449 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-16 00:59:13 +00:00
darin%netscape.com
eef1953101 fixes bug 103979 "Crash if autoconfig proxies prefs enabled by the default"
r=gagan,dougt sr=rpotts a=PDT


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105439 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-15 23:01:37 +00:00
ben%netscape.com
ba2c55238e bug 87864 - bookmarks file grows huge (due to duplicate bookmarks?)
- patch prevents the creation of duplicate bookmarks during edit operations.
r=jag, sr=waterson, a=pdt.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105406 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-15 08:35:10 +00:00
blakeross%telocity.com
1d1da6ebd3 Err, fix merge conflicts from tree switch.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105401 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-15 05:26:36 +00:00
blakeross%telocity.com
994df90bb5 View source for pages with post data needs to be disable (91341). Same patch from 092 branch. r=hixie sr=ben PDT+
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105400 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-15 05:13:16 +00:00
ssu%netscape.com
f6942a3d2a fixing bug 104275 - Cannot send message from Excel/PPoint97 using SimpleMAPI. r=curt, sr=dveditz. not part of tinderbox builds. affects windows platforms only
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105347 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-13 01:45:08 +00:00
darin%netscape.com
5425558f28 fixes bug 104181 "SH should not store layout state if server sends Cache-control: no-cache"
r=radha, sr=rpotts, a=jaimejr


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105332 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-13 01:03:02 +00:00
(no author)
7002800e9b This commit was manufactured by cvs2svn to create branch
'MOZILLA_0_9_4_BRANCH'.

git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105308 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-12 23:48:35 +00:00
beard%netscape.com
30e74cffda Fix for bug #103431, r=peterl, sr=sfraser, a=pdt.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105299 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-12 22:00:28 +00:00
curt%scruznet.com
6a51761487 Only set MAPI and MAPIX in win.ini.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105271 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-12 19:50:36 +00:00
mscott%netscape.com
1c761ae69d Bug #7630 --> Landing this patch for bnesse onto the branch. Prevent a crash on urls that end with a CR
r=peterl
sr=darin,dougt
a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105268 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-12 18:07:30 +00:00
eddyk%netscape.com
612ff0c74e bug 104253: fields are editable when they shouldn't be, in AccountManager
r=mscott, sr=sspitzer


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105219 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-11 23:05:55 +00:00
joe.chou%eng.sun.com
13cf71081e Replacing a C++ comment in a C file (../include/npapi.h) with a C comment, so that Unix (Solaris, OS2, HP, etc.) will compile.
r=peterl, sr=attinasi, blizzard.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105201 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-11 21:10:41 +00:00
srilatha%netscape.com
d12292d5ea Fix for bug# 103908. Checking the mapidll, changed to getSytemDirectory
and also fixed getShowDialog()
r=ssu, sr=dveditz, a=pdt.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105152 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-11 10:43:32 +00:00
srilatha%netscape.com
f01eff3605 Fix for bug # 103897. Fixed the js error in onOK and also added code to ensure the
pref holds value when switched between panes
r=bhuvan, sr=sspitzer, a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105149 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-11 06:40:25 +00:00
srilatha%netscape.com
2293f7a84d Fix for bug # 103313, r=ducarroz, nhotta and sr=mscott.
Fix of problem for sending files with nonAscii filename and nonAscii subject
checking in for rdayal@netscape.com


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105148 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-11 06:10:03 +00:00
jj%netscape.com
42bd8c4dd3 bug 101608: keeping traceback option on for Carbon build. r=sdagley, sr=sfraser
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105147 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-11 06:02:07 +00:00
mscott%netscape.com
c2a53f73fa Backing out Bug #96748 which ended up making things worse for new account set up.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105139 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-11 04:28:23 +00:00
srilatha%netscape.com
806a8b39c2 Fix for Bug #102392. Refined COM code to detect whether mozilla is running
or not.  This is required to support multiple sends from the Application.
r=dougt, sr=mscott a=PDT


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105102 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-10 21:49:43 +00:00
darin%netscape.com
f6fd3e8875 fixes bug 52510 "HTTP handler should register as a listener for user agent
prefs changes." r=bnesse, sr=rpotts, a=PDT+


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105063 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-10 20:21:20 +00:00
pinkerton%netscape.com
d875eec3a4 unregister event handler when menu goes away. that way, if the menu is still in a visible menubar, we don't crash trying to build content off a dead listener. r=sdagley/sr=sfraser/a=jaime. bug#103935
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105033 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-10 14:20:18 +00:00
loadrunner%betak.net
3e416c0513 bug 88155, Trunk & M094 crash [@ MSVCRT.DLL - ns4xPluginStreamListener::OnDataAvailable, nsPluginStreamListenerPeer::OnDataAvailable] - seg faults loading http://www.planetjulie.com/, r=av,peterl, sr=waterson, removing unused nsHTMLUtils.* files resulting from repository copy, pdt+
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105024 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-10 07:20:23 +00:00
srilatha%netscape.com
12e9b7a298 Fix for bug # 95724. Added the registry keys for defailtIcon and shell\open\command.
Also changed the display name in the xp start menu
r=ssu, sr=dveditz, a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105015 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-10 05:42:50 +00:00
srilatha%netscape.com
005aa45847 Fix for bug # 103232. Changed the name for getting the version info for the mapi dll.
Also deleting the Mapi_backup_dll registry key instead of setting it to ""
r=ssu, sr=dveditz, a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105014 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-10 05:29:58 +00:00
loadrunner%betak.net
4eb1dbd5a7 bug 88155, Trunk & M094 crash [@ MSVCRT.DLL - ns4xPluginStreamListener::OnDataAvailable, nsPluginStreamListenerPeer::OnDataAvailable] - seg faults loading http://www.planetjulie.com/, r=av,peterl, sr=waterson, a=brendan, pdt+
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@105001 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-10 04:01:09 +00:00
sdagley%netscape.com
3cf0e74740 Fix #103612 - work around bug in Mac OS X 10.1 Internet prefs panel when setting DL folder. Merging fix from trunk. r=pinkerton,sr-sfraser,a=PDT
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104998 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-10 03:18:20 +00:00
mscott%netscape.com
4c3f215e2b Bug #102821 --> back out part of my fix from yesterday which attempted to keep mozilla.exe running
until the last mapi session had logged off. We found some holes were the mozilla process wasn't getting
terminated. Now we'll start up and terminate mozilla for each mapi transaction (unless it's already running
of course).

no r or sr since this is just a back out of part of yesterday's checkin.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104980 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-10 00:51:19 +00:00
loadrunner%betak.net
e9ef0ffacc bug 88155, Trunk & M094 crash [@ MSVCRT.DLL - ns4xPluginStreamListener::OnDataAvailable, nsPluginStreamListenerPeer::OnDataAvailable] - seg faults loading http://www.planetjulie.com/, r=av, peterl, sr=waterson, a=brendan, pdt+
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104979 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-10 00:51:00 +00:00
ssu%netscape.com
beed77f1c0 fixing bug 103232 - Changes the function pointer reference name (that the installer looks for in Mapi32.dll) from MAPIGetVersion() to GetMapiDllVersion(); also fixes mail.xpi to update mapi32.dll when appropriate. r=curt, sr=dveditz. affects windows platforms only
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104977 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-10 00:47:40 +00:00
mscott%netscape.com
174c0b1558 Bug #96784 --> avoid infinite recursion in the bin hex decoder when the data fork gives us back
macbinhex content as the content type.
sr=darin/sspitzer


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104976 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-10 00:37:29 +00:00
jaggernaut%netscape.com
a071e8dc70 Bug 103853: back out bogus sizeToContent in commonDialog.js, r=alecf, sr=hyatt, a=PDT
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104974 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-10 00:25:37 +00:00
ssu%netscape.com
4882e081f0 fixing bug 103939 - add new key, [JRE LIB PATH], to native win32 installer. r=curt, sr=dveditz. affects windows platforms only.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104973 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-10 00:24:20 +00:00
loadrunner%betak.net
81e2538482 bug 88155, Trunk & M094 crash [@ MSVCRT.DLL - ns4xPluginStreamListener::OnDataAvailable, nsPluginStreamListenerPeer::OnDataAvailable] - seg faults loading http://www.planetjulie.com/, r=av, peterl, sr=waterson, a=brendan, pdt+
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104971 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-10 00:12:41 +00:00
nhotta%netscape.com
efe018a9e6 Remove nsHTMLUtils.cpp from the project, bug 88155. r=av, peterl, sr=waterson, a=brendan, pdt+.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104970 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-10 00:11:45 +00:00
nhotta%netscape.com
34083e6795 Add nsHTMLUtils.cpp to the project, bug 88155. r=av, peterl, sr=waterson, a=brendan, pdt+.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104969 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-10 00:11:25 +00:00
rods%netscape.com
a031df1fb7 Remove borders/padding when getting the size of the dropdown after it has already been reflowed
Bug 101936 r=kmcclusk sr=attinasi a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104959 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-09 23:25:28 +00:00
heikki%netscape.com
3b6c8aa9e5 Bug 103250, attempting to fix topcrasher with a null check. Crash happens when you select text while page loading. r=harishd, sr=vidur.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104941 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-09 21:04:16 +00:00
mscott%netscape.com
f1bf83ec8f Forget this as part of Bug #102215 --> message display messed up by xul syntax changes
r=sspitzer
sr=hewitt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104938 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-09 21:01:34 +00:00
sspitzer%netscape.com
57de60b35e fix for #102918. don't show the "make Mozilla / Netscape your default
mail application" dialog until after the mailnews window shows up,
or for new profiles, until after the account wizard dismisses.
also, make the dialog modal to the mailnews window.
r=srilatha, sr=bienvenu, a=PDT


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104931 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-09 20:10:57 +00:00
pinkerton%netscape.com
bc1f68f1e9 respect the look&feel pref about showing comboboxes outside the client area. r=rods/sr=sfraser/a=asa. bug# 102834.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104912 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-09 14:17:38 +00:00
pinkerton%netscape.com
99194edfe0 prevent windows from extending behind dock when maximizing. r=danm/sr=sfraser/a=jaime. bug# 79974.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104911 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-09 14:15:33 +00:00
pinkerton%netscape.com
efa8d7d7c8 make long menu items crop. r=sdagley/sr=sfraser/a=jaime. bug# 98455
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104910 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-09 14:13:04 +00:00
rods%netscape.com
2a4287eccf Don't do BeginDocument when printing to file for regression tests
BUg 99633 r=karnaze a=attinasi a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104908 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-09 12:30:07 +00:00
sfraser%netscape.com
467a13f630 Fix bug 103031 -- don't put the top-left of the structure region into event.where before passing it off to raptor, because this might actually be outside of that window (like on X when windows have rounded corners). Instead, offset event.where by the amount that the window was moved. r=sdagley, sr=hyatt.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104902 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-09 06:02:08 +00:00
mscott%netscape.com
2c2aa68e1d Bug #102821 --> MAPI HACK FOR THE BRANCH only. This change is not intended for the trunk.
when processing -MAPIStartup, turn the show ui flag off to put us in a semi server mode. then in the mapi
code we'll manually make sure the app doesn't exit after the last window goes away until
all the mapi sessions have logged off.

r=bienvenu
sr=sspitzer


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104896 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-09 03:30:29 +00:00
mscott%netscape.com
f43cb3161d Landing Bug #103172 onto the branch for Rajiv. This patch removes the simple mapi auth dialog so we no longer
bring it up. You can choose your user identity from the subsequent compose window that comes up.
r=sspitzer
sr=mscott


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104891 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-09 02:55:53 +00:00
peterlubczynski%netscape.com
d1c54329ca Fix for bug 86591
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104890 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-09 02:55:45 +00:00
sfraser%netscape.com
9693956170 Fix for 100353 -- handle polling for read and write on different threads, and properly deal with sending to a socket that has flow control restrictions. Fixes a problem saving to IMAP server sent messages with attachments. r=gordon, wtc.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104889 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-09 02:16:47 +00:00
loadrunner%betak.net
2bc62b1415 bug 88155 - backing out premature checkin
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104888 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-09 01:59:55 +00:00
curt%scruznet.com
317249c56a Simple MAPI settings in win.ini.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104886 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-09 01:14:06 +00:00
pchen%netscape.com
4326de52b8 bugscape 9942, r=jag, sr=sfraser, include navExtraOverlay.xul in
hiddenWindow.xul to turn off qa and debug menus


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104879 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-09 00:33:01 +00:00
eddyk%netscape.com
4910524cab bug 103181: Disable code in AccountManager regression
r=bhuvan, sr=sspitzer, PDT+


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104877 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-09 00:24:02 +00:00
attinasi%netscape.com
f5420bca31 Support for invert color for outlines: improved handling of solid outlines, and made dotted and dashed outlines work. b=73884 r=kmcclusk sr=kin a=pdt
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104876 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-09 00:18:01 +00:00
attinasi%netscape.com
b69cd49c6b active links are not given outline color 'invert' b=73884 r=kmcclusk sr=kin a=pdt
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104874 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-09 00:16:43 +00:00
loadrunner%betak.net
40ae15b240 bug 88155, Trunk & M094 crash [@ MSVCRT.DLL - ns4xPluginStreamListener::OnDataAvailable, nsPluginStreamListenerPeer::OnDataAvailable] - seg faults loading http://www.planetjulie.com/, r=av, peterl, sr=waterson
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104866 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-08 23:42:40 +00:00
srilatha%netscape.com
d1a33f3259 Fix for bug #103260. RegisteringOkCallbackFunc in Startup()
sr=sspitzer, a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104863 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-08 23:20:56 +00:00
leif%netscape.com
b8b04b2777 Bug 102227: LDAP Autocomplete crash, r=dmose,sr=bienvenu.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104861 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-08 23:08:00 +00:00
srilatha%netscape.com
ac03659bd8 Fix for bug # 102798. Displays security warning during blind send.
Checking in for dougt, r=sspitzer, sr=mscott, a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104817 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-08 20:13:23 +00:00
kin%netscape.com
a0cc6531cb Make original patch for bug 99920 (hitting enter in any text field submits form without submit button passed as param)
work in OPT builds, by moving QI() call out of NS_ASSERTION macro.

r=rods@netscape.com  sr=waterson@netscape.com  a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104794 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-08 14:07:07 +00:00
dmose%netscape.com
60e2321259 Fix LDAP autocomplete regression on CJK strings by adding separate cjkMinStringLength that is defaulted differently from minStringLength (bug 101086). r=shanjian@netscape.com, sr=blizzard@mozilla.org, a=pdt
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104754 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-07 02:19:56 +00:00
(no author)
0b83c005e9 This commit was manufactured by cvs2svn to create branch
'MOZILLA_0_9_4_BRANCH'.

git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104723 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-06 05:08:43 +00:00
ssu%netscape.com
34349da08b fixing bug 103232 - Simple MAPI: Uninstaller needs to restore previous mapi32.dll if replaced. r=curt, sr=dveditz. not part of tinderbox builds. affects only windows.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104698 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-06 00:11:45 +00:00
ssu%netscape.com
598eacc4f9 fixing bug 103242 - component-specific timing dependency sections don't get run. r=curt, sr=dveditz. affects windows platforms only
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104696 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-06 00:02:53 +00:00
karnaze%netscape.com
0128156574 new regression tests, not affecting the build.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104694 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-05 23:21:45 +00:00
(no author)
a713920b70 This commit was manufactured by cvs2svn to create branch
'MOZILLA_0_9_4_BRANCH'.

git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104691 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-05 23:16:07 +00:00
kmcclusk%netscape.com
0cdc966245 Added passing of error when allocating offscreen fails on GTK. bug 70424 r=pavlov sr=attinasi a=jaimejr
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104671 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-05 19:20:47 +00:00
pinkerton%netscape.com
d326bffa32 r=sdagley, sr=sfraser, a=asa bug#102204
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104662 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-05 14:23:43 +00:00
jaggernaut%netscape.com
b6ed21bc4a Bug 92635: password dialog for mailnews doesn't always come up at the correct size and is then also missing the label on the checkbox. Checking in a work-around for 0.9.4. r=sspitzer, sr=mscott, a=PDT.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104655 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-05 12:05:52 +00:00
srilatha%netscape.com
19039d5a68 Fix for bugs 95117, 95113, 95116, 95122, 102308 and 102798, 102570.
r,sr = bienvenu, ducarroz, rdayal, sspitzer, mscott, dveditz, ssu, dougt.
This is the implemetatin of Simple MAPI


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104645 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-05 05:32:50 +00:00
rpotts%netscape.com
d0901fa2c8 bug #102450. (r=pavlov@netscape.com, sr=vidur@netscape.com, a=pdt). Some pages never stop loading because an OnStopRequest is being dropped by the imgRequest...
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104644 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-05 05:29:41 +00:00
attinasi%netscape.com
4e07680f92 Sanity checking params to avoid topcrash. b=100298 sr=kin r=kmcclusk a=PDT
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104643 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-05 05:28:29 +00:00
srilatha%netscape.com
bca8035316 Fix for bugs 95117, 95113, 95116, 95122, 102308 and 102798, 102570.
r,sr = bienvenu, ducarroz, rdayal, sspitzer, mscott, dveditz, ssu, dougt.
This is the implemetatin of Simple MAPI.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104642 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-05 05:27:04 +00:00
ssu%netscape.com
89847524eb part of a fix for bug 95122 - Preference for Simple MAPI. r=curt, sr=dveditz. not part of tinderbox builds. affects windows only
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104641 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-05 05:24:51 +00:00
rpotts%netscape.com
ff21072f1f bug #102774 (r=jst@netscape.com, sr=vidur@netscape.com, a=pdt). from js location.reload(aBypassCache) ignores the bypass cache argument...
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104640 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-05 05:09:33 +00:00
peterlubczynski%netscape.com
6057fc9598 Fix for topcrash on UNIX where the ProxyJNI is broken with the JRE after a plugins.refresh(). bug 86591 r=av sr=blizard
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104639 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-05 04:56:24 +00:00
sspitzer%netscape.com
0b0cebe215 fix for #96314. get save as template and save as file to work
for imap messages, a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104632 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-05 02:38:35 +00:00
shanjian%netscape.com
b6658b6338 #8864 Debug messages in terminal window on Linux Japanese build.
r=bstell sr=waterson a=Jaime


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104617 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-05 01:06:56 +00:00
waterson%netscape.com
2dbe8975f0 Bug 96748. Be sure to check for |open| on new rows. r=varga@utcru.sk, sr=hyatt, a=jaimejr
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104612 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-05 00:52:59 +00:00
ssu%netscape.com
293f9035f1 fixing bug 9943 - 2 icons showing up on desktop after installing 6.2 - r=dveditz, sr=syd
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104598 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-04 21:49:02 +00:00
syd%netscape.com
910ceb167b Checkin for 78442. Fix from jband, sr=dveditz, r=syd, a=PDT This is a
quick and dirty fix which has nsXPITriggerInfo holding a reference to
the object referenced by nsXPITriggerInfo::mGlobalWrapper and to also
hold a JS root on XPITriggerEvent::cbval. The "right" way to fix this
is outlined in the bug.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104583 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-04 12:00:49 +00:00
mstoltz%netscape.com
1df70339e2 Bug 18553 (regression) clear all event handlers before loading a document,
except when called from document.open. r=heikki, sr=jst, a=clayton, jaime


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104576 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-04 05:37:16 +00:00
racham%netscape.com
c625f052ea Fixing bug 97650 on branch. This Fix facilitates the display of unread mail count of default mail account(s) on Windows XP welcome screen. r=mscott, sr=sspitzer, a=pdt. All checkins related to fix for bug 97650 are approved by pdt. I forgot to mention a= part in the last check in update.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104575 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-04 04:58:35 +00:00
racham%netscape.com
eef63da323 Fixing bug 97650. Checking in the IDL mcp file to build OS integration idl file. r=mscott, sr=sspitzer, a=pdt.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104574 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-04 04:56:43 +00:00
racham%netscape.com
3dfa1a19b0 Fixing bug 97650 on branch. This Fix facilitates the display of unread mail count of default mail account(s) on Windows XP welcome screen. r=mscott, sr=sspitzer
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104573 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-04 04:55:23 +00:00
suresh%netscape.com
ff9b7031d6 102545 r/sr=sspitzer. Set enabled to true only for new filters.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104572 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-04 02:39:02 +00:00
mscott%netscape.com
1c612c7742 Landing Bug # 101828 on the branch. Sending more than one piece of unsent mail fails when posting to the sent folder.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104567 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-04 01:25:34 +00:00
mscott%netscape.com
2d7c433ea6 Landing 101128 onto the branch (ftp sending spurious on stop requests before on start
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104566 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-04 01:18:57 +00:00
bienvenu%netscape.com
48a0d56aa9 fix paint leak of 1 byte per mime2 string from trunk 102466
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104564 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-04 01:07:26 +00:00
rods%netscape.com
91f350925b Check for failure after printing the next page. If it fails then pass back PR_TRUE
to indicate we are done printing this document.
Bug 101597 r=kmcclusk sr=attinasi a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104560 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-03 23:53:52 +00:00
sgehani%netscape.com
ac703f65e5 Remove debug prefs panel (on mozilla0.9.4 netscape-owned branch only).
b = 9968
r = pchen
sr = dveditz


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104559 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-03 23:52:37 +00:00
sspitzer%netscape.com
eee6d39a84 hack fixes for #100952 and #98418. don't show multiple inboxes in the folder pane
after imap migration and don't show accounts multiple times under "Get Msg" button.

these hacks aren't going in on the trunk.

r/sr=mscott,waterson,a=PDT.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104556 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-03 22:56:24 +00:00
peterv%netscape.com
b4a101d672 Fix for bug 97687 ([serializer]cs/gecko: copying using keyboard shortcuts>paste>source pasted {Country=US}). r=heikki, sr=jst.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104534 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-03 13:38:17 +00:00
heikki%netscape.com
7e84c99e83 Bugscape bug 9924, fix perceived hang by improving comment parsing performance in strict mode. Patch from harishd, r=heikki, sr=vidur.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104531 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-03 07:13:14 +00:00
mscott%netscape.com
97be76f8b4 Landing 97497 on the branch (add bullet proofing)
r=naving
sr=bienvenu


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104497 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-03 00:52:14 +00:00
curt%scruznet.com
1776a171d4 Removing obsolete files. Fixes bug #94108
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104457 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-02 23:04:05 +00:00
yokoyama%netscape.com
81093cb228 Bug 88425:
Force end IME Composition upon receiving OnChar
/r=yokoyama;/sr=shaver,/pdt=jaime


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104450 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-02 22:23:35 +00:00
varada%netscape.com
6e19a74a09 fix for bug#9440;show smtp server for new isp accounts;r=racham;sr=mscott
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104435 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-02 21:52:48 +00:00
hewitt%netscape.com
a60d8b4824 98415 - color picker crashes on mac, r=hewitt, sr=mscott, patch by btiffany@usermail.com
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104395 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-02 03:17:55 +00:00
sdagley%netscape.com
4ed58c0051 Finish fix of bug 97676 - Also use LaunchServices APIs to map creator code to app under OS X. Fixes automatic launch of helper app and restores ability to override helper app from download dialog. sr=sfraser,a=PDT (inferred a= since the bug has PDT+ and the previous checkin wasn't a complete fix)
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104386 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-02 01:49:46 +00:00
bryner%netscape.com
ab5c9047fc Bug 59211 (topembed) - mouse wheel does nothing when cursor over plugin. Patch from markh@activestate.com, r=bryner, sr=hyatt.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104343 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-01 20:43:38 +00:00
waterson%netscape.com
f52bdbc3be Bug 96228. Make nsContainerFrame::PositionFrameView position _only_ the frame's view (don't recur). Explicitly call nsContainerFrame::PositionChildViews as appropriate when moving a frame post-Reflow. Consolidate view positioning logic duplicated between PositionFrameView and SyncFrameViewAfterReflow, which now correctly computes offset for anonymous view in nsScrollFrame and accounts for scrolled views. r=kmcclusk,karnaze sr=attinasi a=jaimejr
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104340 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-01 20:27:06 +00:00
yokoyama%netscape.com
23d14cad16 Bug 97404
To prevent freezing from copying URL.  Temporary fix until
we find actual cause of invalid string offset
/r=ftang, /sr=mscott, /PDT=jpm


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104339 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-01 20:24:31 +00:00
yokoyama%netscape.com
37c190c22e Bug 102041
Don't use the return error code from mAlias->Equals()
/r=ftang/harishd; /sr=shaver; /ptd=jaime


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104338 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-01 20:19:13 +00:00
darin%netscape.com
55f314e175 fixes bug 87817 "violation of HTTP 1.* standard when sending POST requests"
r=bbaetz, sr=mscott, a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104331 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-01 19:12:28 +00:00
rods%netscape.com
77e79f5968 Backing out fix for Bugs 85286 & 72906
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104323 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-01 18:25:48 +00:00
rods%netscape.com
1b7215b193 additional fix for Bug 99920
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104321 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-01 18:11:24 +00:00
karnaze%netscape.com
6db623ad82 new regression tests not affecting the build.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104318 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-01 16:22:48 +00:00
sdagley%netscape.com
745e0f8a58 Bug 97676 - Use LaunchServices APIs under OS X for helper app launching and fix Reveal to work with OS X Finder. r=ccarlen,sr=sfraser,a=PDT
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104308 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-01 07:40:16 +00:00
sdagley%netscape.com
310f048191 New project for OS X specific interfaces. Part of fix for 97676. r=ccarlen,sr=sfraser,a=PDT
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104307 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-01 07:01:42 +00:00
(no author)
61fcda7fc3 This commit was manufactured by cvs2svn to create branch
'MOZILLA_0_9_4_BRANCH'.

git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104305 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-01 06:31:38 +00:00
jaggernaut%netscape.com
7aa36a6aca Bug 96843: 'Find in this page' textfield doesn't get focus by default. Patch by James Kelley <oneiros@darkspire.net>, r=kin, sr=alecf, a=PDT.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104277 18797224-902f-48f8-a5cc-f745e15eee43
2001-10-01 01:17:59 +00:00
mscott%netscape.com
712dd7ecfc Landing Bug #101498 on the branch.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104270 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-30 21:39:23 +00:00
bryner%netscape.com
aaedc05e69 bug 97970 - nsExternalHelperAppService::AddMimeInfoToCache passing null to nsCStringKey ctor. patch from bzbarsky@mit.edu, r=timeless, sr=mscott. (PDT+)
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104235 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-29 23:39:43 +00:00
ccarlen%netscape.com
0cbafcd8b0 Bug 92750 - Quitting Fizzilla with Cmd-Q doesn't ask to save changes. r=pink,brade/sr=sfraser
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104194 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-29 04:20:04 +00:00
ccarlen%netscape.com
d221f9042c Adding new files for bug 92750 - Quitting Fizzilla with Cmd-Q doesn't ask to save changes. r=pink,brade/sr=sfraser
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104193 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-29 04:07:56 +00:00
mscott%netscape.com
d3f2cfed94 Landing 102215 on the branch.
r=sspitzer
sr=hewitt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104192 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-29 03:56:24 +00:00
vidur%netscape.com
a4edbcb828 Fixes for printing bugs 84017 and 89151. The fix for bug 84017 removes the need for a resize reflow to get form frame values to print. The restoration of these values into the new frame model is done as part of the initial reflow. The fix for bug 89151 gets rid of the extra frame model built and forces printed images to come out of the decoded image cache. r=darinf, heikki, sr=rpotts
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104189 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-29 03:07:45 +00:00
karnaze%netscape.com
faee19ca68 bug 94341 - keep a separate pseudo frame list for a new pseudo block or inline frame. sr=attinasi, r=alexsavulov
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104187 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-29 02:25:18 +00:00
ssu%netscape.com
2964c08516 fixing bug 97650 - these patches updates the uninstaller to deal with undoing whatever mail integration we do to a WinXP system. r=curt, sr=dveditz. affects only windows platforms.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104185 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-29 02:17:38 +00:00
mscott%netscape.com
0088fee340 Bug #100669 --> landing some compose changes required by simple mapi for the simple mapi team.Bettter errror handling when cleaning
up the temp file.
r=ducarroz
sr=mscott

a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104183 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-29 02:05:22 +00:00
ssu%netscape.com
b76d92a07f fixing bugscape 9841 - Back button broken in eclient tool setup program. r=curt, sr=dveditz. affects only windows platforms
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104178 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-29 00:33:07 +00:00
waterson%netscape.com
1e590dafd5 Bug 97859. Always synchronize parent row, regardless of whether folder is opened or closed. r=varga%utcru.sk, sr=hyatt, a=jaimejr
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104174 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-29 00:15:07 +00:00
yokoyama%netscape.com
73005c9879 bug 88425:
Force to end IMEComposition when user switches keyboard layout.
/r=ftang; /sr=shaver; PDT+


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104168 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-29 00:05:38 +00:00
sgehani%netscape.com
edcfb9968f Make opening search sidebar tab on by default again.
r = pchen
sr = dveditz
b = 9643 (bugscape)


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104164 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-28 23:56:24 +00:00
serge%netscape.com
348410001b fix for 97362; Plugins error "invalid ELF header"; r=av, sr=waterson
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104146 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-28 22:42:09 +00:00
alexsavulov%netscape.com
16245543f1 fix for bug 99948 - added rounding to pixel in CalculateSizeStandard
sr= attinasi r= kmcclusk, [PDT+] available


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104134 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-28 21:45:36 +00:00
attinasi%netscape.com
8fd5d9b8d9 Fix for image wrapping in table cell problems. b=101674 sr=hyatt r=waterson a=Jaime/pdt
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104132 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-28 21:37:45 +00:00
mscott%netscape.com
d07cea90df Landing 99391 on the branch.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104130 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-28 21:36:26 +00:00
peterlubczynski%netscape.com
f2d19fd047 Ignore leading and trailing whitespace for src and data attributes bug 96362 r=av sr=attinasi
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104125 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-28 20:15:27 +00:00
law%netscape.com
05c0c931e3 Bug 57443; Use PL_strncpyz to avoid buffer overrun when default file name is really long; r=sgehani, sr=mscott, a=pdt
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104116 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-28 18:54:06 +00:00
sicking%bigfoot.com
60177508d7 Fix crasher and leak in parameters code
b=101946 r=peterv sr=shaver


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104101 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-28 09:08:29 +00:00
curt%scruznet.com
8f05990056 Adding ren8dot3.exe back into the installation for the time being.
Fixes bug #48306


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104088 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-28 05:44:58 +00:00
rpotts%netscape.com
7106093ea1 bug #102070 (r=valeski@netscape.com, sr=vidur@netscape.com, a=pdt). The LOAD_FLAGS_BYPASS_CACHE | LOAD_FLAGS_BYPASS_HISTORY combination is not handled correctly by the docshell...
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104085 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-28 04:23:21 +00:00
peterlubczynski%netscape.com
673ac81689 Fix for crash when object frame goes away but stream is still going bug 99569 r=av sr=attinasi
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104082 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-28 04:13:09 +00:00
serge%netscape.com
fb04fb600a fix bug 85701; problems using plugins [@ gtk_xtbin_init] topcrash; r=pavlov;sr=blizzard
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104063 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-28 01:51:06 +00:00
syd%netscape.com
dddc8c8df5 Fix for 97249. Crash was being caused (regardless of what stack is
showing) by not carefully iterating the component list and
processing CRCs only on those XPI files that were downloaded.
r=jag, sr=dveditz.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104051 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-28 01:13:45 +00:00
rods%netscape.com
071dcfab31 Make so hitting return in text field submits form when there is a single text field and no submit
or there is a submit and the submit btn is to be included in the post data
Bug 99920 r=attinasi sr=kin a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104035 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-28 00:39:44 +00:00
rods%netscape.com
fd55366c47 Use the nsIWebProgressListener to make sure two submits do not happen
the listener is used to know when the submit got thru so it can unreg itself
Bug 85286 r=rpotts sr=kin a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104033 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-28 00:33:23 +00:00
mitesh%netscape.com
c23f0ea75f Fix for Bug 95524 - LDAP DLLs must be packaged with browser.xpi instead mail.xpi - as a result of the fix to bug 75955 r=smfr and sr=waterson
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104032 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-28 00:31:06 +00:00
kmcclusk%netscape.com
291eda8da0 Force the backbuffer to be reallocated when the display depth is changed. bug 6061 r=karnaze sr=attinasi a=jaimejr@netscape.com
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104030 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-28 00:23:03 +00:00
oeschger%netscape.com
f60a4a1891 updating some of the images in the help content per minor UI changes, author=jatin, r=oeschger, b=85925, content only
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104029 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-28 00:19:46 +00:00
pchen%netscape.com
222ef59af5 bugscape 8771, r=samir, sr=hyatt, use insertafter="editorTask" instead
of position for address book tasks menu item, also use insertafter instead
of position for address book icon in component bar


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104026 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-28 00:15:35 +00:00
pchen%netscape.com
3793dbba82 bugscape 8771, r=samir, sr=hyatt, set id for editor tasks menu item
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104025 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-28 00:13:48 +00:00
joki%netscape.com
8d3f011b8d Fix for 71705, disabling right and middle 'click' events to web content for better compatibility with old-style 'onclick' handlers. r:saari,sr:hyatt
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104024 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-28 00:12:02 +00:00
kmcclusk%netscape.com
945d2797fa check null pointer scrolledView before accessing it. bug 98270 patch from duraid@fl.net.au. r=karnaze sr=attinasi
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104022 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 23:57:30 +00:00
robinf%netscape.com
4122965e21 updates to existing images per bug8771; r=oeschger, a=adot, PDT+
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104019 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 23:44:27 +00:00
kin%netscape.com
7ddce62bb2 Fix for bug 89236: printing is producing crash
Modified nsBlockFrame::DrainOverflowLines() so that it
reparents any floater out-of-flow frames and their
views.

r=dbaron@fas.harvard.edu  sr=waterson@netscape.com  a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104013 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 23:16:32 +00:00
sfraser%netscape.com
5b8e1decdd Fix for 89734 -- fix window drawing/update problems on Mac OS X. Convert the saved update region to local coords. r=pink, sr=scc, a=pdt
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104012 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 23:16:24 +00:00
sfraser%netscape.com
398e15602b Fix for bug 86694 -- optimize image tiling on the Mac. r=pavlov, sr=scc, a=pdt
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104011 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 23:12:03 +00:00
sfraser%netscape.com
5a7f9ef37a Fix for 100700 and 58104-- some windows come up blank on carbon, and ATM causes blank windows. Properly save and restore GDevices. r=pierre, sr=scc
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104010 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 23:08:06 +00:00
ccarlen%netscape.com
48c8e05cbb Bug 101364 - Disable profile switching in turbo. r=dp/sr=alecf/PDT+
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104009 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 22:57:40 +00:00
beard%netscape.com
83bb6eb88a Fix for bug #92322, changes for Carbon/Mac OS X, r=peterl, sr=sfraser, a=jaimejr.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104008 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 22:56:00 +00:00
sfraser%netscape.com
84017680e7 Fixes for 71718 and 97866. Make Mac NSPR work on dual CPU Mac OS X machines, and fix the async IO code for Mac OS X. See bugs for reviewers. a=pdt
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104007 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 22:50:40 +00:00
saari%netscape.com
307d8d5398 fix for bug 78857, an assertion that was caused by the event pool code. r=heikki, sr=jst
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@104005 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 22:43:53 +00:00
pinkerton%netscape.com
f654b64e8f correctly remove toplevel menus when hidden/collapsed attribute set. also fix assertions so they don't always show and add assertion when trying to show/hide a menu that is already in that state. r=sdagley/sr=sfraser. bug# 101795
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103994 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 21:49:14 +00:00
hyatt%netscape.com
1db35f9de8 Fix for 101510. r/sr=dbaron,waterson
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103985 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 21:37:44 +00:00
ssu%netscape.com
a2e139c514 fixing bug 97813 - Need to Properly integrate Navigator in the Windows XP Start Menu. These patches affect the installation part of the bug. r=law sr=dveditz. not part of tinderbox builds. affects only windows platforms
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103984 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 21:36:27 +00:00
darin%netscape.com
02b9280cdc fixes bug 101832 "back/forward buttons should use LOAD_NORMAL + VALIDATE_NEVER"
r=gagan, sr=rpotts, a=PDT


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103977 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 21:28:34 +00:00
waterson%netscape.com
66a8942ed5 Bug 73235. Don't add scrollbar's width to MES. r=attinasi, sr=hyatt
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103973 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 20:53:21 +00:00
law%netscape.com
785351ad99 Fix for bug 97813; adds support for hooking into WindowsXP Start Menu as
the default internet application; includes a couple of minor tweaks to existing
code to support special handling of those registry keys; the change to
nsWindowsHooks.cpp is to suppress the "default browser" dialog when the user
doesn't have sufficient registry access to change the default browser.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103972 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 20:38:11 +00:00
rods%netscape.com
ada1e758a7 Part of previous checkin for Bug 99415, forgot to set this back to &PT
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103971 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 20:36:44 +00:00
karnaze%netscape.com
0bb1da4514 new regression tests, not affecting the build.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103952 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 16:30:53 +00:00
(no author)
746c14890a This commit was manufactured by cvs2svn to create branch
'MOZILLA_0_9_4_BRANCH'.

git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103951 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 16:22:07 +00:00
jfrancis%netscape.com
5f0044d4b4 Fix for 100753: can't outdent empty list item. r=rade; sr=kin; pdt+
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103937 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 12:10:24 +00:00
syd%netscape.com
87d1ee2413 Checking in fix for 84896. PDT+, has reviews.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103931 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 08:11:11 +00:00
hewitt%netscape.com
eff3b014c2 91173 - page info window does not wrap, r=blake, sr=hewitt, patch by jrgm
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103914 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 02:20:20 +00:00
darin%netscape.com
0ea88c1ad9 fixes bug 99233 "FTP site doesn't load: ftp.asus.com" patch=bbaetz, r=dougt,
sr=darin, a=PDT


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103912 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 01:48:06 +00:00
serge%netscape.com
e2f208e326 fix bug 74938; acrobat fails on plugin registration on Linux; r=av; sr=waterson;a=pdt
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103910 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-27 01:34:04 +00:00
ftang%netscape.com
dd1aa5f0ea fix bug 101434. ignore "UTF-16"xx and "UTF-32"xx in mime while it is impossible to get that value
while it is really UTF-16 and UTF-32.
r=bienvenu@netscape.com
sr=mscott


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103881 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 23:31:11 +00:00
pchen%netscape.com
13636923cd bugscape 9783 (again), r=ssu, sr=hyatt, need to increase height of top text pane in quick launch installer panel to accomodate longer text string
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103879 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 23:27:18 +00:00
darin%netscape.com
b92cb4590b fixes bug 98262 "avoid sending blank Accept-Charset header" a=PDT
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103878 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 23:26:47 +00:00
eddyk%netscape.com
2695b5b3be bug 96153: disable locked prefs for addressing panel in AccountManager
r=srilatha, sr=alecf,blake


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103875 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 23:03:10 +00:00
eddyk%netscape.com
ef87a82842 bug 96152: disable locked prefs for drafts and templates in AccountManager
r=bhuvan, sr=alecf


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103874 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 23:01:45 +00:00
pinkerton%netscape.com
821cd9a7fc don't associate .jar and .dat files with mozilla. r=sdagley/sr=sfraser. bug# 100065
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103870 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 21:54:50 +00:00
sspitzer%netscape.com
53b8205819 fix for bugscape bug #9178, a=PDT
Migration+Activation causes bad SMTP setup and failure to Send and a crash editing SMTP servers


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103869 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 21:48:54 +00:00
sspitzer%netscape.com
04445057b5 fix for #94180, a=PDT
Grippy appears to the left instead of center in addressbook and vertical 3 pane.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103868 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 21:37:14 +00:00
mitesh%netscape.com
debd6bd65f Additional check is as part of fix to bug 82412. OnLDAPInit should return a default value. Windows compiler complains about it.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103850 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 19:40:51 +00:00
sfraser%netscape.com
eb1bfcfde3 Fix for bug 67409 -- don't try counting connections to try to figure out if the browser is busy or not. Just look for pending PLEvents, which seems to give a good enough answer. r=saari, sr=kin, approved.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103849 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 19:37:29 +00:00
sfraser%netscape.com
ff11e9c7ae Fix for bug 99497. Re-order processing of jar.mn files so that we register en-mac locales after those for other platforms, so that non-installed builds (like the Mac OS X build) get Mac overlays. r=tao, sr=alecf.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103843 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 19:24:52 +00:00
mitesh%netscape.com
452517be8d Fix for bug 99515 - AutoConfig event loop was hanging on Linux. r=danm, sr=alecf and a=PDT
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103842 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 17:19:53 +00:00
karnaze%netscape.com
3a37dfe39b Fix bug "IFrames repositioned by whitespace in HTML" (no number yet) - give cols with no conent 0 width unless they have style width, sr=kin, r=alexsavulov
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103836 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 13:47:03 +00:00
rods%netscape.com
ce68108260 Enables the configuration of headers and footers, via 6 string in the nsIPrintOptions
3 for the header and 3 for the footer.
The new codes are &T,&U,&D,&P,&PT (see bug for explanation)
Bug 99415 r=kmcclusk, sr=attinasi a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103835 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 13:45:51 +00:00
peterv%netscape.com
403167314c Fix for bug 100732 (content_xsl.xpt missing in packaged bits). r=heikki, sr=jst.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103834 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 12:44:58 +00:00
dmose%netscape.com
e7269ea088 Packager changes to register LDAP XPCOM SDK chrome (bug 79935). r=ssu@netscape.com, sr=shaver@mozilla.org
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103828 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 07:20:19 +00:00
dmose%netscape.com
a7ca00446a Take advantage of ::failureItems functionality in teh autocomplete widget to pop up windows with an error message when LDAP autocomplete searches fail (bug 79935). r=ducarroz@netscape.com, sr=bienvenu@netscape.com
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103827 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 07:18:57 +00:00
dmose%netscape.com
31572ca31b Add ::failureItems result type to autocomplete interface and widget to allow for an error to return an item that can be displayed in the dropdown and fire an event if selected (eg pop up a dialog box); also changes LDAP autocomplete session interfaces and code to take advantage of this (bug 79935) r=hewitt@netscape.com, sr=bienvenu@netscape.com
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103826 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 07:18:27 +00:00
dmose%netscape.com
6984a86ab3 Update Mac buildsystem to include LDAP XPCOM SDK chrome when "ldap" option is used (bug 79935). r=pavlov@netscape.com, sr=bienvenu@netscape.com
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103825 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 07:08:52 +00:00
dmose%netscape.com
4b017c8f51 Addition of infrastructure to the LDAP XPCOM SDK to support better error reporting, error messages (bug 79935). r=jaggernaut@netscape.com,leif@netscape.com; sr=bienvenu@netscape.com
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103824 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 07:05:48 +00:00
dmose%netscape.com
10f2a7b17a Theme changes for LDAP autocomplete error messages in dropdowns (bug 79935). r=jaggernaut@netscape.com, sr=bienvenu@netscape.com
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103823 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 07:02:45 +00:00
leif%netscape.com
f1e8d63d77 Bug 91248: LDAP referrals hangs browswer. r=dmose, sr=bienvenu.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103822 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 06:20:53 +00:00
leif%netscape.com
c1de59c520 Bug 82412: Change LDAP XPCOM to use async DNS. r=dmose,mitesh sr=bienvenu,hewitt
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103821 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 06:14:09 +00:00
pchen%netscape.com
e8915585fc bugscape 9783, r=ssu, sr=sfraser, add '(Designed for single-profile users)'
to quick launch checkbox text


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103812 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 05:11:06 +00:00
pchen%netscape.com
3cffe12af9 bugzilla 63870, r=danm, sr=ben, remove initialPromptText and simply
promptText


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103811 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 05:04:39 +00:00
pchen%netscape.com
d863f44f5c bugzilla 63870, r=danm, sr=ben, only check for http, https, and .html file
registry settings, load brandShortName and use it in new default browser
dialog string


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103810 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 05:03:17 +00:00
dbaron%fas.harvard.edu
086c238bc1 Allow declarations in style attribute to be surrounded by braces in quirks mode. Rename ParseDeclarations to ParseStyleAttribute since that's what it does. b=99554 r=hixie,glazman sr=attinasi
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103809 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 04:47:22 +00:00
peterlubczynski%netscape.com
d909c4e60d Bad signed conversion in plugin streaming code bug 100888 r=av sr=attinasi
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103805 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 04:02:48 +00:00
peterlubczynski%netscape.com
01e55af3d4 Incorrect GetAttributes/GetParameters for embed/object tag types patch by philanderton@yahoo.com bug 99063 r=peterl sr=attinasi
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103804 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 04:00:30 +00:00
peterlubczynski%netscape.com
cfd9316e7c Fix for doing GET rather than POST when NPN_PostURL is called bug 77603 r=av sr=attinasi
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103803 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 03:59:02 +00:00
peterlubczynski%netscape.com
f54c131e6d Clean up code in part for fix for doing GET rather than POST when NPN_PostURL is called bug 77603 r=av sr=attinasi
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103802 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 03:58:50 +00:00
attinasi%netscape.com
9d18923188 Fixed problem with images not wrapping in percentage width cells, in Quirks mode. sr=waterson r=kmcclusk a=chofmann b=100568
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103800 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 03:32:36 +00:00
hewitt%netscape.com
0b5a1e5389 90284 - Remove installer checkbox for 'Use this theme' to prevent dynamic skin switch, r=syd, sr=mscott
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103799 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 03:16:50 +00:00
naving%netscape.com
570251f1ed 52460 r=bienvenu sr=mscott. Allow subfolders creation for pop3 inbox folder.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103789 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 01:39:33 +00:00
naving%netscape.com
3caf2a49a4 97530 r=cavin sr=bienvenu.Save filter changes after renaming/deleting folder. Remove code
that save filter changes on shutdown.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103788 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 01:34:24 +00:00
ddrinan%netscape.com
d5a6b35429 Bug 95585 - Upated CA root certs
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103769 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 00:15:16 +00:00
heikki%netscape.com
ad97f177b4 Bug 95489, attempting to fix this topcrash with a null-check. r=harishd, sr=vidur.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103768 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-26 00:12:37 +00:00
andreww%netscape.com
e6cdf92b6d bugzilla 94794 sr=hewitt, r=hwaara - fixing sidebar grippy alignment in mac classic skin.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103724 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-25 20:44:08 +00:00
jband%netscape.com
5433034371 fix bug 100222. same fix as from the trunk. Avoid crash by only releasing from wrappedJS dtor if xpconnect has not shutdown. r=dbradley sr=jst a=chofmann.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103722 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-25 17:53:04 +00:00
rods%netscape.com
5aca2825f0 Removed setting page height to 5 pages when printing a document "AsIs"
Also, added special case code for sizing of "AsIs" documents when they
are positioned 0,0
Bug 100797 r=kmcclusk sr=attinasi


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103714 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-25 13:58:02 +00:00
srilatha%netscape.com
2ed16b645e Fix fro bug 98566. Adding support fro simple MAPI
r=law, sr=alecf, a=pdt. Checking in fro kkhandrika@netscape.com


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103691 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-25 03:28:07 +00:00
srilatha%netscape.com
08b216d231 Fix for bug# 97502. Setting gUpdate to false in onCancel()
r=mitesh, sr=spitzer a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103687 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-25 02:20:41 +00:00
cmanske%netscape.com
62d970524d Make URLs selected from Image, Link, and Page Colors and Properties dialogs relative to the source page, b=72583, r=brade, sr=kin
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103685 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-25 02:08:01 +00:00
bienvenu%netscape.com
586535752b fix 91936 from trunk
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103670 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-25 00:43:55 +00:00
cmanske%netscape.com
1d3f10ba78 Remove 'Debug' menu from Composer for final release, b=9442, r=brade, sr=kin
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103664 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-25 00:18:28 +00:00
naving%netscape.com
336d211083 100978 r=sspitzer sr=bienvenu. fix a filter editor bug that turns AND condition to OR.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103663 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-25 00:16:28 +00:00
pinkerton%netscape.com
6a8fcb18e0 fix apple menu from submenu fix. r=saari/sr=sfraser/a=chofmann.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103645 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-24 22:42:23 +00:00
pinkerton%netscape.com
e796f4ea2b use OS routine to sub out the menubar and dock on OSX/Carbon. r=sdagley/sr=sfraser/a=chofmann. bug# 83570.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103636 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-24 22:14:55 +00:00
bryner%netscape.com
9aaf9609bb Bug 42313 (PDT+) - unable to scroll with mousewheel over objects contained in IFRAMEs. r=saari, sr=hyatt.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103635 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-24 22:00:14 +00:00
blizzard%redhat.com
7d4e7bc7d8 Merge X remote fixes from the trunk back to the branch. Fixes lots of various bugs. a=chofmann
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103634 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-24 21:40:26 +00:00
mstoltz%netscape.com
11dda9e7e2 Bug 99020 - When changing the type of a text input element to "file,"
clear its value. sr=jst, r=heikki, a=PDT.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103633 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-24 20:56:38 +00:00
yokoyama%netscape.com
e4cc0bbde5 ftang using yokoyama's account
fix bug 94319 on m94 branch.
move the fix from m92 (3.111.10.2) branch to m94 branch
see the 3.111.10.2 check in log for r=/sr= and a= details.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103632 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-24 20:44:07 +00:00
shannond%netscape.com
f73176d18d Fixing HP-UX bustage by adding a newline.
Bug 101355, r=jdunn,bbaetz a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103631 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-24 20:06:53 +00:00
ddrinan%netscape.com
e9b07bdb22 Bug 100213 - Crash in GetOCSPResponders. r=rangansen,sr=kin
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103627 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-24 17:37:11 +00:00
gerv%gerv.net
4c4fc299f7 Backing out changes checked in for Mozilla's 0.9.4 release as part of bug 99441. This backout requested by syd and jband in that bug.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103625 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-24 17:09:16 +00:00
karnaze%netscape.com
2b8c082913 bug 82401 - remove cell from correct parent when cell spans into split row; work around bug 101264 by doing initial reflow with unconstrained height. sr=kin, r=attinasi.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103623 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-24 14:53:06 +00:00
jaggernaut%netscape.com
1018334fd6 Bug 73064: If your navigation bar is in a collapsed state when you closed your browser, its "collapsed" grippy wouldn't show up upon the next browser startup. Work-around which happens to work, only to be checked in on the branch, we'll figure out something better for the trunk. r=hixie, sr=ben, a=PDT
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103617 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-24 12:38:07 +00:00
jaggernaut%netscape.com
2e6f663a94 Bug 79889: Download progress dialog not wide enough. r=hewitt, sr=hyatt, a=PDT
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103616 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-24 12:25:40 +00:00
peterlubczynski%netscape.com
9813c2d012 Fix for plugin printing bug 53349 and bug 27478 r=beard,av sr=attinasi
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103606 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-24 04:24:13 +00:00
sdagley%netscape.com
afbaedd313 For #97211 - Use OS mem allocators on Carbon builds. Only on branch for now. suggestedby=sfraser,sr=dbaron,a=PDT.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103603 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-24 03:22:38 +00:00
darin%netscape.com
852e7f39be fixes bug 92582 "Some MS ftp servers (ftp.microsoft.com) never display
lists - PASV invalid after error response" patch=dougt, r=gagan, sr=darin, a=PDT


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103546 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-22 08:27:23 +00:00
hyatt%netscape.com
8e503e987b Completely back out nsMenuPopupFrame changes.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103541 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-22 04:24:40 +00:00
hyatt%netscape.com
60055373bc Fix bustage.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103538 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-22 03:10:58 +00:00
hewitt%netscape.com
de2bdaeb68 93857 - Both 'To:' and 'Bcc:' options simultaneously checked in composition window, r=varada, sr=mscott
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103526 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-22 01:15:23 +00:00
hyatt%netscape.com
b4c3ba3158 Fix for 96291, leaky popups.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103522 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-22 00:41:37 +00:00
hyatt%netscape.com
afe70cb20e Fix for 94180.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103517 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-22 00:29:02 +00:00
darin%netscape.com
0130c09fdb fixes build bustage
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103515 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-22 00:27:57 +00:00
mstoltz%netscape.com
236c9c1438 Bug 101021, omitted assignment of return value from security check function
in nsWindowSH::GetProperty. r=harishd, sr=vidur, a(PDT)=nisheeth


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103513 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-22 00:26:42 +00:00
naving%netscape.com
5b724bb62c 98180 r/sr=sspitzer. Do not preflight the date picker w/ today's date if the argument has a date.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103512 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-22 00:25:31 +00:00
sspitzer%netscape.com
b963f74ca9 fix for #96979. hide folderpane columns for existing profiles. a=PDT
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103501 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-22 00:18:27 +00:00
sfraser%netscape.com
b2e55c3c08 Fix for bugscape bug 8740 -- fix notification sounds to work again by making sure we call EnterMovies() for Carbon. r=pink, beard. sr=jst, a=jaime
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103495 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 23:41:46 +00:00
darin%netscape.com
81e4a81df8 fixes bug 89500 for the mozilla 0.9.4 branch [a=PDT]
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103494 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 23:06:53 +00:00
gordon%netscape.com
7c3a29ea6a Fix bug 92348. Browser would fail to create windows if the capacity of the
disk or memory cache was set to 0. Fixed this by changing nsCacheService::
ActivateEntry() to fail if neither device is enabled or if the cache entry
is not stream-based and the memory cache is disabled.  No point handing out
a cache descriptor if we can't store any data. r=gagan, sr=dougt, darin.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103490 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 22:49:56 +00:00
naving%netscape.com
e2e79f0a98 70252 r=bienvenu sr=sspitzer Make filters having non-ascii name and conditions migrate from 4.xto 6.x
62437 r=bienvenu sr=sspitzer Make filter non-ascii folder names migrate from 4x. to 6.x


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103489 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 22:48:45 +00:00
darin%netscape.com
2447f93166 mac project changes for bug 89500 [a=PDT]
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103487 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 22:22:19 +00:00
bnesse%netscape.com
5e0bcc50ce Removed prefldap.h from manifest (file has been removed from cvs) to fix mac build.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103486 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 22:20:21 +00:00
darin%netscape.com
03517e0557 adding files for bug 89500 [a=PDT]
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103485 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 22:19:10 +00:00
darin%netscape.com
e016528374 fixes bug 97997 "easyweb.tdcanadatrust.com does not display" a=PDT
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103484 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 22:15:07 +00:00
tao%netscape.com
1ccc21361c 97606: Default character coding setting is blank in pref.
(r=dveditz,sr=alecf). add navigator.proeprties to en-{win,mac}.jar.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103483 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 22:13:52 +00:00
sdagley%netscape.com
60315dab09 Fix #99556 - landing trunk fix into 094 branch. Account for change in Mac epoch time as of MSL 6. r=wtc/sfraser
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103482 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 22:04:50 +00:00
sspitzer%netscape.com
d4ed5de1d5 fix for #98037. newsgroups requiring auth sometimes come up as all read. a=PDT
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103481 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 22:00:04 +00:00
heikki%netscape.com
d81ee0e696 Fixing build bustage, forgot to add a file.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103480 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 21:47:12 +00:00
naving%netscape.com
0d53807e8c 100326 r=bienvenu sr=sspitzer Abort compact if writing to folder fails.
90702 r=bienvenu sr=sspitzer Update the expunged bytes for offline stores after compacting.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103479 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 21:45:24 +00:00
bnesse%netscape.com
7efa0103e2 Fixing soon to be red mac tree by adding type cast for js call.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103478 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 21:06:34 +00:00
mitesh%netscape.com
7f7ef61de5 Removing prefldap.h - It's no longer needed as a part of bug 75955 fix
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103477 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 21:03:53 +00:00
mitesh%netscape.com
abeddd00b4 Checked in a wrong version of nsAutoConfig.cpp earlier with fixes for bug 75955. Updating it to a newer version
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103476 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 20:54:31 +00:00
beard%netscape.com
c8d8f9fc24 fix for bug #98290, keep stack aligned to 16 byte boundaries, r=beard, sr=sfraser, a=grega
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103475 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 20:50:57 +00:00
mscott%netscape.com
4fb3a770bf Landing Bug #100608 on the branch.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103474 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 20:48:49 +00:00
bnesse%netscape.com
fa4e9d0dd8 Fix for bug 75955 add getldapattributes. r=bnesse, dmose. sr=alecf,sfraser. Checking in mac files for mitesh.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103473 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 20:45:04 +00:00
ducarroz%netscape.com
343edffb97 Fix for bug 57902. As write to file is done using a buffer, we need to check the return code of the flush to be sure we phisically wrote the data to disk. Also check the file size when we are done writing to avoid sending empty mail (this include the fix for the regression introduced with the first fix). R=varada, SR=bienvenu
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103472 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 20:41:44 +00:00
mitesh%netscape.com
394693b9b6 Fix for bug 75955 - Adding getLDAPAttributes() functionality in AutoConfig
This a branch only check in - hasn't been checked into the trunk
r=bnesse,dmose, sr=shaver,alecf


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103471 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 20:40:08 +00:00
peterlubczynski%netscape.com
e0419770f6 Fix for OS X crash with bundle type plugins bug 98729 r=beard sr=attinasi
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103469 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 20:08:11 +00:00
shanjian%netscape.com
2e35258022 #99666 page is displayed as blank in certain situation
r=harishd, sr=rpotts, a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103466 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 19:43:43 +00:00
rogerl%netscape.com
9cde6c816e r=jst, sr=brendan, a=pdt. Fixes crash when parsing /[/.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103464 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 19:20:22 +00:00
loadrunner%betak.net
d647581a41 bug 99108, Bidi (Hebrew and Arabic) Encoding can not be set as the default encoding for composing mail, patch from simon@softel.co.il, r=jbetak, sr=kin, PDT+
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103461 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 18:39:10 +00:00
heikki%netscape.com
b2d293d7c0 Bug 78622, DOMParser and XMLHttpRequest failures with xml-stylesheet PIs etc. r=harishd, sr=vidur.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103460 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 18:30:09 +00:00
pinkerton%netscape.com
2c917ae462 make the system unit of mousewhell scrolling 3 lines on osx. r=sdagley/sr=sfraser/a=chofmann. bug# 100799
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103459 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 18:27:41 +00:00
pinkerton%netscape.com
5a9683a4ab implements code for responding to hidden/collapsed attributes on top-level menus. bug 100122. r=saari/sr=sfraser/a=chofmann.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103458 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 18:24:14 +00:00
rods%netscape.com
7b58da0cad Should set PrintObject to print "AsIs" if it doesn't have children
Bug 83683 r=kmcclusk r=attinasi


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103440 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 12:52:06 +00:00
ssu%netscape.com
ce6add0fed fixing bug 99526 - update uninstaller to be able to undo the new MAPI settings set by mail. r=dveditz, sr=mscott. affects windows platforms only.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103435 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 06:33:46 +00:00
ssu%netscape.com
b7a27c33db fixing bug 9614 - Default the Turbo checkbox to be unselected in installer. r=curt, sr=dveditz.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103433 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 06:22:28 +00:00
naving%netscape.com
078783926a 95584 r=bienvenu sr=mscott. Made it so that downloading messages and compacting folder do not
write each others data.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103432 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 05:50:17 +00:00
mscott%netscape.com
dcc28801e7 Landing 89950 on the branch for varada.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103431 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 05:32:24 +00:00
mscott%netscape.com
3f5a2e8a5c Landing 99234 on the branch.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103430 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 05:29:02 +00:00
rangansen%netscape.com
0c3eee476f r=rangansen sr=kin@netscape.com
PDT + = Jaime Rodriguez, Jr.
bug# 100193 - updating PSM version


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103424 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 04:35:55 +00:00
ducarroz%netscape.com
858763d06d Fix for bug 88079. In the case we fetch a local file, verify that the file path is a valid file and not a directory. R=varada, SR=bienvenu
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103417 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 03:53:53 +00:00
sspitzer%netscape.com
ede0c5ab73 fix for #59449 for branch. prevent case where we show the news message source (instead of the message)
because we're using a bad nsNNTPProtocol from the connection cache. a=PDT


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103416 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 03:44:13 +00:00
srilatha%netscape.com
9c28bc6229 Fix for bug # 100645. NextToken returns UTF8 instead UCS2
r=dmose, sr=alecf, a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103415 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 03:43:38 +00:00
dbaron%fas.harvard.edu
f6eb933aec Fix topcrash bug 99057 (crash @ GetExtensionsAndDescriptionFromMimetypesFile). Patch from bzbarsky@mit.edu. r=me sr=scc
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103411 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 03:17:12 +00:00
bnesse%netscape.com
0a6a9fd629 Fix for bug 80789. Change rot value from 7 to 13 for config file obfuscation. r=bnesse, sr=alefc. Checking in for chipc.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103409 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 03:08:50 +00:00
sfraser%netscape.com
627a2fa5d3 Fix for bug 96160, checking in for ftang. r=yokoyama, sr=sfraser, a=asa, sa=ptd2. Don't crash if we fail to get an i18n system resource.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103394 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 01:19:00 +00:00
(no author)
8bad31c580 This commit was manufactured by cvs2svn to create branch
'MOZILLA_0_9_4_BRANCH'.

git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103393 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 01:17:00 +00:00
brendan%mozilla.org
973a138490 Join fixes for 81847 to the branch, with pdt approval.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103384 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-21 00:14:10 +00:00
srilatha%netscape.com
766d65fa78 Fix for smoketest blocker bugscape bug 9703.
r=dmose, sr=sspitzer a=granrose.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103379 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-20 23:34:31 +00:00
karnaze%netscape.com
2bed6f7a2b bug 68998 - added additional param to Paint, PaintChildren, PaintChild used by tables in standard mode. sr=waterson, r=alexsavulov.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103316 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-20 13:56:45 +00:00
rods%netscape.com
1db6f7b7c8 Make the default "submit"
Bug 59035 r=kmcclusk sr=attinasi


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103298 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-20 10:46:40 +00:00
srilatha%netscape.com
3ee4597b02 Fix for bug 95122 / 100668. part of the simple mapi UI checkin
sr=sspitzer. Fixing the js error and removing extra content from contents.rdf


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103278 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-20 05:15:19 +00:00
loadrunner%betak.net
a4a473d518 bug 97541, Enable multiple spellcheckers in mail/composer, r=cmanske, sr=kin, PDT+
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103274 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-20 04:40:24 +00:00
loadrunner%betak.net
6a6ab4e28f bug 97541, Enable multiple spellcheckers in mail/composer, r=cmanske, sr=kin, PDT+
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103272 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-20 04:31:53 +00:00
blakeross%telocity.com
a3e9b17f10 Turbo turns off if you go to the advanced panel and press ok without making any changes (99677). r=hewitt sr=ben everything+
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103269 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-20 04:01:01 +00:00
naving%netscape.com
253a49cd77 98391 r=bienvenu sr=sspitzer a=pdt. Made it so that the filtering still works to a local folder if
parent is renamed. The fix also includes the fix for 98470 because it is in the same code.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103267 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-20 03:53:07 +00:00
ccarlen%netscape.com
cd21c03664 Bug 99117 - account creation problems when using turbo mode. UnloadAccounts() resets some vars which needed to be reset and weren't. r=bhuvan,dp/sr=mscott/a=pdt
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103260 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-20 02:20:08 +00:00
cltbld%netscape.com
cf126e08a2 #91990: changing default skin from 'classic/1.0' to 'modern/1.0' on MOZILLA_0_9_4_BRANCH (now owned by Netscape) r=jelwell, sr=sdagley.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103246 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-20 00:47:09 +00:00
ftang%netscape.com
d5205a0cbe move fix of 94319 from m92 branch to m94 branch per marek in pdt
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103240 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-20 00:15:02 +00:00
kin%netscape.com
44f8952c2b Fix for bug #92215: [Table Printing] Mozilla crashes when printing the front page of slashdot
Modified nsBlockFrame::ReflowDirtyLines() so that it
removes any floaters on it's continuing frames list,
if they are on lines that are being pulled up.

r=dbaron@fas.harvard.edu  sr=waterson@netscape.com   a=pdt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103235 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-19 23:10:21 +00:00
ducarroz%netscape.com
b4356e037d Fix for bug 96386. When a generic or unknown error occures while posting a message, we should report a post error instead of a send error. Also, the send unsent message listener should not display errors. Finally, the Display Send Report function should avoid displaying twice the same string. R=varada, sr=mscott
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103234 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-19 23:06:59 +00:00
gordon%netscape.com
dc98e60ad1 FIX bug 100216, crash in nsCacheService on shutdown. Added null pointer
check in nsCacheEntryDescriptor::RequestDataSizeChange(). r=gagan, sr=darin.

Also renamed cache directory preference per discussion in bug 78480. r=gagan
sr=darin.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103224 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-19 21:25:47 +00:00
jfrancis%netscape.com
12b282edd2 fixes 97797: empty solo list item won't indent. Changes to nsHTMLEditRules::WillMakeList() to not outsmart itself so badly. r=fm;sr=kin
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103223 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-19 20:57:12 +00:00
bnesse%netscape.com
9dc2508915 Landing fix for bug 92447 on branch. Internalize .cfg reading into prefs library. This also re-enables reading of the .cfg file which was broken by a checkin for bug 88844. r=miteh, sr=sfraser, a=PDT.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103209 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-19 18:47:32 +00:00
rpotts%netscape.com
913974ff70 bug #88229. moving patch from the 0.9.2 branch onto 0.9.4.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103186 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-19 06:58:34 +00:00
jst%netscape.com
a611c3fa27 Fixing bug 95840. Speeding up global property access in JS. r=mstoltz@netscape.com, sr=vidur@netscape.com, a=PDT
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103185 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-19 06:53:42 +00:00
mitesh%netscape.com
e2f91e0eef Fix for bug 99515 - AutoConfig event loop hangs during pref migration
r=danm and sr=alecf


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103182 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-19 05:08:18 +00:00
mitesh%netscape.com
e9812af9dd Fix for bug 97228 - Multiple appends of email addresses to the autoconfig URL
r=bnesse and sr=shaver


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103181 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-19 04:55:13 +00:00
kmcclusk%netscape.com
9391a7135e Protect against null view in nsViewManager::ProcessPendingUpdates. sr=mscott@netscape.com r=peterl@netscape.com a=jaimejr@netsca
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103166 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-19 01:33:20 +00:00
rangansen%netscape.com
ed6ff1f297 r=ddrinan sr=sr=kin@netscape.com PDT+=Jaime Rodriguez, Jr.
bug# 97719 - fixing broken crl expired warning dialog


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103165 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-19 00:56:23 +00:00
pinkerton%netscape.com
c8b90827ed work around bugs in CarbonLib's ::MenuSelect() with submenus. r=saari/sr=sfraser. bug#83639
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103163 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-19 00:42:07 +00:00
mscott%netscape.com
32e5e46df0 Landing 99491 onto the branch
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103152 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-19 00:09:14 +00:00
harishd%netscape.com
8f3d1f533b 98187 - Make sure that the end tag, inline element, does not close tags in the root tag list. r=heikki,sr-vidur,a=PDT.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103148 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-19 00:03:11 +00:00
mscott%netscape.com
68683e8186 Landing 91751 on the branch.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103144 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 23:59:30 +00:00
bienvenu%netscape.com
5226e443c4 fix regression in downloading messages for offline use and disabling commands when local message is loaded while offline r=naving, sr=sspitzer 99696 100124
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103143 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 23:49:51 +00:00
dp%netscape.com
1ffe13a4bb removing ^M at the end of line
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103141 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 23:47:34 +00:00
pchen%netscape.com
3aa4e8ee82 bugscape 8850, r=jag, sr=alecf, new mainWindow.dtd file that holds mainWindow* entities
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103140 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 23:44:24 +00:00
pchen%netscape.com
95fdb80ac3 bugscape 8850, r=jag, sr=alecf, bump minimum macos version to 8.6
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103139 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 23:43:39 +00:00
pchen%netscape.com
592d631348 buscape 8850, r=jag, sr=alecf, include mainWindow.dtd to get mainWindow entities
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103138 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 23:43:36 +00:00
pchen%netscape.com
5ad63473b5 buscape 8850, r=jag, sr=alecf, remove mainwindow entities from navigator.dtd (they're going into mainWindow.dtd)
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103137 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 23:43:33 +00:00
pchen%netscape.com
ca2930fef6 bugscape 8850, r=jag, sr=alecf, add mainWindow.dtd to jar file
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103136 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 23:43:29 +00:00
pchen%netscape.com
e042778097 bugscsape 8850, r=jag, sr=alecf, include mainwindow.dtd
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103135 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 23:43:26 +00:00
heikki%netscape.com
48e8dc3afe Bug 100106, XMLHttpRequest.responseText is empty if XML parser error. r=harishd, sr=vidur.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103134 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 23:43:08 +00:00
dp%netscape.com
ee5b88f504 bug 88844 preventing xpcom from double init on launch after turbo mode is enabled. Getting turbo mode initialized properly. r=law, sr=alec,seth
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103133 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 23:41:21 +00:00
heikki%netscape.com
da4c1220ad Bug 98597, second part, bogus events with XMLHttpRequest. Patch from vidur. r=heikki, sr=jst.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103132 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 23:37:22 +00:00
harishd%netscape.com
5d20e95a61 98645 - Added SELECT to the set of tags that cannot be crossed over when an end tag ( block-level ) tries to close it's matching open tag on the stack. r=heikki, sr=vidur,a=PDT
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103129 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 23:30:53 +00:00
harishd%netscape.com
1518265a7a 91744 - Avoid stack overflow by replacing recursion with a simple do-while. Removed unwanted assertions. r=heikki,sr=vidur,a=PDT
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103127 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 23:25:32 +00:00
yokoyama%netscape.com
8c85e4fcf1 bug 97224:Update UTF-8 for Unicode 3.01 conformance
maintaining a byte count.
/r=yokoyama, /sr=waterson


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103097 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 17:35:58 +00:00
bienvenu%netscape.com
e53aec46d1 checking in fix for 99510 from trunk
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103095 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 13:59:07 +00:00
(no author)
6887bc1966 This commit was manufactured by cvs2svn to create branch
'MOZILLA_0_9_4_BRANCH'.

git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103094 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 13:41:48 +00:00
peterv%netscape.com
9b5877a83a Fix for bug 99044 (Big memory leak in DOMHelper.cpp). r=Pike, sr=jst.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103085 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 10:12:28 +00:00
peterv%netscape.com
ba09c542b2 Fix for bug 85708 (Should support "text/xml" MIME media type). r=Pike, sr=jst.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103084 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 10:10:41 +00:00
srilatha%netscape.com
a66b153c53 Fix for bug # 95122. UI implementation for Simple MAPI.
r=rdayal, sr=sspitzer


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103081 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 05:48:42 +00:00
bienvenu%netscape.com
e65919336e checking in fix for 79245 from the trunk
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103077 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 04:52:24 +00:00
rpotts%netscape.com
e2f1a9bc9b bug #98844. Moving this patch over to 0.9.4 from 0.9.2...
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103076 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 04:33:15 +00:00
rpotts%netscape.com
c9465eb348 bug #98469 (r=pavlov@netscape.com, sr=jst@netscape.com, a=pdt). The _content window target does not always exist...
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103075 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 04:29:40 +00:00
jst%netscape.com
e45ffff2a7 Landing the fix for bug 98292 on the branch, implement image.x and .y. r=jrgm@netscape.com, sr=blizzard@mozilla.org
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103073 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 03:51:47 +00:00
bienvenu%netscape.com
c9bf14bd6f more landing of 81690 onto the branch
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103071 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 03:27:53 +00:00
waterson%netscape.com
2c7c8fa4ac Bug 97383. Include the float's max-element-width in computation of the line's max-element-width so that we're guaranteed to place content next to a left floater. Revert some of the NOWRAP changes that should no longer be necessary. r=dbaron, sr=attinasi, a=jaimejr
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103070 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 03:26:26 +00:00
mscott%netscape.com
7910b2e903 Landing XBL brutal sharing on the branch
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103066 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 02:30:04 +00:00
mscott%netscape.com
bda5786937 Landing XBL brutal sharing on the branch.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103065 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 02:29:29 +00:00
srilatha%netscape.com
bd8d4b80bc removing these old unused files
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103063 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 02:21:17 +00:00
oeschger%netscape.com
a9f8eb5255 updating some screenshots in the help content, bug=85925, pdt-stamped, author=jatin, r=oeschger
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103061 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 02:14:53 +00:00
heikki%netscape.com
a19dc671ba Bug 98597, bogus event with XMLHttpRequest, including crasher fix. Patch from vidur. r=heikki, sr=jst.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103053 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 01:00:22 +00:00
heikki%netscape.com
214d0bb707 Bug 78021, Copy Link Address broken for image maps (<area> elements), <link> elements and simple XLinks. r=harishd, sr=vidur.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103051 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 00:48:06 +00:00
attinasi%netscape.com
da71dddcd1 Fix for percentage-height images in shrink-wrapping containers. b=85016 r=karnaze sr=waterson a=pdt
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103050 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 00:38:15 +00:00
ducarroz%netscape.com
c01dd3e2f6 Fix for bug 97256. Don't be case sensitive when checking for a RFC822 header!
Patch provided by Denis Antrushin <adu@sparc.spb.su>. R=ducarroz, SR=sspitzer


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103049 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 00:29:46 +00:00
kin%netscape.com
a1945a4b37 Fix for bug 98018: Impossible to delete text in textbox
nsEditor::CreateTxnForDeleteInsertionPoint() shouldn't
use count-1 when calculating isLast, in the non-text case.

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


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103047 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 00:18:34 +00:00
harishd%netscape.com
d6c7837d7e 98261 - Instead of throwing away the current tag close it's parent such that the stack level does not go beyond the reflow depth limit. This would allow leaf tags, that follow the current tag, to find the correct node. r=heikki, sr=attinasi.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103046 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 00:11:27 +00:00
harishd%netscape.com
7ab11a2910 98261 - reconcile the difference between the ContentSink's notion of depth and Layout's notion of depth. r=heikki, sr=attinasi.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103045 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-18 00:11:16 +00:00
sspitzer%netscape.com
918aedd742 fix for #98793. hack to pre-cache the unread / read / flagged / unflagged icons to work around a problem
between outliner and imagelib.  a=PDT/


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103037 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-17 23:41:16 +00:00
hewitt%netscape.com
3a6dcacb77 99102 - update skin versions in all contents.rdf, r=hyatt, sr=blake
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103036 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-17 23:40:50 +00:00
mscott%netscape.com
5d4c9c03c9 Landing 81690 on the branch for bienvenu.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103033 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-17 23:23:07 +00:00
mscott%netscape.com
1665532f16 Landing 84260 and 91352 onto the branch for bienvenu.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103031 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-17 23:20:33 +00:00
mscott%netscape.com
11f1c99c39 Landing Bug #96335 on the branch for bienvenu.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103030 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-17 23:17:34 +00:00
mscott%netscape.com
afd88479d3 Landing Bug #96631 on the branch for bienvenu.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103029 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-17 23:15:46 +00:00
attinasi%netscape.com
7168d1a8c3 Fixing erroneous addition to previously reviewed and approved patch: b=97619 r=bernd sr=waterson
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103028 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-17 23:14:43 +00:00
mscott%netscape.com
964dde1cad Landing Bug #99228 on the branch for bienvenu.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103027 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-17 23:13:44 +00:00
av%netscape.com
90e92c729e Fixing bug 98285 -- adding access to the service manager from plugins, r=beard, sr=vidur
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103024 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-17 23:02:32 +00:00
sspitzer%netscape.com
9c8e527cba fix for #98381. "Server:" -> "Account:" in subscribe UI. a=PDT,mcarlson
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103022 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-17 22:41:16 +00:00
tao%netscape.com
ccb1e2fd37 71517: Dynamically select platform jar in langxxxx.xpi. (r=jbetak,sr=mscott)
package en-{unix,win}.jar on mac, too.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103021 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-17 22:40:46 +00:00
gordon%netscape.com
d326ebbdba Fix bug 88768, [a=nisheeth], fixing unary operator usage.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103016 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-17 20:49:42 +00:00
mscott%netscape.com
5662ee8b97 Bug #99222 --> for compose auto complete, don't show the popup if we have an exact
match.
r=ducarroz
sr=sspitzer


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103013 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-17 20:36:29 +00:00
mscott%netscape.com
34fd65e72e Bug #99222 --> make the widget flexible enough to only show the popup if
there are  a certain # of results present in the list.
r=sspitzer
sr=hewitt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103012 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-17 20:35:02 +00:00
mscott%netscape.com
1619de5a13 Bug #88315 --> select the first partial match when presented with multiple matches
r=ducarroz, sspitzer
sr=hewitt


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103009 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-17 20:32:31 +00:00
hyatt%netscape.com
cef8df4890 Fix for 96899, unable to see addresswes when scrolling up in mailcompose. r=mscott, sr=brendan
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103007 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-17 20:24:30 +00:00
sspitzer%netscape.com
c5d40fbb22 fix for #97585. if signature file pref points to a directory, don't hang
on msg compose. a=PDT


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103005 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-17 19:39:18 +00:00
sspitzer%netscape.com
c6e4cd4a0c fix for #98453. use "Mail & Newsgroups" consistently in the UI.
a=PDT,mcarlson


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@103002 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-17 19:25:33 +00:00
kaie%netscape.com
a0da673610 b=97614
Merging changes from NSS_CLIENT_TAG into MOZILLA_0_9_4_BRANCH for directory mozilla/security/nss.
a=pdt is covered by bug 96018


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102966 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-15 01:18:52 +00:00
cavin%netscape.com
6915c9b64f Bug #98294: In DiscoverChildren(), make sure we have a consistent server hierarchy delimiter. r=sspitzer, sr=mscott.
Bug #98433: In GetListOfFoldersWithPath(), if the folder path contains 'INBOX' of any forms, we need to convert it to uppercase before finding it under the root folder. r=naving, sr=mscott.
Bug #99101: In RenameLeaf(), unescape the folder name before searching for hierarchy delimiter (to figure out parent pathname). r=naving, sr=bienvenu.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102961 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-15 00:31:07 +00:00
pierre%netscape.com
d4ddf5b901 Bug 93371 "Treat classes case insensitively in quirks mode". Back out ianh's patch in nsCSSParser and nsHTMLAttributes. Implements case-insensitiveness in nsCSSStyleSheet as described in bug 35522. r=glazman (+dbaron/jst), sr=hyatt, a=grega for PDT/asa for drivers
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102959 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-14 23:52:15 +00:00
ssu%netscape.com
bec02d74b7 fixing bug 99340's part regarding turbo settings in installer not retained when running installer in silent/auto modes. r=dveditz,syd sr=mscott, a=pdt+ affects windows platforms only.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102938 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-14 20:54:54 +00:00
kaie%netscape.com
fbf8f97a35 b=96018 r=ddrinan sr=blake a=pdt
New "Reset Master Password" functionality, for users who have forgotten their password.

b=99525 r=ddrinan/morse/relyea sr=blizzard a=pdt
Completing feature added with bug 96018.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102931 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-14 20:36:20 +00:00
cotter%netscape.com
9f0ad3c850 privacy & security help updates per b=85925 (a=asa, r=oeschger) and b=96018 (PDT+)
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102930 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-14 20:34:02 +00:00
(no author)
7cb1660860 This commit was manufactured by cvs2svn to create branch
'MOZILLA_0_9_4_BRANCH'.

git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102925 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-14 20:19:30 +00:00
gerv%gerv.net
cb6a00d0dd Prevent problems with NS initial start page appearing, by renaming pref. Bug 99441. r=syd, gerv, sr=jband, a=asa. This will be backed out immediately after 0.9.4 ships.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102880 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-13 17:53:45 +00:00
gerv%gerv.net
19a5fead7d Prevent problems with NS initial start page appearing, by renaming pref. Bug 99441. r=syd, gerv, sr=jband. This will be backed out immediately after 0.9.4 ships.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102878 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-13 16:57:41 +00:00
law%netscape.com
62f334a0a2 Applying fixes for bug 88844 and bug 89532 to the mozilla0.9.4 branch.
These changes also fix some other minor turbo-mode bugs.
These changes have all been reviewed and super-reviewed prior to being
checked in on the trunk; see the bugs for details.

a=asa for applying the fix to the branch.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102867 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-13 12:01:25 +00:00
ssu%netscape.com
102a2724fa fixing bug 99340 - Installer dies with error 2 under Win9x. r=syd,dveditz sr=mscott a=asa. not part of tinderbox builds. affects windows installers only.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102833 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-12 20:59:48 +00:00
brendan%mozilla.org
a5cae88f2e Checking in bstell@netscape.com's patch for bug 95906, r=jag, sr=me, a=asa.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102826 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-12 20:36:53 +00:00
cmanske%netscape.com
e327210730 Fixing dataloss bug 98768, r=syd, sr=kin, a=roc+moz
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102817 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-12 19:21:33 +00:00
blizzard%redhat.com
80626e227e Fix bug #97620. Crash unloading -turbo mozilla from tray icon. r/sr=ben,rpotts,brendan,me
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102816 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-12 19:11:20 +00:00
kaie%netscape.com
adf70abbbb b=99052 r=nelsonb a=asa on irc
Fix crash in NSS during SSL handshake


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102806 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-12 16:17:01 +00:00
blakeross%telocity.com
498ce0aaf9 Committing a file I forgot yesterday in an r/sr/a'd checkin (caused an xml error when opening the addressbook sidebar panel).
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102780 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-12 01:00:14 +00:00
shanjian%netscape.com
5e0af0ccdd #90581 universal charset detector does not work in mail/news
r=yokoyama, sr=waterson, a=roc+moz


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102779 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-12 00:37:53 +00:00
waterson%netscape.com
de0910f6ee Bug 72152. Be sure to update the pres context's visible area after doing a resize reflow. r=dbaron, sr=attinasi, a=blizzard
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102765 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-11 22:24:01 +00:00
timeless%mac.com
b61fa5b60e Bugzilla Bug 85543 Extra blank box to the left of 'Done.' on mac classic skin.
r=ksosez sr=blake a=asa


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102753 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-11 08:52:58 +00:00
jaggernaut%netscape.com
8efa6975cc Bug 91884, 91788 & 91571: reverting code from 91884 and checking in the fix we had in NS 6.1 / 0.9.2.1. r=reverting code, sr=hyatt, a=asa
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102750 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-11 07:29:39 +00:00
peterlubczynski%netscape.com
9695eac077 Use memmove instead of strncpy bug 98705 r=av sr=attinasi a=roc+moz
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102735 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-11 03:28:00 +00:00
cmanske%netscape.com
fbb7e7472a New strings needed in case full fix for bug 72583 is approved, r=brade, sr=kin, a=grega
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102717 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-11 00:59:05 +00:00
leaf%mozilla.org
32f3806bf0 mac version update and user agent string update, bug 93164, sr=mscott, a,r=dbaron
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102710 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-11 00:28:38 +00:00
syd%netscape.com
3fbb2b5028 Fix typo in last checkin, wanted "Quick Launch", not "QuickLaunch"
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102709 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-11 00:17:32 +00:00
syd%netscape.com
373281325e Commercial addition for bug 97380. Looking at the bug, appropriate reviews and
such have been given for the mozilla version. Also, bug number 98594.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102707 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-11 00:04:56 +00:00
attinasi%netscape.com
07d3891457 Fix for image wrapping problems in table cells. b=97619 r=bernd sr=waterson
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102689 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-10 22:57:07 +00:00
blakeross%telocity.com
ce34146fa4 App sometimes hangs when scrolling addressbook panel (99121). r=hwaara,varada sr=sspitzer a=asa
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102677 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-10 22:03:47 +00:00
dbaron%fas.harvard.edu
2e1a9bce6d Null checks for topcrash 99056. r=jag sr=waterson a=asa
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102673 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-10 21:45:40 +00:00
dbaron%fas.harvard.edu
e68b30e16e Null check to fix topcrash 97226. r=hixie sr=waterson a=asa
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102672 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-10 21:43:32 +00:00
robinf%netscape.com
f75f2c964a routine help updates per bug 85923; r=oeschger@netscape.com, a=adot@netscape.com
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102660 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-10 20:29:07 +00:00
oeschger%netscape.com
3cc3b02e9f adding help key for content updates, a=asa, bug=85925, r=cotter
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102625 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-10 00:55:46 +00:00
cls%seawood.org
43082cc7d3 Replace cat<<EOF with echos to avoid potential security risk with predictable /tmp files.
Thanks to Ashu Kulkarni <ashuk@eng.sun.com> for the patch.
Bug #98723 r=cls a=blizzard


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102593 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-08 19:16:27 +00:00
yokoyama%netscape.com
84ca3e46fc Bug 91193
makefile.win change
renaming from universalautochrdet.dll to universalautochardet.dll
/r=ftang;/sr=waterson;/a=asa


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102557 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-07 23:06:12 +00:00
waterson%netscape.com
b71a0d4153 Bug 55086. Change nsContainerFrame::PositionFrameView() to position child views. Eliminate the |aView| parameter from that method, because the view can be retrieved from the frame and need not be done by the caller. Eliminate the NS_FRAME_NO_MOVE_CHILD_VIEWS flag, which was read-only; i.e., never set by anyone. r=dbaron, sr=attinasi, a=asa.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102541 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-07 21:21:25 +00:00
sspitzer%netscape.com
88232d9b3d fix for #98660. don't call PR_GetEnv("PARSE_MODE") a bunch of times if we don't have to.
r=dbaron, sr=sfraser, a=blizzard


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102537 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-07 20:36:15 +00:00
axel%pike.org
8532c1fd58 bug 94834, --without-png and --without-mng leads to DIRS=' ', r=pavlov, sr=jst, a=asa
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102523 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-07 10:16:49 +00:00
attinasi%netscape.com
18603b97ef two approved bugs:
1) prevent list item bullets from resizing in Quirks mode (IE compat). b=97351 r=pierre sr=waterson a=drivers
2) fix collapsing margins of empty elements in BODY and TD in Quirks mode. b=97361 r=pierre sr=hyatt a=drivers


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102513 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-07 04:10:39 +00:00
bstell%netscape.com
137b5e30b9 bug 97533, patch by dbaron@fas.harvard.edu, r=bstell, sr=blizzard
check return status from getIntPref


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102512 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-07 04:06:54 +00:00
kaie%netscape.com
574b31e2c7 b=87578 r=ddrinan sr=blizzard a=asa
Enable a user to use (or switch to) an empty security password, i.e. no password at all.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102490 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-07 00:05:22 +00:00
kaie%netscape.com
e127df6817 b=93103 r=ddrinan/relyea sr=blizzard a=asa
Enable display of complete chains when viewing certificates.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102488 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-06 23:54:06 +00:00
shanjian%netscape.com
1b9e0a9dbb #97516 crash in nsRenderingContextWin::GetWidth() in certain situation
r=rbs, sr=waterson, a=asa


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102482 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-06 23:12:42 +00:00
pinkerton%netscape.com
4c002b41db allow changing of the label of a submenu. r=saari/sr=smfr/a=asa. bug# 97549.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102476 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-06 22:49:55 +00:00
waterson%netscape.com
1b7655115b Bug 98456. Fix makefile so that meta-modules build. r=dp, sr=cls, a=asa.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102466 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-06 21:54:43 +00:00
gerv%gerv.net
3b9e749579 Set start page override and home page to be http://www.mozilla.org/start , a page encouraging people to get involved with Mozilla. r,a=asa.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102463 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-06 21:44:35 +00:00
jj%netscape.com
9ede8deaa5 #4830: turning traceback off in optimized builds on MOZILLA_0_9_4_BRANCH
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102462 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-06 21:43:19 +00:00
kin%netscape.com
c926a9ad82 Fix for bug #97387: WRMB:iframe with frameborder="no" does not work
Call ParseFrameborderValue() with value returned from InNavQuirksMode(),
instead of hardcoded PR_TRUE.

r=karnaze@netscape.com  sr=attinasi@netscape.com  a=asa@mozilla.org


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102439 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-06 20:13:46 +00:00
varada%netscape.com
d63d20c4e9 fix for bug#82120;disable editable fields during sending of mail;r=cmanske;sr=sspitzer;a=asa
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102432 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-06 19:22:37 +00:00
cotter%netscape.com
87a35d18c4 privacy & security help content update per b=85925, a=asa, r=oeschger
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102427 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-06 19:08:50 +00:00
cotter%netscape.com
58bb911f81 privacy & security help content updates per b=85925, a=asa, r=oeschger
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102426 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-06 19:01:41 +00:00
dbaron%fas.harvard.edu
1fc4f6cf6d Fix topcrash bug 96563 by reading only the number of characters of string that we have, rather than double that number. r=pavlov sr=blizzard a=asa
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102411 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-06 16:16:13 +00:00
karnaze%netscape.com
1322ba0abd bug 95688 - check for null base url, possibly fixing talkback reported errors, sr=kin, r=alexsavulov
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102408 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-06 14:13:17 +00:00
blizzard%redhat.com
276b070725 Bug #97851. Fix security permissions on temporary file created when doing file uploads. r=pete, sr=waterson, a=dbaron
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102389 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-06 06:09:09 +00:00
jst%netscape.com
d1ebb0777f Fixing bug 62613. Making CSSStyleDeclaration objects appear as arrays in JS. patch by Fabian <hidday@geocities.com>, r=harishd@netscape.com, sr=jst@netscape.com, a=asa@mozilla.org
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102387 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-06 05:30:42 +00:00
mkaply%us.ibm.com
c5fed3e06b No bug
r=mkaply, sr=blizzard, a=asa for drivers
OS/2 only - code from javier - more font improvements - better scaling and text zoom for bitmap fonts


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102382 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-06 03:59:10 +00:00
mkaply%us.ibm.com
19d0f57a0f No bug
r=mkaply, sr=blizzard, a=asa for drivers
OS/2 only - Got these reversed - on OS/2, NEWFRAME is used at the end of a page, not the beginning


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102381 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-06 03:58:24 +00:00
jband%netscape.com
93c47a625f fix bug 97444. It is not good to patch a different fun into the frame. Let's safely shunt aside the callee frame instead. This is already on in the trunk. r=rogerl sr=brendan a=asa.
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102370 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-06 02:18:43 +00:00
brendan%mozilla.org
4892be5264 Don't cache chrome scripts unless their master document URL is chrome too (we need the prototype cache to root the script objects; 98207, sr=jband&waterson, a=asa).
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102368 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-06 02:01:40 +00:00
av%netscape.com
703d584111 Fix for bug 86642 -- crash in DOMMimeTypeImpl::DOMMimeTypeImpl() when plugin doesn't set some fields in its version stamp, r=peterl, sr=attinasi, a=asa
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102346 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-06 00:04:31 +00:00
yokoyama%netscape.com
65b6908093 Bug 96318:
Fixing accident removal of nsIFontPackageService
/ftang;/sr=waterson;/a=asa


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102345 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-06 00:01:37 +00:00
peterlubczynski%netscape.com
9e99e7738f Fix for not setting reflow state on object frame in printing case bug 97563 r=av sr=attinasi a=asa
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102298 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-05 14:51:43 +00:00
cls%seawood.org
055359c675 Updating module dependencies caused by checkin for bug 97380
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102290 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-05 08:41:48 +00:00
cls%seawood.org
7301a8096a Deactivate sidebar panels when the panel is not selected.
Special thanks to matt@netscape.com for providing this patch.
Bug #53239 r=cls sr=ben a=asa


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102286 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-05 07:58:16 +00:00
sspitzer%netscape.com
4c2fcd5edd fix for #88970. new thread pane icons. r,sr=sspitzer,hewitt, a=asa
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102280 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-05 07:04:32 +00:00
sspitzer%netscape.com
16f4fe9967 fix for #92429. new alert icons. sr=hewitt, a=asa
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102279 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-05 07:03:45 +00:00
edburns%acm.org
fda7a2186a bug=97930
r=peterl
sr=waterson
a=asa


modules/plugin/base/src/nsIPluginInstanceOwner.h
modules/plugin/base/src/nsPluginHostImpl.cpp
modules/plugin/base/src/nsPluginHostImpl.h
modules/plugin/base/src/nsPluginViewer.cpp
modules/oji/src/nsJVMManager.cpp
modules/oji/src/nsJVMManager.h
layout/html/base/src/nsObjectFrame.cpp
xpfe/global/resources/locale/en-US/region.properties


Here's what I did to fix this bug.

I pestered Rick Potts about the problem of
nsIWebBrowserChrome->SetStatus() not being synchronous. He fixed that
under bug 97227.

Taking advantage of Rick's fix to 97227, I modified
nsIPluginInstanceOwner to have new method, ShowStatus(const PRUnichar
*aStatusMsg). This is necessary to allow for localized messages to be
posted from the plugin, such as "Starting plugin for type
application/x-java-vm" or "Beginnen steckbar für Art
application/x-java-vm".

I modified all the implementations of nsIPluginInstanceOwner:

layout/html/base/src/nsObjectFrame.cpp
modules/plugin/base/src/nsPluginViewer.cpp

I inserted a call to nsIPluginInstanceOwner->ShowStatus() at the part
just before the big "whole damn app freezes when starting java" thing
happens.

I also modifed nsJVMManager.cpp ShowJavaConsole() to do the same. These
are the two places I know of now that can start java.


git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102274 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-05 06:40:01 +00:00
ftang%netscape.com
90bc0fe117 fix bug 98233. back out change to 56863
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102245 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-05 01:23:06 +00:00
leaf%mozilla.org
3f49f9c396 pull from the branch
git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102215 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-04 22:58:51 +00:00
(no author)
ab3d5d6cb7 This commit was manufactured by cvs2svn to create branch
'MOZILLA_0_9_4_BRANCH'.

git-svn-id: svn://10.0.0.236/branches/MOZILLA_0_9_4_BRANCH@102203 18797224-902f-48f8-a5cc-f745e15eee43
2001-09-04 05:25:09 +00:00
133 changed files with 1113 additions and 193744 deletions

View File

@@ -0,0 +1,18 @@
# List of modules to check out. Format is
# module, (tag), (date)
# where tag and date are optional (non-trailing commas are required)
#
# Examples:
# mozilla/nsprpub, NSPRPUB_CLIENT_TAG
# mozilla/gc, , 10/25/2000 12:00:00
#
mozilla/nsprpub, NETSCAPE_6_2_2_RELEASE
mozilla/security/nss, NETSCAPE_6_2_2_RELEASE
mozilla/security/manager, NETSCAPE_6_2_2_RELEASE
mozilla/accessible, NETSCAPE_6_2_2_RELEASE
DirectorySDKSourceC, NETSCAPE_6_2_2_RELEASE
mozilla/lib/mac/Instrumentation, NETSCAPE_6_2_2_RELEASE
mozilla/gfx2, NETSCAPE_6_2_2_RELEASE
mozilla/modules/libpr0n, NETSCAPE_6_2_2_RELEASE
SeaMonkeyAll, NETSCAPE_6_2_2_RELEASE

518
mozilla/client.mak Normal file
View File

@@ -0,0 +1,518 @@
# 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=.
!if !defined(MOZ_TOP)
#enable builds from changed top level directories
MOZ_TOP=mozilla
!endif
MOZ_SRC_FLIPPED = $(MOZ_SRC:\=/)
MOZ_DIST_FLIPPED = $(MOZ_SRC_FLIPPED)/mozilla/dist
!ifdef MOZ_DEBUG
MOZ_OBJDIR = WIN32_D.OBJ
!else
MOZ_OBJDIR = WIN32_O.OBJ
!endif
#
# Command macro defines
#
#//------------------------------------------------------------------------
#// Figure out how to do the pull.
#//------------------------------------------------------------------------
# uncomment these, modify branch tag, and check in to branch for milestones
MOZ_BRANCH=NETSCAPE_6_2_2_RELEASE
NSPR_CO_TAG=NETSCAPE_6_2_2_RELEASE
PSM_CO_TAG=NETSCAPE_6_2_2_RELEASE
NSS_CO_TAG=NETSCAPE_6_2_2_RELEASE
LDAPCSDK_CO_TAG=NETSCAPE_6_2_2_RELEASE
ACCESSIBLE_CO_TAG=NETSCAPE_6_2_2_RELEASE
IMGLIB2_CO_TAG=NETSCAPE_6_2_2_RELEASE
GFX2_CO_TAG=NETSCAPE_6_2_2_RELEASE
!ifdef MOZ_BRANCH
CVS_BRANCH=-r $(MOZ_BRANCH)
HAVE_BRANCH=1
!else
HAVE_BRANCH=0
!endif
!ifdef MOZ_DATE
CVS_BRANCH=-D "$(MOZ_DATE)"
HAVE_DATE=1
!else
HAVE_DATE=0
!endif
!if $(HAVE_DATE) && $(HAVE_BRANCH)
ERR_MESSAGE=$(ERR_MESSAGE)^
Cannot specify both MOZ_BRANCH and MOZ_DATE
!endif
# default pull is "quiet" but it can be overridden with MOZ_CVS_VERBOSE
!ifndef MOZ_CVS_VERBOSE
CVS_FLAGS=-q
!endif
# honor any user-defined CVS flags
!ifdef MOZ_CVS_FLAGS
CVS_FLAGS=$(CVS_FLAGS) $(MOZ_CVS_FLAGS)
!endif
# let's be explicit about CVSROOT... some windows cvs clients
# are too stupid to correctly work without the -d option
#
# if they are too stupid, they should fail. I am
# commenting this out because this does not work
# under 4nt. (%'s are evaluted differently)
#
# If it breaks you, mail dougt@netscape.com
# and leaf@mozilla.org
#
!if 0
!if defined(CVSROOT)
CVS_FLAGS=$(CVS_FLAGS) -d "$(CVSROOT)"
!endif
!endif
!ifndef MOZ_CO_FLAGS
MOZ_CO_FLAGS = -P
!endif
CVSCO = cvs $(CVS_FLAGS) co $(MOZ_CO_FLAGS) $(CVS_BRANCH)
#//------------------------------------------------------------------------
#// Figure out how to pull NSPR.
#// If no NSPR_CO_TAG is specified, use the default static tag
#//------------------------------------------------------------------------
!ifndef NSPR_CO_FLAGS
NSPR_CO_FLAGS=$(MOZ_CO_FLAGS)
!endif
!if "$(NSPR_CO_TAG)" != ""
NSPR_CO_FLAGS=$(NSPR_CO_FLAGS) -r $(NSPR_CO_TAG)
!else
NSPR_CO_FLAGS=$(NSPR_CO_FLAGS) -r NSPRPUB_PRE_4_2_CLIENT_BRANCH
!endif
CVSCO_NSPR = cvs $(CVS_FLAGS) co $(NSPR_CO_FLAGS)
#//------------------------------------------------------------------------
#// Figure out how to pull NSS and PSM libs.
#// If no NSS_CO_TAG or PSM_CO_TAG is specified, use the default static tag
#//------------------------------------------------------------------------
!ifndef NSS_CO_FLAGS
NSS_CO_FLAGS=$(MOZ_CO_FLAGS)
!endif
!if "$(NSS_CO_TAG)" != ""
NSS_CO_FLAGS=$(NSS_CO_FLAGS) -r $(NSS_CO_TAG)
!else
NSS_CO_FLAGS=$(NSS_CO_FLAGS) -r NSS_CLIENT_TAG
!endif
CVSCO_NSS = cvs $(CVS_FLAGS) co $(NSS_CO_FLAGS)
!ifndef PSM_CO_FLAGS
PSM_CO_FLAGS=$(MOZ_CO_FLAGS)
!endif
!if "$(PSM_CO_TAG)" != ""
PSM_CO_FLAGS=$(PSM_CO_FLAGS) -r $(PSM_CO_TAG)
!else
PSM_CO_FLAGS=$(PSM_CO_FLAGS) $(CVS_BRANCH)
!endif
CVSCO_PSM = cvs $(CVS_FLAGS) co $(PSM_CO_FLAGS)
#//------------------------------------------------------------------------
#// Figure out how to pull LDAP C SDK client libs.
#// If no LDAPCSDK_CO_TAG is specified, use the default tag
#//------------------------------------------------------------------------
!ifndef LDAPCSDK_CO_FLAGS
LDAPCSDK_CO_FLAGS=$(MOZ_CO_FLAGS)
!endif
!if "$(LDAPCSDK_CO_TAG)" != ""
LDAPCSDK_CO_FLAGS=$(LDAPCSDK_CO_FLAGS) -r $(LDAPCSDK_CO_TAG)
!else
LDAPCSDK_CO_FLAGS=$(LDAPCSDK_CO_FLAGS) -r LDAPCSDK_40_BRANCH
!endif
CVSCO_LDAPCSDK = cvs $(CVS_FLAGS) co $(LDAPCSDK_CO_FLAGS)
#//------------------------------------------------------------------------
#// Figure out how to pull accessibility libs.
#// If no ACCESSIBLE_CO_TAG is specified, use the default tag
#//------------------------------------------------------------------------
!ifndef ACCESSIBLE_CO_FLAGS
ACCESSIBLE_CO_FLAGS=$(MOZ_CO_FLAGS)
!endif
!if "$(ACCESSIBLE_CO_TAG)" != ""
ACCESSIBLE_CO_FLAGS=$(ACCESSIBLE_CO_FLAGS) -r $(ACCESSIBLE_CO_TAG)
!else
ACCESSIBLE_CO_FLAGS=$(ACCESSIBLE_CO_FLAGS) $(CVS_BRANCH)
!endif
CVSCO_ACCESSIBLE = cvs $(CVS_FLAGS) co $(ACCESSIBLE_CO_FLAGS)
#//------------------------------------------------------------------------
#// Figure out how to pull new image library.
#// If no IMGLIB2_CO_TAG is specified, use the default tag
#//------------------------------------------------------------------------
!ifndef IMGLIB2_CO_FLAGS
IMGLIB2_CO_FLAGS=$(MOZ_CO_FLAGS)
!endif
!if "$(IMGLIB2_CO_TAG)" != ""
IMGLIB2_CO_FLAGS=$(IMGLIB2_CO_FLAGS) -r $(IMGLIB2_CO_TAG)
!else
IMGLIB2_CO_FLAGS=$(IMGLIB2_CO_FLAGS) $(CVS_BRANCH)
!endif
CVSCO_IMGLIB2 = cvs $(CVS_FLAGS) co $(IMGLIB2_CO_FLAGS)
#//------------------------------------------------------------------------
#// Figure out how to pull new image library.
#// If no GFX2_CO_TAG is specified, use the default tag
#//------------------------------------------------------------------------
!ifndef GFX2_CO_FLAGS
GFX2_CO_FLAGS=$(MOZ_CO_FLAGS)
!endif
!if "$(GFX2_CO_TAG)" != ""
GFX2_CO_FLAGS=$(GFX2_CO_FLAGS) -r $(GFX2_CO_TAG)
!else
GFX2_CO_FLAGS=$(GFX2_CO_FLAGS) $(CVS_BRANCH)
!endif
CVSCO_GFX2 = cvs $(CVS_FLAGS) co $(GFX2_CO_FLAGS)
## The master target
############################################################
pull_and_build_all: pull_all depend build_all
## Rules for pulling the source from the cvs repository
############################################################
pull_clobber_and_build_all: pull_all clobber_all build_all
pull_all: pull_nspr pull_psm pull_ldapcsdk pull_accessible pull_gfx2 pull_imglib2 pull_seamonkey
pull_nspr: pull_clientmak
cd $(MOZ_SRC)\.
$(CVSCO_NSPR) mozilla/nsprpub
pull_nss:
cd $(MOZ_SRC)\.
$(CVSCO_NSS) mozilla/security/coreconf
$(CVSCO_NSS) mozilla/security/nss
pull_psm: pull_nss
cd $(MOZ_SRC)\.
$(CVSCO_PSM) mozilla/security/manager
$(CVSCO_PSM) mozilla/security/makefile.win
pull_ldapcsdk:
cd $(MOZ_SRC)\.
$(CVSCO_LDAPCSDK) mozilla/directory/c-sdk
pull_accessible:
cd $(MOZ_SRC)\.
$(CVSCO_ACCESSIBLE) mozilla/accessible
pull_gfx2:
cd $(MOZ_SRC)\.
$(CVSCO_GFX2) mozilla/gfx2
pull_imglib2:
cd $(MOZ_SRC)\.
$(CVSCO_IMGLIB2) mozilla/modules/libpr0n
pull_xpconnect: pull_nspr
cd $(MOZ_SRC)\.
$(CVSCO) mozilla/include
$(CVSCO) mozilla/config
$(CVSCO) -l mozilla/js
$(CVSCO) -l mozilla/js/src
$(CVSCO) mozilla/js/src/fdlibm
$(CVSCO) mozilla/js/src/xpconnect
$(CVSCO) mozilla/modules/libreg
$(CVSCO) mozilla/xpcom
$(CVSCO) mozilla/string
# pull either layout only or seamonkey the browser
pull_layout:
cd $(MOZ_SRC)\.
$(CVSCO) RaptorWin
pull_seamonkey: pull_clientmak
cd $(MOZ_SRC)\.
$(CVSCO) SeaMonkeyAll
pull_clientmak:
cd $(MOZ_SRC)\.
$(CVSCO) mozilla/client.mak
############################################################
# nmake has to be hardcoded, or we have to depend on mozilla/config
# being pulled already to figure out what $(NMAKE) should be.
clobber_all: clobber_nspr clobber_psm clobber_seamonkey
build_all: build_nspr build_seamonkey
distclean:
@cd $(MOZ_SRC)\$(MOZ_TOP)\nsprpub
gmake -f gmakefile.win distclean MOZ_SRC_FLIPPED=$(MOZ_SRC_FLIPPED)
@cd $(MOZ_SRC)\$(MOZ_TOP)
nmake /f client.mak clobber_psm
nmake /f client.mak clobber_seamonkey
clobber_nspr:
@cd $(MOZ_SRC)\$(MOZ_TOP)\nsprpub
gmake -f gmakefile.win clobber_all MOZ_SRC_FLIPPED=$(MOZ_SRC_FLIPPED)
clobber_psm:
@cd $(MOZ_SRC)\$(MOZ_TOP)\security
nmake -f makefile.win clobber_all
clobber_xpconnect:
@cd $(MOZ_SRC)\$(MOZ_TOP)\.
-rd /s /q dist
set DIST_DIRS=1
@cd $(MOZ_SRC)\$(MOZ_TOP)\nsprpub
gmake -f gmakefile.win clobber_all MOZ_SRC_FLIPPED=$(MOZ_SRC_FLIPPED)
@cd $(MOZ_SRC)\$(MOZ_TOP)\include
nmake -f makefile.win clobber_all
@cd $(MOZ_SRC)\$(MOZ_TOP)\modules\libreg
nmake -f makefile.win clobber_all
@cd $(MOZ_SRC)\$(MOZ_TOP)\string
nmake -f makefile.win clobber_all
@cd $(MOZ_SRC)\$(MOZ_TOP)\xpcom
nmake -f makefile.win clobber_all
@cd $(MOZ_SRC)\$(MOZ_TOP)\js
nmake -f makefile.win clobber_all
clobber_seamonkey:
@cd $(MOZ_SRC)\$(MOZ_TOP)\.
-rd /s /q dist
set DIST_DIRS=1
set LAYOUT_DIRS=1
set CLIENT_DIRS=1
nmake -f makefile.win clobber_all
depend:
@cd $(MOZ_SRC)\$(MOZ_TOP)\.
set DIST_DIRS=1
set LAYOUT_DIRS=1
set CLIENT_DIRS=1
nmake -f makefile.win depend
depend_xpconnect:
@cd $(MOZ_SRC)\$(MOZ_TOP)\include
nmake -f makefile.win depend
@cd $(MOZ_SRC)\$(MOZ_TOP)\modules\libreg
nmake -f makefile.win depend
@cd $(MOZ_SRC)\$(MOZ_TOP)\string
nmake -f makefile.win depend
@cd $(MOZ_SRC)\$(MOZ_TOP)\xpcom
nmake -f makefile.win depend
@cd $(MOZ_SRC)\$(MOZ_TOP)\js\src
nmake -f makefile.win depend
build_nspr:
@cd $(MOZ_SRC)\$(MOZ_TOP)\nsprpub
gmake -f gmakefile.win MOZ_SRC_FLIPPED=$(MOZ_SRC_FLIPPED)
build_psm:
@cd $(MOZ_SRC)\$(MOZ_TOP)\security
nmake -f makefile.win
build_xpconnect: build_nspr
@cd $(MOZ_SRC)\$(MOZ_TOP)\include
nmake -f makefile.win all
@cd $(MOZ_SRC)\$(MOZ_TOP)\modules\libreg
nmake -f makefile.win all
@cd $(MOZ_SRC)\$(MOZ_TOP)\xpcom
nmake -f makefile.win export
@cd $(MOZ_SRC)\$(MOZ_TOP)\string
nmake -f makefile.win all
@cd $(MOZ_SRC)\$(MOZ_TOP)\xpcom
nmake -f makefile.win install
@cd $(MOZ_SRC)\$(MOZ_TOP)\js\src
nmake -f makefile.win all
build_seamonkey:
@cd $(MOZ_SRC)\$(MOZ_TOP)\.
set DIST_DIRS=1
set LAYOUT_DIRS=1
set CLIENT_DIRS=1
nmake -f makefile.win all
build_client:
@cd $(MOZ_SRC)\mozilla\.
set CLIENT_DIRS=1
nmake -f makefile.win all
build_layout:
@cd $(MOZ_SRC)\mozilla\.
set LAYOUT_DIRS=1
nmake -f makefile.win all
build_dist:
@cd $(MOZ_SRC)\mozilla\.
set DIST_DIRS=1
nmake -f makefile.win all
install:
@cd $(MOZ_SRC)\$(MOZ_TOP)\.
set DIST_DIRS=1
set LAYOUT_DIRS=1
set CLIENT_DIRS=1
nmake -f makefile.win install
export:
@cd $(MOZ_SRC)\$(MOZ_TOP)\nsprpub
gmake -f gmakefile.win MOZ_SRC_FLIPPED=$(MOZ_SRC_FLIPPED)
@cd $(MOZ_SRC)\$(MOZ_TOP)\security
nmake -f makefile.win export
@cd $(MOZ_SRC)\$(MOZ_TOP)\.
set DIST_DIRS=1
set LAYOUT_DIRS=1
set CLIENT_DIRS=1
nmake -f makefile.win export
clobber_dist:
@cd $(MOZ_SRC)\mozilla\.
set DIST_DIRS=1
nmake -f makefile.win clobber_all
clobber_client:
@cd $(MOZ_SRC)\mozilla\.
set CLIENT_DIRS=1
nmake -f makefile.win clobber_all
clobber_layout:
@cd $(MOZ_SRC)\mozilla\.
set LAYOUT_DIRS=1
nmake -f makefile.win clobber_all
browse_info::
cd $(MOZ_SRC)\$(MOZ_TOP)
-dir /s /b *.sbr > sbrlist.tmp
-bscmake /Es /o mozilla.bsc @sbrlist.tmp
-rm sbrlist.tmp
regchrome::
@cd $(MOZ_SRC)\mozilla\.
set DIST_DIRS=1
set LAYOUT_DIRS=1
set CLIENT_DIRS=1
nmake /f makefile.win regchrome
deliver::
@cd $(MOZ_SRC)\mozilla\.
set DIST_DIRS=1
set LAYOUT_DIRS=1
set CLIENT_DIRS=1
nmake /f makefile.win splitsymbols
#//------------------------------------------------------------------------
#// Utility stuff...
#//------------------------------------------------------------------------
#//------------------------------------------------------------------------
# Verify that MOZ_SRC is set correctly
#//------------------------------------------------------------------------
# Check to see if it is set at all
!if "$(MOZ_SRC)"==""
MOZ_SRC = $(MAKEDIR)\..
!endif
#
# create a temp file at the root and make sure it is visible from MOZ_SRC
#
!if [copy $(MAKEDIR)\client.mak $(MAKEDIR)\xyzzy.tmp > NUL] == 0
!endif
!if !EXIST( $(MOZ_SRC)\mozilla\xyzzy.tmp )
ERR_MESSAGE=$(ERR_MESSAGE)^
MOZ_SRC isn't set correctly: [$(MOZ_SRC)\mozilla]!=[$(MAKEDIR)]
!endif
!if [del $(MAKEDIR)\xyzzy.tmp]
!endif
#//------------------------------------------------------------------------
# Verify that MOZ_BITS is set
#//------------------------------------------------------------------------
!if !defined(MOZ_BITS)
ERR_MESSAGE=$(ERR_MESSAGE)^
Environment variable MOZ_BITS isn't set.
!endif
!if !defined(MOZ_TOOLS)
ERR_MESSAGE=$(ERR_MESSAGE)^
Environment variable MOZ_TOOLS isn't set.
!endif
#//------------------------------------------------------------------------
#// Display error
#//------------------------------------------------------------------------
!if "$(ERR_MESSAGE)" != ""
ERR_MESSAGE = ^
client.mak: ^
$(ERR_MESSAGE) ^
^
client.mak: usage^
^
nmake -f client.mak [MOZ_BRANCH=<cvs_branch_name>] ^
[MOZ_DATE=<cvs_date>]^
[pull_and_build_all]^
[pull_all]^
[build_all]^
^
Environment variables:^
^
MOZ_BITS set to 32^
MOZ_TOOLS set to the directory containing the needed tools ^
!ERROR $(ERR_MESSAGE)
!endif

577
mozilla/client.mk Normal file
View File

@@ -0,0 +1,577 @@
# 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): Stephen Lamm
# Build the Mozilla client.
#
# This needs CVSROOT set to work, e.g.,
# setenv CVSROOT :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
# or
# setenv CVSROOT :pserver:username%somedomain.org@cvs.mozilla.org:/cvsroot
#
# To checkout and build a tree,
# 1. cvs co mozilla/client.mk
# 2. cd mozilla
# 3. gmake -f client.mk
#
# Other targets (gmake -f client.mk [targets...]),
# checkout
# build
# clean (realclean is now the same as clean)
# distclean
#
# See http://www.mozilla.org/build/unix.html for more information.
#
# Options:
# MOZ_OBJDIR - Destination object directory
# MOZ_CO_DATE - Date tag to use for checkout (default: none)
# MOZ_CO_MODULE - Module to checkout (default: SeaMonkeyAll)
# MOZ_CVS_FLAGS - Flags to pass cvs (default: -q -z3)
# MOZ_CO_FLAGS - Flags to pass after 'cvs co' (default: -P)
# MOZ_MAKE_FLAGS - Flags to pass to $(MAKE)
# MOZ_CO_BRANCH - Branch tag (Depricated. Use MOZ_CO_TAG below.)
#
#######################################################################
# Checkout Tags
#
# For branches, uncomment the MOZ_CO_TAG line with the proper tag,
# and commit this file on that tag.
MOZ_CO_TAG = NETSCAPE_6_2_2_RELEASE
NSPR_CO_TAG = NETSCAPE_6_2_2_RELEASE
PSM_CO_TAG = NETSCAPE_6_2_2_RELEASE
NSS_CO_TAG = NETSCAPE_6_2_2_RELEASE
LDAPCSDK_CO_TAG = NETSCAPE_6_2_2_RELEASE
ACCESSIBLE_CO_TAG = NETSCAPE_6_2_2_RELEASE
GFX2_CO_TAG = NETSCAPE_6_2_2_RELEASE
IMGLIB2_CO_TAG = NETSCAPE_6_2_2_RELEASE
BUILD_MODULES = all
#######################################################################
# Defines
#
CVS = cvs
CWD := $(shell pwd)
ifeq "$(CWD)" "/"
CWD := /.
endif
ifneq (, $(wildcard client.mk))
# Ran from mozilla directory
ROOTDIR := $(shell dirname $(CWD))
TOPSRCDIR := $(CWD)
else
# Ran from mozilla/.. directory (?)
ROOTDIR := $(CWD)
TOPSRCDIR := $(CWD)/mozilla
endif
# on os2, TOPSRCDIR may have two forward slashes in a row, which doesn't
# work; replace first instance with one forward slash
TOPSRCDIR := $(shell echo "$(TOPSRCDIR)" | sed -e 's%//%/%')
# if ROOTDIR equals only drive letter (i.e. "C:"), set to "/"
DIRNAME := $(shell echo "$(ROOTDIR)" | sed -e 's/^.://')
ifeq ($(DIRNAME),)
ROOTDIR := /.
endif
AUTOCONF := autoconf
MKDIR := mkdir
SH := /bin/sh
ifndef MAKE
MAKE := gmake
endif
CONFIG_GUESS_SCRIPT := $(wildcard $(TOPSRCDIR)/build/autoconf/config.guess)
ifdef CONFIG_GUESS_SCRIPT
CONFIG_GUESS = $(shell $(CONFIG_GUESS_SCRIPT))
else
_IS_FIRST_CHECKOUT := 1
endif
####################################
# CVS
# Add the CVS root to CVS_FLAGS if needed
CVS_ROOT_IN_TREE := $(shell cat $(TOPSRCDIR)/CVS/Root 2>/dev/null)
ifneq ($(CVS_ROOT_IN_TREE),)
ifneq ($(CVS_ROOT_IN_TREE),$(CVSROOT))
CVS_FLAGS := -d $(CVS_ROOT_IN_TREE)
endif
endif
CVSCO = $(strip $(CVS) $(CVS_FLAGS) co $(CVS_CO_FLAGS))
CVSCO_LOGFILE := $(ROOTDIR)/cvsco.log
CVSCO_LOGFILE := $(shell echo $(CVSCO_LOGFILE) | sed s%//%/%)
ifdef MOZ_CO_TAG
CVS_CO_FLAGS := -r $(MOZ_CO_TAG)
endif
####################################
# Load mozconfig Options
# See build pages, http://www.mozilla.org/build/unix.html,
# for how to set up mozconfig.
MOZCONFIG_LOADER := mozilla/build/autoconf/mozconfig2client-mk
MOZCONFIG_FINDER := mozilla/build/autoconf/mozconfig-find
MOZCONFIG_MODULES := mozilla/build/unix/modules.mk
run_for_side_effects := \
$(shell cd $(ROOTDIR); \
if test "$(_IS_FIRST_CHECKOUT)"; then \
$(CVSCO) $(MOZCONFIG_FINDER) $(MOZCONFIG_LOADER) $(MOZCONFIG_MODULES); \
else true; \
fi; \
$(MOZCONFIG_LOADER) $(TOPSRCDIR) mozilla/.mozconfig.mk > mozilla/.mozconfig.out)
include $(TOPSRCDIR)/.mozconfig.mk
include $(TOPSRCDIR)/build/unix/modules.mk
####################################
# Options that may come from mozconfig
# Change CVS flags if anonymous root is requested
ifdef MOZ_CO_USE_MIRROR
CVS_FLAGS := -d :pserver:anonymous@cvs-mirror.mozilla.org:/cvsroot
endif
# MOZ_CVS_FLAGS - Basic CVS flags
ifeq "$(origin MOZ_CVS_FLAGS)" "undefined"
CVS_FLAGS := $(CVS_FLAGS) -q -z 3
else
CVS_FLAGS := $(MOZ_CVS_FLAGS)
endif
# This option is depricated. The best way to have client.mk pull a tag
# is to set MOZ_CO_TAG (see above) and commit that change on the tag.
ifdef MOZ_CO_BRANCH
$(warning Use MOZ_CO_TAG instead of MOZ_CO_BRANCH)
CVS_CO_FLAGS := -r $(MOZ_CO_BRANCH)
endif
# MOZ_CO_FLAGS - Anything that we should use on all checkouts
ifeq "$(origin MOZ_CO_FLAGS)" "undefined"
CVS_CO_FLAGS := $(CVS_CO_FLAGS) -P
else
CVS_CO_FLAGS := $(CVS_CO_FLAGS) $(MOZ_CO_FLAGS)
endif
ifdef MOZ_CO_DATE
CVS_CO_DATE_FLAGS := -D "$(MOZ_CO_DATE)"
endif
ifeq "$(origin MOZ_MAKE_FLAGS)" "undefined"
MOZ_MAKE_ENV :=
else
MOZ_MAKE_ENV := MAKE="$(MAKE) $(MOZ_MAKE_FLAGS)"
endif
ifdef MOZ_OBJDIR
OBJDIR := $(MOZ_OBJDIR)
MOZ_MAKE := $(MOZ_MAKE_ENV) $(MAKE) -C $(OBJDIR)
else
OBJDIR := $(TOPSRCDIR)
MOZ_MAKE := $(MOZ_MAKE_ENV) $(MAKE)
endif
####################################
# CVS defines for PSM
#
PSM_CO_MODULE= mozilla/security/manager
PSM_CO_FLAGS := -P -A
ifdef MOZ_CO_FLAGS
PSM_CO_FLAGS := $(MOZ_CO_FLAGS)
endif
ifdef PSM_CO_TAG
PSM_CO_FLAGS := $(PSM_CO_FLAGS) -r $(PSM_CO_TAG)
endif
CVSCO_PSM = $(CVS) $(CVS_FLAGS) co $(PSM_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(PSM_CO_MODULE)
####################################
# CVS defines for NSS
#
NSS_CO_MODULE = mozilla/security/nss \
mozilla/security/coreconf \
$(NULL)
NSS_CO_FLAGS := -P
ifdef MOZ_CO_FLAGS
NSS_CO_FLAGS := $(MOZ_CO_FLAGS)
endif
ifdef NSS_CO_TAG
NSS_CO_FLAGS := $(NSS_CO_FLAGS) -r $(NSS_CO_TAG)
endif
# Cannot pull static tags by date
ifeq ($(NSS_CO_TAG),NSS_CLIENT_TAG)
CVSCO_NSS = $(CVS) $(CVS_FLAGS) co $(NSS_CO_FLAGS) $(NSS_CO_MODULE)
else
CVSCO_NSS = $(CVS) $(CVS_FLAGS) co $(NSS_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(NSS_CO_MODULE)
endif
####################################
# CVS defines for NSPR
#
NSPR_CO_MODULE = mozilla/nsprpub
NSPR_CO_FLAGS := -P
ifdef MOZ_CO_FLAGS
NSPR_CO_FLAGS := $(MOZ_CO_FLAGS)
endif
ifdef NSPR_CO_TAG
NSPR_CO_FLAGS := $(NSPR_CO_FLAGS) -r $(NSPR_CO_TAG)
endif
# Cannot pull static tags by date
ifeq ($(NSPR_CO_TAG),NSPRPUB_CLIENT_TAG)
CVSCO_NSPR = $(CVS) $(CVS_FLAGS) co $(NSPR_CO_FLAGS) $(NSPR_CO_MODULE)
else
CVSCO_NSPR = $(CVS) $(CVS_FLAGS) co $(NSPR_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(NSPR_CO_MODULE)
endif
####################################
# CVS defines for the C LDAP SDK
#
LDAPCSDK_CO_MODULE = mozilla/directory/c-sdk
LDAPCSDK_CO_FLAGS := -P
ifdef MOZ_CO_FLAGS
LDAPCSDK_CO_FLAGS := $(MOZ_CO_FLAGS)
endif
ifdef LDAPCSDK_CO_TAG
LDAPCSDK_CO_FLAGS := $(LDAPCSDK_CO_FLAGS) -r $(LDAPCSDK_CO_TAG)
endif
CVSCO_LDAPCSDK = $(CVS) $(CVS_FLAGS) co $(LDAPCSDK_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(LDAPCSDK_CO_MODULE)
####################################
# CVS defines for the C LDAP SDK
#
ACCESSIBLE_CO_MODULE = mozilla/accessible
ACCESSIBLE_CO_FLAGS := -P
ifdef MOZ_CO_FLAGS
ACCESSIBLE_CO_FLAGS := $(MOZ_CO_FLAGS)
endif
ifdef ACCESSIBLE_CO_TAG
ACCESSIBLE_CO_FLAGS := $(ACCESSIBLE_CO_FLAGS) -r $(ACCESSIBLE_CO_TAG)
endif
CVSCO_ACCESSIBLE = $(CVS) $(CVS_FLAGS) co $(ACCESSIBLE_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(ACCESSIBLE_CO_MODULE)
####################################
# CVS defines for gfx2
#
GFX2_CO_MODULE = mozilla/gfx2
GFX2_CO_FLAGS := -P
ifdef MOZ_CO_FLAGS
GFX2_CO_FLAGS := $(MOZ_CO_FLAGS)
endif
ifdef GFX2_CO_TAG
GFX2_CO_FLAGS := $(GFX2_CO_FLAGS) -r $(GFX2_CO_TAG)
endif
CVSCO_GFX2 = $(CVS) $(CVS_FLAGS) co $(GFX2_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(GFX2_CO_MODULE)
####################################
# CVS defines for new image library
#
IMGLIB2_CO_MODULE = mozilla/modules/libpr0n
IMGLIB2_CO_FLAGS := -P
ifdef MOZ_CO_FLAGS
IMGLIB2_CO_FLAGS := $(MOZ_CO_FLAGS)
endif
ifdef IMGLIB2_CO_TAG
IMGLIB2_CO_FLAGS := $(IMGLIB2_CO_FLAGS) -r $(IMGLIB2_CO_TAG)
endif
CVSCO_IMGLIB2 = $(CVS) $(CVS_FLAGS) co $(IMGLIB2_CO_FLAGS) $(CVS_CO_DATE_FLAGS) $(IMGLIB2_CO_MODULE)
####################################
# CVS defines for standalone modules
#
ifneq ($(BUILD_MODULES),all)
MOZ_CO_MODULE := $(filter-out $(NSPRPUB_DIR) security directory/c-sdk, $(BUILD_MODULE_CVS))
MOZ_CO_MODULE += allmakefiles.sh client.mk aclocal.m4 configure configure.in
MOZ_CO_MODULE += Makefile.in
MOZ_CO_MODULE := $(addprefix mozilla/, $(MOZ_CO_MODULE))
NOSUBDIRS_MODULE := $(addprefix mozilla/, $(BUILD_MODULE_CVS_NS))
ifneq ($(NOSUBDIRS_MODULE),)
CVSCO_NOSUBDIRS := $(CVSCO) -l $(CVS_CO_DATE_FLAGS) $(NOSUBDIRS_MODULE)
endif
ifeq (,$(filter $(NSPRPUB_DIR), $(BUILD_MODULE_CVS)))
CVSCO_NSPR :=
endif
ifeq (,$(filter security security/manager, $(BUILD_MODULE_CVS)))
CVSCO_PSM :=
CVSCO_NSS :=
endif
ifeq (,$(filter directory/c-sdk, $(BUILD_MODULE_CVS)))
CVSCO_LDAPCSDK :=
endif
ifeq (,$(filter accessible, $(BUILD_MODULE_CVS)))
CVSCO_ACCESSIBLE :=
endif
ifeq (,$(filter gfx2, $(BUILD_MODULE_CVS)))
CVSCO_GFX2 :=
endif
ifeq (,$(filter modules/libpr0n, $(BUILD_MODULE_CVS)))
CVSCO_IMGLIB2 :=
endif
endif
####################################
# CVS defines for SeaMonkey
#
ifeq ($(MOZ_CO_MODULE),)
MOZ_CO_MODULE := SeaMonkeyAll
endif
CVSCO_SEAMONKEY := $(CVSCO) $(CVS_CO_DATE_FLAGS) $(MOZ_CO_MODULE)
#######################################################################
# Rules
#
# Print out any options loaded from mozconfig.
all build checkout clean depend distclean export install realclean::
@if test -f .mozconfig.out; then \
cat .mozconfig.out; \
rm -f .mozconfig.out; \
else true; \
fi
ifdef _IS_FIRST_CHECKOUT
all:: checkout build
else
all:: checkout depend build
endif
# Windows equivalents
pull_all: checkout
build_all: build
clobber clobber_all: clean
pull_and_build_all: checkout depend build
# Do everything from scratch
everything: checkout clean build
####################################
# CVS checkout
#
checkout::
# @: Backup the last checkout log.
@if test -f $(CVSCO_LOGFILE) ; then \
mv $(CVSCO_LOGFILE) $(CVSCO_LOGFILE).old; \
else true; \
fi
@echo "checkout start: "`date` | tee $(CVSCO_LOGFILE)
@echo '$(CVSCO) mozilla/client.mk mozilla/build/unix/modules.mk'; \
cd $(ROOTDIR); \
$(CVSCO) mozilla/client.mk mozilla/build/unix/modules.mk && \
$(MAKE) -f mozilla/client.mk real_checkout
real_checkout:
# @: Start the checkout. Split the output to the tty and a log file. \
# : If it fails, touch an error file because "tee" hides the error.
@failed=.cvs-failed.tmp; rm -f $$failed*; \
cvs_co() { echo "$$@" ; \
("$$@" || touch $$failed) 2>&1 | tee -a $(CVSCO_LOGFILE) && \
if test -f $$failed; then false; else true; fi; }; \
cvs_co $(CVSCO_NSPR) && \
cvs_co $(CVSCO_PSM) && \
cvs_co $(CVSCO_NSS) && \
cvs_co $(CVSCO_LDAPCSDK) && \
cvs_co $(CVSCO_ACCESSIBLE) && \
cvs_co $(CVSCO_GFX2) && \
cvs_co $(CVSCO_IMGLIB2) && \
cvs_co $(CVSCO_SEAMONKEY) && \
cvs_co $(CVSCO_NOSUBDIRS)
@echo "checkout finish: "`date` | tee -a $(CVSCO_LOGFILE)
# @: Check the log for conflicts. ;
@conflicts=`egrep "^C " $(CVSCO_LOGFILE)` ;\
if test "$$conflicts" ; then \
echo "$(MAKE): *** Conflicts during checkout." ;\
echo "$$conflicts" ;\
echo "$(MAKE): Refer to $(CVSCO_LOGFILE) for full log." ;\
false; \
else true; \
fi
fast-update:
# @: Backup the last checkout log.
@if test -f $(CVSCO_LOGFILE) ; then \
mv $(CVSCO_LOGFILE) $(CVSCO_LOGFILE).old; \
else true; \
fi
@echo "checkout start: "`date` | tee $(CVSCO_LOGFILE)
@echo '$(CVSCO) mozilla/client.mk mozilla/build/unix/modules.mk'; \
cd $(ROOTDIR); \
$(CVSCO) mozilla/client.mk mozilla/build/unix/modules.mk && \
cd mozilla; \
$(MAKE) -f client.mk real_fast-update
real_fast-update:
# @: Start the update. Split the output to the tty and a log file. \
# : If it fails, touch an error file because "tee" hides the error.
@failed=.fast_update-failed.tmp; rm -f $$failed*; \
fast_update() { (config/cvsco-fast-update.pl $$@ || touch $$failed) 2>&1 | tee -a $(CVSCO_LOGFILE) && \
if test -f $$failed; then false; else true; fi; }; \
cvs_co() { echo "$$@" ; \
("$$@" || touch $$failed) 2>&1 | tee -a $(CVSCO_LOGFILE) && \
if test -f $$failed; then false; else true; fi; }; \
fast_update $(CVSCO_NSPR) && \
fast_update $(CVSCO_PSM) && \
cd $(ROOTDIR) && \
cvs_co $(CVSCO_NSS) && \
cd mozilla && \
fast_update $(CVSCO_LDAPCSDK) && \
fast_update $(CVSCO_ACCESSIBLE) && \
fast_update $(CVSCO_GFX2) && \
fast_update $(CVSCO_IMGLIB2) && \
fast_update $(CVSCO_SEAMONKEY) && \
fast_update $(CVSCO_NOSUBDIRS)
@echo "fast_update finish: "`date` | tee -a $(CVSCO_LOGFILE)
# @: Check the log for conflicts. ;
@conflicts=`egrep "^C " $(CVSCO_LOGFILE)` ;\
if test "$$conflicts" ; then \
echo "$(MAKE): *** Conflicts during fast-update." ;\
echo "$$conflicts" ;\
echo "$(MAKE): Refer to $(CVSCO_LOGFILE) for full log." ;\
false; \
else true; \
fi
####################################
# Web configure
WEBCONFIG_FILE := $(HOME)/.mozconfig
MOZCONFIG2CONFIGURATOR := build/autoconf/mozconfig2configurator
webconfig:
@cd $(TOPSRCDIR); \
url=`$(MOZCONFIG2CONFIGURATOR) $(TOPSRCDIR)`; \
echo Running netscape with the following url: ;\
echo ;\
echo $$url ;\
netscape -remote "openURL($$url)" || netscape $$url ;\
echo ;\
echo 1. Fill out the form on the browser. ;\
echo 2. Save the results to $(WEBCONFIG_FILE)
#####################################################
# First Checkout
ifdef _IS_FIRST_CHECKOUT
# First time, do build target in a new process to pick up new files.
build::
$(MAKE) -f $(TOPSRCDIR)/client.mk build
else
#####################################################
# After First Checkout
####################################
# Configure
CONFIG_STATUS := $(wildcard $(OBJDIR)/config.status)
CONFIG_CACHE := $(wildcard $(OBJDIR)/config.cache)
ifdef RUN_AUTOCONF_LOCALLY
EXTRA_CONFIG_DEPS := \
$(TOPSRCDIR)/aclocal.m4 \
$(TOPSRCDIR)/build/autoconf/gtk.m4 \
$(TOPSRCDIR)/build/autoconf/altoptions.m4 \
$(NULL)
$(TOPSRCDIR)/configure: $(TOPSRCDIR)/configure.in $(EXTRA_CONFIG_DEPS)
@echo Generating $@ using autoconf
cd $(TOPSRCDIR); $(AUTOCONF)
endif
CONFIG_STATUS_DEPS_L10N := $(wildcard $(TOPSRCDIR)/l10n/makefiles.all)
CONFIG_STATUS_DEPS := \
$(TOPSRCDIR)/configure \
$(TOPSRCDIR)/allmakefiles.sh \
$(TOPSRCDIR)/.mozconfig.mk \
$(wildcard $(TOPSRCDIR)/nsprpub/configure) \
$(wildcard $(TOPSRCDIR)/directory/c-sdk/ldap/configure) \
$(wildcard $(TOPSRCDIR)/mailnews/makefiles) \
$(CONFIG_STATUS_DEPS_L10N) \
$(wildcard $(TOPSRCDIR)/themes/makefiles) \
$(NULL)
# configure uses the program name to determine @srcdir@. Calling it without
# $(TOPSRCDIR) will set @srcdir@ to "."; otherwise, it is set to the full
# path of $(TOPSRCDIR).
ifeq ($(TOPSRCDIR),$(OBJDIR))
CONFIGURE := ./configure
else
CONFIGURE := $(TOPSRCDIR)/configure
endif
$(OBJDIR)/Makefile $(OBJDIR)/config.status: $(CONFIG_STATUS_DEPS)
@if test ! -d $(OBJDIR); then $(MKDIR) $(OBJDIR); else true; fi
@echo cd $(OBJDIR);
@echo $(CONFIGURE)
@cd $(OBJDIR) && $(CONFIGURE_ENV_ARGS) $(CONFIGURE) \
|| ( echo "*** Fix above errors and then restart with\
\"$(MAKE) -f client.mk build\"" && exit 1 )
@touch $(OBJDIR)/Makefile
ifdef CONFIG_STATUS
$(OBJDIR)/config/autoconf.mk: $(TOPSRCDIR)/config/autoconf.mk.in
cd $(OBJDIR); \
CONFIG_FILES=config/autoconf.mk ./config.status
endif
####################################
# Depend
depend:: $(OBJDIR)/Makefile $(OBJDIR)/config.status
$(MOZ_MAKE) $@;
####################################
# Build it
build:: $(OBJDIR)/Makefile $(OBJDIR)/config.status
$(MOZ_MAKE) export && $(MOZ_MAKE) install
####################################
# Other targets
# Pass these target onto the real build system
install export clean realclean distclean:: $(OBJDIR)/Makefile $(OBJDIR)/config.status
$(MOZ_MAKE) $@
cleansrcdir:
@cd $(TOPSRCDIR); \
if [ -f webshell/embed/gtk/Makefile ]; then \
$(MAKE) -C webshell/embed/gtk distclean; \
fi; \
if [ -f Makefile ]; then \
$(MAKE) distclean ; \
else \
echo "Removing object files from srcdir..."; \
rm -fr `find . -type d \( -name .deps -print -o -name CVS \
-o -exec test ! -d {}/CVS \; \) -prune \
-o \( -name '*.[ao]' -o -name '*.so' \) -type f -print`; \
build/autoconf/clean-config.sh; \
fi;
# (! IS_FIRST_CHECKOUT)
endif
.PHONY: checkout real_checkout depend build export install clean realclean distclean cleansrcdir pull_all build_all clobber clobber_all pull_and_build_all everything

View File

@@ -1,46 +0,0 @@
Mstone building instructions
For Unix, just "gmake" one of these
release The usual optimized build
debug Debug build includes some asserts
rpackage Build the release and package it
dpackage Build the debug version and package it
all_OPT Build a multi-platform package
all_DBG Build a multi-platform debug package
For NT, run autobuild.bat. This will build and package both the debug
and optimized versions. Perl must already be built and installed in
\. The NT build may be behind the Unix stuff. Pull the build/package/*
subdirectories into the main build/package before doing a 'make all_???'.
You can build multiple OSes in the same tree. Debug and optimized
builds are kept separately. The all_??? targets will combine whatever
OSes are present into a multi-architecture package (including NT).
Note that you have ot build and package each OS before doing the all_
step.
Helper components
Linux usually comes with workable versions of gnuplot and perl. Most
other OSes don't. Mstone can build and package perl, gnuplot, and gd
with the right settings. These will be automatically built and
packaged if they are present.
Unpack gd1.3 or later in the mstone directory. You can probably find
gd from here: http://www.boutell.com/gd/. The directory should look
like gd?.*. Right now we need the (obsolete) version 1.3 to generate
GIF files (without patented run-length coding). The scripts need to
be updated to be able to handle PNG or GIF files.
Unpack gnuplot 3.7 or later in the mstone directory. You can probably
find gnuplot from http://www.cs.dartmouth.edu/gnuplot_info.html. The
directory should look like gnuplot-?.* (the exact version should not
matter). Gnuplot requres gd to generate GIFs (which is what we need).
Unpack perl 5.005 or later in the mstone directory. You can probably
find perl from http://www.perl.com/pub/language/info/software.html.
The directory should look like perl5.* (the exact version should
not matter).

View File

@@ -1,73 +0,0 @@
2005-02-19 Dan Christian <robodan@idiom.com>
* Merge big Sendmail patch see ChangeLog-Sendmail for details
* src/bench.h (VERSION): Start working toward version 5.0 (now 4.9)
2004-09-07 Dan Christian <robodan@idiom.com>
* data/*.msg: Updated with more realistic messages
* bin/args.pl: Really fix doc link to be relative
* src/smtp.c (sendSMTPLoop): Handle file lists (random selection)
(sendFile): New, send file with option offset and head/tail
(SmtpFilePrep): Split a glob pattern to a list
(SmtpFileInit): New, split out initial file scan
* src/bench.c (rangeNext): Get to last value in a random range
2004-06-14 Dan Christian <robodan@idiom.com>
* Makefile (VERSION): Bump version to 4.3
* Make build work on recent versions of Linux and Solaris
* Make ssh the default way to get a remote shell
* Support SVG graph output (not supported by all browsers)
* Use rfc822 style from addresses
* Fix documentation link on index page to be local
2000-04-28 Dan Christian <dac@x.cx>
* http and wmap now use common routines from http-util
* http is now separated from the pish command structure.
2000-04-27 Dan Christian <dac@x.cx>
* bin/genplot.pl: Support gnuplot generating images other than gif
* src/smtp.c (sendSMTPStart): Send domain name with HELO
2000-04-05 Dan Christian <robodan@netscape.com>
* Fix bug in WMAP where the login field was reporting banner data.
* Add a reconnect concept to WMAP. This separates out the
reconnect activity from the initial connections. There is still a
bug/feature that the reconnect increments an error which can
eventually hit the maxErrors limit. You have to record the error
or else you could not get the "connections" graph right.
2000-03-31 Dan Christian <robodan@netscape.com>
* Merged setup and mstone into one script to reduce command
namespace polution. "mstone setup" is the the same as "setup".
* Made setup try to be more tolerant of OSes that were not
include in the distribution. SunOS 5.7 will fall back to 5.6.
* Now package conf/general.wld.in and only copy to general.wld if
there isn't one already in place. This means that you can unpack
new bits over old bits without blowing away your configuration.
* Added <includeOnce file> command to workloads. This allows
tests to be used either as a stand alone or as part of another
test (e.g. smtp).
* Converted ChangeLog to more common formating
* Spilt off old ChangeLog entries to ChangeLog.1 and ChangeLog.2

View File

@@ -1,86 +0,0 @@
2005-02-03 Thom O'Connor <thom@sendmail.com>
* Merge Mozilla mstone HEAD with Sendmail,Inc. modifications. In
particular, this included some hand-waving around the bitwise
operators "leaveMailOnServer" in the Mozilla branch and the
dinst_t struct pish->leaveMailOnServerDist.
2005-01-25 Thom O'Connor <thom@sendmail.com>
* Fix comments, properly attribute Sean O'Rourke's contributions.
2004-09-21 Thom O'Connor <thom@sendmail.com>
* Modified config/config.mk to build SSL version of mailclient.
2004-06-07 Thom O'Connor <thom@sendmail.com>
* Remove _thread_sys_poll defininition for poll in FreeBSD builds
(bench.h).
2001-04-27 Sean O'Rourke <sean@sendmail.com>
* distributions can now be truncated. This is used to prevent
0-recipient messages, and could be used to prevent enormous
messages.
* throttling: Preload workloads use some additional mstone magic
to throttle delivery rate based on server responsiveness. This is
still in the experimental phase, and may change.
* fix for parsing bug exposed by distribution truncation notation.
2001-03-10 Sean O'Rourke <sean@sendmail.com>
* clients: Fixed up code for specifying client counts on a
per-host or per-group basis. This eliminates the need to force
the mozilla distribution code to do one's bidding.
* smtpsink.pl: Very basic threaded perl SMTP sink. This may go
away to be replaced by the sink from smtpslam. Needs much better
statistics.
2001-02-24 Sean O'Rourke <sean@sendmail.com>
* checksums added. See {checksum,md5}.{c,h}. Auto-generated
messages can currently have checksums computed over the body, and
pop and multipop retrieval will verify the sum.
2001-02-21 Sean O'Rourke <sean@sendmail.com>
* MIME generation changed to generate deep messages rather than
several parts. This should be a better test of MIME parsers,
forcing them to save more state.
2001-02-18 Sean O'Rourke <sean@sendmail.com>
* mstone_changes.html: update SSL documentation.
* wld, defaults.pm: divide the ever-expanding "config" section
into more descriptive subparts: clients, server, sink, mstone.
* report: now in bin directory, where it should be.
2001-02-17 Sean O'Rourke <sean@sendmail.com>
* client.c, main.c, parse.c: removed old throttling code, as it
wasn't being used.
* ALL: General code cleanup.
* sysdep.c: simplified rlimit-bumping code, added increase for
RLIM_NPROC, as threads are procs on some systems.
* imap4.c: removed silliness of malloc()ing a buffer the size of
the entire message every time we retrieve a message.
* xalloc.c, xalloc.h: consolidated memory allocation so everyone
handles OOM the same way (for now, dump core).
* constants.h: various assumptions and limits, were in bench.h.
* events: added event-queue model to reduce thread requirements.
Eventually, it would be nice for a consultant to be able to run
this off a laptop to test a small- to medium-sized box. For
now, at least, configuration remains the same. This doesn't
work on NT. Oh, well.

View File

@@ -1,129 +0,0 @@
MailStone 4.1: Changes to since version 4.0
* threads are used on all platforms reduces memory requirements by
10x for large numbers of clients must run as root for maximum
connections per process
* massive internal code and script cleanup / rewrite performance
improvements for socket handling (blocking) and caching files and
name lookups
* filename and path conventions restructuring '/mailstone'
hardwired path no longer required mailstone/results/index.html
(index of test runs) mailstone/results/<datestamp>/stderr (look
here for errors) mailstone/results/<datestamp>/results.html
mailstone/results/<datestamp>/results.txt
mailstone/results/<datestamp>/work.wld (workload config used)
mailstone/results/<datestamp>/testbed.tbd (testbed used)
mailstone/results/<datestamp>/summary.csv (per client summary)
mailstone/results/<datestamp>/*.gif (graphs)
mailstone/tmp/<datestamp>/*.out (raw results from each client)
mailstone/conf/*.wld (workload file) mailstone/conf/*.html
(machine descriptions for reports) mailstone/data/*.msg (sample
test messages)
* periodic statistics reporting allows for trend analysis of many
variables per protocol. sampling rate is automatically determined
by mailmaster Can now generate on-the-fly reports for above by
running "process"
* The accountFormat directive is now obsolete. Use loginFormat
and addressFormat instead.
* The numAccounts and beginAccounts directives are now obsolete.
Use numLogins, firstLogin, numAddresses, and firstAddress instead.
* The sequentialLogins directive disables random account number
selection. This insures a predictable account sequence.
* The checkMailInterval directive for IMAP is now obsolete. Use
loopDelay instead.
* The directives idleTime, loopDelay, and numLoops now apply to
all protocols. See the manual for how loopDelay and numLoops are
used by each protocol.
* a command directive such as <SMTP> without HOSTS=xxx will now
apply to all clients in the testbed
* <include> directive for workload and testbed files (e.g. for
user profile)
* workloads are now passed to 'mailclient' through stdin no test
specific files need to be copied to client machines more
synchonized test startup
* 'setup' script will copy mailclient and test messages
(data/*.msg) to each testbed machine in /var/tmp
* 'cleanup' form of setup will remove mailclient and test messages
from each testbed machine in /var/tmp
* 'checktime' form of setup will (nearly) simultaneously retrieve
time from each client. This lets you easily check for clock
problems.
* 'timesync' form of setup will (nearly) simultaneously set time
on each client. This only works on OSs that support setting
seconds through the "date" command. rdate or ntpdate should be
used if available. You must be the root user and be able to rsh
as root for timesync to work.
* Improved reports in text and html (formatting and content)
* The text version of the report is now only displayed
automatically if "-v" is given.
* Graphs with more than one protocol will also display a "Total"
graph
* The graphs can now be customized for each test (see sample.wld
for the default)
* You can now add graphs (in addition to the default or configured
ones) by using "process timestamp -a conf/moregraph.wld".
* An informative index of test runs is now generated in
results/index.html
* The index is updated while the run is in progress to make
checking for errors easier.
* The error log now displays times relative to test start.
* Memory use while processing results has been greatly reduced.
* A summary of the data from each process is now saved in a
Comma-separated-value (CSV) file. results/timestamp/clients.csv
* A summary of the data over time is now saved in a
Comma-separated-value (CSV) file.
results/timestamp/protocol-time.csv
* new gnuplot binary included, can output directly to gif format
* read and write performance numbers now reported separately
* new runtime banners and copyrights (ooh boy)
* idleTime option for IMAP fixed, plus now applies to all commands
* blockTime now sets a delay between command blocks
* Process model is as follows
User runs the top-level 'mstone' script
This calls 'conf/testname.pl' with command line arguments
This calls 'mailmaster.pl' with config and command line arguments
mailmaster uses 'rsh' or equivalent to launch mailclients
mailclient runs on each testbed and forks numprocs
each proc spawns numthreads (one per client)
<run tests> (note: results are being sent continuously)
threads send results back through sockets to top mailclient
mailclient forwards results back over stdout via rsh pipe
(for future work - do some data reduction/combining here)
mailmaster directs output to each client-<hostname> file
mailmaster launches report generator
* sample LDIF fragment for a postmaster entry included

View File

@@ -1,77 +0,0 @@
MailStone 4.15: Changes to Mailstone since version 4.1
* Setup now checks license acceptance and configures a basic
setup. By default, it will also create a user LDIF file with a
'allusers' account.
* All parameters and and testbed information may now be specified
in the workload files (*.wld). New sections: CONFIG, CLIENT,
MONITOR, PRETEST, and POSTTEST. Command line parameters still
override the files. A complete copy of the configuration is saved
in results/<TIMESTAMP>/all.wld.
* The '*.pl', '*.tbd', and 'config*' files in ./conf/ are
depreciated. These should still work, but the new sections are
simpler and more flexible.
* Any CONFIG parameter can now be specified on the command line
using the form: 'PARAMETER=value'. Note that PARAMETER is case
insensitive. No whitespace is allowed before or after the '='.
* The new switch '-l' or CONFIG parameter 'ClientCount' can now
specify the total number of clients. The 'MaxClients' and
'MaxThreads' parameters in each CLIENT section control load
balancing. If the 'processes' and 'threads' parameters are set,
then the load for that CLIENT section will not be adjusted, but
will be taken into account when calculating other CLIENT sections.
If just 'processes' is set, then only the thread count will be
adjusted. All hosts in a CLIENT section will run the same number
of processes and threads.
* bin/makeusers.pl now creates users, broadcast account, etc.
Numbered passwords are now suppored. The new user/password format
now replaces '%ld' with the user number to match the rest of
mailstone. The ldif/ directory is obsolete. Run "perl/bin/perl
bin/makeusers.pl -h" for usage.
* NT client machines may now be used from a Unix test master. See
conf/sample.wld for configuration details.
* Commands can now be run for a specified block count, error
count, or time (whichever comes first). Set 'maxBlocks' and/or
'maxErrors'.
* Telemetry logging to /var/tmp/mstone-log.pn.tn is now performed
when "telemetry 1" is specified.
* The name used in the "CLIENT" section is now used to match
"HOSTS=..." qualifier. Compatibility with "hostname" is no longer
needed.
* Config values can now use quoted characters such as \n, \r, \t
* Config values can be continued using \ (backslash)
* System configuration information (SYSCONFIG) can now be
specified entirely within a workload file by quoting the newlines.
* Config values get enclosing double-quotes stripped
* Preliminary support for HTTP and WMAP (WebMail) testing.
* New table formats are easier to interpret and allow more protocols.
* The new text format report is easier to machine processes.
* The following command line switches are now obsolete: -f, -g,
-e, -p, and -l. The same functionality can be obtained by
FREQUENCY=<interval>, GNUPLOT=<path>, RSH=<path>, RCP=<path>, and
TEMPDIR=<directory> respectively.
* File backups are now created. When ./process is run multiple
times, the old files are moved to the ./tmp/<TIMESTAMP>/
directory.
* perl has been updated to include full perl5.005_03 install
package. Perl support for each architecture is now under the
perl/ directory.

View File

@@ -1,222 +0,0 @@
Mstone 4.15 Quick Installation
This version of Mstone runs on many current UNIX platforms and NT.
Only a web browser and text editor are needed to view the results and
configure tests.
QUICK INSTALL
-------------
IMPORTANT: If you have an existing mstone, save a copy of the
mstone/conf directory to preserve any configuration files you may want
to keep.
Unpack distribution:
tar xzf /tmp/mstone_OPT.tar.gz
or
gunzip -c /tmp/mstone_OPT.tar.gz | tar xf -
or
unzip /tmp/mstone_OPT.zip
cd mstone
Both the tar.gz file and the zip file are identical. Use whichever is
more convenient for you.
This will create a sub-directory named "mstone" with files and
directories under that.
cd mstone
NOTE: all scripts must be run from the mstone directory.
Do initial configuration:
Run "mstone config". It will ask you about your system configuration.
Fill in the appropriate values and create the optional user accounts
and broadcast account. When it asks about client machines, enter them
seperated by commas, with no spaces (e.g. host1,host2,host3). If you
need to re-configure, run "mstone config".
The machine starting the test may also be a client. For accurate
results, clients should not be run on the test mailserver machine (or
its directory server). If all the client machines are not running
the same operating system version, see "Configuring Client Machines"
below to configure for different OSes.
When the test master is on NT, only the local machine may be a client
and only one process is allowed. You will not be asked about client
machines.
Setup only configures the most important parameters. If you have more
advanced needs, edit conf/general.wld appropriately.
Run "mstone setup". It will now push the necessary files to each
client machine. If there are problems (i.e. with rsh permissions),
fix them and re-run "mstone setup" until everything works.
Install test accounts:
Setup will create a file called conf/MAILHOST.ldif (where MAILHOST is the
name of your mail server). If you are not using Netscape Messaging
and Directory Servers, then you may have to edit the ldif file or use
alternate means to create the user accounts.
To import these users into Netscape Messaging Server, use "add
entries" from the directory console or use the ldapmodify command line
utility.
Note: imports will go faster if access logging is disabled. For large
user counts (more than 10,000 users), it may be much faster to export
the current database, merge the files together manually, and then
import the new database.
Here is how the ldapmodify supplied with Netscape Messaging Server
would be used.
setenv LD_LIBRARY_PATH /usr/netscape/messaging/lib
cd /usr/netscape/messaging
shared/bin/ldapmodify -h mailhost -a -D 'cn=directory manager' -w d_m_password < conf/MAILHOST.ldif
Check time consistency:
IMPORTANT: The system time on each client machine must be synchronized
within one second of each other for accurate results graphs.
Run "checktime" to see the time on each client. There should not be
more than two seconds difference among the displayed time.
The best way to synchronize clients is use NTP (Network Time Protocol)
or similar protocols (like rdate or timeslave) that have sub second
accuracy.
A simple utility called "timesync" is provide to push the local
system time to all clients. You must be root and have root rsh
permissions to use timesync. Timesync only works on OSs that support
setting seconds using "date MMDDhhmmCCYY.ss". Timesync is only
accurate to a second (at best) and should only be used if better
protocols aren't available.
When running the test master on NT, "checktime" and "timesync" are
never needed (because there is only one client machine). Timesync
will be ignored for NT clients, another method must be used
(e.g. timeserv or Dimension4).
Run tests:
Try it out. Use small process and thread counts until everything is
working.
mstone pop -t 30s
The script will tell you how many processes and threads it is running
on each system and where errors are logged. At the end of the test,
it will print out a URL for the test results and an indication of the
size of the errorlog file (stderr).
The results of the mstone run will display statistics for each
protocol that was tested. The results are presented in both a HTML
web page and a text file. The text file is simple and uniform, while
the web page is more user readable. The web page has links to the
test configuration files, error log, and the text version.
For long tests run (e.g. 8 hours), the results can be updated while
the test is running by using the "process" utility. Don't run
"process" near the very end of the test.
If a test has to be aborted, then use "process" to generate a report
using the available data.
Customize tests:
Copy and edit the scripts (e.g. "conf/pop.wld") to define new tests.
The CONFIG section specifies all the attributes used in the test.
Other sections specify the protocols to be tested and the parameters
for them.
All switches can be overridden on the command line to facilitate
easier testing. The exact configuration (include command line
overrides) is stored with the results from each test.
Maintenance:
You can run "mstone setup" at any time (except during a test :-) to
update the files on the client machines.
Use "mstone cleanup" to remove the files created by "mstone setup".
After the test is finished, the directories under "tmp/" can be
compressed or deleted to save space. All the information about a test
run is stored in the "results/" directories.
Configuring client machines:
Edit conf/general.wld to include CLIENT sections for each machines to
use.
You can also specify the OS type for each client machine. Set the
"Arch" parameter in each CLIENT section as appropriate (e.g. SunOS5.6,
Linux2.2_x86, AIX4.2, HP-UXB.11.00, IRIX6.5, OSF1V4.0, WINNT4.0). The
directories under "bin" specify the available OS types.
For NT4.0 clients with a UNIX test master, you will need to configure
"command" and "tempDir" for proper operation. See the "HOSTS=winnt01"
example in conf/sample.wld.
The total number of processes and threads that can be supported on a
client is dependent on the number of commands in the test, the OS, and
available memory. Check the stderr log for messages about not being
able to create processes or threads. Check on the client machines
during the test and make sure they aren't running out of CPU. The
UNIX programs "top" and "vmstat" are good for this. If the client CPU
is more than 75% busy, use more machines.
Also watch out for network saturation. You may have to use machines
with separate networks to the server to reach full server load.
Know problems:
There can be extraneous errors or connections after the specified end
of the test. These are most likely do to stopping the test and should
be ignored.
At the end of the test, all current connections will logout without
any delays. This can cause very high peak loads.
If one process exits early (due to misconfiguration or resource
exhaustion) and the monitoring command did not specify a count (%c),
then the monitoring tasks will be terminated early as well.
Monitoring commands that specify a count (%c), may take longer than
predicted and delay the processing of test results. This is because
vmstat actually delays the requested time plus the time needed to
generate the statistics summary.
If you are doing tests with large thread counts, you may have to run
as root to allow mailclient to raise its resource limits.
The telemetry logging for SMTP, POP3, and IMAP4 is incomplete. Most
commands are captured, but banners and message contents may be missing.
The MaxBlocks parameter gets divided by the total number of processes
before starting each client. This doesn't account for clients that
don't have commands to run.
The HTTP protocol used by WMAP allows connections to be dropped and
re-connected as needed. WMAP logs this as an error and an additional
connect. The error log must be consulted to distinguish another types
of connection errors (timeout or connection refused) from an automatic
re-connect.
The HTTP protocol test is experimental and subject to change.

View File

@@ -1,19 +0,0 @@
The contents of this software package are subject to the Netscape
Public License Version 1.1 (the "License"); you may not use this
software 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.
Alternatively, the this software package may be used under the terms
of the GNU Public License (the "GPL"), in which case the provisions of
the GPL are applicable instead of those above. If you wish to allow
use of your version of this file only under the terms of the GPL and
not to allow others to use your version of this file under the NPL,
indicate your decision by deleting the provisions above and replace
them with the notice and other provisions required by the GPL. If you
do not delete the provisions above, a recipient may use your version
of this file under either the NPL or the GPL.

View File

@@ -1,535 +0,0 @@
MOZILLA PUBLIC LICENSE
Version 1.1
---------------
1. Definitions.
1.0.1. "Commercial Use" means distribution or otherwise making the
Covered Code available to a third party.
1.1. "Contributor" means each entity that creates or contributes to
the creation of Modifications.
1.2. "Contributor Version" means the combination of the Original
Code, prior Modifications used by a Contributor, and the Modifications
made by that particular Contributor.
1.3. "Covered Code" means the Original Code or Modifications or the
combination of the Original Code and Modifications, in each case
including portions thereof.
1.4. "Electronic Distribution Mechanism" means a mechanism generally
accepted in the software development community for the electronic
transfer of data.
1.5. "Executable" means Covered Code in any form other than Source
Code.
1.6. "Initial Developer" means the individual or entity identified
as the Initial Developer in the Source Code notice required by Exhibit
A.
1.7. "Larger Work" means a work which combines Covered Code or
portions thereof with code not governed by the terms of this License.
1.8. "License" means this document.
1.8.1. "Licensable" means having the right to grant, to the maximum
extent possible, whether at the time of the initial grant or
subsequently acquired, any and all of the rights conveyed herein.
1.9. "Modifications" means any addition to or deletion from the
substance or structure of either the Original Code or any previous
Modifications. When Covered Code is released as a series of files, a
Modification is:
A. Any addition to or deletion from the contents of a file
containing Original Code or previous Modifications.
B. Any new file that contains any part of the Original Code or
previous Modifications.
1.10. "Original Code" means Source Code of computer software code
which is described in the Source Code notice required by Exhibit A as
Original Code, and which, at the time of its release under this
License is not already Covered Code governed by this License.
1.10.1. "Patent Claims" means any patent claim(s), now owned or
hereafter acquired, including without limitation, method, process,
and apparatus claims, in any patent Licensable by grantor.
1.11. "Source Code" means the preferred form of the Covered Code for
making modifications to it, including all modules it contains, plus
any associated interface definition files, scripts used to control
compilation and installation of an Executable, or source code
differential comparisons against either the Original Code or another
well known, available Covered Code of the Contributor's choice. The
Source Code can be in a compressed or archival form, provided the
appropriate decompression or de-archiving software is widely available
for no charge.
1.12. "You" (or "Your") means an individual or a legal entity
exercising rights under, and complying with all of the terms of, this
License or a future version of this License issued under Section 6.1.
For legal entities, "You" includes any entity which controls, is
controlled by, or is under common control with You. For purposes of
this definition, "control" means (a) the power, direct or indirect,
to cause the direction or management of such entity, whether by
contract or otherwise, or (b) ownership of more than fifty percent
(50%) of the outstanding shares or beneficial ownership of such
entity.
2. Source Code License.
2.1. The Initial Developer Grant.
The Initial Developer hereby grants You a world-wide, royalty-free,
non-exclusive license, subject to third party intellectual property
claims:
(a) under intellectual property rights (other than patent or
trademark) Licensable by Initial Developer to use, reproduce,
modify, display, perform, sublicense and distribute the Original
Code (or portions thereof) with or without Modifications, and/or
as part of a Larger Work; and
(b) under Patents Claims infringed by the making, using or
selling of Original Code, to make, have made, use, practice,
sell, and offer for sale, and/or otherwise dispose of the
Original Code (or portions thereof).
(c) the licenses granted in this Section 2.1(a) and (b) are
effective on the date Initial Developer first distributes
Original Code under the terms of this License.
(d) Notwithstanding Section 2.1(b) above, no patent license is
granted: 1) for code that You delete from the Original Code; 2)
separate from the Original Code; or 3) for infringements caused
by: i) the modification of the Original Code or ii) the
combination of the Original Code with other software or devices.
2.2. Contributor Grant.
Subject to third party intellectual property claims, each Contributor
hereby grants You a world-wide, royalty-free, non-exclusive license
(a) under intellectual property rights (other than patent or
trademark) Licensable by Contributor, to use, reproduce, modify,
display, perform, sublicense and distribute the Modifications
created by such Contributor (or portions thereof) either on an
unmodified basis, with other Modifications, as Covered Code
and/or as part of a Larger Work; and
(b) under Patent Claims infringed by the making, using, or
selling of Modifications made by that Contributor either alone
and/or in combination with its Contributor Version (or portions
of such combination), to make, use, sell, offer for sale, have
made, and/or otherwise dispose of: 1) Modifications made by that
Contributor (or portions thereof); and 2) the combination of
Modifications made by that Contributor with its Contributor
Version (or portions of such combination).
(c) the licenses granted in Sections 2.2(a) and 2.2(b) are
effective on the date Contributor first makes Commercial Use of
the Covered Code.
(d) Notwithstanding Section 2.2(b) above, no patent license is
granted: 1) for any code that Contributor has deleted from the
Contributor Version; 2) separate from the Contributor Version;
3) for infringements caused by: i) third party modifications of
Contributor Version or ii) the combination of Modifications made
by that Contributor with other software (except as part of the
Contributor Version) or other devices; or 4) under Patent Claims
infringed by Covered Code in the absence of Modifications made by
that Contributor.
3. Distribution Obligations.
3.1. Application of License.
The Modifications which You create or to which You contribute are
governed by the terms of this License, including without limitation
Section 2.2. The Source Code version of Covered Code may be
distributed only under the terms of this License or a future version
of this License released under Section 6.1, and You must include a
copy of this License with every copy of the Source Code You
distribute. You may not offer or impose any terms on any Source Code
version that alters or restricts the applicable version of this
License or the recipients' rights hereunder. However, You may include
an additional document offering the additional rights described in
Section 3.5.
3.2. Availability of Source Code.
Any Modification which You create or to which You contribute must be
made available in Source Code form under the terms of this License
either on the same media as an Executable version or via an accepted
Electronic Distribution Mechanism to anyone to whom you made an
Executable version available; and if made available via Electronic
Distribution Mechanism, must remain available for at least twelve (12)
months after the date it initially became available, or at least six
(6) months after a subsequent version of that particular Modification
has been made available to such recipients. You are responsible for
ensuring that the Source Code version remains available even if the
Electronic Distribution Mechanism is maintained by a third party.
3.3. Description of Modifications.
You must cause all Covered Code to which You contribute to contain a
file documenting the changes You made to create that Covered Code and
the date of any change. You must include a prominent statement that
the Modification is derived, directly or indirectly, from Original
Code provided by the Initial Developer and including the name of the
Initial Developer in (a) the Source Code, and (b) in any notice in an
Executable version or related documentation in which You describe the
origin or ownership of the Covered Code.
3.4. Intellectual Property Matters
(a) Third Party Claims.
If Contributor has knowledge that a license under a third party's
intellectual property rights is required to exercise the rights
granted by such Contributor under Sections 2.1 or 2.2,
Contributor must include a text file with the Source Code
distribution titled "LEGAL" which describes the claim and the
party making the claim in sufficient detail that a recipient will
know whom to contact. If Contributor obtains such knowledge after
the Modification is made available as described in Section 3.2,
Contributor shall promptly modify the LEGAL file in all copies
Contributor makes available thereafter and shall take other steps
(such as notifying appropriate mailing lists or newsgroups)
reasonably calculated to inform those who received the Covered
Code that new knowledge has been obtained.
(b) Contributor APIs.
If Contributor's Modifications include an application programming
interface and Contributor has knowledge of patent licenses which
are reasonably necessary to implement that API, Contributor must
also include this information in the LEGAL file.
(c) Representations.
Contributor represents that, except as disclosed pursuant to
Section 3.4(a) above, Contributor believes that Contributor's
Modifications are Contributor's original creation(s) and/or
Contributor has sufficient rights to grant the rights conveyed by
this License.
3.5. Required Notices.
You must duplicate the notice in Exhibit A in each file of the Source
Code. If it is not possible to put such notice in a particular Source
Code file due to its structure, then You must include such notice in a
location (such as a relevant directory) where a user would be likely
to look for such a notice. If You created one or more Modification(s)
You may add your name as a Contributor to the notice described in
Exhibit A. You must also duplicate this License in any documentation
for the Source Code where You describe recipients' rights or ownership
rights relating to Covered Code. You may choose to offer, and to
charge a fee for, warranty, support, indemnity or liability
obligations to one or more recipients of Covered Code. However, You
may do so only on Your own behalf, and not on behalf of the Initial
Developer or any Contributor. You must make it absolutely clear than
any such warranty, support, indemnity or liability obligation is
offered by You alone, and You hereby agree to indemnify the Initial
Developer and every Contributor for any liability incurred by the
Initial Developer or such Contributor as a result of warranty,
support, indemnity or liability terms You offer.
3.6. Distribution of Executable Versions.
You may distribute Covered Code in Executable form only if the
requirements of Section 3.1-3.5 have been met for that Covered Code,
and if You include a notice stating that the Source Code version of
the Covered Code is available under the terms of this License,
including a description of how and where You have fulfilled the
obligations of Section 3.2. The notice must be conspicuously included
in any notice in an Executable version, related documentation or
collateral in which You describe recipients' rights relating to the
Covered Code. You may distribute the Executable version of Covered
Code or ownership rights under a license of Your choice, which may
contain terms different from this License, provided that You are in
compliance with the terms of this License and that the license for the
Executable version does not attempt to limit or alter the recipient's
rights in the Source Code version from the rights set forth in this
License. If You distribute the Executable version under a different
license You must make it absolutely clear that any terms which differ
from this License are offered by You alone, not by the Initial
Developer or any Contributor. You hereby agree to indemnify the
Initial Developer and every Contributor for any liability incurred by
the Initial Developer or such Contributor as a result of any such
terms You offer.
3.7. Larger Works.
You may create a Larger Work by combining Covered Code with other code
not governed by the terms of this License and distribute the Larger
Work as a single product. In such a case, You must make sure the
requirements of this License are fulfilled for the Covered Code.
4. Inability to Comply Due to Statute or Regulation.
If it is impossible for You to comply with any of the terms of this
License with respect to some or all of the Covered Code due to
statute, judicial order, or regulation then You must: (a) comply with
the terms of this License to the maximum extent possible; and (b)
describe the limitations and the code they affect. Such description
must be included in the LEGAL file described in Section 3.4 and must
be included with all distributions of the Source Code. Except to the
extent prohibited by statute or regulation, such description must be
sufficiently detailed for a recipient of ordinary skill to be able to
understand it.
5. Application of this License.
This License applies to code to which the Initial Developer has
attached the notice in Exhibit A and to related Covered Code.
6. Versions of the License.
6.1. New Versions.
Netscape Communications Corporation ("Netscape") may publish revised
and/or new versions of the License from time to time. Each version
will be given a distinguishing version number.
6.2. Effect of New Versions.
Once Covered Code has been published under a particular version of the
License, You may always continue to use it under the terms of that
version. You may also choose to use such Covered Code under the terms
of any subsequent version of the License published by Netscape. No one
other than Netscape has the right to modify the terms applicable to
Covered Code created under this License.
6.3. Derivative Works.
If You create or use a modified version of this License (which you may
only do in order to apply it to code which is not already Covered Code
governed by this License), You must (a) rename Your license so that
the phrases "Mozilla", "MOZILLAPL", "MOZPL", "Netscape",
"MPL", "NPL" or any confusingly similar phrase do not appear in your
license (except to note that your license differs from this License)
and (b) otherwise make it clear that Your version of the license
contains terms which differ from the Mozilla Public License and
Netscape Public License. (Filling in the name of the Initial
Developer, Original Code or Contributor in the notice described in
Exhibit A shall not of themselves be deemed to be modifications of
this License.)
7. DISCLAIMER OF WARRANTY.
COVERED CODE IS PROVIDED UNDER THIS LICENSE ON AN "AS IS" BASIS,
WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
WITHOUT LIMITATION, WARRANTIES THAT THE COVERED CODE IS FREE OF
DEFECTS, MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE OR NON-INFRINGING.
THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE COVERED CODE
IS WITH YOU. SHOULD ANY COVERED CODE PROVE DEFECTIVE IN ANY RESPECT,
YOU (NOT THE INITIAL DEVELOPER OR ANY OTHER CONTRIBUTOR) ASSUME THE
COST OF ANY NECESSARY SERVICING, REPAIR OR CORRECTION. THIS DISCLAIMER
OF WARRANTY CONSTITUTES AN ESSENTIAL PART OF THIS LICENSE. NO USE OF
ANY COVERED CODE IS AUTHORIZED HEREUNDER EXCEPT UNDER THIS DISCLAIMER.
8. TERMINATION.
8.1. This License and the rights granted hereunder will terminate
automatically if You fail to comply with terms herein and fail to cure
such breach within 30 days of becoming aware of the breach. All
sublicenses to the Covered Code which are properly granted shall
survive any termination of this License. Provisions which, by their
nature, must remain in effect beyond the termination of this License
shall survive.
8.2. If You initiate litigation by asserting a patent infringement
claim (excluding declatory judgment actions) against Initial Developer
or a Contributor (the Initial Developer or Contributor against whom
You file such action is referred to as "Participant") alleging that:
(a) such Participant's Contributor Version directly or indirectly
infringes any patent, then any and all rights granted by such
Participant to You under Sections 2.1 and/or 2.2 of this License
shall, upon 60 days notice from Participant terminate prospectively,
unless if within 60 days after receipt of notice You either: (i)
agree in writing to pay Participant a mutually agreeable reasonable
royalty for Your past and future use of Modifications made by such
Participant, or (ii) withdraw Your litigation claim with respect to
the Contributor Version against such Participant. If within 60 days
of notice, a reasonable royalty and payment arrangement are not
mutually agreed upon in writing by the parties or the litigation claim
is not withdrawn, the rights granted by Participant to You under
Sections 2.1 and/or 2.2 automatically terminate at the expiration of
the 60 day notice period specified above.
(b) any software, hardware, or device, other than such Participant's
Contributor Version, directly or indirectly infringes any patent, then
any rights granted to You by such Participant under Sections 2.1(b)
and 2.2(b) are revoked effective as of the date You first made, used,
sold, distributed, or had made, Modifications made by that
Participant.
8.3. If You assert a patent infringement claim against Participant
alleging that such Participant's Contributor Version directly or
indirectly infringes any patent where such claim is resolved (such as
by license or settlement) prior to the initiation of patent
infringement litigation, then the reasonable value of the licenses
granted by such Participant under Sections 2.1 or 2.2 shall be taken
into account in determining the amount or value of any payment or
license.
8.4. In the event of termination under Sections 8.1 or 8.2 above,
all end user license agreements (excluding distributors and resellers)
which have been validly granted by You or any distributor hereunder
prior to termination shall survive termination.
9. LIMITATION OF LIABILITY.
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL YOU, THE INITIAL
DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO ANY PERSON FOR
ANY INDIRECT, SPECIAL, INCIDENTAL, OR CONSEQUENTIAL DAMAGES OF ANY
CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF GOODWILL,
WORK STOPPAGE, COMPUTER FAILURE OR MALFUNCTION, OR ANY AND ALL OTHER
COMMERCIAL DAMAGES OR LOSSES, EVEN IF SUCH PARTY SHALL HAVE BEEN
INFORMED OF THE POSSIBILITY OF SUCH DAMAGES. THIS LIMITATION OF
LIABILITY SHALL NOT APPLY TO LIABILITY FOR DEATH OR PERSONAL INJURY
RESULTING FROM SUCH PARTY'S NEGLIGENCE TO THE EXTENT APPLICABLE LAW
PROHIBITS SUCH LIMITATION. SOME JURISDICTIONS DO NOT ALLOW THE
EXCLUSION OR LIMITATION OF INCIDENTAL OR CONSEQUENTIAL DAMAGES, SO
THIS EXCLUSION AND LIMITATION MAY NOT APPLY TO YOU.
10. U.S. GOVERNMENT END USERS.
The Covered Code is a "commercial item," as that term is defined in
48 C.F.R. 2.101 (Oct. 1995), consisting of "commercial computer
software" and "commercial computer software documentation," as such
terms are used in 48 C.F.R. 12.212 (Sept. 1995). Consistent with 48
C.F.R. 12.212 and 48 C.F.R. 227.7202-1 through 227.7202-4 (June 1995),
all U.S. Government End Users acquire Covered Code with only those
rights set forth herein.
11. MISCELLANEOUS.
This License represents the complete agreement concerning subject
matter hereof. If any provision of this License is held to be
unenforceable, such provision shall be reformed only to the extent
necessary to make it enforceable. This License shall be governed by
California law provisions (except to the extent applicable law, if
any, provides otherwise), excluding its conflict-of-law provisions.
With respect to disputes in which at least one party is a citizen of,
or an entity chartered or registered to do business in the United
States of America, any litigation relating to this License shall be
subject to the jurisdiction of the Federal Courts of the Northern
District of California, with venue lying in Santa Clara County,
California, with the losing party responsible for costs, including
without limitation, court costs and reasonable attorneys' fees and
expenses. The application of the United Nations Convention on
Contracts for the International Sale of Goods is expressly excluded.
Any law or regulation which provides that the language of a contract
shall be construed against the drafter shall not apply to this
License.
12. RESPONSIBILITY FOR CLAIMS.
As between Initial Developer and the Contributors, each party is
responsible for claims and damages arising, directly or indirectly,
out of its utilization of rights under this License and You agree to
work with Initial Developer and Contributors to distribute such
responsibility on an equitable basis. Nothing herein is intended or
shall be deemed to constitute any admission of liability.
13. MULTIPLE-LICENSED CODE.
Initial Developer may designate portions of the Covered Code as
"Multiple-Licensed". "Multiple-Licensed" means that the Initial
Developer permits you to utilize portions of the Covered Code under
Your choice of the NPL or the alternative licenses, if any, specified
by the Initial Developer in the file described in Exhibit A.
EXHIBIT A-Netscape Public License.
"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 the Netscape Mailstone code, released
March 17, 2000.
The Initial Developer of the Original Code is Netscape
Communications Corporation. Portions created by Netscape are
Copyright (C) 1999-2000 Netscape Communications Corporation. All
Rights Reserved.
Contributor(s): Dan Christian <robodan@netscape.com>
Marcel DePaolis <marcel@netscape.com>
Jim Salter <jsalter@netscape.com>
Mike Blakely, David Shak, Brain Williams
Alternatively, the contents of this file may be used under the
terms of the GNU General Public license Version 2 or later
(the "GPL"), in which case the provisions of GPL are
applicable instead of those above. If you wish to allow use
of your version of this file only under the terms of the GPL
and not to allow others to use your version of this file
under the NPL, indicate your decision by deleting the
provisions above and replace them with the notice and other
provisions required by the GPL. If you do not delete the
provisions above, a recipient may use your version of this
file under either the NPL or the GPL License."
----------------------------------------------------------------------
AMENDMENTS
The Netscape Public License Version 1.1 ("NPL") consists of the
Mozilla Public License Version 1.1 with the following Amendments,
including Exhibit A-Netscape Public License. Files identified with
"Exhibit A-Netscape Public License" are governed by the Netscape
Public License Version 1.1.
Additional Terms applicable to the Netscape Public License.
I. Effect.
These additional terms described in this Netscape Public
License -- Amendments shall apply to the Mozilla Communicator
client code and to all Covered Code under this License.
II. "Netscape's Branded Code" means Covered Code that Netscape
distributes and/or permits others to distribute under one or more
trademark(s) which are controlled by Netscape but which are not
licensed for use under this License.
III. Netscape and logo.
This License does not grant any rights to use the trademarks
"Netscape", the "Netscape N and horizon" logo or the "Netscape
lighthouse" logo, "Netcenter", "Gecko", "Java" or "JavaScript",
"Smart Browsing" even if such marks are included in the Original
Code or Modifications.
IV. Inability to Comply Due to Contractual Obligation.
Prior to licensing the Original Code under this License, Netscape
has licensed third party code for use in Netscape's Branded Code.
To the extent that Netscape is limited contractually from making
such third party code available under this License, Netscape may
choose to reintegrate such code into Covered Code without being
required to distribute such code in Source Code form, even if
such code would otherwise be considered "Modifications" under
this License.
V. Use of Modifications and Covered Code by Initial Developer.
V.1. In General.
The obligations of Section 3 apply to Netscape, except to
the extent specified in this Amendment, Section V.2 and V.3.
V.2. Other Products.
Netscape may include Covered Code in products other than the
Netscape's Branded Code which are released by Netscape
during the two (2) years following the release date of the
Original Code, without such additional products becoming
subject to the terms of this License, and may license such
additional products on different terms from those contained
in this License.
V.3. Alternative Licensing.
Netscape may license the Source Code of Netscape's Branded
Code, including Modifications incorporated therein, without
such Netscape Branded Code becoming subject to the terms of
this License, and may license such Netscape Branded Code on
different terms from those contained in this License.
VI. Litigation.
Notwithstanding the limitations of Section 11 above, the
provisions regarding litigation in Section 11(a), (b) and (c) of
the License shall apply to all disputes relating to this License.

View File

@@ -1,246 +0,0 @@
# Makefile for mstone
# use gmake
# Builds each of the components and then packages everything
topsrcdir = .
CP := cp -p
ifndef INCLUDED_CONFIG_MK
include $(topsrcdir)/config/config.mk
endif
# dynamically find the optional directories names
LIBGD_DIR = $(wildcard gd?.*)
GNUPLOT_DIR = $(wildcard gnuplot-?.*)
PERL_DIR = $(wildcard perl5.*)
# file that we package
GDFILES = gd.txt gd.html libgd.* gd.h demoin.gif gddemo giftogd webgif
GNUPLOTFILES = gnuplot Copyright gnuplot_x11 gnuplot.1 gnuplot.gih
VERSION = 4.3
TARBALL = mstone-$(VERSION)-$(NSARCH)$(OBJDIR_TAG).tar.gz
ZIPFILE = mstone-$(VERSION)-$(NSARCH)$(OBJDIR_TAG).zip
TARBALL_ALL = mstone-$(VERSION)-all$(OBJDIR_TAG).tar.gz
ZIPFILE_ALL = mstone-$(VERSION)-all$(OBJDIR_TAG).zip
NTFILES = mstone.bat process.bat setup.bat
all:: usage
usage::
@$(ECHO) "gmake [ release | rpackage | debug | dpackage ]"
@$(ECHO) " [ DIST=/m/dist/mailstone/1999xxxx dist ]"
@$(ECHO) " [ all_DBG | all_OPT ]"
@$(ECHO) "perl is" $(PERL_DIR) ". gd is" $(LIBGD_DIR) ". gnuplot is" $(GNUPLOT_DIR) "."
targets:: $(OBJDIR) mailclient
ifneq (,$(LIBGD_DIR))
targets:: libgd
endif
ifneq (,$(GNUPLOT_DIR))
targets:: gnuplot
endif
ifneq (,$(PERL_DIR))
targets:: perl
endif
$(OBJDIR):
-mkdir -p $(OBJDIR)
mailclient::
@$(ECHO) "\n===== [`date`] making OS_CONFIG=$(NSARCH) BUILD_VARIANT=$(BUILD_VARIANT)\n"
cd src; $(MAKE) BUILD_VARIANT=$(BUILD_VARIANT) OBJDIR=../$(OBJDIR) PKGDIR=../$(PKGDIR) all
# Use our top level makefiles to drive the component builds
libgd $(OBJDIR)/gd/libgd.a::
$(MAKE) -f gd.mk LIBGD_DIR=$(LIBGD_DIR) libgd
gnuplot $(OBJDIR)/gnuplot/gnuplot::
$(MAKE) -f gnuplot.mk LIBGD_DIR=$(LIBGD_DIR) GNUPLOT_DIR=$(GNUPLOT_DIR) gnuplot
perl $(OBJDIR)/perl/perl::
$(MAKE) -f perl.mk PERL_DIR=$(PERL_DIR) perl
# Create packaging binary directories
# Note: dont make gd or gnuplot here. For multi-OS, they are links
mkpkgdirs:: $(PKGDIR)/bin $(PKGDIR)/conf $(PKGDIR)/data $(PKGDIR)/doc
$(PKGDIR)/bin:
mkdir -p $(PKGDIR)/bin
$(PKGDIR)/conf:
mkdir -p $(PKGDIR)/conf
$(PKGDIR)/data:
mkdir -p $(PKGDIR)/data
$(PKGDIR)/doc:
mkdir -p $(PKGDIR)/doc
$(PKGDIR)/gd:
mkdir -p $(PKGDIR)/gd
$(PKGDIR)/gnuplot:
mkdir -p $(PKGDIR)/gnuplot
$(PKGDIR)/perl:
mkdir -p $(PKGDIR)/perl
# operating system independent share-files (at least for Unix)
pkg-share-files:: mkpkgdirs
@$(ECHO) "\n===== [`date`] making package share-files...\n"
$(CP) mstone process $(PKGDIR)
(cd $(PKGDIR); [ ! -f setup ] || rm -f setup; ln -s mstone setup)
(cd $(PKGDIR); [ ! -f cleanup ] || rm -f cleanup; ln -s mstone cleanup)
(cd $(PKGDIR); [ ! -f checktime ] || rm -f checktime; ln -s mstone checktime)
(cd $(PKGDIR); [ ! -f timesync ] || rm -f timesync; ln -s mstone timesync)
-$(CP) nsarch bin/*.pl $(PKGDIR)/bin
-$(CP) conf/*.wld conf/*.wld.in conf/*.html $(PKGDIR)/conf
-$(CP) data/*.msg $(PKGDIR)/data
-$(CP) doc/*.html doc/*.gif $(PKGDIR)/doc
-$(CP) INSTALL $(PKGDIR)
-$(CP) README $(PKGDIR)
-$(CP) ChangeLog $(PKGDIR)
-$(CP) LICENSE $(PKGDIR)
# split out OS specific file so that combined packaging possible (set PKGDIR)
pkg-arch-files-gd:: $(PKGDIR)/gd $(OBJDIR)/gd/libgd.a
$(CP) $(addprefix $(OBJDIR)/gd/, $(GDFILES)) $(PKGDIR)/gd
-$(STRIP) $(PKGDIR)/gd/webgif $(PKGDIR)/gd/giftogd $(PKGDIR)/gd/gddemo
pkg-arch-files-gnuplot:: $(PKGDIR)/gnuplot $(OBJDIR)/gnuplot/gnuplot
$(CP) $(addprefix $(OBJDIR)/gnuplot/, $(GNUPLOTFILES)) $(PKGDIR)/gnuplot
-$(STRIP) $(PKGDIR)/gnuplot/gnuplot $(PKGDIR)/gnuplot/gnuplot_x11
ifneq (,$(LIBGD_DIR))
pkg-arch-files:: pkg-arch-files-gd
endif
ifneq (,$(GNUPLOT_DIR))
pkg-arch-files:: pkg-arch-files-gnuplot
endif
pkg-arch-files:: $(PKGDIR)/bin $(OBJDIR)/mailclient
@$(ECHO) "\n===== [`date`] making package arch-files...\n"
$(CP) $(OBJDIR)/mailclient $(PKGDIR)/bin
-$(STRIP) $(PKGDIR)/bin/mailclient
pkg-perl-files:: $(PKGDIR)/bin $(OBJDIR)/perl/perl
@$(ECHO) "\n===== [`date`] making package perl-files...\n"
$(MAKE) -f perl.mk PERL_DIR=$(PERL_DIR) \
BUILD_VARIANT=$(BUILD_VARIANT) \
OBJDIR=$(OBJDIR) PKGDIR=$(PKGDIR) package-perl
find $(PKGDIR)/perl/lib -name .packlist -exec rm {} \; -print
-$(STRIP) $(PKGDIR)/perl/bin/perl
-$(STRIP) $(PKGDIR)/perl/bin/a2p
# for combined packaging, this should not be part of pkg-arch-files
# perl is handled seperately do to its size
ifneq (,$(PERL_DIR))
pkg:: pkg-perl-files
endif
pkg:: targets pkg-share-files pkg-arch-files
tarball: build/$(TARBALL)
build/$(TARBALL):
@$(ECHO) "\n===== [`date`] making os tar file...\n"
-rm -f build/$(TARBALL)
cd $(dir $(PKGDIR)) && tar cf - . | gzip > ../../$(TARBALL)
zipfile: build/$(ZIPFILE)
build/$(ZIPFILE):
@$(ECHO) "\n===== [`date`] making os zip file...\n"
-rm -f build/$(ZIPFILE)
cd $(dir $(PKGDIR)) && zip -r -q ../../$(ZIPFILE) .
########################################################################
# Generate a combined build for every Unix OS that is already packaged
# NT has to be done seperately because it has different file names
# We have to nuke some old parts, because permissions wont allow overwrites
# Finally, dont ship perl development headers and libraries
all_DBG all_OPT::
@$(ECHO) "===== [`date`] unified packaging for $@..."
$(MAKE) NSARCH=$@ OBJDIR_TAG='' \
PKGDIR=$(topsrcdir)/build/package/$@.OBJ/mstone pkg-share-files
./ospkg.sh $@.OBJ \
$(notdir $(shell ls -d build/package/[A-Z]*$(subst all,,$@.OBJ)))
[ -d $(topsrcdir)/build/package/$@.OBJ/mstone/bin/WINNT4.0 ] \
&& cp -p $(NTFILES) $(topsrcdir)/build/package/$@.OBJ/mstone; :
-rm -f ./build/mstone-$(VERSION)-$@.tar.gz
cd ./build/package/$@.OBJ \
&& tar cf - . | gzip > ../../mstone-$(VERSION)-$@.tar.gz
-rm -f ./build/mstone-$(VERSION)-$@.zip
cd ./build/package/$@.OBJ \
&& zip -r -q ../../mstone-$(VERSION)-$@.zip .
########################################################################
# Copy all the packaged trees to the distribution site
# Copy in the unified tarball and zip file
# Link mstone to mailstone for Netscape back compatibility
# Re-map short Linux name to standard Netscape convention
dist::
@[ "$(DIST)" != "" ] || ($(MAKE) usage && /bin/false)
@[ ! -d "$(DIST)" ] || ($(ECHO) "Error: $(DIST) already exists" && \
$(MAKE) usage && /bin/false)
mkdir -p $(DIST)
cp -p build/mstone-$(VERSION)-all_*.*[a-z] $(DIST)/
(cd build/package; tar cf - *.OBJ) | (cd $(DIST); tar xf - )
for l in $(DIST)/*_???.OBJ ; do \
(cd $$l; ln -s mstone mailstone); done
cd $(DIST); for l in Linux*_???.OBJ ; do \
nn=`echo $$l | sed -e 's/_OPT/_glibc_PTH_OPT/' | sed -e 's/_DBG/_glibc_PTH_DBG/'`; \
ln -s $$l $$nn; done
# since the default is release mode, this can just work off a dependency
release:: targets
#release::
# @$(ECHO) "\n===== [`date`] making release build..."
# $(MAKE) BUILD_VARIANT=release OBJDIR_TAG=_OPT targets
@$(ECHO) "\n===== [`date`] making release build done."
rpackage:: release pkg #tarball zipfile
#rpackage:: release
# @$(ECHO) "\n===== [`date`] making release package..."
# $(MAKE) BUILD_VARIANT=release OBJDIR_TAG=_OPT pkg tarball zipfile
@$(ECHO) "\n===== [`date`] making release package done."
# since the default is release mode, start a make with the right mode
debug::
@$(ECHO) "\n===== [`date`] making debug build..."
$(MAKE) BUILD_VARIANT=debug OBJDIR_TAG=_DBG targets
@$(ECHO) "\n===== [`date`] making debug build done."
# We dont usually bother to tar up a debug build
dpackage:: debug
@$(ECHO) "\n===== [`date`] making debug package..."
$(MAKE) BUILD_VARIANT=debug OBJDIR_TAG=_DBG pkg
@$(ECHO) "\n===== [`date`] making debug package done."
# These are old and may be broken
cleanvariant::
(cd src; $(MAKE) OBJDIR=../$(OBJDIR) clean)
rm -rf $(PKGDIR)
clean::
$(MAKE) BUILD_VARIANT=release OBJDIR_TAG=_OPT cleanvariant
$(MAKE) BUILD_VARIANT=debug OBJDIR_TAG=_DBG cleanvariant
distcleanvariant::
(cd src; $(MAKE) OBJDIR=../$(OBJDIR) distclean)
rm -rf $(OBJDIR) $(PKGDIR)
distclean:: clean
$(MAKE) BUILD_VARIANT=release OBJDIR_TAG=_OPT distcleanvariant
$(MAKE) BUILD_VARIANT=debug OBJDIR_TAG=_DBG distcleanvariant

View File

@@ -1,75 +0,0 @@
MSTONE 4.2
Mstone is a mail server performance testing tool designed to simulate
the different types and volume of mail traffic a mail server would
experience during a peak activity period. Mstone was formerly known
as Mailstone.
A quick installation guide is available in INSTALL.
The full Mailstone 4.15 user manual is available at
http://lxr.mozilla.org/mozilla/source/mstone/doc/MailStone.html
Testing strategy
----------------
Mstone is capable of opening SMTP, POP3, IMAP4, and other protocol
connections to mail servers. The number and type of connections made
to the mail server is based on a weighted command list which provides
the ability to test mail server implementation requirements.
A series of perl script allow you to setup client machines, run tests,
and then cleanup client machine files. Each client machine has a copy
of the mailclient program and SMTP message files. When the test is
run, the mailclient is started with the proper command line and work load.
After experimenting with mstone loads, you will notice that there
are a few factors that can distort server the byte and message
throughput. You will find that the server byte throughput is related
to the average SMTP message (file) size. Also, server throughput, in
bytes and messages, is affected by larger than normal POP3/IMAP4
mailboxes. So it is important to approach the mstone command
configuration with data collected from existing mail server
implementations, for example, a customer might say "during our peak
activity in the morning, we handle up to two thousand employees
sending an average of 5 messages of 20K average size and receiving 25
messages of same size". With input like this, you can begin tuning
mstone to generate relevant data.
There are two important things to consider when reviewing the results of
mstone performance analysis: Was the test run on target for
simulating the type and volume of mail traffic; and did the server, both
software and machine, handle the load within an acceptable margin?
With this information, it can be determined: whether enough SMTP
connections were made to the server during the run, and how many
messages were downloaded over how many POP3/IMAP4 connections. If the
number of SMTP connections is not in the acceptable range, then
consider adding more client processes/machines or checking the server
performance during the run. The message/connection ratio for
POP3/IMAP4 should be checked for soundness, and adjustments should be
made to the mailboxes before running the next test.
Monitoring the server performance during test runs is crucial in
understanding the results. If the number of client connections is not
being achieved and the server cpu usage and process run queue is not
settling down after the initial spike, then modifications to the server
architecture could be in order.
The analysis of mstone results is an iterative process of client
(mstone client) and server tuning. The bottom line is to determine
whether the messaging solution can handle the type of load expected in
an acceptable manner.
Server Log Tuning
-----------------
The Messaging and Directory server ship with access logging enabled by
default. This gives the most information about what is going on in
the system, but can reduce performance. You should test the way the
system will be run.
Noticeable performance increases are often obtained by disabling access
logging on the directory server and by reducing the logging level of
the messaging servers from "Notice" to "Warning".

View File

@@ -1,16 +0,0 @@
Under the terms of the Mozilla Public License, Version 1.1, granted
by Mozilla, Sendmail Inc. is contributing the following Source Code
changes to the Mozilla mstone source repository.
Sendmail, Inc. is making available these source code modifications
according to the Distribution Obligations as listed in section 3
of the Mozilla Public License, Version 1.1
The changes provided herein are described in the included files:
README.Sendmail-mstone_changes.html
ChangeLog-Sendmail
All modifications are derived, directly or indirectly, from the original
code as provided by Mozilla.

View File

@@ -1,419 +0,0 @@
<html>
<head><title>Sendmail, Inc. Mstone changes</title></head>
<body>
<h3>Mstone modifications</h3>
<ol>
<li><h4>Random Variable Parameters</h4>
In addition to taking on constant values, some parameters can now be
sampled from probability distributions. These variables are:
<ul>
<li><code>startDelay</code>
<li><code>idleTime</code>
<li><code>blockTime</code>
<li><code>loopDelay</code>
<li><code>numRecips</code>
<li><code>size</code>
<li><code>headers</code>
<li><code>mime</code>
<li><code>leaveMailOnServer</code>
<li><code>bandwidth</code>
<li><code>latency</code>
</ul>
<p>
The following distributions are currently implemented:
<ul>
<li>Uniform (~unif(a, b))
<li>Normal (~normal(a, b))
<li>Log-Normal (~lognormal(a, b))
<li>Weibull (~weib(a, b, c))
<li>Exponential (~exp(a))
<li>Constant (~const(a))
<li>Binomial (~binomial(a))
</ul>
<p>
Sampled values may also be constrained by a minimum and maximum value.
This is particularly useful for e.g. the normal and lognormal
distributions, though over-tight constraints will create a "lump" at
the end of the generated distribution, and any constraints may change
the distribution's characteristics (e.g. mean). To specify
constraints, do the following:
<h5>getdist</h5>
<p>
There is also a helper tool called "getdist" in the Sendmail mstone
distribution. Building getdist:
<pre>
file: mstone/src/idle.c
# gcc -DTEST_PROB -Dxalloc=malloc -Dxfree=free -lm idle.c
</pre>
<p>
Rename the resulting binary to "getdist"
<p>
<b>Using getdist</b>
<p>
To run it interactively:
<ol>
<li>Start up getdist</li>
<li>Enter the distribution you want to see a sample and mean (ignore warning about 'gets()')</li>
</ol>
<p>
Example:
<pre>
% getdist
warning: this program uses gets(), which is unsafe.
~lognormal(3,4.5)
Samples:
6.846493
0.109578
31.402784
0.467486
21.905714
7.113645
0.225102
29.372181
4.252427
1.444493
mean: 29.128932
</pre>
<p>
It will only OUTPUT 10 samples as examples but the mean
is calculated based on 2000 samples by default. You can specify
the mean sample size on the command line by giving it a -n option:
<pre>
% getdist -n 1000000
</pre>
<p>
This will calculate the mean based on a sample of 1000000 entries.
<p>
The above data was calculated with 2M samples.
<p>
<i>Known Problems</i><BR>
It appears (anecdotally) that the first set of samples returned by
getdist are inaccurate. After starting the getdist program interactively,
it may appear necessary to ignore the first set of output, but that entering
the distribution again will return a more accurate result.<BR>
<p>
For example:
<pre>
# getdist
~lognormal(10,2)
Samples:
670043.575395
48.842052
54.039792
0.460849
2.152179
32.534664
6.163511
42.827706
27.806642
4.966444
mean: 364.747532
var: 224352671.855287
stddev: 14978.406853
~lognormal(10,2)
Samples:
1.842800
39.760727
4.798239
10.722216
27.052030
28.923926
61.504273
20.743583
5.373420
42.195531
mean: 25.510130
var: 2674.124997
stddev: 51.711942
</pre>
<dl>
<dt><code>~dist(...) : [min,]</code>
<dd>force all sampled values to be >= <code>min</code>
<dt><code>~dist(...) : [min,max]</code>
<dd>force all sampled values X to be <code>min</code> <= X <= <code>max</code>.
<dt><code>~dist(...) : [,max]</code>
<dd>force values to be <= <code>max</code>
</dl>
<li><h4>Parsing Changes</h4>
All of the time-valued test parameters except <code>rampTime</code>
and <code>time</code> now have millisecond values. In particular,
this means that a value of "17" parses to 17
<strong>milliseconds</strong>, not 17 seconds. Use "17s" instead.
<p>
Size-valued parameters can have units of "k" or "m" to indicate
kilobytes or megabytes, respectively.
<p>
For parameters supporting random-variable values, a value starting
with "~" will be interpreted as a random variable specification of the
form "~NAME([ARGS ...])". Unit suffixes (e.g. "s", and "m") apply to
random variable parameters as well as constant values. This implies
that for unitless parameters, the suffixes corresponding to the random
variable's units will still be recognized (i.e. the values will be
multiplied by the appropriate factors). This is probably best
considered as a "bug" rather than excercised as a "feature."
<p>
<code>blockTime</code>, <code>loopDelay</code>, and
<code>idleTime</code> now refer to the total amount of time a command
block, loop, and initialization phase should take, respectively, not
the amount of time the simulation should stall after completing each
phase. For example, if a block takes 2 seconds to complete, and the
block time is 4 seconds, the client thread will sleep for 2 seconds
after finishing instead of the full 4.<p>
<code>rampTime</code> is now solely for the benefit of the client
machines, to control the rate at which threads are started. The rate
at which commands from a given protocol are started is now controlled
by the <code>startDelay</code> variable, which is
distribution-valued. Thus the actual command loop now looks like
this:
<pre>
wait for startDelay
start counting idleTime
start counting blockTime
execute start function
wait for remainder of idleTime
for (1 ... numLoops)
start counting loopDelay
execute loop function
wait for remainder of loopDelay
execute end function
wait for remainder of blockTime
</pre>
<li><h4>Automatic Message Generation</h4>
Both MIME and text/plain messages can now be generated automatically.
To enable automatic message generation, set the <code>file</code>
attribute of an SMTP block to "auto". The messages will then have at
least as many headers as the value of the <code>headers</code>
attribute, have bodies <code>size</code> bytes long, and have
<code>mime</code> MIME parts. To generate text/plain messages, set
<code>mime</code> to zero.
<table border=1 cellpadding=2>
<tr><th>Attribute</th><th>Description</th></tr>
<tr>
<td><code>headers <i>N</i></code></td>
<td>(optional; default=5) Each automatically generated message will
have <code>min(<i>N</i>, min_hdrs)</code> headers, where
<code>min_hdrs</code> is 5 for text/plain, and about 7 for MIME
messages. Additional headers are named
"X-generated-header-%d". </td>
</tr>
<tr>
<td><code>size <i>N</i></code></td>
<td>(required) Each generated message will have a body be <i>N</i>
bytes long.</td>
</tr>
<tr>
<td><code>mime <i>N</i></code></td>
<td>Each generated message will have <code>N</code> MIME parts. If
the value of <code>size</code> does not allow <code>N</code> parts,
one part is generated. If <code>N</code> is zero, the message is
text/plain.</td>
</tr>
<tr>
<td><code>checksum <i>{yes|no|save}</i></code></td>
<td>For SMTP: each generated message will have the MD5 sum of the
message body appended to the message unless the value is <i>no</i>.
For retrieval protocols, checksums will be verified. (NOT
IMPLEMENTED: if <code>checksum</code> is <i>save</i>, messages with
incorrect checksums will be saved to temporary files for later
examination.) </td>
</tr>
</table>
<li><h4>Linespeed Emulation</h4>
SMTP, POP, and IMAP all support a form of linespeed emulation,
controlled via the <code>latency</code> and <code>bandwidth</code>
parameters.
<table border=1 cellpadding=2>
<tr><th>Attribute</th><th>Description</th></tr>
<tr><td><code>latency <i>N</i></code></td>
<td>Set the network latency to <code>N</code> milliseconds.</td></tr>
<tr><td><code>bandwidth <i>N</i></code></td>
<td>Transfer at most <code>N</code> bytes per second.</td></tr>
</table>
<li><h4>TLS support</h4>
If you have openssl, mstone now supports STARTTLS for SMTP and IMAP,
and STLS for POP (both old-style and MULTIPOP), as well as SSL
tunneling. This support is <strong>not</strong> well-tested, and TLS
can be a bit tricky to set up, so use at your own risk. TLS
introduces several new attributes to the protocol blocks:
<table border=1 cellpadding=2>
<tr><th>Attribute</th><th>Description</th></tr>
<tr><td><code>sslcert <i>filename</i></code></td>
<td>Read the client's cert from <i>filename</i>, which should be in
PEM format. </td></tr>
<tr><td><code>sslkey <i>filename</i></code></td>
<td>Read the client's private key from <i>filename</i>, which should
be in PEM format.</td></tr>
<tr><td><code>usetls {0|1}</code></td>
<td>Turn STARTTLS/STLS on or off (default: off). <b>Note</b>:
<code>starttls</code> and <code>ssltunnel</code> are mutually
exlcusive.</td></tr>
<tr><td><code>ssltunnel {0|1}</code></td>
<td>Turn SSL tunneling on or off (default: off).</td></tr>
</table>
<li><h4>"Multi-POP" protocol</h4>
<b>Note</b>: multipop, always a band-aid, is hopefully obsoleted by
the new event-queue execution model. Though it has not been tested,
it should be easier, more efficient, and more accurate to use the
normal POP protocol with events to simulate a large number of users
with a reasonable number of threads. Once this has been tested,
automatically-generated workloads should revert to using POP.
<p>To simulate a large number of concurrently active POP users with
Mstone's extravagant use of threads, and to simulate a period of
activity comprised of several POP sessions one can use the MULTIPOP
protocol to multiplex active users onto a single thread. The protocol
has all the same parameters as POP, plus the following:
<table border=1 cellpadding=2>
<tr><th>Attribute</th><th>Description</th></tr>
<tr><td><code>userSpacing</code></td>
<td>Total time for each user's session.</td>
</tr>
<tr><td><code>usersPerModem</code></td>
<td>The maximum number of concurrently connected users is limited
to <code>users / usersPerModem</code></td>
</tr>
</table>
<p>
The protocol functions are substantially different. Instead of
simulating a single login-check-logout sequence, a protocol block
simulates an entire active period for a set of users. Each user
checks mail once in the initialization function, once each time the
loop body is executed, and once more in the protocol conclusion
function.
<p>
<li><h4>"Event-queue" implementation</h4>
<p>
Unless the "noevents" parameter in the "&lt;config&gt;" section is set to 1,
or mailclient is not given the "-e" flag, mstone will run in
"event-queue" mode. Instead of creating one thread per client, it
will multiplex clients over a much smaller number of threads. This is
intended to increase the tool's scalability.
<p>
Note that I/O is still synchronous with this model, so the number of
threads required will approximately equal the maximum number of
concurrent operations. Also note that this change does not reduce the
number of required file descriptors.
<p>
<li><h4>Other Minor Additions</h4>
<ul>
<li>IMAP now has a ramp-down time, enabled by defining
<code>IMAP_RAMPDOWN</code>. IMAP threads now exit uniformly between
the time the test is supposed to be over and the time Mstone starts
killing them.
<li>Mstone used to always time out connections after 60 seconds. The
timeout value can now be configured on a per-block basis via the
<code>timeout</code> parameter. The value of the timeout parameter must
be defined in milliseconds, so the following value would mean a timeout
of one (1) hour:<BR>
&nbsp;&nbsp;&nbsp;timeout 3600000
<li>Simplified client allocation. It is now possible to specify the
number of clients in each group by specifying a value for
<code>clients</code> in each <code>&lt;CLIENT&gt;</code> section and
<em>not</em> specifying a global <code>clientCount</code> in the
<code>&lt;CONFIG&gt;</code> section.
</ul>
<li><h4>Bug Fixes</h4>
<ul>
<li>SMTP now ignores debugging output appearing over the connection.
Before, Mstone would generate an error when talking to
e.g. <code>sendmail -d64.5</code>.
<li>(now it works...) The old sequence of IMAP commands used by
Mstone was incorrect. Instead of only downloading unread messages, it
would download all messages received since the start of the session
each time a new messages was received. Depending on what you were
doing, this could have a serious effect on your results.
</ul>
<li><h4>Wish List</h4>
<ul>
<li>Scriptable user behavior for POP and IMAP protocols. While we should
probably not go overboard, adding more configuration options to Mstone
is probably not the answer. There is already some support for more
complex behaviors in the IMAP code -- we may or may not want to make
use of it. More to the point, wider coverage of the IMAP
protocol is vital to QA's use of the tool.
</ul>
</ol>
</body></html>

View File

@@ -1,189 +0,0 @@
Mstone TODO List
Updated:
3-20-2000 Dan Christian
======================================================================
Minor improvements
Data reduction at each testbed client
Test message generator (plain and MIME styles)
More graphs for multiple runs
Option to drop a fraction of connections
IMAP delete without reading
Just get the message list and delete everything. This could
be the fastest way to drain out the store.
Display MIN/MAX or standard deviation on graphs
Gnuplot can do data points with error bars. You could either
use MIN/MAX or the standard deviation for the error bars. There are
issues with calculating the standard deviation numbers throughout the
graph that need to be addressed.
Statistics reset
At least the MIN and MAX statistics could be easily reset
during the test (after ramp up). This keeps the transients during
startup and shutdown from dominating these numbers. The standard
deviation statistics are much trickier to reset during the run. It
may be better to isolate sections in post processing.
Perl web server
Sometimes it would be nice to include our own web server to
provide the results (instead of using file: URLs). This would also be
a gateway to form based test configuration editing and allow results
to be interactively updated during tests. Perl with a socket library
could handle this without too much trouble.
Dynamic test loading
Finalize an API for dynamically loading tests. This would
allow tests to be added or updated separately from the core
functionality. This may be needed for some types of security testing.
Link graphs to the results tables
There are already tags by each graph. You should be able to
link the appropriate results table entry to each graph. This sort of
tricky since graphs often combine multiple entries.
Show statistics for every block
Statistics are actually kept for every block in every thread.
There should be a way to view information at this detail.
Man pages
The online docs are nice, but good 'ol man pages would be
great in a different way.
Reduce namespace polution
Scripts names like setup and cleanup are too general. They
should be part of the main 'mstone' script (e.g. mstone setup).
Examples of script series
Include example scripts to run entire series of tests in a
sane way.
Fix FORMAT clash
At the start of a test, each client process outputs the
information needed to report all its protocols. When there are
multiple processes on one client, these FORMAT lines can intermix and
cause parsing errors.
Set connection drop rate
Drop some percentage of the connections without a proper
shutdown. This tests how well a server can detect and recover from
hard disconnects.
Improve randomness
The way that we generate random numbers in a range may be not
generate the proper randomness. We are using lrand48()%range we
should use (lrand48/RAND_RANGE)*range. There are some end conditions
that need to be thought about. All of this is in the sequence code;
one change should fix (or break :) everything.
Also, we may be generating numbers that are never used. This
may be costly, and can create holes in the proper sequence.
Improve printing
The color graphs are great on screen, but tend to print
poorly. Either we need a better way to generate a printable version
(maybe through a CGI button), or the seperate protocols need to be
printed individually. Also, Communicator does a lousy job of keeping
title with tables or graphs. Hopefully, Mozilla will do better.
======================================================================
Whole new protocol tests:
ICQ
Test high volume instant messaging. Very useful for the
bridges and gateways that people are considering using.
WAP
WAP is the emerging standard for mobile phones.
WCAP
Web based calendar services
LDAP
Use the LDAP SDK to do basic LDAP testing. The SDK probably
isn't fast enough to call this a real performance test, but you can at
least test performance degredation due to load from a real application
(like a mail server).
DNS
Mail servers use DNS a lot. You should at least be able to
see if performance is degrading due to load.
Disk/filesystem
Test read, write, sync, link, un-link, and append performance under
multiple threads.
Cert servers
Test certificate authenticity checking performance
======================================================================
Possible dummy servers:
SMTP
Receive mail via SMTP and ignore it. Usefull for SMTP relay
testing.
DNS
Simulate slow DNS server lookups. Usefull for SMTP relay testing.
======================================================================
Major changes
Throttling
Monitor and control transaction rates so that specific load
levels can be easily specified. The rates should be able to vary to
simulate peek hour usage and disconnect-restore.
NSPR threading
Use NSPR for threading and sockets. This may allow other OSes
to be used as clients. This might be easy, since mstone does not need
any locking, just simple thread creation and harvesting. NSPR
argument parsing and hashes may also be useful.
SSL
Support SSL on the protocols that allow it. May require NSPR.
Line speed emulation
Simulate the variable delays and limited throughput of dial up
connections.
Scripting
Allow more detailed control of protocol tests. It looks
difficult to make this scalable and fast.
Combined tests
Deliver mail over SMTP and then see when it arrives using IMAP.

View File

@@ -1,462 +0,0 @@
#!/bin/ksh
########################################################################
# buildall - automated multi-platform build tool
#
# 10/09/97 - marcel - created
# 10/13/97 - marcel - support shared build tree
# 2/11/98 - marcel - updated for 4.0 Beta builds (need -update)
# 2/26/98 - marcel - added -r, -t and host specifiers
# 7/01/99 - robodan - added VAR=value ability
# 8/01/99 - robodan - explicitly know about building on localhost
# 10/15/99 - robodan - remove older OSes from build list
# 2000/4/7 - robodan - Created mstone version
########################################################################
#
# This script is intended to do a set of UNIX builds for a
# given CVS module. It is designed to use 'rsh' between a
# set of trusting hosts and use shared NFS storage with common
# mount points (e.g. /u/username/...)
#
# To check if you have rights to rsh to a particular host, try:
# rsh hostname "echo $PATH"
# You may have to edit your .rhosts or /etc/hosts.equiv
#
# A target directory will be created based on the current date.
#
# A set of global build logs plus a log per platform are kept
# in a log directory under the target
#
# It will checkout a copy of the source, duplicate it for
# each platform and perform a set of remote builds in parallel.
# The script will exit when all the work has been completed.
#
# Example usage:
# cd ~/src; buildall msg
# Result:
# ~/src/19980210_40.1/
# ~/src/19980210_40.1/logs/...
# ~/src/19980210_40.1/src/...
# ...
#
# Buildhosts
DEFAULT_BUILDHOSTS="kimo nugget vsync shave purgatory trex0"
usage() {
echo ""
echo "usage: buildall [ make assigns... ] < -t | target > [ -r ] [ buildhosts... ]"
echo " [ -t | --test]: just test rsh and report OS versions."
echo " [-r | --respin]: rebuild in place using existing source."
echo " [-p | --postbuild]: Execute post build command too."
echo " [make assigns]: e.g. VARIANT=release"
echo " <target>: one of: mstone42"
echo " [buildhosts...]: default [$DEFAULT_BUILDHOSTS]"
echo ""
exit 1
}
########################################################################
# Set these defaults and options for your desired build
########################################################################
# Target base destination directory
DESTBASE=`pwd`
# Can we do multiple ARCH builds in same source tree
SHARESRC=yes
DESCRIPTION=""
BUILDHOSTS=""
RESPIN="no"
POSTBUILD="no"
JUST_TEST="no"
DESTTYPE=""
CO_CMD="cvs -d $CVSROOT -q checkout"
CHECKOUT=""
CHECKOUT2=""
#MOZCVSROOT=':pserver:anonymous@cvs.mozilla.org:/cvsroot'
MOZCVSROOT=':pserver:robodan%netscape.com@cvs.mozilla.org:/cvsroot'
MAKE="gmake"
MK_ARG=""
ARGS="$@"
for ARG in "$@"; do
# If this is a make assignment (FOO=whatever), add it to make command
# Arguments with quotes in them dont go all the way through.
# Make args trick: 'FOO=nop -j 2'
# The pre-post arg stuff uses hostnames as a switch, ugly calling syntax.
if [[ -n "`echo z$ARG | egrep '^z[A-Z0-9_]+=[^ ]'`" ]] ; then
if [[ -n "$DESCRIPTION" ]] ; then
echo "Arg after target is ignored! ($ARG)"
continue
fi
if [[ -z "$BUILDHOSTS" ]] ; then # pre args
MAKE="$MAKE $ARG"
else # post args
MK_ARG="$MK_ARG $ARG"
fi
continue
fi
# should we just rebuild todays latest source...
if [[ "$ARG" = "-r" || "$ARG" = "--respin" || "$ARG" = "respin" ]]; then
RESPIN="yes"
continue
fi
# should we just run post build command...
if [[ "$ARG" = "-p" || "$ARG" = "--postbuild" || "$ARG" = "postbuild" ]]; then
POSTBUILD="yes"
continue
fi
# should we just test remote connectivity and execute permissions...
if [[ "$ARG" = "-t" || "$ARG" = "--test" ]]; then
JUST_TEST="yes"
RESPIN="yes"
continue
fi
# We will pull source using: "$CHECKOUT"
# And build on each machine: "cd $BUILDDIR && $BUILDCMD"
# expand targets (but dont confuse hosts for targets (msg7))
# These will build just mstone
# expand targets (but dont confuse hosts for targets (msg7))
if [[ "$BUILDCMD" = "" && "$ARG" = mailstone* ]]; then
case ${ARG#mstone} in
"")
"42")
DESTTYPE=_MSTONE42
MS_BRANCH=""
#BUILDCMD="$MAKE $MK_ARG debug release"
#POSTCMD="$MAKE $MK_ARG all_DBG.OBJ all_OPT.OBJ"
BUILDCMD="$MAKE $MK_ARG rpackage"
POSTCMD="$MAKE $MK_ARG all_OPT"
;;
*)
echo "Unknown mstone version in $ARG"
echo "Try mstone42"
exit 1;;
esac
DESCRIPTION="Mstone $MS_BRANCH"
BUILDDIR=./mozilla/mstone
CVSROOT=$MOZCVSROOT
CHECKOUT="$CO_CMD $MS_BRANCH mozilla/mstone"
# BUG No way to unpack perl, gd, and gnuplot before building
continue
fi
#########################
# Other...
#########################
# These will print some tools info
if [[ "$ARG" = "tools" ]]; then
CHECKOUT="$CO_CMD modules"
BUILDDIR=.
BUILDCMD="which gcc && ls -l /tools/ns/bin/gcc && which gcc-2.7.2.1 && ls -l /tools/ns/bin/gcc-2.7.2.1"
continue
fi
#########################
# Everything else is assumed to be a hostname
#########################
BUILDHOSTS="$ARG $BUILDHOSTS"
done # for ARG in $*; do
if [[ "$BUILDHOSTS" = "" ]]; then
BUILDHOSTS=$DEFAULT_BUILDHOSTS
fi
if [[ "$BUILDCMD" = "" && "$JUST_TEST" = "no" ]]; then
usage
fi
########################################################################
# You shouldn't have to modify stuff below here too much
########################################################################
# Who and Where are we
PROG=buildall
RSH=rsh
SYS=`uname -s`
echo SYS=$SYS
if [[ "$SYS" = "HP-UX" ]]; then
RSH=remsh
fi
########################################################################
# Simple log output function
########################################################################
log() {
# echo "[`date +\"%Y/%m/%d %H:%M:%S\"`] $PROG: $*"
echo "`date +\"%H:%M:%S\"` $PROG: $*"
}
########################################################################
# Error
########################################################################
quit() {
log "$* (exiting)..."
exit 1
}
# Where should the work be done
REV=1
WORKDIR=$DESTBASE/`date +"%Y%m%d"`$DESTTYPE.$REV
LASTWORKDIR=$WORKDIR
LASTREV=$REV
while [[ -d $WORKDIR ]]; do
LASTREV=$REV
let "REV= REV + 1"
LASTWORKDIR=$WORKDIR
WORKDIR=$DESTBASE/`date +"%Y%m%d"`$DESTTYPE.$REV
done
if [[ "$RESPIN" = "yes" ]]; then
WORKDIR=$LASTWORKDIR
REV=$LASTREV
fi
BUILDREV=$REV
if [[ ! -d $WORKDIR && "$RESPIN" = "yes" ]]; then
quit "missing expected respin workdir ($WORKDIR)"
fi
mkdir -p $WORKDIR
# Where to send logs
LOGDIR=$WORKDIR/logs
[[ -d $LOGDIR ]] || mkdir $LOGDIR
# What tool to use for compressed tar
if [[ -x /tools/ns/bin/tar ]] ; then # ROBDAN 9-15-98 for Linux
TAR=/tools/ns/bin/tar
else
TAR=tar
fi
SRCDIR=$WORKDIR/src
SRCTAR=$WORKDIR/src.tar.gz
########################################################################
# The function which extracts the source and prepares for copies
########################################################################
prepare_source() {
log "Preparing source code..."
mkdir $SRCDIR
(cd $SRCDIR;
log "Extracting source in $SRCDIR...";
log "$CHECKOUT > $LOGDIR/cvs-co.txt";
$CHECKOUT > $LOGDIR/cvs-co.txt;
RET=$?
if [[ $RET -ne 0 ]]; then quit "### Failed($RET): $CHECKOUT"; fi
if [[ "$CHECKOUT2" != "" ]]; then
log "$CHECKOUT2 >> $LOGDIR/cvs-co.txt";
$CHECKOUT2 >> $LOGDIR/cvs-co.txt;
RET=$?
if [[ $RET -ne 0 ]]; then quit "### Failed($RET): $CHECKOUT2"; fi
fi
log "Listing source...";
ls -Rl > $LOGDIR/src-ls-Rl.txt
log "Archiving source..."
$TAR czf $SRCTAR .
)
RET=$?
if [[ $RET -ne 0 ]]; then
quit "### Failed($RET): cannot prepare source";
else
log "Source extraction complete";
fi
}
########################################################################
# The function which does a build
########################################################################
do_rbuild() {
OSDEST=$1
if [ "$SHARESRC" = "yes" ]; then
RSRCDIR=$SRCDIR
else
RSRCDIR=$WORKDIR/$OSDEST
fi
[[ -d $RSRCDIR ]] || mkdir -p $RSRCDIR
cd $RSRCDIR;
# do any late variable expansions
RAWCMD=$BUILDCMD
BUILDCMD=$(eval echo $RAWCMD)
if [[ $RHOST = localhost ]] ; then
log "Build locally for $OSDEST ($BUILDCMD)...";
cd $BUILDDIR && pwd && $BUILDCMD && echo $PROG: Success
RET=$?
if [[ $RET -ne 0 ]]; then quit "### Failed($RET): $OSDEST build"; fi
log "Completed local build..."
return
fi
if [[ "$SHARESRC" != "yes" ]]; then
log "Extracting source for $OSDEST...";
$RSH $RHOST -n "cd $RSRCDIR && pwd && $TAR xzf $SRCTAR";
RET=$?
if [[ $RET -ne 0 ]]; then quit "### Failed($RET): $OSDEST source extraction"; fi
else
log "Using common source in $RSRCDIR";
fi
log "Building for $OSDEST ($BUILDCMD)...";
$RSH $RHOST -n "cd $RSRCDIR/$BUILDDIR && pwd && $BUILDCMD && echo $PROG: Success"
RET=$?
if [[ $RET -ne 0 ]]; then quit "### Failed($RET): $OSDEST build"; fi
log "Completed $OSDEST...";
}
buildhost() {
RHOST=$1
log "Query $RHOST configuration...";
if [[ $RHOST = localhost ]] ; then
uname -s > /tmp/$$.$RHOST 2>&1
else
$RSH $RHOST -n "uname -s" > /tmp/$$.$RHOST 2>&1
RET=$?
if [[ $RET -ne 0 ]]; then
quit "..[$RHOST] ### Failed($RET): $RSH $RHOST -n \"uname -s\"";
fi
fi
ROSTYPE=`tail -1 /tmp/$$.$RHOST`
if [[ "$ROSTYPE" = "AIX" ]]; then
$RSH $RHOST -n "uname -v" > /tmp/$$.$RHOST 2>&1
ROSTYPE=${ROSTYPE}`tail -1 /tmp/$$.$RHOST`
fi
if [[ $RHOST = localhost ]] ; then
uname -r > /tmp/$$.$RHOST 2>&1
else
$RSH $RHOST -n "uname -r" > /tmp/$$.$RHOST 2>&1
fi
ROSREV=`tail -1 /tmp/$$.$RHOST`
rm /tmp/$$.$RHOST
if [[ $RHOST = localhost ]] ; then
OSDEST=`hostname | cut -f1 -d.`-${ROSTYPE}${ROSREV}
else
OSDEST=${RHOST}-${ROSTYPE}${ROSREV}
fi
log "..Building on [$OSDEST]..."
REV=1 # find unique logfile name
OSLOG=$LOGDIR/$OSDEST.$REV
while [[ -f $OSLOG ]]; do
let "REV = REV + 1"
OSLOG=$LOGDIR/$OSDEST.$REV
done
if [[ "$JUST_TEST" = "yes" ]]; then
echo "$PROG: Success" > $OSLOG
else
( do_rbuild $OSDEST ) > $OSLOG 2>&1
fi
grep "$PROG: Success" $OSLOG > /dev/null
RET=$?
if [[ $RET -eq 0 ]]; then
RESULT="SUCCESS";
else
RESULT="FAILURE($RET)";
fi
log "..Completed [$OSDEST] <$RESULT>.";
}
########################################################################
# The function which initiates all the builds
########################################################################
do_builds() {
log "Launching builds..."
for HOST in $BUILDHOSTS; do
buildhost $HOST &
done
}
########################################################################
# main
########################################################################
main() {
if [[ "$JUST_TEST" = "yes" ]]; then
log "Automated test starting..."
else
log "Automated build of [$DESCRIPTION] starting..."
fi
log ""
log " ARGS = $ARGS"
log " BUILDHOSTS = $BUILDHOSTS"
log " WORKDIR = $WORKDIR"
log " SRCDIR = $SRCDIR"
log " LOGDIR = $LOGDIR"
log " CHECKOUT = $CHECKOUT"
log " BUILDDIR = $BUILDDIR"
log " BUILDCMD = $BUILDCMD"
log " RESPIN = $RESPIN"
log ""
[[ "$RESPIN" = "no" ]] && prepare_source
do_builds
log "Waiting for all builds to complete..."
wait
log "All builds completed."
if [[ -n "$POSTCMD" && "$POSTBUILD" = "yes" ]] ; then
log "Running post build command."
REV=1 # find unique logfile name
POSTLOG=$LOGDIR/postbuild.$REV
while [[ -f $POSTLOG ]]; do
let "REV = REV + 1"
POSTLOG=$LOGDIR/postbuild.$REV
done
echo "Dir $SRCDIR/$BUILDDIR" > $POSTLOG
echo "Cmd $POSTCMD" >> $POSTLOG
(cd $SRCDIR/$BUILDDIR && $POSTCMD && echo $PROG: Success) >> $POSTLOG 2>&1
log "Post build command completed."
elif [[ -n "$POSTCMD" ]] ; then
echo "Skipping post build command: $POSTCMD"
fi
}
REV=1
PROGLOG=$LOGDIR/$PROG.$REV
while [[ -f $PROGLOG ]]; do
REV=`expr $REV + 1`
PROGLOG=$LOGDIR/$PROG.$REV
done
main | tee $PROGLOG 2>&1
exit 0

View File

@@ -1,164 +0,0 @@
@if not "%echo%" == "on" echo off
REM ************ simple autobuild for mailstone
setlocal
set BOTH=0
if not "%1" == "" goto GetTag
set BOTH=1
set TAG=_OPT
goto SetConfig
:GetTag
if %1 == dbg set TAG=_DBG
if %1 == DBG set TAG=_DBG
if %1 == Debug set TAG=_DBG
if %1 == debug set TAG=_DBG
if %1 == Release set TAG=_OPT
if %1 == release set TAG=_OPT
if %1 == opt set TAG=_OPT
if %1 == OPT set TAG=_OPT
if %1 == optimize set TAG=_OPT
if %1 == Optimize set TAG=_OPT
if %1 == optimized set TAG=_OPT
if %1 == Optimized set TAG=_OPT
if %1 == clean goto CleanBoth
:SetConfig
if %TAG% == _DBG set Config=Debug
if %TAG% == _OPT set Config=Release
set ARCH=WINNT4.0%TAG%.OBJ
set FINAL_PATH=built\package\%ARCH%\mailstone
if not "%2" == "clean" if not exist %FINAL_PATH%\nul mkdir %FINAL_PATH%
REM ************ first, clean the binary release
nmake /f mailstone.mak CFG="mailstone - Win32 %Config%" /nologo NO_EXTERNAL_DEPS=1 CLEAN
if not "%2" == "clean" goto BuildMailstone
if exist src\%Config%\nul echo y | rd /s src\%Config% > nul
if exist src\gnuplot-3.7\%Config%\nul echo y | rd /s src\gnuplot-3.7\%Config% > nul
if exist src\gd1.3\%Config%\nul echo y | rd /s src\gd1.3\%Config% > nul
if exist built\%ARCH%\nul echo y | rd /s built\%ARCH% > nul
if exist %FINAL_PATH%\nul echo y | rd /s %FINAL_PATH% > nul
goto done
:BuildMailstone
REM **************** next, build it
nmake /f mailstone.mak CFG="mailstone - Win32 %Config%" /nologo NO_EXTERNAL_DEPS=1
if errorlevel 1 goto BadBuild
REM ************ next, copy the top-level files
copy mstone.bat %FINAL_PATH%
copy setup.bat %FINAL_PATH%
copy CHANGELOG %FINAL_PATH%
copy INSTALL %FINAL_PATH%
copy README %FINAL_PATH%
copy LICENSE %FINAL_PATH%
REM ************ now, copy the files for running mailstone into bin
if not exist %FINAL_PATH%\bin\nul mkdir %FINAL_PATH%\bin
copy built\%ARCH%\mailclient.exe %FINAL_PATH%\bin
if exist built\package\%ARCH%\mailclient.exe copy built\package\%ARCH%\mailclient.exe %FINAL_PATH%\bin
if exist built\package\%ARCH%\mailclient.exe del /f /q built\package\%ARCH%\mailclient.exe
copy bin\*.pl %FINAL_PATH%\bin
REM ************ now, copy the configuration files into conf
if not exist %FINAL_PATH%\conf\nul mkdir %FINAL_PATH%\conf
copy conf\*.* %FINAL_PATH%\conf
REM ************ now, copy the data files into data
if not exist %FINAL_PATH%\data\nul mkdir %FINAL_PATH%\data
copy data\*.msg %FINAL_PATH%\data
REM ************ now, copy the gd files into gd
if not exist %FINAL_PATH%\gd\nul mkdir %FINAL_PATH%\gd
copy src\gd1.3\index.html %FINAL_PATH%\gd\gd.html
REM ************ now, copy the gnuplot files into gnuplot
if not exist %FINAL_PATH%\gnuplot\nul mkdir %FINAL_PATH%\gnuplot
copy built\%ARCH%\gnuplot\gnuplot.exe %FINAL_PATH%\gnuplot
copy src\gnuplot-3.7\Copyright %FINAL_PATH%\gnuplot
copy src\gnuplot-3.7\docs\gnuplot.1 %FINAL_PATH%\gnuplot
REM ************ now, copy the perl files into perl
if not exist %FINAL_PATH%\perl\nul mkdir %FINAL_PATH%\perl
if not exist %FINAL_PATH%\perl\bin\nul mkdir %FINAL_PATH%\perl\bin
if not exist %FINAL_PATH%\perl\lib\nul mkdir %FINAL_PATH%\perl\lib
if not exist %FINAL_PATH%\perl\lib\5.00503\nul mkdir %FINAL_PATH%\perl\lib\5.00503
if not exist %FINAL_PATH%\perl\lib\5.00503\MSWin32-x86\nul mkdir %FINAL_PATH%\perl\lib\5.00503\MSWin32-x86
#copy built\%ARCH%\perl\perl.exe %FINAL_PATH%\perl\bin
#rcp -b sandpit:/share/builds/components/perl5/WINNT-perl5/perl.exe %FINAL_PATH%\perl\bin\perl.exe
#if errorlevel 1 goto BadRcp
#if not exist %FINAL_PATH%\perl\perl.exe goto BadRcp
#rcp -b sandpit:/share/builds/components/perl5/WINNT-perl5/perl300.dll %FINAL_PATH%\perl\bin\perl300.dll
#if errorlevel 1 goto BadRcp
#if not exist %FINAL_PATH%\perl\perl300.dll goto BadRcp
copy src\perl5.005_03\Artistic %FINAL_PATH%\perl
copy c:\perl\5.00503\bin\MSWin32-x86\perl.exe %FINAL_PATH%\perl\bin
copy c:\perl\5.00503\bin\MSWin32-x86\perl.dll %FINAL_PATH%\perl\bin
copy c:\perl\5.00503\lib\*.pm %FINAL_PATH%\perl\lib\5.00503
copy c:\perl\5.00503\lib\*.pl %FINAL_PATH%\perl\lib\5.00503
copy c:\perl\5.00503\lib\MSWin32-x86\*.pm %FINAL_PATH%\perl\lib\5.00503\MSWin32-x86
goto end
:CleanBoth
echo.
echo NOTICE: CLEANING debug build
call autobuild.bat debug clean
echo NOTICE: CLEANING optimized build
call autobuild.bat release clean
echo NOTICE: Removing generated dependency files
del /s *.dep
if exist built\nul echo y | rd /s built > nul
goto done
:BadRcp
echo.
echo ERROR: Failed to rcp perl files over to mailstone packaging
echo ERROR: Two common causes of this are .rhosts permissions or a broken rcp.exe
echo ERROR: Make sure you are not using rcp.exe from NT4.0 SP4
echo ERROR: The SP5 version is available in \\cobra\engineering\bin\rcp_sp5.exe
echo ERROR: Use this version to replace ...\system32\rcp.exe
goto done
:BadBuild
echo.
echo ERROR: Failed to build mailstone
goto done
:end
echo.
if %BOTH% == 0 goto done
if %TAG% == _DBG goto done
set TAG=_DBG
goto SetConfig
:done
endlocal

View File

@@ -1,64 +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 the Netscape Mailstone utility,
# released March 17, 2000.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1997-2000 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Dan Christian <robodan@netscape.com>
# Marcel DePaolis <marcel@netcape.com>
#
# Alternatively, the contents of this file may be used under the
# terms of the GNU Public License (the "GPL"), in which case the
# provisions of the GPL are applicable instead of those above.
# If you wish to allow use of your version of this file only
# under the terms of the GPL and not to allow others to use your
# version of this file under the NPL, indicate your decision by
# deleting the provisions above and replace them with the notice
# and other provisions required by the GPL. If you do not delete
# the provisions above, a recipient may use your version of this
# file under either the NPL or the GPL.
#####################################################
# This file does argument processing, file IO, and other utility routines
# Where the online docs live
#$mailstoneURL =
# "http://home.netscape.com/eng/server/messaging/4.1/mailston/stone.htm";
#$mailstoneURL =
# "http://lxr.mozilla.org/mozilla/source/mstone/doc/MailStone.html";
#$mailstoneURL =
# "http://docs.iplanet.com/docs/manuals/messaging/nms415/mailstone/stone.htm"
$mailstoneURL = "doc/MailStone.html";
# Subdirs for results (each under a timestamp dir). Should just hardwire.
$tmpbase = "tmp";
$resultbase = "results";
# This holds everything about the test and system configuration
@workload = ();
# Setup the special CONFIG section
$params{"sectionTitle"} = "CONFIG";
$params{"sectionParams"} = "";
$params{"lineList"} = ();
push @workload, \%params;
# Get the lists discribing the data we process
do 'protoconf.pl' || die "$@\n";
%includedFiles = (); # array of included files
do 'util.pl' || die "$@\n";
return 1;

View File

@@ -1,310 +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 the Netscape Mailstone utility,
# released March 17, 2000.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1997-2000 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Dan Christian <robodan@netscape.com>
# Marcel DePaolis <marcel@netcape.com>
# Sean O'Rourke <sean@sendmail.com>
#
# Alternatively, the contents of this file may be used under the
# terms of the GNU Public License (the "GPL"), in which case the
# provisions of the GPL are applicable instead of those above.
# If you wish to allow use of your version of this file only
# under the terms of the GPL and not to allow others to use your
# version of this file under the NPL, indicate your decision by
# deleting the provisions above and replace them with the notice
# and other provisions required by the GPL. If you do not delete
# the provisions above, a recipient may use your version of this
# file under either the NPL or the GPL.
#####################################################
# This file deals with the graphs data only
# Interfaces to gnuplot to generate gifs for HTML inclusion.
do 'util.pl';
sub warn_system;
sub die_system;
# Type of images to hold plots (e.g. png, gif, jpeg, svg, tiff, pbm, etc)
unless ($params{IMAGETYPE}) {
# Should probe gnuplot and see if it can generate one of:
# png, gif, jpeg, svg, tiff, or pbm.
# Not all the programs that use args.pl need this (or have gnuplot, yet)
my $outfile = "$tmpbase/termtypes.out";
my %types = (); # hash of interesting types that we spot
unless (open(NEW, "<$outfile")) { # re-use old file if present
($params{DEBUG}) &&
print "Asking gnuplot what output types it supports\n";
# SEAN: this appears to do what they want:
warn_system "echo 'set term' | $params{GNUPLOT} > $outfile";
open(NEW, "<$outfile") ||
warn ": Could not open gnuplot output for parsing ($outfile): $!";
}
# now check through the output for terminal types we can use.
# I havent verified the jpeg or tiff types. e-mail me success or failure
while (<NEW>) {
(/\spng\s/) && ++$types{"png"} && next;
(/\sgif\s/) && ++$types{"gif"} && next;
(/\sjpeg\s/) && ++$types{"jpeg"} && next;
(/\ssvg\s/) && ++$types{"svg"} && next;
(/\stiff\s/) && ++$types{"tiff"} && next;
(/\spbm\s/) && ++$types{"pbm"} && next;
}
close (NEW);
($params{DEBUG}) &&
print "Found these gnuplot types: " . (join " ", (keys %types)) . "\n";
# The ordering here determines our preferences
# This list is by likely browser compatibility and image compactness
# png is about 10x smaller than gif
# svg is smooth and scalable but usually requires a plug-in
# jpeg will probably look bad, but will be directly supported
if ($types{"png"}) { $params{IMAGETYPE}="png"; }
elsif ($types{"gif"}) { $params{IMAGETYPE}="gif"; }
elsif ($types{"jpeg"}) { $params{IMAGETYPE}="jpeg"; }
elsif ($types{"svg"}) { $params{IMAGETYPE}="svg"; }
elsif ($types{"tiff"}) { $params{IMAGETYPE}="tiff"; }
elsif ($types{"pbm"}) { $params{IMAGETYPE}="pbm"; }
else {
warn "Gnuplot doesn't support any good image types. Check $outfile.\n";
$params{IMAGETYPE} = undef;
}
# leave the output file around to speed up repeat runs
}
# sub function to write data files, fire off gnuscript, and clean up
# Uses global startTime and endTime figured above
# genPlot counterName title label \@protocols \@variables
sub genPlot {
my $name = shift;
my $title = shift;
my $label = shift;
my $protos = shift || die "genPlot: '$name' missing protocols";
my $f = shift;
my $vars = shift || die "genPlot: '$name' missing vars";
my $runlist = "";
my $totPoints = 0;
my $totProtos = 0;
my @realProtos;
my @goodProtos;
# user fewer data points than pixels to look good.
# on 640x480 gif, the graph is about 579x408
my $maxData = int (($params{CHARTWIDTH}-60) * 0.9);
my $averageCnt = int (($endTime - $startTime + ($maxData - 1))/$maxData);
if ($averageCnt < 1) { $averageCnt = 1; } # must be a positive int
($params{DEBUG}) && print "$name: averageCnt=$averageCnt vars = @$vars \n";
foreach $p (@$protos) { # First see if there is anything to graph
($p =~ /^Total$/o) && next; # derived if needed
my $pPoints = 0;
my $gp = $graphs{$p};
ALLVAR: foreach $vm (@$vars) {
my $vp = ($f) ? $gp->{$vm}->{$f} : $gp->{$vm};
unless (($vp) && (scalar %$vp)) {
#print "genplot Checking: $p $vm $f => NO\n";
next;
}
#print "genplot Checking: $p $vm $f => ";
foreach $time (keys %$vp) {
next unless ($vp->{$time} != 0);
$totPoints++;
$pPoints++;
#print "VALUES\n";
last ALLVAR;
}
#print "nothing\n"
}
if ($pPoints > 0) { # count how many protocols have non 0
$totProtos++;
push @goodProtos, $p;
}
}
($params{DEBUG}) && print "\tprotocols: @goodProtos\n";
if ($totPoints == 0) { # nothing in any protocol
print "No data for graph '$name', variables '@$vars'\n";
return 0;
}
foreach $p (@$protos) {
unlink ("$tmpdir/$name.$p"); # remove any previous runs
(($p =~ /^Total$/o) && ($totProtos <= 1))
&& next; # skip Totally if only 1 protocol plus total
($p !~ /^Total$/o) && push @realProtos, $p; # everything but Total
# if ($p =~ /^Total$/o) { # move from last to first
# $runlist = "\'$name.$p\' with lines, " . $runlist;
# next;
# }
$runlist .= ", " if ($runlist); # later ones
$runlist .= "\'$name.$p\' with lines";
}
$totPoints = 0;
foreach $p (@realProtos) { # create the plot data files
open(DATA, ">$tmpdir/$name.$p") ||
die "Can't open $tmpdir/$name.$p:$!";
my $gp = $graphs{$p};
my $n = 0;
my $s = 0.0;
my $sTime = 0.0;
my $vp = ($f) ? $gp->{$vars->[0]}->{$f} : $gp->{$vars->[0]};
# foreach $time (sort numeric keys %$vp) {
for (my $tm = $startTime; $tm <= $endTime; $tm++) {
my $v = 0.0;
foreach $vm (@$vars) {
$vp = ($f) ? $gp->{$vm}->{$f} : $gp->{$vm};
$totPoints++;
# due to optimization in updateDelta,
# 0 entries are undefined (also avoids warning)
$v += ($vp->{$tm}) ? $vp->{$tm} : 0;
# if ($vp->{$tm} < 0) {
# print $name, ": proto=", $p, " var=", $vm,
# " value=", $vp->{$tm}, "\n";
# }
}
$s += $v;
$n += 1;
if ($n == 1) { # NOTE: shifts left in sliding window
$sTime = $tm-$startTime;
}
if ($n >= $averageCnt) {
printf (DATA "%d %f\n", $sTime * $timeStep, $s/$n);
$n = 0;
$s = 0.0;
}
}
if ($n > 0) { # handle end case
printf (DATA "%d %f\n", $sTime * $timeStep, $s/$n);
}
close(DATA);
}
#($params{DEBUG}) && print "\tpoints: $totPoints\n";
# need to handle "Total" case
# read the other files and write out the sum
# FIX: total my be mis-aligned with data
if (($#$protos > $#realProtos) && ($totProtos > 1)) {
unlink ("$tmpdir/$name.Total");
open(DATA, ">$tmpdir/$name.Total") ||
die "Can't open $tmpdir/$name.Total:$!";
foreach $r (@goodProtos) { # get file handles
open($r, "$tmpdir/$name.$r")
|| die "Couldn't open $tmpdir/$name.$r: $!";
}
# ASSUMES files are identical in order
my $first = shift @goodProtos;
# print "First protocol: $first Rest: @realProtos\n";
while (<$first>) {
my ($t, $s) = split ' ', $_;
foreach $r (@goodProtos) { # get file handles
$l = <$r>;
if ($l) {
my ($tt, $v) = split ' ', $l;
$t = $tt unless ($t); # in case first proto missing time
$s += $v;
}
}
printf (DATA "%d %f\n", $t, $s);
}
foreach $r (@goodProtos) { close($r); }
close (DATA);
}
# SEAN: don't even try if we aren't generating images:
return 0 unless $params{IMAGETYPE};
# Create a script to feed to gnuplot, which creates a .gif graph.
$runTime = ($endTime - $startTime + 1) * $timeStep;
unlink("$tmpdir/$name.gpt");
open(SCRIPT, ">$tmpdir/$name.gpt")
|| die "Can't open $tmpdir/$name.gpt:$!";
$gnuplot = $params{GNUPLOT};
return 1 unless $gnuplot;
if ($gnuplot !~ /^\//) { # if not absolute, adjust for cd $tmpbase
$gnuplot = "../../$gnuplot"; # ASSUME $tmpbase is single dir
}
#print "gnuplot is $gnuplot $params{GNUPLOT}\n";
my $varstring = ""; # create display version of names
foreach $t (@$vars) {
$varstring .= ", " if ($varstring);
$varstring .= ($timerNames{$t}) ? $timerNames{$t} : $t;
}
# Setup output "terminal type"
if ($params{IMAGETYPE} eq "gif") { # gif type has different arguments
print SCRIPT "set terminal $params{IMAGETYPE} small size $params{CHARTWIDTH},$params{CHARTHEIGHT}\n";
} elsif ($params{IMAGETYPE} eq "svg") { # svg type has different args too
print SCRIPT "set terminal $params{IMAGETYPE} size $params{CHARTWIDTH} $params{CHARTHEIGHT}\n";
} else { # most types work like this
print SCRIPT "set terminal $params{IMAGETYPE} small color\n";
if (($params{CHARTWIDTH} != 640) || ($params{CHARTHEIGHT} != 480)) {
my $xscale = $params{CHARTWIDTH} / 640;
my $yscale = $params{CHARTHEIGHT} / 480;
print SCRIPT "set size $xscale,$yscale\n";
}
}
print SCRIPT<<"!GROK!THIS!";
set output "../../$resultdir/$name.$params{IMAGETYPE}" # ASSUME $tmpbase is single dir
set autoscale
set xlabel "Test time (seconds)"
set ylabel "$label"
set title "$title ($varstring) -- $params{TSTAMP}"
plot [0:$runTime] $runlist
!GROK!THIS!
close(SCRIPT);
# run script from tmpbase to clean up line labeling
# my $olddir=getcwd();
chdir $tmpdir;
warn_system (split (/\s/, $gnuplot), "$name.gpt");
chdir "../..";
# chdir $olddir;
unless ($params{DEBUG}) {
# cleanup the plot data (or leave around for debugging)
foreach $p (@$protos) {
unlink("$tmpdir/$name.$p");
}
unlink("$tmpdir/$name.gpt");
}
return 1;
}
return 1;

View File

@@ -1,629 +0,0 @@
#!/usr/bin/env perl
# 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 the Netscape Mailstone utility,
# released March 17, 2000.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1997-2000 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Dan Christian <robodan@netscape.com>
# Marcel DePaolis <marcel@netcape.com>
# Mike Blakely
#
# Alternatively, the contents of this file may be used under the
# terms of the GNU Public License (the "GPL"), in which case the
# provisions of the GPL are applicable instead of those above.
# If you wish to allow use of your version of this file only
# under the terms of the GPL and not to allow others to use your
# version of this file under the NPL, indicate your decision by
# deleting the provisions above and replace them with the notice
# and other provisions required by the GPL. If you do not delete
# the provisions above, a recipient may use your version of this
# file under either the NPL or the GPL.
#####################################################
# see setup.pl for full usage
# mailmaster [-d] [-c <config file>] ...
# This script reads in the client configuration files and will
# fork children to rsh the mailclient process on network clients,
# each child will write test results to /mailstone directory before
# dying. The parent will the read and combine the results.
#
# Make sure the user running this script has rsh privilege across
# all client machines
print "Netscape Mailstone version 4.2\n";
print "Copyright (c) Netscape Communications Corp. 1997-2000\n";
# this parses the command line and config file
do 'args.pl'|| die "$@\n";
sub die_system;
sub warn_system;
parseArgs(); # parse command line
{ # get unique date string
my ($sec, $min, $hour, $mday, $mon, $year) = localtime;
my $tstamp = sprintf ("%04d%02d%02d.%02d%02d",
1900+$year, 1+$mon, $mday, $hour, $min);
if ( -d "$resultbase/$tstamp") { # check for runs within a minute
my $tail = 'a';
while ( -d "$resultbase/$tstamp$tail" ) { $tail++; }
$tstamp .= $tail;
}
$params{TSTAMP} = $tstamp;
}
$resultdir = "$resultbase/$params{TSTAMP}";
$tmpdir = "$tmpbase/$params{TSTAMP}";
$resultstxt = "$resultdir/results.txt";
$resultshtml = "$resultdir/results.html";
mkdir ("$resultbase", 0775);
mkdir ("$tmpbase", 0775);
mkdir ("$resultdir", 0775);
mkdir ("$tmpdir", 0775);
# Make sure we have everything
die "Must specify the test time" unless $params{TIME};
die "Must specify a workload file" unless $params{WORKLOAD};
if ($params{TESTBED}) { # BACK COMPATIBILITY
readTestbedFile ($params{TESTBED}) || die "Error reading testbed: $@\n";
}
$testsecs = figureTimeSeconds ($params{TIME}, "seconds");
# figure out the processes and thread, given the desired number
# takes into account all the constraints. todo can be a float.
sub figurePT {
my $sec = shift;
my $todo = shift;
my $p = 1; # first guess
my $t = 1;
my $start = 1; # initial process guess
my $end = 250; # highest process guess
if ($todo < 1) { # mark this client as inactive
$sec->{PROCESSES} = 0;
$sec->{THREADS} = 0;
return 0;
}
if (($section->{MAXCLIENTS}) && ($todo > $section->{MAXCLIENTS})) {
$todo = $section->{MAXCLIENTS}; # trim to max client per host
}
if ($section->{PROCESSES}) { # they set this part already
$start = int ($section->{PROCESSES});
$end = $start;
$p = $start;
my $slist = $section->{sectionParams};
$slist =~ s/HOSTS=\s*//; # strip off initial bit
print "Using specified $p processes for clients $slist\n";
}
$end = int ($section->{MAXPROCESSES})
if ($section->{MAXPROCESSES}); # they set a max
if (($params{NT}) || ($section->{ARCH} eq "NT4.0")) {
$end = 1; # # NT is currently limited to 1 process
$start = 1;
$p = 1;
}
# step through some process counts
# it should first reduce errors due to MAXTHREADS,
# the it will reduce errors due to integer math.
# not optimal, just good enough
my $misses = 0;
for (my $n = $start; $n <= $end; $n++) { # try some process counts
my $tryt = int ($todo / $n);
if (($sec->{MAXTHREADS}) && ($tryt > $sec->{MAXTHREADS})) {
$tryt = $sec->{MAXTHREADS};
}
# see if this is a better match than the last one
if (abs ($todo - ($n * $tryt)) < abs ($todo - ($p * $t))) {
$p = $n;
$t = $tryt;
$misses = 0;
} else {
$misses++;
last if ($misses > 1); # getting worse
}
}
$sec->{PROCESSES} = $p;
$sec->{THREADS} = $t;
return $p * $t;
}
# Allocate CLIENTCOUNT to the client machines
# try NOT to turn this into a massive linear programming project
# works best to put bigger machines last
if ($params{CLIENTCOUNT}) {
my $todo = $params{CLIENTCOUNT};
my $softcli = 0; # how many can we play with
foreach $section (@workload) { # see which are already fixed
next unless ($section->{sectionTitle} =~ /CLIENT/i);
unless (($section->{PROCESSES}) && ($section->{THREADS})) {
$softcli++;
next;
}
my $slist = $section->{sectionParams};
$slist =~ s/HOSTS=\s*//; # strip off initial bit
my @hlist = split /[\s,]/, $slist;
my $hcnt = (1 + $#hlist);
# subtract fixed entries
my $tcount = ($section->{THREADS}) ? $section->{THREADS} : 1;
$todo -= $tcount * $section->{PROCESSES} * $hcnt;
$clientProcCount += $section->{PROCESSES} * $hcnt; # total processes
$params{DEBUG} &&
print "Fixed load group with $hcnt hosts: $section->{PROCESSES} x $tcount\n";
}
$params{DEBUG} &&
print "Allocating $todo clients over $softcli groups\n";
if ($softcli) {
foreach $section (@workload) {
next unless ($section->{sectionTitle} =~ /CLIENT/i);
next if (($section->{PROCESSES}) && ($section->{THREADS}));
my $slist = $section->{sectionParams};
$slist =~ s/HOSTS=\s*//; # strip off initial bit
my @hlist = split /[\s,]/, $slist;
my $hcnt = (1 + $#hlist);
#print "todo=$todo softcli=$softcli hcnt=$hcnt\n";
$todo -= $hcnt * figurePT ($section, $todo / ($softcli * $hcnt));
$clientProcCount += $hcnt * $section->{PROCESSES}; # total procs
$softcli--;
last if ($softcli <= 0); # should not happen
}
}
if ($todo) {
print "Warning: Could not allocate $todo of $params{CLIENTCOUNT} clients.\n";
$params{CLIENTCOUNT} -= $todo;
}
} else { # figure out the client count
my $cnt = 0;
foreach $section (@workload) { # see which are already fixed
next unless ($section->{sectionTitle} =~ /CLIENT/i);
# next unless ($section->{PROCESSES});
next unless $section->{CLIENTS};
my $clients = $section->{CLIENTS};
my $slist = $section->{sectionParams};
$slist =~ s/HOSTS=\s*//; # strip off initial bit
my @hlist = split /[\s,]/, $slist;
my $hcnt = scalar @hlist;
$clients /= $hcnt;
my $maxp = ($section->{MAXPROCESSES} || 10000);
my $maxt = ($section->{MAXTHREADS} || 10000);
if ($maxp * $maxt < $clients) {
die <<EOS;
Too many clients for hosts $section->{sectionParams}:
clients = $section->{CLIENTS}
maxThreads = $section->{MAXTHREADS}
maxProcesses = $section->{MAXPROCESSES}
EOS
}
my ($nt, $np);
if ($maxt >= $clients) {
$nt = $clients;
$np = 1;
} else {
$np = int (($clients / $maxt) + (($clients % $maxt) ? 1 : 0));
$nt = int ($clients / $np);
}
$section->{THREADS} = $nt;
$section->{PROCESSES} = $np;
# $section->{CLIENTS} = $np * $nt * $hcnt;
$cnt += $nt * $np * $hcnt;
$clientProcCount += $np * $hcnt; # total processes
}
$params{CLIENTCOUNT} = $cnt;
die "No clients configured!\n" unless ($cnt > 0);
}
# This has to be written into save workload file for later processing
unless ($params{FREQUENCY}) { # unless frequency set on command line
my $chartp = ($params{CHARTPOINTS}) ? $params{CHARTPOINTS} : 464;
# approximate data points for good graphs (up to 2 times this)
$params{FREQUENCY} = int ($testsecs / $chartp);
if ($params{FREQUENCY} < 2) { # fastest is every 2 seconds
$params{FREQUENCY} = 2;
} elsif ($params{FREQUENCY} > 60) { # slowest is every minute
$params{FREQUENCY} = 60;
}
}
{ # set a unique block id on every section
my $id = 0;
my $configSeen = 0;
my $defaultSeen = 0;
foreach $section (@workload) {
if ($section->{"sectionTitle"} =~ /^CONFIG$/) {
next if $configSeen;
$configSeen++;
}
if ($section->{"sectionTitle"} =~ /^DEFAULT$/) {
next if $defaultSeen;
$defaultSeen++;
}
$id++; # number 1, 2, ...
if ($section->{"sectionTitle"} =~ /^(CONFIG|CLIENT)$/) {
$section->{BLOCKID} = $id;
} else {
push @{$section->{"lineList"}}, "blockID\t$id\n";
}
}
}
# Write the version we pass to mailclient
writeWorkloadFile ("$resultdir/work.wld", \@workload,
\@scriptWorkloadSections);
# Write the complete inclusive version
writeWorkloadFile ("$resultdir/all.wld", \@workload);
# SEAN: copy the wld.in file to the result directory for later
# statistics gathering.
my $wld = $params{WORKLOAD};
if (-f "$wld.in") {
die_system "cp $wld.in $resultdir/wld.in";
} else {
unless ($wld !~ /\.preload_(new|old|touch)$/) {
warn "Can't find wld.in file for `$wld'\n" unless -f "$wld.in";
}
}
setConfigDefaults(); # pick up any missing defaults
unless ($#protocolsAll > 0) {
die "No protocols found. Test Failed!\n";
}
print "Starting: ", scalar(localtime), "\n";
# redirect STDERR
open SAVEERR, ">&STDERR";
open(STDERR, ">$resultdir/stderr") || warn "Can't redirect STDERR:$!\n";
$totalProcs = 0; # number of clients started
# iterate over every client in the testbed, complete the cmd and rsh
if ($params{NT}) { # single client on local host
pathprint ("Starting clients (errors logged to $resultdir/stderr)\n");
foreach $section (@workload) {
next unless ($section->{sectionTitle} =~ /CLIENT/i);
my $tcount = ($section->{THREADS}) ? $section->{THREADS} : 1;
# Build the initial Mailclient command line
my $preCmd = ($section->{COMMAND})
? $section->{COMMAND} : $params{CLIENTCOMMAND};
$preCmd .= " -s -t $params{TIME} -f $params{FREQUENCY}";
$preCmd .= " -d" if ($params{DEBUG});
$preCmd .= " -r" if ($params{TELEMETRY});
$preCmd .= " -R $params{RAMPTIME}" if ($params{RAMPTIME});
$preCmd .= " -m $params{MAXERRORS}" if ($params{MAXERRORS});
$preCmd .= " -M $params{MAXBLOCKS}" if ($params{MAXBLOCKS});
$preCmd .= " -n 1 -N $tcount";
$preCmd .= ($params{USEGROUPS} && $section->{GROUP})
? " -H $section->{GROUP}" : " -H $cli";
my $stdout = "$tmpdir/localhost.out";
$totalProcs += $tcount;
do 'makeindex.pl' || warn "$@\n"; # html index
printf "\nTest duration: %d %s. Rampup time: %d %s. Number of clients: %d\n",
figureTimeNumber ($params{TIME}),
figureTimeUnits ($params{TIME}, "seconds"),
figureTimeNumber ($params{RAMPTIME}),
figureTimeUnits ($params{RAMPTIME}, "seconds"),
$totalProcs;
print STDERR "localhost: cd $params{TEMPDIR}; $preCmd\n";
# Redirect STDIN, and STDOUT
#open SAVEIN, "<STDIN";
open STDIN, "<$resultdir/work.wld"
|| die "Coundn't open $resultdir/work.wld for input\n";
open SAVEOUT, ">&STDOUT";
open STDOUT, ">$stdout"
|| die "Couldnt open $stdout for output\n";
chdir $params{TEMPDIR} || die "Could not cd $params{TEMPDIR}: $!\n";
warn_system $preCmd;
close STDOUT;
open STDOUT, ">&SAVEOUT";
printf "Test done.\n";
chdir $cwd || die "Could not cd $cwd: $!\n";
last; # only do the first one
}
} else { # not NT (forking works)
foreach $section (@workload) { # do pre run commands
next unless ($section->{sectionTitle} =~ /PRETEST/i);
unless ($section->{COMMAND}) {
print "PreTest with no Command for $section->{sectionParams}\n";
next;
}
my $slist = $section->{sectionParams};
$slist =~ s/HOSTS=\s*//; # strip off initial bit
my $myCmd = $section->{COMMAND};
$myCmd =~ s/%f/$params{FREQUENCY}/; # fill in frequency variable
if ($myCmd =~ m/%c/o) { # dont force down if count is used
$count = $testsecs / $params{FREQUENCY};
$myCmd =~ s/%c/$count/; # fill in count variable
}
my $rsh = ($section->{RSH}) ? $section->{RSH} : $params{RSH};
foreach $cli (split /[\s,]/, $slist) {
print "Running pre test command on $cli\n";
open PRE, ">>$resultdir/$cli-pre.log";
print PRE "========\n";
print PRE "$myCmd\n";
print PRE "========\n";
close PRE;
print STDERR "$cli: $myCmd\n"; # log the actual command
forkproc ($rsh, $cli, $myCmd,
"/dev/null", "$resultdir/$cli-pre.log");
}
foreach $cli (split /[\s,]/, $slist) {
wait(); # run multiple PRETEST section sequentially
}
}
foreach $section (@workload) { # start monitors
next unless ($section->{sectionTitle} =~ /MONITOR/i);
my $slist = $section->{sectionParams};
$slist =~ s/HOSTS=\s*//; # strip off initial bit
my $myCmd = ($section->{COMMAND})
? $section->{COMMAND} : $params{MONITORCOMMAND};
my $forceDown = 0;
$myCmd =~ s/,/ /g; # turn commas into spaces BACK COMPATIBIILITY
$myCmd =~ s/%f/$params{FREQUENCY}/; # fill in frequency variable
if ($myCmd =~ m/%c/o) { # dont force down if count is used
$count = $testsecs / $params{FREQUENCY};
$myCmd =~ s/%c/$count/; # fill in count variable
} else {
$forceDown = 1;
}
my $rsh = ($section->{RSH}) ? $section->{RSH} : $params{RSH};
foreach $cli (split /[\s,]/, $slist) {
printf "Monitoring on $cli\n";
open PRE, ">>$resultdir/$cli-run.log";
print PRE "========\n";
print PRE "$myCmd\n";
print PRE "========\n";
close PRE;
print STDERR "$cli: $myCmd\n"; # log the actual command
$pid = forkproc ($rsh, $cli, $myCmd,
"/dev/null", "$resultdir/$cli-run.log");
push @forceDownPids, $pid if ($forceDown); # save PID for shutdown
}
}
print "Starting clients (errors logged to $resultdir/stderr)\n";
foreach $section (@workload) {
next unless ($section->{sectionTitle} =~ /CLIENT/i);
next unless ($section->{PROCESSES}); # unused client
my $slist = $section->{sectionParams};
$slist =~ s/HOSTS=\s*//; # strip off initial bit
my $rsh = ($section->{RSH}) ? $section->{RSH} : $params{RSH};
my $pcount = $section->{PROCESSES};
my $tcount = ($section->{THREADS}) ? $section->{THREADS} : 0;
my $tempdir;
if ($section->{TEMPDIR}) {
$tempdir = $section->{TEMPDIR};
} elsif ($params{TEMPDIR}) {
$tempdir = $params{TEMPDIR};
}
my $preCmd = "./" . (($section->{COMMAND})
? $section->{COMMAND} : $params{CLIENTCOMMAND});
$preCmd .= " -e" unless ($params{NOEVENTS});
$preCmd .= " -s -t $params{TIME} -f $params{FREQUENCY}";
$preCmd .= " -d" if ($params{DEBUG});
$preCmd .= " -r" if ($params{TELEMETRY});
$preCmd .= " -R $params{RAMPTIME}" if ($params{RAMPTIME});
if ($params{MAXERRORS}) {
# distribute error count over processes, rounding up
my $n = int (($params{MAXERRORS} + $clientProcCount - 1)
/ $clientProcCount);
$n = 1 if ($n < 1);
$preCmd .= " -m $n";
}
if ($params{MAXBLOCKS}) {
# distribute block count over processes, rounding up
my $n = int (($params{MAXBLOCKS} + $clientProcCount - 1)
/ $clientProcCount);
$n = 1 if ($n < 1);
$preCmd .= " -M $n";
}
$preCmd = "cd $tempdir; " . $preCmd if ($tempdir);
$preCmd =~ s!/!\\!g if ($section->{ARCH} eq "NT4.0");
$preCmd =~ s/;/&&/g if ($section->{ARCH} eq "NT4.0");
my $total_clients = $section->{CLIENTS};
my $residue = $total_clients - ($tcount * $pcount);
foreach $cli (split /[\s,]/, $slist) {
my $stdout = getClientFilename ($cli, $section);
my $myCmd = $preCmd;
$myCmd .= ($params{USEGROUPS} && $section->{GROUP})
? " -H $section->{GROUP}" : " -H $cli";
my $foo = ($params{USEGROUPS} && $section->{GROUP})
? $section->{GROUP} : undef;
if ($tcount) {
my $nt = $tcount;
if ($residue > 0) {
++$nt;
$residue -= $pcount;
}
$myCmd .= " -n $pcount -N $nt";
printf "Starting $pcount x $nt on $cli%s\n",
$foo?" (group = $foo)":'';
$totalProcs += $pcount * $nt;
} else {
my $np = $pcount;
if ($residue > 0) {
++$np;
--$residue;
}
$myCmd .= " -n $np";
printf "Starting $np processes on $foo\n";
$totalProcs += $np;
}
print STDERR "$cli: $myCmd\n"; # log the actual command
$pid = forkproc ($rsh, $cli, $myCmd,
"$resultdir/work.wld", $stdout);
push @localPids, $pid if ($cli =~ /^localhost$/i);
}
}
if (@localPids) {
# print "Trapping extraneous local signals\n";
# This doesnt trap quite right. We dont die, but shell returns...
$SIG{ALRM} = 'IGNORE'; # in case we get an ALRM from the mailclient
}
printf "\nTest duration: %d %s. Rampup time: %d %s. Number of clients: %d\n",
figureTimeNumber ($params{TIME}),
figureTimeUnits ($params{TIME}, "seconds"),
figureTimeNumber ($params{RAMPTIME}),
figureTimeUnits ($params{RAMPTIME}, "seconds"),
$totalProcs;
do 'makeindex.pl' || warn "$@\n"; # html index
print "Waiting for test to finish.\n";
print "Waiting: ", scalar(localtime), "\n";
# wait for children to finish
$pid = wait();
if (@forceDownPids) { # shut down after the first return.
print "Shutting down @forceDownPids\n";
kill 1 => @forceDownPids; # sigHUP
# kill 9 => @forceDownPids; # sigTERM
}
while ($pid != -1) { # wait for all children
$pid = wait();
}
foreach $section (@workload) { # do post test commands
next unless ($section->{sectionTitle} =~ /POSTTEST/i);
unless ($section->{COMMAND}) {
print "PostTest with no command for $section->{sectionParams}\n";
next;
}
my $slist = $section->{sectionParams};
$slist =~ s/HOSTS=\s*//; # strip off initial bit
my $myCmd = $section->{COMMAND};
$myCmd =~ s/%f/$params{FREQUENCY}/; # fill in frequency variable
if ($myCmd =~ m/%c/o) { # dont force down if count is used
$count = $testsecs / $params{FREQUENCY};
$myCmd =~ s/%c/$count/; # fill in count variable
}
my $rsh = ($section->{RSH}) ? $section->{RSH} : $params{RSH};
foreach $cli (split /[\s,]/, $slist) {
printf "Running post test command on $cli\n";
open PRE, ">>$resultdir/$cli-post.log";
print PRE "========\n";
print PRE "$myCmd\n";
print PRE "========\n";
close PRE;
print STDERR "$cli: $myCmd\n"; # log the actual command
forkproc ($rsh, $cli, $myCmd,
"/dev/null", "$resultdir/$cli-post.log");
}
foreach $cli (split /[\s,]/, $slist) {
wait(); # run multiple POSTTEST section sequentially
}
}
}
print STDERR "\nDone.\n";
close(STDERR);
open STDERR, ">&SAVEERR";
print "\nClients done: ", scalar(localtime), "\n";
print "Collecting results\n";
do 'reduce.pl' || die "$@\n"; # generate graphs and sums
print "Generating results pages\n";
do 'report.pl' || die "$@\n";
# Now display that data to console
if ($params{VERBOSE}) {
fileShow ($resultstxt);
print "\n";
}
print "Processing done: ", scalar (localtime), "\n";
pathprint ("\nResults (text):\t$resultstxt\n");
pathprint ( "Results (HTML):\t$resultshtml\n");
print "Index of runs: \tfile://$cwd/$resultbase/index.html\n";
# Now check for major problems in the stderr file
if (open(RESULTSTXT, "$resultdir/stderr")) {
$ERRCNT=0;
while (<RESULTSTXT>) { $ERRCNT++; }
close(RESULTSTXT);
pathprint ("Error log ($ERRCNT lines):\t$resultdir/stderr\n");
}
{ # list user requested logging
my @logfiles = <$resultdir/*-pre.log>;
if (@logfiles) {
foreach $f (@logfiles) {
print "Pre test log: \t$f\n";
}
}
@logfiles = <$resultdir/*-run.log>;
if (@logfiles) {
foreach $f (@logfiles) {
print "Monitoring log: \t$f\n";
}
}
@logfiles = <$resultdir/*-post.log>;
if (@logfiles) {
foreach $f (@logfiles) {
print "Post test log: \t$f\n";
}
}
}
print "Mailmaster done: ", scalar(localtime), "\n"; exit 0;

View File

@@ -1,115 +0,0 @@
#!/usr/bin/env perl
# 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 the Netscape Mailstone utility,
# released March 17, 2000.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1997-2000 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Dan Christian <robodan@netscape.com>
# Marcel DePaolis <marcel@netcape.com>
#
# Alternatively, the contents of this file may be used under the
# terms of the GNU Public License (the "GPL"), in which case the
# provisions of the GPL are applicable instead of those above.
# If you wish to allow use of your version of this file only
# under the terms of the GPL and not to allow others to use your
# version of this file under the NPL, indicate your decision by
# deleting the provisions above and replace them with the notice
# and other provisions required by the GPL. If you do not delete
# the provisions above, a recipient may use your version of this
# file under either the NPL or the GPL.
#####################################################
# usage: perl -Ibin makeindex.pl
# Look at all the results files and create a top level index
unless ($resultbase) { # pick up systematic defaults, if needed
do 'args.pl'|| die $@;
parseArgs(); # parse command line
}
($testname = $params{WORKLOAD}) =~ s:conf/::;
$testname =~ s:.wld::;
my $entry = "";
$entry .= "<TR><TD><BR><A HREF=\"$params{TSTAMP}/results.html\">$params{TSTAMP}</A></TD>";
$entry .= "<TD>$testname</TD>\n";
$entry .= "<TD>$params{TITLE}</TD>\n";
$entry .= "<TD>$params{TIME}</TD>\n";
$entry .= "<TD>$params{CLIENTCOUNT}</TD>\n";
$entry .= "<TD><A HREF=\"$params{TSTAMP}/all.wld\">workload</A></TD>\n";
$entry .= "<TD><A HREF=\"$params{TSTAMP}/stderr\">stderr</A></TD></TR>\n";
if (-r "$resultbase/index.html") {
fileInsertAfter ("$resultbase/index.html",
"^<!-- INSERT TAGS HERE",
$entry);
} else { # create index from scratch
system ("cd $resultbase; ln -s ../doc .");
open(INDEXNEW, ">$resultbase/index.new") ||
die "Couldn't open $resultbase/index.new: $!";
print INDEXNEW <<END;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<TITLE>
MailStone Results
</TITLE>
<HEAD>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#FF0000" ALINK="#000088">
<A HREF=$mailstoneURL>Mailstone documentation</A><BR>
<TABLE BORDER=2>
<CAPTION> Mozilla MailStone Results Index </CAPTION>
<TR>
<TH>Run</TH> <TH>Testname</TH> <TH> Title </TH>
<TH>Duration</TH> <TH>Clients</TH> <TH>Details</TH> <TH>Error log</TH>
</TR>
<!-- INSERT TAGS HERE - DO NOT DELETE THIS LINE -->
END
print INDEXNEW $entry; # put in this entry
# Add in any existing entries
# get a list of all the results files
@resall = <$resultbase/*/results.html>;
# Write out all the links
# This could be rather slow, but we only do it when index.html is missing
foreach $filefull (reverse @resall) {
my $file = $filefull;
$file =~ s:$resultbase/::;
if ($file eq $params{TSTAMP}) { next; } # written above
my $dir = $file;
$dir =~ s:/results.html::;
# dont read in old workloads, it will override the current one
print INDEXNEW "<TR><TD><BR><A HREF=\"$file\">$dir</A></TD>\n";
print INDEXNEW "<TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD><TD>&nbsp;</TD>\n";
print INDEXNEW "<TD><A HREF=\"$dir/all.wld\">workload</A></TD>\n";
print INDEXNEW "<TD><A HREF=\"$dir/stderr\">stderr</A></TD></TR>\n";
}
print INDEXNEW <<END;
</TABLE>
</BODY>
</HTML>
END
close (INDEXNEW);
fileBackup ("$resultbase/index.html");
rename ("$resultbase/index.new", "$resultbase/index.html");
print "Created $resultbase/index.html\n";
}
return 1;

View File

@@ -1,414 +0,0 @@
#!/usr/bin/perl
# 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 the Netscape Mailstone utility,
# released March 17, 2000.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1997-2000 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Dan Christian <robodan@netscape.com>
# Marcel DePaolis <marcel@netcape.com>
#
# Alternatively, the contents of this file may be used under the
# terms of the GNU Public License (the "GPL"), in which case the
# provisions of the GPL are applicable instead of those above.
# If you wish to allow use of your version of this file only
# under the terms of the GPL and not to allow others to use your
# version of this file under the NPL, indicate your decision by
# deleting the provisions above and replace them with the notice
# and other provisions required by the GPL. If you do not delete
# the provisions above, a recipient may use your version of this
# file under either the NPL or the GPL.
#####################################################
# script to create test user accounts for Netscape Messaging Server 3, 4
#
# Given a set of parameters, this script will create an LDIF file
# for a number of email users of the form:
# test1, test2, test3, ...
#
# usage: perl create_accounts_ldif [users] [broadcast] [postmaster] [ options ]
# [ -a allUsersAlias ]
# [ -b basedn ]
# [ -d maildomain ]
# [ -f firstaccount ]
# [ -k ]
# [ -m mailhost ]
# [ -n numaccounts ]
# [ -o outputfile ]
# [ -p password ]
# [ -s storebase ]
# [ -u username ]
# [ -v ]
# [ -w workload ]
# [ -x maxstores ]
# [ -3 ]
#
#perl -Ibin -- bin/makeusers.pl -d mailhost.example.com -m mailhost.example.com -b 'o=example.com' -u mailhost-test -n 100 -4 -o mailhost100.ldif
# Create the ldif for the user accounts and/or broadcast, postmaster account.
#
# The ldif then must be added to
# the directory by hand (ldapadd, or through the dir admin server's
# Database Mgmt->Add entries from an ldif file).
# A faster way
# is to export the existing directory, append the results of
# this script, and re-import the combined file. This can be
# done using the following Netscape Directory Server commands:
# stop-slapd
# db2ldif outputfile
# [ merge files ]
# ldif2db inputfile # for DS4 you would typically use -noconfig
# start-sladp
#
print "Netscape Mailstone.\nCopyright (c) 1998,1999 Netscape Communications Corp.\n";
# server to be used in the internet mail address of the users
$domain = "newdomain.example.net";
# machine that will act as the user's mailhost
$mailhost = "mailhost.example.net";
# base dn for the user entries, e.g. o=Ace Industry,c=US
$basedn = "o=Benchmark Lab, c=US";
# name of broadcast account
$bcastacct = "allusers";
# name of broadcast account
$postmasteraddr = "root\@localhost";
# base name to build user names, will construct test0, test1, ...
$username = "test%ld";
# user passwds, in SHA format, the passwd below is 'netscape'
#$userpassword = "{SHA}aluWfd0LYY9ImsJb3h4afrI4AXk=";
# these can also be imported as cleartext
$userpassword = "netscape";
# 0: no numbered passwords, 1: number with userID
$maxpass = 0;
# first account to use
$firstaccount = 0;
# number of user accounts to create ($first - $first+$num-1)
$numaccounts = 1_000;
# For larger systems, spreading the users over multiple partitions
# is usually a good idea. This example assumes you have
# created partitions named p0, p1, etc.
# store partition base name
$storebase = "p%ld";
# max store number (0 - maxstores-1), skip if 0
$maxstores = 0;
#default to msg 4 schemas
$usemsg4schema = 1;
#default to writing to stdout
$outfile = STDOUT;
# Initial UID for genpasswd
$firstuid = 1000;
sub usage {
print "Usage: perl -Ibin -- makeusers [users] [broadcast] [postmaster]\n";
print "\t[ -w workload ] [ -o outputFile ]\n";
print "\t[ -d mailDomain ] [ -m mailHost ] [ -b baseDN ]\n";
print "\t[ -u username ] [ -f firstAccount ] [ -n numAccounts ]\n";
print "\t[ -p password ] [ -k ]\n";
print "\t[ -s storeBase ] [ -x numStores ]\n";
print "\t[ -a allUsersAlias ] [ -t postmasterAddress ]\n";
print "\t[ -3 ]|[ -4 ]\n";
}
sub readWorkConfig { # read the workload in, parse our params
my $workloadfile = shift || die "Workload file name expected\n";
do 'args.pl'|| die $@;
readWorkloadFile ($workloadfile, \@workload)
|| die "Error reading workload: $@\n";
# assign all the parameters from the config
$mailhost = $defaultSection->{SERVER}
if ($defaultSection->{SERVER});
if ($defaultSection->{ADDRESSFORMAT}) {
my $addr = $defaultSection->{ADDRESSFORMAT};
$addr =~ s/^.*@//;
$domain = $addr;
}
if ($defaultSection->{LOGINFORMAT}) {
my $user = $defaultSection->{LOGINFORMAT};
#$user =~ s/%ld$//;
$username = $user;
}
$numaccounts = $defaultSection->{NUMLOGINS}
if ($defaultSection->{NUMLOGINS});
$firstaccount = $defaultSection->{FIRSTLOGINS}
if ($defaultSection->{FIRSTLOGINS});
$userpassword = $defaultSection->{PASSWDFORMAT}
if ($defaultSection->{SERVER});
if ($userpassword =~ m/%ld/) { # see if numbered passwords
$maxpass++;
#$userpassword =~ s/%ld//g;
}
# what isnt set: basedn, storebase, maxstores, usemsg4schema
}
while (@ARGV) {
$arg = shift(@ARGV);
if ($arg =~ /^-a$/i) { # allusers (broadcast) user name
$bcastacct = shift(@ARGV);
next;
}
if ($arg =~ /^-b$/i) { # LDAP base DN
$basedn = shift(@ARGV);
next;
}
if ($arg =~ /^-d$/i) { # mail domain
$domain = shift(@ARGV);
next;
}
if ($arg =~ /^-f$/i) { # initial account
$firstaccount = shift(@ARGV);
next;
}
if ($arg =~ /^-k$/i) { # use numbered passwords
$maxpass++;
next;
}
if ($arg =~ /^-h$/i) { # help
usage();
exit 0;
}
if ($arg =~ /^-m$/i) { # mail server name
$mailhost = shift(@ARGV);
next;
}
if ($arg =~ /^-n$/i) { # number of accounts
$numaccounts = shift(@ARGV);
next;
}
if ($arg =~ /^-o$/i) { # name output file
my $fname = shift || die "File name expected\n";
open OUTFILE, ">$fname" || die "Error opening file $@\n";
$outfile = OUTFILE;
next; # use msg4 user admin schema
}
if ($arg =~ /^-p$/i) { # password
$userpassword = shift(@ARGV);
next;
}
if ($arg =~ /^-s$/i) { # base name for above
$storebase = shift(@ARGV);
next;
}
if ($arg =~ /^-t$/i) { # postmaster address
$postmasteraddress = shift(@ARGV);
next;
}
if ($arg =~ /^-u$/i) { # user name base
$username = shift(@ARGV);
next;
}
if ($arg =~ /^-v$/i) { # be verbose
$verbose++;
next;
}
# do this when read, so that later switches can override
if ($arg =~ /^-w$/i) { # get a workload file
readWorkConfig (shift(@ARGV));
next;
}
if ($arg =~ /^-x$/i) { # number of partitions (0 to skip)
$maxstores = shift(@ARGV);
next;
}
if ($arg =~ /^-3$/) { # no msg4 schema
$usemsg4schema = 0;
next;
}
if ($arg =~ /^-4$/) { # use msg4 user admin schema
$usemsg4schema = 1;
next;
}
if ($arg =~ /^users$/i) {
$genusers++;
next;
}
if ($arg =~ /^broadcast$/i) {
$genbroadcast++;
next;
}
if ($arg =~ /^passwd$/i) {
$genpasswd++;
next;
}
if ($arg =~ /^postmaster$/i) {
$genpostmaster++;
next;
}
print STDERR "Unknown argument $arg. Use -h for help.\n";
exit 1;
}
unless (($genusers) || ($genbroadcast) || ($genpasswd) || ($genpostmaster)) {
print STDERR "Must specify mode [users] [broadcast] [postmaster] ...\n";
usage();
exit 0;
}
# specify number fields, if needed
unless ($username =~ /%ld/) {
$username .= '%ld';
}
if (($maxpass) && !($userpassword =~ /%ld/)) {
$userpassword .= '%ld';
}
if (($maxstores) && !($storename =~ /%ld/)) {
$storename .= '%ld';
}
if ($verbose) {
print STDERR "Here is the configuration:\n";
print STDERR "baseDN='$basedn' \t";
print STDERR (($usemsg4schema) ? "-4\n" : "-3\n");
print STDERR "mailHost='$mailhost' \tdomain='$domain'\n";
print STDERR "userName='$username' \tnumAccounts=$numaccounts \tfirstAccount=$firstaccount\n";
print STDERR "userPassword='$userpassword'\n";
print STDERR "allUsersAccount='$bcastacct'\n" if ($genbroadcast);
print STDERR "postmasterAddress='$postmasterAddress'\n" if ($genpostmaster);
}
if ($genusers) { # Create the user accounts
$storenum=0;
for ($i = $firstaccount; $i < $firstaccount+$numaccounts; $i++) {
# build user account name
my $acctname = $username;
$acctname =~ s/%ld/$i/; # insert user number
my $password = $userpassword;
$password =~ s/%ld/$i/; # insert user number
# MAKE SURE THERE ARE NO TRAILING SPACES IN THE LDIF
my $extradata = "";
if ($maxstores > 0) { # assign them to a store
my $storename = $storebase;
$storename =~ s/%ld/$storenum/;
$extradata .= "mailmessagestore: $storename\n";
$storenum++;
$storenum=0 if ($storenum >= $maxstores);
}
$extradata .= "objectclass: nsMessagingServerUser\n"
if ($usemsg4schema);
print $outfile <<END;
dn: uid=$acctname, $basedn
userpassword: $password
givenname: $acctname
sn: $acctname
cn: $acctname
uid: $acctname
mail: $acctname\@$domain
mailhost: $mailhost
maildeliveryoption: mailbox
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
objectclass: mailRecipient
$extradata
END
}
}
if ($genbroadcast) { # Create the broadcast account
# MAKE SURE THERE ARE NO TRAILING SPACES IN THE LDIF
my $password = $userpassword;
$password =~ s/%ld//; # strip user number
# initial part
print $outfile <<END;
dn: uid=$bcastacct, $basedn
userpassword: $password
givenname: $bcastacct
sn: $bcastacct
cn: $bcastacct
uid: $bcastacct
mail: $bcastacct\@$domain
mailhost: $mailhost
maildeliveryoption: forward
END
# now put in each address
for ($i = $firstaccount; $i < $firstaccount+$numaccounts; $i++) {
# build user account name
my $acctname = $username;
$acctname =~ s/%ld/$i/; # insert user number
print $outfile "mailforwardingaddress: $acctname\@$domain\n";
}
# final part
print $outfile <<END;
objectclass: top
objectclass: person
objectclass: organizationalPerson
objectclass: inetOrgPerson
objectclass: mailRecipient
END
}
if ($genpostmaster) { # Create the postmaster account
# MAKE SURE THERE ARE NO TRAILING SPACES IN THE LDIF
print $outfile <<END;
dn: cn=postmaster, $basedn
cn: postmaster
mail: postmaster\@$domain
mailalternateaddress: postmaster\@$mailhost
mgrprfc822mailmember: $postmasterAddress
objectclass: top
objectclass: mailGroup
objectclass: groupOfUniqueNames
END
}
# mixing passwd output with the ldif output above would be quite silly
if ($genpasswd) { # Create passwd entries for makeusers
for ($i = $firstaccount; $i < $firstaccount+$numaccounts; $i++) {
# build user account name
my $acctname = $username;
$acctname =~ s/%ld/$i/; # insert user number
my $password = $userpassword;
$password =~ s/%ld/$i/; # insert user number
my $uid = $firstuid + $i;
print $outfile "$acctname:$password:$uid:$uid:Mail user $acctname:/home/$acctname:/bin/sh\n";
}
}
exit 0;

View File

@@ -1,147 +0,0 @@
#!/bin/sh
# 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 the Netscape Mailstone utility,
# released March 17, 2000.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1999-2000 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Dan Christian <robodan@netscape.com>
# Marcel DePaolis <marcel@netcape.com>
#
# Alternatively, the contents of this file may be used under the
# terms of the GNU Public License (the "GPL"), in which case the
# provisions of the GPL are applicable instead of those above.
# If you wish to allow use of your version of this file only
# under the terms of the GPL and not to allow others to use your
# version of this file under the NPL, indicate your decision by
# deleting the provisions above and replace them with the notice
# and other provisions required by the GPL. If you do not delete
# the provisions above, a recipient may use your version of this
# file under either the NPL or the GPL.
#####################################################
# Figure out standard system names
UNAME_REPORTS=`uname`
UNAME_OS_ARCH=`uname -s`
UNAME_OS_RELEASE=`uname -r`
OS_ARCH=$UNAME_OS_ARCH
OS_RELEASE=$UNAME_OS_RELEASE
OS_CONFIG=${OS_ARCH}${OS_RELEASE}
if [ "$UNAME_OS_ARCH" = "SunOS" ]; then
PROCESSOR=`uname -p`
if [ "$PROCESSOR" = "i386" ]; then
BUILD_ARCH=x86
else
BUILD_ARCH=SPARC
fi
BUILD_OS=SOLARIS
if [ "$UNAME_OS_RELEASE" = "5.5" ]; then
BUILD_VER=2.5
elif [ "$UNAME_OS_RELEASE" = "5.5.1" ]; then
BUILD_VER=2.5
elif [ "$UNAME_OS_RELEASE" = "5.6" ]; then
BUILD_VER=2.6
elif [ "$UNAME_OS_RELEASE" = "5.7" ]; then
BUILD_VER=7
elif [ "$UNAME_OS_RELEASE" = "5.8" ]; then
BUILD_VER=8
fi
elif [ "$UNAME_OS_ARCH" = "HP-UX" ]; then
BUILD_ARCH=HPPA
BUILD_OS=$UNAME_OS_ARCH
BUILD_VER=$OS_RELEASE
elif [ "$UNAME_OS_ARCH" = "AIX" ]; then
BUILD_ARCH=POWER
BUILD_OS=$UNAME_OS_ARCH
BUILD_VER=`uname -v`.`uname -r`
OS_CONFIG=${BUILD_OS}${BUILD_VER}
elif [ "$UNAME_OS_ARCH" = "OSF1" ]; then
BUILD_ARCH=ALPHA
BUILD_OS=$UNAME_OS_ARCH
BUILD_VER=$OS_RELEASE
elif [ "$UNAME_OS_ARCH" = "IRIX64" -o "$UNAME_OS_ARCH" = "IRIX" ]; then
BUILD_ARCH=MIPS
BUILD_OS=IRIX
BUILD_VER=$OS_RELEASE
OS_CONFIG=${BUILD_OS}${OS_RELEASE}
elif [ "$UNAME_OS_ARCH" = "BSD/386" ]; then
BUILD_ARCH=x86
BUILD_OS=BSDI
BUILD_VER=$OS_RELEASE
elif [ "$UNAME_OS_ARCH" = "FreeBSD" ]; then
BUILD_ARCH=`uname -p`
BUILD_OS=$UNAME_OS_ARCH
BUILD_VER=$UNAME_OS_RELEASE
if [ "$BUILD_ARCH" = "i386" ]; then
BUILD_ARCH=x86
fi
OS_CONFIG=${BUILD_OS}${BUILD_VER}_${BUILD_ARCH}
elif [ "$UNAME_OS_ARCH" = "SCO_SV" ]; then
BUILD_ARCH=x86
BUILD_OS=SCO
BUILD_VER=$OS_RELEASE
elif [ "$UNAME_OS_ARCH" = "UNIX_SV" ]; then
# Check for braindamage
grep NCR /etc/bcheckrc > /dev/null 2>&1
BUILD_ARCH=x86
if [ $? = 0 ]; then
BUILD_OS=NCR
else
BUILD_OS=UNIXWARE
fi
BUILD_VER=$OS_RELEASE
elif [ "$UNAME_OS_ARCH" = "NEWS-OS" ]; then
BUILD_ARCH=`uname -p`
BUILD_OS=SONY
BUILD_VER=$OS_RELEASE
elif [ "$UNAME_OS_ARCH" = "UNIX_System_V" ]; then
BUILD_ARCH=`uname -p`
BUILD_OS=NEC
BUILD_VER=$OS_RELEASE
elif [ $UNAME_OS_ARCH = Linux ]; then
BUILD_ARCH=`uname -m`
if [ -n "`echo $BUILD_ARCH | grep -e '86$'`" ] ; then
BUILD_ARCH=x86
fi
BUILD_OS=$UNAME_OS_ARCH
BUILD_VER=`echo $OS_RELEASE | cut -f1,2 -d.`
OS_CONFIG=${BUILD_OS}${BUILD_VER}_${BUILD_ARCH}
fi
case "$UNAME_OS_ARCH" in
SINIX*|ReliantUNIX*)
BUILD_ARCH=`uname -p`
BUILD_OS="ReliantUNIX"
BUILD_VER=$OS_RELEASE
;;
esac
#PLATFORM=${BUILD_ARCH}_${BUILD_OS}_${BUILD_VER}
#echo $PLATFORM
echo $OS_CONFIG

View File

@@ -1,70 +0,0 @@
#!/bin/sh
# The conZtents 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 the Netscape Mailstone utility,
# released March 17, 2000.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1999-2000 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Dan Christian <robodan@netscape.com>
# Marcel DePaolis <marcel@netcape.com>
#
# Alternatively, the contents of this file may be used under the
# terms of the GNU Public License (the "GPL"), in which case the
# provisions of the GPL are applicable instead of those above.
# If you wish to allow use of your version of this file only
# under the terms of the GPL and not to allow others to use your
# version of this file under the NPL, indicate your decision by
# deleting the provisions above and replace them with the notice
# and other provisions required by the GPL. If you do not delete
# the provisions above, a recipient may use your version of this
# file under either the NPL or the GPL.
#####################################################
# re-process a data run
# by default, use the most recent one
# Usage: process
# or
# Usage: process TIMESTAMP [args...]
# or
# Usage: process results/TIMESTAMP [args...]
if [ ! -x perl/bin/perl -o ! -f .license ] ; then # see if setup was ever run
echo "Critical files are missing. Run setup."
exit 2;
fi
if [ $# -lt 1 ] ; then # do most recent run
# since the directories are time stamps with fixed fields,
# alphabetical order is also time order
dir=`ls -d results/[0-9]*.[0-9]* | tail -1`
else # use specified run
if [ -d results/$1 ] ; then # timestamp
dir=results/$1
shift
elif [ -d $1 ] ; then # results/timestamp
dir=$1
shift
fi
fi
if [ -n "$dir" ] ; then
if [ -f $dir/all.wld ] ; then # unified workload file
perl/bin/perl -Ibin -- bin/process.pl -w $dir/all.wld "$@"
else # BACK COMPATIBILITY form
perl/bin/perl -Ibin -- bin/process.pl -c $dir/config.cfg "$@"
fi
else # pass in whatever they gave us
perl/bin/perl -Ibin -- bin/process.pl "$@"
fi

View File

@@ -1,371 +0,0 @@
#!/usr/bin/env perl
# 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 the Netscape Mailstone utility,
# released March 17, 2000.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1997-2000 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Dan Christian <robodan@netscape.com>
# Marcel DePaolis <marcel@netcape.com>
#
# Alternatively, the contents of this file may be used under the
# terms of the GNU Public License (the "GPL"), in which case the
# provisions of the GPL are applicable instead of those above.
# If you wish to allow use of your version of this file only
# under the terms of the GPL and not to allow others to use your
# version of this file under the NPL, indicate your decision by
# deleting the provisions above and replace them with the notice
# and other provisions required by the GPL. If you do not delete
# the provisions above, a recipient may use your version of this
# file under either the NPL or the GPL.
#####################################################
# Generate reports independently of mailmaster
# Can be used during a run or after mailmaster has finished
print "Netscape Mailstone\n";
print "Copyright (c) 1997-2000 Netscape Communications Corp.\n";
# this parses the command line and config file
do 'args.pl'|| die $@;
parseArgs(); # parse command line
setConfigDefaults(); # pick up any missing defaults
$resultdir = "$resultbase/$params{TSTAMP}";
$tmpdir = "$tmpbase/$params{TSTAMP}";
$resultstxt = "$resultdir/results.txt";
$resultshtml = "$resultdir/results.html";
if ($params{TESTBED}) { # BACK COMPATIBILITY
$params{TESTBED} = "$resultdir/testbed.tbd"; # use saved testbed
# open the saved testbed conf file
readTestbedFile($params{TESTBED}) || die "$@\n";
}
# Convert old style to new. Write the complete inclusive workload
writeWorkloadFile ("$resultdir/all.wld", \@workload)
unless ((-r "$resultdir/all.wld") || (-r "$resultdir/all.wld.gz"));
$testsecs = figureTimeSeconds ($params{TIME}, "minutes");
print "Starting data reduction\n";
sub readClientCSV {
my $file = shift;
my @fields;
my $line;
print "Reading client summary: $file\n";
open(CSV, "<$file") || # Summary of all clients
open(CSV, "gunzip -c $file.gz |") ||
return 0; # failed
# Title line: Verify that arguments are in the same order
$line = <CSV>;
unless ($line) {
print "readClientCSV: Error reading $file. \n";
return 0;
}
chomp $line; # strip newline
@fields = split /,/, $line; # turn into an array
my $cli = shift @fields; # pull off client header
my $cn = shift @fields; # pull off num header
my $pro = shift @fields; # pull off protocol header
# Client array, per variable, per protocol
foreach $p (@protocols) {
# This hash will hold the timers
$clidata{$p} = ArrayInstance->new();
foreach $t (@timers) {
# This hash will hold the values in the timer
$clidata{$p}->{$t} = ArrayInstance->new();
foreach $f (@{$timerFields{$t}}) {
# This hash that will hold the actual values per client
$clidata{$p}->{$t}->{$f} = ArrayInstance->new();
}
}
foreach $t (@scalarClientFields) { # non-timer fields
# This hash that will hold the actual values per client
$clidata{$p}->{$t} = ArrayInstance->new();
}
}
foreach $f (@commClientFields) { # proto independent
my $v = shift @fields;
if ($v !~ m/$f/i) {
print "readClientCSV: Protocol order mismatch '$v', '$f' \n";
return 0;
}
}
foreach $t (@timers) { # timers
foreach $f (@{$timerFields{$t}}) {
my $v = shift @fields;
if ($v !~ m/$t:$f/i) {
print "readClientCSV: Protocol order mismatch '$v', '$t:$f' \n";
return 0;
}
}
}
foreach $t (@scalarClientFields) { # scalars
my $v = shift @fields;
if ($v !~ m/$t/i) {
print "readClientCSV: Protocol order mismatch '$v', '$t' \n";
return 0;
}
}
# Now read actual data
while (<CSV>) {
chomp; # strip newline
@fields = split /,/; # turn into an array
my $cli = shift @fields; # pull off client header
my $cn = shift @fields; # pull off num header
my $p = shift @fields; # pull off protocol header
my $cp = $clidata{$p};
# Create the needed finals arrays
unless ($finals{$p}) {
#print "Creating finals{$p}\n"; # DEBUG
$finals{$p} = ArrayInstance->new();
foreach $t (@timers) {
$finals{$p}->{$t} = ArrayInstance->new();
}
}
foreach $f (@commClientFields) { # proto independent
$cliGen{$f}->{$cn} = shift @fields;
}
foreach $t (@timers) { # timers
foreach $f (@{$timerFields{$t}}) {
$cp->{$t}->{$f}->{$cn} = shift @fields;
$finals{$p}->{$t}->{$f} += $cp->{$t}->{$f}->{$cn};
}
}
foreach $t (@scalarClientFields) { # scalars
$cp->{$t}->{$cn} = shift @fields;
$finals{$p}->{$t} += $cp->{$t}->{$cn};
}
foreach $section (@workload) { # find thread count for this client
next unless ($section->{sectionTitle} =~ /CLIENT/i);
next unless ($section->{sectionParams} =~ /$cli/);
#print "Process $cli has threads $section->{THREADS}\n";
$reportingClients += ($section->{THREADS})
? $section->{THREADS} : 1;
last;
}
}
close (CSV);
return 1; # success
}
sub readTimeCSV {
my $file = shift;
my $p = shift;
my $gp = $graphs{$p};
my $line;
print "Reading time $p summary: $file\n";
open(CSV, "<$file") || # Summary over time
open(CSV, "gunzip -c $file.gz |") ||
return 0; # failed
# Verify that arguments are in the same order
$line = <CSV>;
unless ($line) {
print "readTimeCSV: Error reading $file. \n";
return 0;
}
chomp $line; # strip newline
@fields = split /,/, $line;
my $t = shift @fields; # pull off time header
foreach $t (@timers) {
foreach $f (@{$timerFields{$t}}) {
my $v = shift @fields;
if ($v !~ m/$t:$f/i) {
print "readTimeCSV: Protocol order mismatch '$v', '$t:$f' \n";
return 0;
}
}
}
foreach $t (@scalarGraphFields) {
my $v = shift @fields;
if ($v !~ m/$t/i) {
print "readTimeCSV: Protocol order mismatch '$v', '$t' \n";
return 0;
}
}
while (<CSV>) {
chomp;
#print "LINE: $_\n";
@fields = split /,/;
my $tm = shift @fields; # pull off time header
#print "t=$t ";
foreach $t (@timers) {
foreach $f (@{$timerFields{$t}}) {
$gp->{$t}->{$f}->{$tm} = shift @fields;
#print "$v=$gp->{$v}->{$tm} ";
}
}
foreach $t (@scalarGraphFields) {
$gp->{$t}->{$tm} = shift @fields;
#print "$v=$gp->{$v}->{$tm} ";
}
#print "\n";
}
close (CSV);
return 1; # success
}
sub loadCSV {
my @csvs = <$resultdir/time-*.csv>;
@csvs = <$resultdir/time-*.csv.gz> unless (@csvs);
return 0 unless (@csvs); # no time.csv files
# stuff normally done from reduce.pl (should all be in protoconf?)
# Basic sanity check
return 0 unless ($testsecs > 0);
$startTime = 0; # these are timeInSeconds/$timeStep
$endTime = 0;
# keep graphs with somewhat more precision than sample rate;
$timeStep = int ($params{FREQUENCY} / 2);
if ($timeStep < 1) { $timeStep = 1; }
# global results initialization
$reportingClients = 0;
$totalProcs = 0; # number of clients started
foreach $f (@commClientFields) { # protocol independent fields
$cliGen{$f} = ArrayInstance->new();
}
return 0 unless (readClientCSV ("$resultdir/clients.csv")); # client info
foreach $c (@csvs) { # read time info
$c =~ s/.gz$//; # strip .gz extension
my $p = $c; # strip down to protocol portion
$p =~ s/$resultdir\/time-//;
$p =~ s/.csv$//;
return 0 unless (readTimeCSV ($c, $p));
}
return 0 unless ($reportingClients > 0);
foreach $section (@workload) {
next unless ($section->{sectionTitle} =~ /CLIENT/i);
my $slist = $section->{sectionParams};
$slist =~ s/HOSTS=\s*//; # strip off initial bit
my @hlist = split /[\s,]/, $slist;
my $hcnt = (1 + $#hlist);
my $pcount = $section->{PROCESSES};
my $tcount = ($section->{THREADS}) ? $section->{THREADS} : 1;
$totalProcs += $pcount * $tcount * $hcnt;
}
# Find time extent for a key graph
($startTime, $endTime) = dataMinMax ("blocks", \@protocols,
$startTime, $endTime);
$realTestSecs = ($endTime - $startTime) * $timeStep;
$realTestSecs = 1 unless ($realTestSecs); # in case of small MaxBlocks
printf "Reported test duration %d seconds with %d second resolution\n",
$realTestSecs, $timeStep;
$realTestSecs = $testsecs if ($realTestSecs > $testsecs);
my @newProtos; # figure real protocol list
foreach $p (@protocols) {
my $gp = $graphs{$p};
my $numValid = 0;
# See if there is real data here
CHECKVAL: foreach $t (@timers) {
foreach $f (@{$timerFields{$t}}) {
my $vp = $gp->{$t}->{$f};
next unless ($vp); # no data
next unless (scalar %$vp); # redundant???
#print "Checking: $p $t $f => ENTRIES\n";
$numValid++;
last CHECKVAL;
}
}
($numValid > 0) || next;
push @newProtos, $p;
}
# update protocol list to only have what was used
@protocols = @newProtos;
@protocolsAll = @newProtos;
push @protocolsAll, "Total";
}
my $doFull = 1; # re-processing is currently broken
# if (!((-f "$resultdir/clients.csv")
# || (-f "$resultdir/clients.csv.gz"))) { # no processing yet
# $doFull = 1;
# } else { # see if any source is newer than csv
# foreach $section (@workload) {
# next unless ($section->{sectionTitle} =~ /CLIENT/i);
# my $slist = $section->{sectionParams};
# $slist =~ s/HOSTS=\s*//; # strip off initial bit
# foreach $cli (split /[\s,]/, $slist) {
# my $fname = getClientFilename ($cli, $section);
# if ((-r $fname) # raw source exists
# && ((-M "$resultdir/clients.csv")
# > (-M $fname))) { # newer
# #print "$fname is newer than $resultdir/clients.csv\n";
# $doFull++;
# last;
# }
# }
# }
# }
# unless ($doFull) { # do CSV load
# # if this is a csv only run, then these may not exist yet
# mkdir ("$tmpbase", 0775);
# mkdir ("$tmpdir", 0775);
# unless (-r "$resultbase/index.html") {
# do 'makeindex.pl' || warn "$@\n"; # html index
# }
# $doFull = 1 unless (loadCSV); # if CSV fails, fall back to full processing
# }
if ($doFull) {
do 'reduce.pl' || die "$@\n";
}
print "Generating results pages:\t", scalar (localtime), "\n";
do 'report.pl' || die "$@\n";
# Now display that data to console
if ($params{VERBOSE}) {
fileShow ($resultstxt);
print "\n";
}
pathprint ("\nResults (text):\t$resultstxt\n");
pathprint ( "Results (HTML):\t$resultshtml\n");
print "Index of runs: \tfile://$cwd/$resultbase/index.html\n";
print "Process done:\t", scalar (localtime), "\n";

View File

@@ -1,158 +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 the Netscape Mailstone utility,
# released March 17, 2000.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1997-2000 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Dan Christian <robodan@netscape.com>
# Marcel DePaolis <marcel@netcape.com>
#
# Alternatively, the contents of this file may be used under the
# terms of the GNU Public License (the "GPL"), in which case the
# provisions of the GPL are applicable instead of those above.
# If you wish to allow use of your version of this file only
# under the terms of the GPL and not to allow others to use your
# version of this file under the NPL, indicate your decision by
# deleting the provisions above and replace them with the notice
# and other provisions required by the GPL. If you do not delete
# the provisions above, a recipient may use your version of this
# file under either the NPL or the GPL.
#####################################################
# This define the structures that hold summary, client, and graph data,
# This sets the names used for display. Can be internationalized.
# All top level names are here (both timers and scalars).
# Any unlisted names will map to themselves.
%timerNames
= (
#internal name, Printed name
"total", "total",
"conn", "connect",
"reconn", "reconnect",
"banner", "banner",
"login", "login",
"cmd", "command",
"submit", "submit",
"retrieve", "retrieve",
"logout", "logout",
"idle", "idle",
"connections", "connections",
"blocks", "blocks",
);
# This sets the names used for display. Can be internationalized.
%fieldNames
= (
#internal name, Printed name
"Try", "Try",
"Error", "Error",
"BytesR", "BytesR",
"BytesW", "BytesW",
"Time", "Time",
"TimeMin", "TMin",
"TimeMax", "TMax",
"Time2", "TStd",
);
# hold time graphs for each protocol
%graphs = ();
# Totals are done during plotting, if needed
%finals = (); # create base finals hash
# These are sections that dont get passed to mailclient (case insensitive)
@scriptWorkloadSections
= (
"Config", # special, references %params
"Client", # testbed client(s)
"Graph", # graph generation
"Setup", # things to run with ./setup
"Startup", # things to run before test
"Monitor", # other performance monitoring
"PreTest", # things to run before test
"PostTest", # things to run after test
);
# These are sections that arent protocols. Anything else must be.
@nonProtocolSections
= (@scriptWorkloadSections, ("Default"));
# These are the known workload parameters (as they will print)
# These are coerced to upper case internally (do NOT internationize)
@workloadParameters
= (
"addressFormat",
"arch",
"blockID",
"blockTime",
"chartHeight",
"chartPoints",
"chartWidth",
"clientCount",
"command",
"comments",
"file",
"firstAddress",
"firstLogin",
"frequency",
"gnuplot",
"group",
"idleTime",
"leaveMailOnServer",
"loginFormat",
"loopDelay",
"numAddresses",
"numLogins",
"numLoops",
"numRecips",
"mailClient",
"maxBlocks",
"maxClients",
"maxErrors",
"maxThreads",
"maxProcesses",
"passwdFormat",
"processes",
"rampTime",
"rcp",
"rsh",
"sequentialAddresses",
"sequentialLogins",
"server",
"smtpMailFrom",
"sysConfig",
"threads",
"telemetry",
"tempDir",
"time",
"title",
"TStamp",
"useAuthLogin",
"useEHLO",
"weight",
"wmapBannerCmds",
"wmapClientHeader",
"wmapInBoxCmds",
"wmapLoginCmd",
"wmapLoginData",
"wmapLogoutCmds",
"wmapMsgReadCmds",
"wmapMsgWriteCmds",
"workload",
);
return 1;

File diff suppressed because it is too large Load Diff

View File

@@ -1,605 +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 the Netscape Mailstone utility,
# released March 17, 2000.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1997-2000 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Dan Christian <robodan@netscape.com>
# Marcel DePaolis <marcel@netcape.com>
#
# Alternatively, the contents of this file may be used under the
# terms of the GNU Public License (the "GPL"), in which case the
# provisions of the GPL are applicable instead of those above.
# If you wish to allow use of your version of this file only
# under the terms of the GPL and not to allow others to use your
# version of this file under the NPL, indicate your decision by
# deleting the provisions above and replace them with the notice
# and other provisions required by the GPL. If you do not delete
# the provisions above, a recipient may use your version of this
# file under either the NPL or the GPL.
#####################################################
# This file deals with the summary data only
# Should be packages
do 'genplot.pl' || die "$@\n";
sub walkSetupTotals {
my $a = shift; my $f = shift; my $p = shift;
if ($p =~ /(\w+):(\w+):$/) {
my $tm = $2;
if (!($finals{Total}->{$tm}->{$f})) {
$finals{Total}->{$tm}->{$f} = $a;
} elsif ($f =~ /Min$/) {
$finals{Total}->{$tm}->{$f} = $a
if (($a > 0.0) && ($a < $finals{Total}->{$tm}->{$f}));
} elsif ($f =~ /Max$/) {
$finals{Total}->{$tm}->{$f} = $a if ($a > $finals{Total}->{$tm}->{$f});
} else {
$finals{Total}->{$tm}->{$f} += $a;}
}
elsif ($p =~ /(\w+):$/) {
$finals{Total}->{$f} += $a;
}
}
sub setupTotals {
# Figure out combined timers for "Total" protocol
# We might do a smarter merge here (look at context and try to match order)
# As long as the first protocol is a superset, it wont matter
my @tnames;
foreach $proto (@protocols) {
foreach $n (@{$protocolFields{$proto}}) {
my $t = $n;
$t =~ s/([][{}*+?^.\/])/\\$1/g; # quote regex syntax
my $found = 0;
foreach $tn (@tnames) { # see if it is in the list already
next unless ($tn =~ /$t/);
$found = 1;
last;
}
#print "proto $proto: Found $n\n" if ($found > 0);
next if ($found > 0);
#print "proto $proto: Add $n\n";
push @tnames, $n; # add to list
}
}
#print "'Total' timers @tnames\n";
$protocolFields{"Total"} = \@tnames;
# Create "Total" hashes
$finals{Total} = ArrayInstance->new();
foreach $n (@{$protocolFields{"Total"}}) { # all timers
my $t = $n; # dont modify original list
if ($t =~ /^\[(\w+)\]$/) { # Timer case, strip off brackets
$finals{Total}->{$1} = ArrayInstance->new();
#print "Creating Total timer field $1\n";
} else { # scalar
$finals{Total}->{$n} = 0;
#print "Creating Total scalar field $n\n";
}
}
# Total finals array
foreach $proto (@protocols) {
foreach $t (@{$protocolFields{$proto}}) {
if ($t =~ /^\[(\w+)\]$/) { # Timer case, strip off brackets
my $tm = $1;
foreach $f (@timerFieldsAll) {
my $a = $finals{$proto}->{$tm}->{$f};
if (!($finals{Total}->{$tm}->{$f})) { # never touched
$finals{Total}->{$tm}->{$f} = $a;
} elsif ($f =~ /Min$/) {
$finals{Total}->{$tm}->{$f} = $a
if (($a > 0.0)
&& ($a < $finals{Total}->{$tm}->{$f}));
} elsif ($f =~ /Max$/) {
$finals{Total}->{$tm}->{$f} = $a
if ($a > $finals{Total}->{$tm}->{$f});
} else {
$finals{Total}->{$tm}->{$f} += $a;
}
}
} else {
$finals{Total}->{$t} += $finals{$proto}->{$t};
}
}
}
# Convert Time2 to standard deviation
foreach $proto (@protocolsAll) {
foreach $n (@{$protocolFields{$proto}}) {
my $t = $n; # dont modify original list
if ($t =~ /^\[(\w+)\]$/) { $t = $1; } # strip off brackets
next unless ($finals{$proto}->{$t}); # proto doesnt have timer
next unless ($finals{$proto}->{$t}->{Try});
next unless ($finals{$proto}->{$t}->{Time2} > 0);
my $ss = $finals{$proto}->{$t}->{Time2};
my $tot = $finals{$proto}->{$t}->{Time};
my $n = $finals{$proto}->{$t}->{Try};
next unless ($n > 0); # skip if this is 0
my $var = ($ss - (($tot * $tot) / $n)) / $n;
print "$proto->$t var < 0: Time2=$ss Time=$tot n=$n\n"
if ($var < 0);
$finals{$proto}->{$t}->{Time2} = ($var > 0) ? sqrt ($var) : 0.0;
}
}
# Divide total times by trys to get averate time
foreach $proto (@protocolsAll) {
foreach $n (@{$protocolFields{$proto}}) {
my $t = $n; # dont modify original list
if ($t =~ /^\[(\w+)\]$/) { $t = $1; } # strip off brackets
next unless ($finals{$proto}->{$t}); # proto doesnt have timer
($finals{$proto}->{$t}->{Try}) || next;
$finals{$proto}->{$t}->{Time} /= $finals{$proto}->{$t}->{Try}
}
}
}
# The text version is designed to be machine processable
# commify and kformat are not used
sub genTextReport {
fileBackup ($resultstxt); # if processing as we go, backup old file
# Open a text file to hold the results
open(RESULTSTXT, ">$resultstxt") ||
die "Couldn't open $resultstxt: $!";
# Store results as text
printf RESULTSTXT "---- Mozilla MailStone Results $params{TSTAMP} ----\n";
printf RESULTSTXT "\t\t%s\n", $params{TITLE};
printf RESULTSTXT "\t\t%s\n", $params{COMMENTS};
printf RESULTSTXT "\n";
printf RESULTSTXT "Test duration: %d %s. Rampup: %d %s. Reported duration %s seconds\n",
figureTimeNumber ($params{TIME}),
figureTimeUnits ($params{TIME}, "minutes"),
figureTimeNumber ($params{RAMPTIME}),
figureTimeUnits ($params{RAMPTIME}, "seconds"), $realTestSecs;
printf RESULTSTXT "Number of reporting clients: %s of %s\n",
$reportingClients, $totalProcs;
foreach $proto (@protocolsAll) {
# do op counters
printf RESULTSTXT "\n%-15s ", $proto;
foreach $f (@timerFieldsAll) {
#($f =~ m/^Time2$/o) && next;
printf RESULTSTXT "%13s",
($fieldNames{$f}) ? $fieldNames{$f} : $f;
}
foreach $n (@{$protocolFields{$proto}}) {
my $t = $n; # dont modify original list
unless ($t =~ /^\[(\w+)\]$/) { # scalar case
#next; # skip scalars for now
# do scalar counters. Column should line up with "Try"
printf RESULTSTXT "\n%-15s ",
$proto . ":" . (($timerNames{$t}) ? $timerNames{$t} : $t);
printf RESULTSTXT
"%13s", $finals{$proto}->{$t};
next;
} else { # strip off brackets
$t = $1;
}
printf RESULTSTXT "\n%-15s ",
$proto . ":" . (($timerNames{$t}) ? $timerNames{$t} : $t);
foreach $f (@timerFieldsAll) {
#($f =~ m/^Time2$/o) && next;
if ($f =~ m/Time/o) {
printf RESULTSTXT
"%13.3f", $finals{$proto}->{$t}->{$f};
} elsif ($f =~ m/Bytes/o) {
printf RESULTSTXT
"%13d", $finals{$proto}->{$t}->{$f};
} else {
printf RESULTSTXT
"%13s", $finals{$proto}->{$t}->{$f};
}
}
}
# do ops/sec
printf RESULTSTXT "\n\n%-15s ", $proto;
foreach $f (@timerFieldsAll) {
($f =~ m/^Time/o) && next;
printf RESULTSTXT "%9s/sec",
($fieldNames{$f}) ? $fieldNames{$f} : $f;
}
foreach $n (@{$protocolFields{$proto}}) {
my $t = $n; # dont modify original list
unless ($t =~ /^\[(\w+)\]$/) { # scalar case
#next; # skip scalars for now
# do scalar counter/sec. Column should line up with "Try"
printf RESULTSTXT "\n%-15s ",
$proto . ":" . (($timerNames{$t}) ? $timerNames{$t} : $t) . "/s";
printf RESULTSTXT
"%13.3f", $finals{$proto}->{$t} / $realTestSecs;
next;
} else {
$t = $1;
}
printf RESULTSTXT "\n%-15s ",
$proto . ":" . (($timerNames{$t}) ? $timerNames{$t} : $t) . "/s";
foreach $f (@timerFieldsAll) {
($f =~ m/^Time/o) && next;
if ($f =~ m/Bytes/o) {
printf RESULTSTXT
"%13d",
$finals{$proto}->{$t}->{$f} / $realTestSecs;
} else {
printf RESULTSTXT
"%13.3f",
$finals{$proto}->{$t}->{$f} / $realTestSecs;
}
}
}
printf RESULTSTXT "\n\n";
}
if ($params{SYSCONFIG}) {
print RESULTSTXT "\nSytem config details\n";
if (($params{SYSCONFIG} =~ m/^\S+$/o)
&& (open(SCFILE, "<$params{SYSCONFIG}"))) {
while (<SCFILE>) {
(m/^<\S+>\s*$/o) && next; # skip HTML only on them
s/<\S+>//g; # trim out obvious HTML commands
s/<!--.*-->//g; # trim out HTML comments
print RESULTSTXT $_;
}
close(SCFILE);
} else {
my $l = $params{SYSCONFIG}; # filter similar to above
$l =~ s/<\S+>//g; # trim out obvious HTML commands
$l =~ s/<!--.*-->//g; # trim out HTML comments
$l =~ s/\\\n/\n/g; # turn quoted newline to plain newline
print RESULTSTXT $l;
}
}
close(RESULTSTXT);
}
# Write the main part of the HTML page
sub genHTMLReportStart {
fileBackup ($resultshtml); # if processing as we go, backup old file
# Open an html file to hold the results
open(RESULTSHTML, ">$resultshtml") ||
die "Couldn't open $resultshtml: $!";
print RESULTSHTML <<END;
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 3.2//EN">
<HTML>
<A NAME=TitleSection>
<TITLE>
Mozilla MailStone Results $params{TSTAMP}
</TITLE>
</A>
<HEAD>
</HEAD>
<BODY TEXT="#000000" BGCOLOR="#FFFFFF" LINK="#0000FF" VLINK="#FF0000" ALINK="#000088">
<CENTER>
<HR NOSHADE WIDTH="100%">
<H1>Mozilla MailStone Results $params{TSTAMP}</H1>
<H2>$params{TITLE}</H2>
<I>$params{COMMENTS}</I>
<HR WIDTH="100%">
</CENTER>
END
printf RESULTSHTML "<BR><B>Test duration:</B> %d %s. ",
figureTimeNumber ($params{TIME}),
figureTimeUnits ($params{TIME}, "minutes");
printf RESULTSHTML "<B>Rampup:</B> %d %s. ",
figureTimeNumber ($params{RAMPTIME}),
figureTimeUnits ($params{RAMPTIME}, "seconds");
printf RESULTSHTML "<B>Reported duration:</B> %s seconds\n",
commify ($realTestSecs);
printf RESULTSHTML "<BR><B>Reporting clients:</B> %s of %s\n",
commify ($reportingClients), commify ($totalProcs);
print RESULTSHTML <<END;
<BR>
Test <A HREF="all.wld">complete workload</a> description.
Filtered <A HREF="work.wld">workload</a> description.
<BR>
Plain <A HREF="results.txt">text version</a> of results.
Log of <A HREF="stderr">stderr</a> and debugging output.
<BR>
<A NAME=MonitoringSection></A>
END
{ # list user requested logging
my @logfiles = <$resultdir/*-pre.log>;
if (@logfiles) {
foreach $f (@logfiles) {
$f =~ s/$resultdir\///o; # strip directory out
$f =~ s/-pre\.log$//o; # strip extension off
print RESULTSHTML "Pre test log: <A HREF=\"$f-pre.log\">$f</a><BR>\n";
}
}
@logfiles = <$resultdir/*-run.log>;
if (@logfiles) {
foreach $f (@logfiles) {
$f =~ s/$resultdir\///o; # strip directory out
$f =~ s/-run\.log$//o; # strip extension off
print RESULTSHTML "Monitoring log: <A HREF=\"$f-run.log\">$f</a><BR>\n";
}
}
@logfiles = <$resultdir/*-post.log>;
if (@logfiles) {
foreach $f (@logfiles) {
$f =~ s/$resultdir\///o; # strip directory out
$f =~ s/-post\.log$//o; # strip extension off
print RESULTSHTML "Post test log: <A HREF=\"$f-post.log\">$f</a><BR>\n";
}
}
}
#print RESULTSHTML
#"<CENTER><H2>Results per protocol</H2></CENTER>\n";
foreach $proto (@protocolsAll) {
printf RESULTSHTML "<A NAME=%sTable></A>\n", $proto;
printf RESULTSHTML
"<TABLE BORDER=2 CELLSPACING=2 CELLPADDING=2 COLS=%d WIDTH=\"95%%\">",
2+$#{@{$protocolFields{$proto}}};
print RESULTSHTML
"<CAPTION>$proto Counters</CAPTION>\n";
# do op counters
print RESULTSHTML
"<TR><TH>$proto</TH>\n";
foreach $f (@timerFieldsAll) {
#($f =~ m/^Time2$/o) && next;
printf RESULTSHTML "<TH>%s</TH> ",
($fieldNames{$f}) ? $fieldNames{$f} : $f;
}
print RESULTSHTML
"</TR>\n";
foreach $n (@{$protocolFields{$proto}}) {
my $t = $n; # dont modify original list
unless ($t =~ /^\[(\w+)\]$/) { # scalar case
next; # skip scalars for now
# do scalar counters. Column should line up with "Try"
printf RESULTSHTML "<TR ALIGN=RIGHT><TH>%s</TH>\n",
($timerNames{$t}) ? $timerNames{$t} : $t;
printf RESULTSHTML
"<TD>%s</TD> ",
commify ($finals{$proto}->{$t});
next;
} else {
$t = $1;
}
printf RESULTSHTML "<TR ALIGN=RIGHT><TH>%s</TH>\n",
($timerNames{$t}) ? $timerNames{$t} : $t;
foreach $f (@timerFieldsAll) {
#($f =~ m/^Time2$/o) && next;
if ($f =~ m/Time/o) {
printf RESULTSHTML
"<TD>%s</TD> ",
tformat ($finals{$proto}->{$t}->{$f});
} elsif ($f =~ m/Bytes/o) {
printf RESULTSHTML
"<TD>%s</TD> ",
kformat ($finals{$proto}->{$t}->{$f});
} else {
printf RESULTSHTML
"<TD>%s</TD> ",
commify ($finals{$proto}->{$t}->{$f});
}
}
print RESULTSHTML "</TR>\n";
}
# do ops/sec
print RESULTSHTML
"<TR><TH>$proto</TH>\n";
foreach $f (@timerFieldsAll) {
($f =~ m/^Time/o) && next;
printf RESULTSHTML "<TH>%s/sec</TH> ",
($fieldNames{$f}) ? $fieldNames{$f} : $f;
}
print RESULTSHTML
"</TR>\n";
foreach $n (@{$protocolFields{$proto}}) {
my $t = $n; # dont modify original list
unless ($t =~ /^\[(\w+)\]$/) { # scalar case
next; # skip scalars for now
# do scalar counters. Column should line up with "Try"
printf RESULTSHTML "<TR ALIGN=RIGHT><TH>%s</TH>\n",
($timerNames{$t}) ? $timerNames{$t} : $t;
printf RESULTSHTML
"<TD>%.3f</TD> ",
$finals{$proto}->{$t} / $realTestSecs;
next;
} else {
$t = $1;
}
printf RESULTSHTML "<TR ALIGN=RIGHT><TH>%s</TH>\n",
($timerNames{$t}) ? $timerNames{$t} : $t;
foreach $f (@timerFieldsAll) {
($f =~ m/^Time/o) && next;
if ($f =~ m/Bytes/o) {
printf RESULTSHTML
"<TD>%s</TD> ",
kformat ($finals{$proto}->{$t}->{$f} / $realTestSecs);
} else {
printf RESULTSHTML
"<TD>%.3f</TD> ",
$finals{$proto}->{$t}->{$f} / $realTestSecs;
}
}
print RESULTSHTML "</TR>\n";
}
printf RESULTSHTML "</TABLE> <BR>\n\n";
}
print RESULTSHTML <<END;
<BR>
<CENTER>
<A NAME=GraphSection></A>
END
}
%genplotGraphs = ();
# Call genplot; and, if a graph is generated, insert the HTML reference to it
sub genHTMLReportGraph {
my $name = shift;
my $title = shift;
my $label = shift;
my $protos = shift || die "genHTMLReportGraph: '$name' missing protocols";
my $field = shift;
my $vars = shift || die "genHTMLReportGraph: '$name' missing vars";
if ($genplotGraphs{$name}) {
print "Graph $name has already been generated.\n";
return;
}
$genplotGraphs{$name} = $title;
# Delineate and tag each graph
print RESULTSHTML "<A NAME=$name><HR SIZE=4 WIDTH=\"90%\"></A>\n";
if (genPlot ($name, $title, $label, $protos, $field, $vars) > 0) {
print RESULTSHTML <<END;
<P><H3>$title</H3>
<IMG SRC=$name.$params{IMAGETYPE} ALT="$label"></P>
END
} else {
print RESULTSHTML "<BR>Graph \"$name\" contained no data (@{$vars}).<BR>\n";
}
}
# Write the final parts of the HTML page
sub genHTMLReportEnd {
print RESULTSHTML <<END;
<!-- INSERT IMAGES HERE - DO NOT DELETE THIS LINE -->
</CENTER>
<A NAME=EndSection></A>
END
if ($params{SYSCONFIG}) {
print RESULTSHTML "<HR WIDTH=\"100%\">";
print RESULTSHTML "<CENTER><H2>Details</H2></CENTER>\n";
if (($params{SYSCONFIG} =~ m/^\S+$/o)
&& (open(SCFILE, "<$params{SYSCONFIG}"))) { # see if its a file
while (<SCFILE>) {
print RESULTSHTML $_;
}
close(SCFILE);
} else { # output text directly
my $l = $params{SYSCONFIG};
$l =~ s/\\\n/\n/g; # turn quoted newline to plain newline
print RESULTSHTML $l;
}
}
print RESULTSHTML <<END;
<HR NOSHADE WIDTH="100%">
</BODY>
</HTML>
END
close(RESULTSHTML);
}
# Actually generate the standard stuff
setupTotals();
genTextReport();
genHTMLReportStart();
my $graphCount = 0;
foreach $section (@workload) {
next unless ($section->{sectionTitle} =~ /GRAPH/i);
my $name = $section->{sectionParams};
$name =~ s/name=\s*//; # strip off initial bit
my @varlist = split (/[\s,]+/, $section->{VARIABLES});
$graphCount++;
genHTMLReportGraph ($name, $section->{TITLE}, $section->{LABEL},
($section->{FIELD} =~ /Time/o)
? \@protocols : \@protocolsAll,
$section->{FIELD}, \@varlist);
}
if ($graphCount <= 0) { # use built ins
# generate the graphs we want
# NOTE: the first argument (name), must be unique; sets file name
genHTMLReportGraph ("connects",
"Number of connections attempted", "Connections/sec",
\@protocolsAll, "Try", ["conn" ]);
genHTMLReportGraph ("connections",
"Total connections", "Connections",
\@protocolsAll, "", ["connections" ]);
genHTMLReportGraph ("errors",
"Number of connection errors", "Errors/sec",
\@protocolsAll, "Error", ["conn", "banner", "login", "logout" ]);
genHTMLReportGraph ("retrieves",
"Number of messages read", "Messages/sec",
\@protocolsAll, "Try", ["retrieve" ]);
genHTMLReportGraph ("submits",
"Number of messages written", "Messages/sec",
\@protocolsAll, "Try", ["submit" ]);
genHTMLReportGraph ("commands",
"Protocol commands", "Commands/sec",
\@protocolsAll, "Try", ["cmd" ]);
genHTMLReportGraph ("readBytes",
"Bytes read", "Bytes/sec",
\@protocolsAll, "BytesR", ["login", "banner", "cmd", "retrieve", "submit", "logout" ]);
genHTMLReportGraph ("writeBytes",
"Bytes written", "Bytes/sec",
\@protocolsAll, "BytesW", ["login", "banner", "cmd", "retrieve", "submit", "logout" ]);
genHTMLReportGraph ("msgTime",
"Message transfer time", "Seconds per message",
\@protocols, "Time", ["cmd", "submit", "retrieve" ]);
genHTMLReportGraph ("setupTime",
"Connection setup time", "Seconds per connection",
\@protocols, "Time", ["conn", "banner", "login" ]);
genHTMLReportGraph ("blocks",
"Number of mailstone blocks executed", "Blocks/sec",
\@protocolsAll, "", ["blocks" ]);
}
if ($params{ADDGRAPHS}) { # pick up additional graphs
my @graphs = ();
readWorkloadFile ($params{ADDGRAPHS}, \@graphs);
foreach $section (@graphs) {
next unless ($section->{sectionTitle} =~ /GRAPH/i);
my $name = $section->{sectionParams};
$name =~ s/name=\s*//; # strip off initial bit
my @varlist = split (/[\s,]+/, $section->{VARIABLES});
$graphCount++;
genHTMLReportGraph ($name, $section->{TITLE}, $section->{LABEL},
($section->{FIELD} =~ /Time/o)
? \@protocols : \@protocolsAll,
$section->{FIELD}, \@varlist);
}
}
genHTMLReportEnd();
return 1;

View File

@@ -1,205 +0,0 @@
#!/bin/ksh
# global configuration parameters.
# Fill in defaults for anything that is not already set
# Look for testname$test_form, first
export test_form=${test_form:-""}
# string appended to every description
export desc_conf=${desc_conf:-""}
# extra arguments common to all tests
export extra_args=${extra_args:-""}
# error limit to abort sequence
export error_limit=${error_limit:-100}
# set this to only show what it will do
export only_show_it=${only_show_it:-0}
# time to allow the server to calm down after each run
export sleep_time=${sleep_time:-5}
# This is where we store the important runs
export save_dir=${save_dir:-"results.save"}
# Basic sanity test
if [[ ! -x /usr/bin/perl || ! -f .license ]] ; then # see if setup was ever run
echo "Critical files are missing. Run setup."
exit 2;
fi
find_timestamp () { # find the timestamp string from latest run
#OLD timestamp=`ls -d results/[0-9]*.[0-9][0-9][0-9][0-9]?(a-z) | tail -1`
# list all directories with the timestamp pattern
timestamp=`echo results/[0-9]*.[0-9][0-9][0-9][0-9]?([a-z])`
# strip all but the last one
timestamp=${timestamp##* }
# strip the top directory name out
timestamp=${timestamp#results/}
# return it
echo $timestamp
return 0
}
# copy last mailstone run from the current directory to good results directory
save_run () {
[[ -d $save_dir ]] || \
mkdir $save_dir
[[ $only_show_it -gt 0 ]] && return 0 # dont do anything important
if [[ -n "$last_timestamp" && -d "results/$last_timestamp/" ]] ; then
cp -pR results/$last_timestamp $save_dir/
# index probably has lots of extra junk, but its better than nothing
cp -pf results/index.html $save_dir/
fi
}
# Display and run a command. Skip if in only_show mode.
run () {
if [[ $only_show_it -gt 0 ]] ; then
echo "Would run:" "$@"
return 0
fi
echo "Running: " "$@"
"$@"
}
# Sleep. Skip if in only_show mode.
run_sleep () {
if [[ $only_show_it -gt 0 ]] ; then
echo "Would sleep:" "$@"
return 0
fi
echo "Sleeping: " "$@"
sleep "$@"
}
# for readability, just use sleep
alias sleep=run_sleep
# This runs the actual mstone run and check for errors
# compress tmp files
# Usage: run_test testname description [args...]
run_test () {
testname="$1"; shift;
desc="$1"; shift;
# see if a special version of this test exists
if [[ -f conf/$testname$test_form.wld ]] ; then
testname=$testname$test_form
fi
#oldtimestamp=`find_timestamp`
if [[ $only_show_it -gt 0 ]] ; then
echo "Would run:" mstone $testname -b "$desc $desc_conf" $extra_args "$@"
if [[ ! -f conf/$testname.wld ]] ; then
echo "Configuration Error: No such test $testname"
fi
return 0
fi
echo "\n##########################################################"
if [[ ! -f conf/$testname.wld ]] ; then
echo "CONFIGURATION ERROR: No such test $testname"
exit 2
fi
echo "\nRunning:" mstone $testname -b "$desc $desc_conf" $extra_args "$@"
# We actually bypass the mstone script
/usr/bin/perl -Ibin -- bin/mailmaster.pl -w conf/$testname.wld -b "$desc $desc_conf" $extra_args "$@"
stat=$?
# BUG if another test is running at the same time, this is wrong
timestamp="`find_timestamp`"
# test failed to even run
if [[ $stat -ne 0 ]]
then
echo "ABORT! Test failed to start"
[[ -n "$mail_list" ]] && \
mail_series "DotCom Failed run: `date`" "$mail_list"
exit 2
fi
# compress tmp files. get the csv files, too.
gzip tmp/$timestamp/* results/$timestamp/*.csv
# stick the timestamp someplace global for a save_run
export last_timestamp=$timestamp
export all_timestamps="$all_timestamps $timestamp"
# save the results
save_run
# see how many errors we hit
totline=`grep 'Total:total ' results/$timestamp/results.txt`
# strip label and first field
errors=${totline##+([+-z])+( )+([+-9])+( )}
# strip trailing fields
errors=${errors%% *}
echo "" # space things out
if [[ $errors -gt $error_limit ]] ; then
echo "ABORT! Errors ($errors) exceed error limit ($error_limit)"
[[ -n "$mail_list" ]] && \
mail_series "DotCom Aborted run: `date`" "$mail_list"
exit 1
fi
echo "Run completed OK ($errors errors). Timestamp $timestamp"
sleep $sleep_time
return 0
}
# Usage: mail_series subject "address,address,..."
mail_series () {
subject=$1; shift
file=/tmp/series$$.tar
if [[ $only_show_it -gt 0 ]] ; then
echo "Would mail results about $subject" to "$@"
return 0
fi
echo "Mailing results about $subject" to "$@"
tar cf $file $save_dir/index.html
for f in $all_timestamps ; do
tar rf $file $save_dir/$f
done
gzip $file
echo "$all_timestamps" | uuenview -b -30000 -s "$subject" -m "$@" $file.gz
rm -f $file.gz
}
# parse command line arguments
while [[ -n "$1" ]]
do
case $1 in
# -n mode, do not execute, just show
-n) only_show_it=1; shift;;
# set test form
-f) shift; test_form=$1; shift;;
# set test extra description
-d) shift; desc_conf=$1; shift;;
# Rest are to be passed in exactly
--) shift; break;;
#default, pick up as an extra arg
*) extra_args="$extra_args $1"; shift;;
esac
done

View File

@@ -1,464 +0,0 @@
#!/usr/bin/env perl
# 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 the Netscape Mailstone utility,
# released March 17, 2000.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1999-2000 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Dan Christian <robodan@netscape.com>
# Marcel DePaolis <marcel@netcape.com>
# Jim Salter <jsalter@netscape.com>
#
# Alternatively, the contents of this file may be used under the
# terms of the GNU Public License (the "GPL"), in which case the
# provisions of the GPL are applicable instead of those above.
# If you wish to allow use of your version of this file only
# under the terms of the GPL and not to allow others to use your
# version of this file under the NPL, indicate your decision by
# deleting the provisions above and replace them with the notice
# and other provisions required by the GPL. If you do not delete
# the provisions above, a recipient may use your version of this
# file under either the NPL or the GPL.
#####################################################
# usage: setup.pl setup|cleanup|checktime|timesync -m machine_file
# message files are expected to be in ./data/ and end with ".msg"
print "Netscape Mailstone.\nCopyright (c) 1997-2000 Netscape Communications Corp.\n";
$mode = shift; # mode must be first
# this parses the command line for -m machinefile
# also sets many defaults
do 'args.pl'|| die $@;
sub warn_system;
sub die_system;
parseArgs(); # parse command line
setConfigDefaults(); # setup RSH and RCP
$cpcmd = "cp"; # copy files... dir
$rmcmd = "rm -f"; # remove files...
die "Must specify workload file" unless (@workload);
# Add or change client machines
sub configClients {
print "\n You can enter multiple machines like this: host1,host2\n";
my @d = <bin/*/bin>;
if (@d) {
my @d2;
foreach (@d2 = @d) { s/^bin\/// }
foreach (@d = @d2) { s/\/bin$// }
print " These OS versions are available:\n@d\n";
}
foreach $section (@workload) {
next unless ($section->{sectionTitle} =~ /CLIENT/i);
my $slist = $section->{sectionParams};
$slist =~ s/HOSTS=\s*//; # strip off initial bit
my $arch = "default OS";
$arch = $section->{ARCH} if ($section->{ARCH});
print "\nWhat is the name of the client(s) for $arch [$slist]: ";
my $ans = <STDIN>; chomp $ans;
if ($ans) {
$ans =~ s/\s//g; # strip any whitespace
fileReplaceText ($params{WORKLOAD}, "<CLIENT", $slist, $ans);
}
}
while (1) {
print "\nWhat additional client(s) [none]: ";
my $ans = <STDIN>; chomp $ans;
last unless ($ans); # done
last if ($ans =~ /^none$/i);
$ans =~ s/\s//g; # strip any whitespace
my $block = "\n<CLIENT HOSTS=$ans>\n";
print "What OS type [default]: ";
my $ans = <STDIN>; chomp $ans;
$block .= " Arch\t$ans\n" if ($ans && !($ans =~ /^default$/i));
$block .= "</CLIENT>\n";
fileInsertAfter ($params{WORKLOAD}, "^</CLIENT>", $block);
}
}
# Create a user ldif file
sub configUserLdif {
my $name = "conf/$defaultSection->{SERVER}.ldif";
print "\nWhat file to you want to create [$name]? ";
$ans = <STDIN>; chomp $ans;
$name = $ans if ($ans);
my $mode = "users";
print "\nDo you want to create a broadcast account [y]? ";
$ans = <STDIN>;
$mode .= " broadcast" unless ($ans =~ /^n/i);
my $basedn = $defaultSection->{SERVER}; # pick a default
$basedn =~ s/^.*?\.//; # strip off before first dot
$basedn = "o=$basedn";
print "\nWhat is LDAP base DN [$basedn]? ";
$ans = <STDIN>; chomp $ans;
$basedn = $ans if ($ans);
my $args = $params{MAKEUSERSARGS};
print "\n Common additional makeusers arguments:\n";
print "\t-s storeName -x storeCount \tMultiple store partitions\n";
print "\t[-3|-4] \tConfigure for NSMS 3.x or 4.x\n";
print "Any extra arguments to makeusers [$args]? ";
$ans = <STDIN>; chomp $ans;
$args = $ans if ($ans);
my $perlbin = "/usr/bin/perl";
$params{DEBUG} &&
print "$perlbin -Ibin -- bin/makeusers.pl $mode -w $params{WORKLOAD} -b '$basedn' -o $name $args\n";
print "\nGenerating $name (this can take a while)\n";
warn_system "$perlbin -Ibin -- bin/makeusers.pl $mode -w $params{WORKLOAD} -b '$basedn' -o $name $args";
print "LDIF generation complete. See $name\n";
print "\tSee the manual or INSTALL to create users using the LDIF file.\n";
}
# This uses a match pattern plus text to text replacements.
# Could make all changes and then write out new workload
# You would have to be carefull about sections with multi-line support.
sub configWorkload {
my $ans;
print "\nWhat is the name of the mail host [$defaultSection->{SERVER}]: ";
$ans = <STDIN>; chomp $ans;
if ($ans) {
fileReplaceText ($params{WORKLOAD},
"(SERVER|SMTPMAILFROM|ADDRESSFORMAT)",
$defaultSection->{SERVER}, $ans);
$defaultSection->{SERVER} = $ans; # needed for ldif generation
}
print "\nWhat is the user name pattern [$defaultSection->{LOGINFORMAT}]: ";
$ans = <STDIN>; chomp $ans;
if ($ans) {
fileReplaceText ($params{WORKLOAD},
"(LOGINFORMAT|ADDRESSFORMAT)",
$defaultSection->{LOGINFORMAT}, $ans);
$ans =~ s/%ld/0/; # create smtpMailFrom user
my $olduser = $defaultSection->{SMTPMAILFROM};
$olduser =~ s/@.*$//; # strip off after @
fileReplaceText ($params{WORKLOAD},
"SMTPMAILFROM",
$olduser, $ans);
}
print "\nWhat is the password pattern [$defaultSection->{PASSWDFORMAT}]: ";
$ans = <STDIN>; chomp $ans;
fileReplaceText ($params{WORKLOAD}, "PASSWDFORMAT",
$defaultSection->{PASSWDFORMAT}, $ans);
$defaultSection->{NUMLOGINS} = 100 unless ($defaultSection->{NUMLOGINS});
print "\nHow many users [$defaultSection->{NUMLOGINS}]: ";
$ans = <STDIN>; chomp $ans;
fileReplaceText ($params{WORKLOAD}, "(NUMADDRESSES|NUMLOGINS)",
$defaultSection->{NUMLOGINS}, $ans);
$defaultSection->{FIRSTLOGIN} = 0 unless ($defaultSection->{FIRSTLOGIN});
print "\nWhat is the first user number [$defaultSection->{FIRSTLOGIN}]: ";
$ans = <STDIN>; chomp $ans;
fileReplaceText ($params{WORKLOAD}, "(FIRSTADDRESS|FIRSTLOGIN)",
$defaultSection->{FIRSTLOGIN}, $ans);
unless ($params{NT}) {
configClients ();
}
print "\nDo you want to view the edited $params{WORKLOAD} [y]? ";
$ans = <STDIN>;
unless ($ans =~ /^n/i) {
print "Here is the edited $params{WORKLOAD}:\n\n";
fileShow ($params{WORKLOAD});
print "\n";
}
print "\nDo you want to generate a user LDIF file [y]? ";
$ans = <STDIN>;
unless ($ans =~ /^n/i) {
configUserLdif ();
}
}
# See if license file has been displayed
if (($mode ne "cleanup") && (! -f ".license" )) {
fileShow ("LICENSE");
# SEAN: blow off annoying agreement message.
# print "\nDo you agree to the terms of the license? (yes/no) ";
# my $ans = <STDIN>;
# print "\n";
# unless ($ans =~ /^yes$/i) {
# print "License not agreed to.\n";
# exit 0;
# }
my ($sec, $min, $hour, $mday, $mon, $year) = localtime;
open (LIC, ">.license");
printf LIC "%04d$mon$mday$hour$min\n", $year+1900;
close (LIC);
}
if ($mode eq "config") { # re-run config
configWorkload ();
print "\nMake any additional changes to $params{WORKLOAD} and then re-run 'setup'\n";
exit 0;
} elsif ($mode ne "cleanup") { # check if configured
my $unconf = 0; # see if default values are in use
foreach $section (@workload) {
($section->{SERVER})
&& ($section->{SERVER} =~ /example\.com$/)
&& $unconf++;
($section->{SMTPMAILFROM})
&& ($section->{SMTPMAILFROM} =~ /example\.com$/)
&& $unconf++;
($section->{ADDRESSFORMAT})
&& ($section->{ADDRESSFORMAT} =~ /example\.com$/)
&& $unconf++;
last if ($unconf > 0);
}
if ($unconf > 0) {
print "Server has not been configured (example.com is an invalid address).\n";
print "Do you want to setup a simple configuration now [y]?";
my $ans = <STDIN>;
if ($ans =~ /^n/i) {
print "Re-run setup when you have edited the configuration.\n";
exit 0;
}
configWorkload ();
print "\nMake any additional changes to $params{WORKLOAD} and then re-run 'setup'\n";
exit 0;
}
}
if ($mode eq "timesync") {
if ($params{NT}) {
print "Timesync has no effect on NT\n";
exit 0;
}
my ($sec, $min, $hour, $mday, $mon, $year) = localtime;
$mon += 1; # adjust from 0 based to std
$systime = sprintf ("%02d%02d%02d%02d%04d.%02d",
$mon, $mday, $hour, $min, 1900+$year, $sec);
} elsif ($mode eq "checktime") {
if ($params{NT}) { # if running on NT, then only single client
print "Checktime not needed on NT\n";
exit 0;
}
mkdir ("$resultbase", 0775);
mkdir ("$tmpbase", 0775);
foreach $section (@workload) {
next unless ($section->{sectionTitle} =~ /CLIENT/i);
my $slist = $section->{sectionParams};
$slist =~ s/HOSTS=\s*//; # strip off initial bit
foreach $cli (split /[\s,]/, $slist) {
open MAKEIT, ">$tmpbase/$cli.tim";
close MAKEIT;
}
}
} elsif (($mode eq "setup") || ($mode eq "cleanup")) {
@msgs = <data/*.msg>;
foreach (@files = @msgs) { s/data\/// }
print "Found these message files:\n@files\n\n";
if ($params{NT}) { # handle NT localhost here
exit 0 if ($mode =~ /cleanup$/);
my $clipath = "bin/WINNT4.0/bin/mailclient.exe";
print "Copying $clipath and message files to $cli\n";
die_system "copy $clipath $params{TEMPDIR}";
foreach $f (@files) {
die_system "copy $f $params{TEMPDIR}";
}
exit 0; # without perl:fork, no more to do
}
}
# iterate over every client in the testbed, complete the cmd and rsh
foreach $section (@workload) {
next unless ($section->{sectionTitle} =~ /CLIENT/i);
my $slist = $section->{sectionParams};
$slist =~ s/HOSTS=\s*//; # strip off initial bit
foreach $cli (split /[\s,]/, $slist) {
my $rsh = ($section->{RSH}) ? $section->{RSH} : $params{RSH};
my $rcp = ($section->{RCP}) ? $section->{RCP} : $params{RCP};
my $tempdir;
if ($section->{TEMPDIR}) {
$tempdir = $section->{TEMPDIR};
} elsif ($params{TEMPDIR}) {
$tempdir = $params{TEMPDIR};
}
my $cliarch = $section->{ARCH};
# presumed architecture for bin/mailclient on localhost:
my $local_arch = `bin/nsarch`;
chomp $local_arch;
# Try to determine arch if it hasn't been explicitly set.
if (!$cliarch) {
if ($cli =~ /localhost/) {
$cliarch = `bin/nsarch`;
chomp $cliarch;
} else {
$cliarch = `$rsh $cli sh < bin/nsarch`;
chomp $cliarch;
}
}
# most time critical first
if ($mode eq "timesync") {
next if ($cli =~ /^localhost$/i); # dont reset our own time
# run all these in parallel to minimize skew
next if ($cliarch eq "NT4.0");
forkproc ($rsh, $cli, "date $systime");
}
elsif ($mode eq "checktime") {
# run all these in parallel to minimize skew
forkproc ($rsh, $cli, ($cliarch eq "NT4.0")
? "time" : "date",
"/dev/null", "$tmpbase/$cli.tim");
}
elsif ($mode eq "setup") {
my ($clibin) = split /\s/, (($section->{COMMAND})
? $section->{COMMAND}
: $params{CLIENTCOMMAND});
my $clipath = ''; # do nothing by default
# Look for architecture-specific binary.
if ($cliarch) {
# fallback to just os-name if we can't find an exact match.
my $approx = $cliarch;
$approx =~ s/^(\D+).*/$1/;
my $approx_bin = <"bin/${approx}*/bin/$clibin">;
if (-x "bin/$cliarch/bin/$clibin") {
# exact match.
$clipath = "bin/$cliarch/bin/$clibin";
} elsif (-x $approx_bin) {
# approximate match
$clipath = $approx_bin;
} elsif ($local_arch =~ /^$approx/) {
# same arch as localhost
$clipath = "bin/mailclient";
} else {
print STDERR
"Requested OS $cliarch for $cli not found. ",
"Not copying binary.\n";
}
} else {
# arch not found
print STDERR "Cannot determine architecture for $cli. ",
"Not copying binary.\n";
}
# See if we have anything to copy:
if ("$clipath @files" !~ /\S/) {
print STDERR "Nothing to copy to $cli. Skipping.\n";
next;
}
my $rdir = ($tempdir) ? "$tempdir/" : ".";
# chmod so that the remote files can be easily cleaned up
my $rcmd = "chmod g+w @files $clibin; uname -a";
$rcmd = "cd $tempdir; " . $rcmd if ($tempdir);
$rdir =~ s!/!\\!g if ($cliarch eq "NT4.0");
if ($cli =~ /^localhost$/i) {
die "TEMPDIR must be set for 'localhost'\n"
unless ($tempdir);
die "Invalid local NT copy. Should never get here.\n"
if ($cliarch eq "NT4.0"); # should never happen
print "Copying $clipath and message files to $rdir\n";
die_system ("$cpcmd @msgs $clipath $rdir");
die_system ($rcmd);
} else {
print "$rcp $clipath @msgs $cli:$rdir\n" if ($params{DEBUG});
print "Copying $clipath and message files to $cli:$rdir\n";
warn_system (split (/\s+/, $rcp), $clipath, @msgs, "$cli:$rdir");
next if ($cliarch eq "NT4.0"); # chmod not valid
print "rcmd='$rcmd'\n" if ($params{DEBUG});
die_system (split (/\s+/, $rsh), $cli, $rcmd);
}
print "\n";
}
elsif ($mode eq "cleanup") {
if ($params{DEBUG}) { # get debug files
print "Cleaning up debug files on $cli\n";
my $rcmd = ($cliarch eq "NT4.0") ? "DEL" : "$rmcmd";
$rmcmd .= " mstone-debug.[0-9]*";
$rcmd = "cd $tempdir; " . $rcmd if ($tempdir);
$rcmd =~ s/;/&&/g if ($cliarch eq "NT4.0");
if ($cli =~ /^localhost$/i) {
die "TEMPDIR must be set for 'localhost'\n"
unless ($tempdir);
warn_system ($rcmd);
} else {
warn_system (split (/\s+/, $rsh), $cli, $rcmd);
}
} else {
print "Cleaning $cli\n";
my $rcmd = ($cliarch eq "NT4.0") ? "DEL" : "$rmcmd";
$rcmd .= " $clibin @files";
$rcmd = "cd $tempdir; " . $rcmd if ($tempdir);
$rcmd =~ s/;/&&/g if ($cliarch eq "NT4.0");
if ($cli =~ /^localhost$/i) {
die "TEMPDIR must be set for 'localhost'\n"
unless ($tempdir);
warn_system ($rcmd);
} else {
warn_system (split (/\s+/, $rsh), $cli, $rcmd);
}
}
}
else {
die "Couldn't recognize mode $mode!\n";
}
}
}
# wait for children to finish
if (($mode eq "timesync") || ($mode eq "checktime")) {
$pid = wait();
while ($pid != -1) {
$pid = wait();
}
}
# Print the results of the time checks
if ($mode eq "checktime") {
print "Time from each client:\n";
foreach $section (@workload) {
next unless ($section->{sectionTitle} =~ /CLIENT/i);
my $slist = $section->{sectionParams};
$slist =~ s/HOSTS=\s*//; # strip off initial bit
foreach $cli (split /[\s,]/, $slist) {
open TIMEFILE, "$tmpbase/$cli.tim"
|| warn "Counldn't open $tmpbase/$cli.tim\n";
printf "%32s: ", $cli;
while (<TIMEFILE>) { print; last;} # single line (2 on NT)
close(TIMEFILE);
unlink "$tmpbase/$cli.tim";
}
}
}

View File

@@ -1,280 +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 the Netscape Mailstone utility,
* released March 17, 2000.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1999-2000 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s): Sean O'Rourke <sean@sendmail.com>
* Thom O'Connor <thom@sendmail.com>
* Sendmail, Inc.
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License Version 2 or later (the "GPL"), in
* which case the provisions of the GPL are applicable instead of
* those above. If you wish to allow use of your version of this file
* only under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice and
* other provisions required by the GPL. If you do not delete the
* provisions above, a recipient may use your version of this file
* under either the NPL or the GPL.
*/
use Thread qw(async);
use FileHandle qw(_IOLBF);
use Socket;
use strict;
use Getopt::Long;
# options
my $maxconn = SOMAXCONN;
my $t_banner = 0;
my $t_from = 0;
my $t_rcpt = 0;
my $t_dot = 0;
my $port = 25;
my $cs = '';
my $log = '';
my $proto = getprotobyname('tcp');
# statistics
my ($cmds, $errs, $bytesw, $bytesr, $msgs);
GetOptions('maxconn:i' => \$maxconn,
'banner-delay:i' => \$t_banner,
'from-delay:i' => \$t_from,
'rcpt-delay:i' => \$t_rcpt,
'dot-delay:i' => \$t_dot,
'log:s' => \$log,
'checksums:s' => sub { use Digest::MD5; $cs = $_[0]; })
|| &usage;
if (@ARGV == 1) {
($port) = @ARGV;
}
if ($log) {
if (open(LOG, ">$log")) {
print STDERR "Logging messages to $log\n";
} else {
warn ("Cannot open logfile $log\n");
$log = '';
}
}
socket(S, PF_INET, SOCK_STREAM, $proto) || die $!;
setsockopt(S, SOL_SOCKET, SO_REUSEADDR, pack("l", 1)) || die $!;
(bind(S, sockaddr_in($port, INADDR_ANY))
&& listen(S, $maxconn))
|| die $!;
my $addr;
my $fh = new FileHandle;
my $cnt = 0;
$SIG{INT} = sub { close(LOG); print STDERR "done\n"; exit 0; };
while(my $addr = accept($fh, S)) {
if (++$cnt % 100 == 0) {
print STDERR "$cnt\r";
}
my $thr = async { do_smtp($addr, $fh); };
$thr->join;
$fh = new FileHandle;
}
sub usage
{
print STDERR <<EOS;
Usage: $0 [options] [port]
EOS
exit -1;
}
sub netline
{
my $fh = shift;
my $line = $fh->getline;
$line =~ s/\r\n$// if $line;
$line;
}
sub millisleep
{
my $t = shift;
select(undef, undef, undef, $t) if $t > 0;
}
sub netprint($@)
{
my ($fh, @stuff) = @_;
foreach (@_) {
s/([^\r])\n/$1\r\n/g;
$fh->print($_);
}
}
sub do_smtp
{
my ($addr, $s) = @_;
my $buf;
my ($port, $iaddr) = sockaddr_in($addr);
my $name = gethostbyaddr($iaddr, AF_INET);
$s->setvbuf($buf, _IOLBF, 1024);
millisleep($t_banner);
$s->print("220 wazzup, bro?\r\n");
my %state = ('conn' => $s,
'host' => $name);
my %funcs = ('helo' => \&do_helo,
'ehlo' => \&do_helo,
'word' => \&do_helo,
'quit' => \&do_quit,
'latr' => \&do_quit,
'mail' => \&do_from,
'rcpt' => \&do_rcpt,
'data' => \&do_data,
'rset' => \&do_ok,
'vrfy' => \&do_ok,
'noop' => \&do_ok,
);
while (my $line = netline($s))
{
my ($cmd, $arg) = ($line =~ /^\s*(\S+)\s*(.*)$/);
die "cmd = `$cmd'" unless ($cmd = lc($cmd));
# fail 1% of commands
if ($funcs{$cmd}) {
&{$funcs{$cmd}}(\%state, $cmd, $arg, \%funcs);
} else {
$s->print("500 5.0.0 no. Just... no.\r\n");
}
}
return 0;
}
sub already_said_that
{
my ($state, $cmd, $arg) = @_;
$state->{conn}->print("503 5.0.0 Dude, you already said that.\r\n");
}
sub do_helo
{
my ($state, $cmd, $arg) = @_;
$state->{helohost} = $arg;
die unless $cmd;
if ($cmd eq 'helo') {
if ($arg eq $state->{host}) {
$state->{conn}->print("221 hello Mr. Honest\r\n");
} else {
$state->{conn}->print("221 We know where you live, $state->{iaddr}\r\n");
}
} elsif ($cmd eq 'ehlo') {
my $esmtp = <<EOS;
250-localhost is pleased to make your acquaintance, and offers:
250 8bitmime
EOS
if ($arg) {
netprint($state->{conn}, $esmtp);
} else {
$state->{conn}->print("501 5.0.0 tell me more...\r\n");
return;
}
} else {
$state->{conn}->print("221 2.0.0 peace brother\r\n");
}
}
sub do_quit
{
my ($state, $cmd) = @_;
$state->{conn}->print( "221 2.0.0 drop in any time\r\n");
close ($state->{conn});
}
sub do_from
{
my ($state, $cmd, $args, $funcs) = @_;
millisleep($t_from);
$state->{conn}->print( "250 2.1.0 Okay, keep talking\r\n");
$funcs->{rcpt} = \&do_rcpt;
}
sub do_rcpt
{
my ($state, $cmd, $args, $funcs) = @_;
my ($rcpt) = ($args =~ /to\:\s*(.+)/i);
millisleep($t_rcpt);
$state->{conn}->print("250 2.1.5 ${rcpt}'s cool\r\n");
$funcs->{data} = \&do_data;
}
sub do_data
{
my ($state, $cmd, $args, $funcs) = @_;
$state->{conn}->print( "354 up to the dot...\r\n");
if ($cs) {
my $line;
my $md5 = Digest::MD5->new;
# skip headers
header: while ($_ = netline($state->{conn})) {
last header if /^$/;
last body if /^\.$/;
}
body: while ($_ = $state->{conn}->getline) {
if (/^=CS=MD5=(.+)\r/) {
my $sum = $1;
my $end = netline($state->{conn});
if ($end ne '.') {
print STDERR "Fake checksum?: $sum\n";
while (netline($state->{conn}) ne '.') { }
} elsif (lc($sum) eq lc($md5->hexdigest)) {
# print STDERR "MD5 sum OK.\n";
} else {
print STDERR "MD5 sum mismatch: $sum, ",
$md5->hexdigest, "\n";
}
last body;
} elsif (/^\.\r$/) {
print STDERR "no checksum\n" if $cs =~ /^r/;
last body;
}
print LOG $_ if $log;
$md5->add($_);
}
print LOG ".\r\n" if $log;
} else {
local ($/) = "\r\n.\r\n";
$state->{conn}->getline;
}
millisleep($t_dot);
if (rand() % 100 == 0) {
$state->{conn}->print("451 ohshit\r\n");
} else {
$state->{conn}->print("250 2.0.0 I will deliver\r\n");
}
}
sub do_ok
{
my ($state) = @_;
$state->{conn}->print("220 uhhuh\r\n");
}

View File

@@ -1,825 +0,0 @@
# util.pl -- utilities which used to live in bin/args.pl
sub my_system {
my ($file, $line);
$file = shift;
$line = shift;
my $ret;
if (($ret = system(@_)) != 0) {
my $msg = "$file:$line: @_\n\t";
my ($excode, $sig, $cored) = ($ret >> 8, $ret & 127, $ret & 128);
if ($sig) {
$msg .= "died with signal $sig";
$msg .= ' (core dumped)' if ($cored);
$msg .= "\n";
} else {
$msg .= "exited abnormally with code $excode\n";
}
return $msg;
}
undef;
}
sub warn_system {
my ($pack, $file, $line) = caller;
my $msg = my_system($file, $line, @_);
warn $msg if $msg;
}
sub die_system {
my ($pack, $file, $line) = caller;
my $msg = my_system($file, $line, @_);
die $msg if $msg;
}
# Utility functions
# Create a unique hash array. Programming Perl, 2nd edition, p291 (p217?)
package ArrayInstance;
sub new {
my $type = shift;
my %params = @_;
my $self = {};
return bless $self, $type;
}
package main;
# run a command in the background, return its PID
# Uses fork: will not run on NT in perl 5.004
# if the server is "localhost", ignore the rcmd part
# if stdin, stdout, and/or stderr is set, redirect those for the sub process
sub forkproc {
my $rcmd = shift;
my $server = shift;
my $command = shift;
my $stdin = shift;
my $stdout = shift;
my $stderr = shift;
if (my $pid = fork()) {
return $pid; # parent
}
# rest of this is in the child
if ($stdin) { # redirect stdin if needed
close (STDIN);
open STDIN, "<$stdin"
|| die "Couldn't open $stdin for input\n";
}
if ($stdout) { # redirect stdout if needed
close (STDOUT);
open STDOUT, ">>$stdout"
|| die "Couldn't open $stdout for output\n";
}
if ($stderr) { # redirect stderr if needed
close (STDERR);
open STDERR, ">>$stderr"
|| die "Couldn't open $stderr for output\n";
}
if ($server =~ /^localhost$/i) {
exec $command;
die "Coundn't exec $command:$!\n";
} else {
exec split (/\s+/, $rcmd), $server, $command;
die "Coundn't exec $rcmd $server $command:$!\n";
}
}
# Relocate file to tmp directory (if it is in the results directory),
# and put a ~ on the end of it.
# ASSUMES tmp and results are on the same partition (on NT, same drive).
# Usage: fileBackup (filename)
sub fileBackup {
my $filename = shift;
my $bfile = $filename;
(-f $filename) || return 0; # file doent exist
$bfile =~ s/$resultbase/$tmpbase/; # move to tmp
$bfile .= "~"; # indicate that this is a backup
(-f $bfile) && unlink ($bfile);
#print "Backing up $filename to $bfile\n"; # DEBUG
rename ($filename, $bfile) || unlink ($filename);
}
# Insert text into a file after a tagline
# fileInsertAfter (filename, tagstring, newtext)
sub fileInsertAfter {
my $filename = shift || die "fileInsertAfter: missing filename";
my $tagline = shift || die "fileInsertAfter: missing tagline";
my $newtext = shift || die "fileInsertAfter: missing text";
my $foundit = 0;
open(OLD, "<$filename") ||
open(OLD, "gunzip -c $filename |") ||
die "fileInsertAfter: Could not open input $filename: $!";
open(NEW, ">$filename+") ||
die "fileInsertAfter: Could not open output $filename+: $!";
while (<OLD>) {
print NEW $_; # copy (including tagline)
next unless (/$tagline/); # matched tagline
print NEW $newtext; # insert new text
$foundit++;
last; # only change first occurance
}
if ($foundit) { # copy rest of file
while (<OLD>) {
print NEW $_;
}
}
close (OLD);
close (NEW);
if ($foundit) {
fileBackup ($filename);
rename ("$filename+", "$filename");
#print "Updated $filename\n"; # DEBUG
return $foundit;
} else {
($params{DEBUG}) && print "No change to $filename\n"; # DEBUG
unlink ("$filename+");
return 0;
}
}
# Do text for text replacements in a file.
# Perl wildcards are automatically quoted.
# fileReplace (filename, matchPat, oldtext, newtext)
sub fileReplaceText {
my $filename = shift || die "fileReplaceText: missing filename";
my $tagline = shift || die "fileReplaceText: missing tagline ($filename)";
my $oldtext = shift;
my $newtext = shift;
my $foundit = 0;
return if ($newtext eq ""); # nothing to do
return if ($oldtext eq ""); # nothing can be done
open(OLD, "<$filename") ||
open(OLD, "gunzip -c $filename |") ||
die "fileReplaceText: Could not open input $filename: $!";
open(NEW, ">$filename+") ||
die "fileReplaceText: Could not open output $filename+: $!";
$oldtext =~ s/([][{}*+?^.\/])/\\$1/g; # quote regex syntax
while (<OLD>) {
if (/$tagline/i) { # matched tagline
$foundit++;
s/$oldtext/$newtext/; # do the replace
}
print NEW $_;
}
close (OLD);
close (NEW);
if ($foundit) {
fileBackup ($filename);
rename ("$filename+", "$filename");
#print "Updated $filename\n"; # DEBUG
return $foundit;
} else {
($params{DEBUG}) && print "No change to $filename\n"; # DEBUG
unlink ("$filename+");
return 0;
}
}
# copy a file to a new name. Handles possible compression. OS independent.
# fileCopy (filename, newname)
sub fileCopy {
my $filename = shift || die "fileReplaceText: missing filename";
my $newname = shift || die "fileReplaceText: missing newname ($filename)";
open(OLD, "<$filename") ||
open(OLD, "gunzip -c $filename |") ||
die "fileReplaceText: Could not open input $filename: $!";
open(NEW, ">$newname") ||
die "fileReplaceText: Could not open output $newname: $!";
while (<OLD>) { # copy it
print NEW $_;
}
close (OLD);
close (NEW);
return 0;
}
# display a file to STDOUT. Handles possible compression
sub fileShow {
my $filename = shift || die "fileShow: missing filename";
open(SHOWIT, "<$filename") ||
open(SHOWIT, "gunzip -c $filename.gz |") ||
die "fileShow: Couldn't open $filename: $!";
while (<SHOWIT>) { print; }
close(SHOWIT);
}
# sub function to figure time extents
# (start, end) = dataMinMax counterName \@protocols oldstarttime oldendtime
# Use 0 for uninitialized start or end
sub dataMinMax {
my $name = shift;
my $protos = shift;
my $start = shift;
my $end = shift;
# make global
# create the plot script and data files
# Figure out the encompassing time extent
foreach $p (@$protos) { # create the plot data files
my @times = sort numeric keys %{ $graphs{$p}->{$name}};
if ($#times <= 0) {
next;
}
if (($start == 0) || ($times[0] < $start)) {
$start = $times[0];
}
if (($end == 0) || ($times[0] > $end)) {
$end = $times[$#times];
}
}
#printf ("Data $name start=$start end=$end (%d points)...\n",
# $end - $start);
return ($start, $end);
}
# simple function to formatted a number into n, n K, n M, or n G
sub kformat {
my $n = shift;
my $r = "";
if ($n > (1024*1024*1024)) {
$r = sprintf "%.2fG", $n / (1024*1024*1024);
} elsif ($n > (1024*1024)) {
$r = sprintf "%.2fM", $n / (1024*1024);
} elsif ($n > 1024) {
$r = sprintf "%.2fK", $n / 1024;
} else {
$r = sprintf "%d ", $n;
}
return $r;
}
# simple function to formatted a time into Ns, Nms, or Nus
# the goal is to make a table of timss uncluttered and easy to read
# I dont convert to minutes or hours because the non-1000x multipliers
# are hard to back solve in your head for comparisons
sub tformat {
my $n = shift;
my $r = "";
if ($n == 0.0) {
$r = "0.0"; # make exactly 0 explicit
} elsif ($n < 0.001) {
$r = sprintf "%.2fus", $n * 1000 * 1000;
} elsif ($n < 1.0) {
$r = sprintf "%.2fms", $n * 1000;
} elsif ($n >= 1000.0) {
$r = sprintf "%.0fs", $n;
} elsif ($n >= 100.0) {
$r = sprintf "%.1fs", $n;
} else {
$r = sprintf "%.3fs", $n;
}
return $r;
}
#Usage: commify (1234567) returns 1,234,567
sub commify { # perl cookbook p64-65
my $text = reverse $_[0];
$text =~ s/(\d\d\d)(?=\d)(?!\d*\.)/$1,/g;
return scalar reverse $text;
}
# subroutine to enable numeric sorts. Programming Perl p218
# Use: sort numeric ...
sub numeric { $a <=> $b; }
# on NT, turn slash to backslash, then print. Else print.
sub pathprint {
my $str = shift;
$str =~ s!/!\\!g if ($params{NT}); # turn slash to back slash
print $str;
}
# figureTimeNumber number
# Given an number like: 60m, 1h, 100s, 4d, 200
# Return 60, 1, 100, 4, 200
sub figureTimeNumber {
my $arg = shift;
($arg =~ /([0-9]+)(s|sec|second|seconds|m|min|minute|minutes|h|hr|hour|hours|d|day|days)$/i)
&& return $1;
return $arg; # return default
}
# figureTimeUnits number, default
# Given an number like: 60m, 1h, 100s, 4d
# Return a string of minutes, hours, seconds, days
# Else return the second argument
sub figureTimeUnits {
my $arg = shift;
($arg =~ /(s|sec|second|seconds)$/i) && return "seconds";
($arg =~ /(m|min|minute|minutes)$/i) && return "minutes";
($arg =~ /(h|hr|hour|hours)$/i) && return "hours";
($arg =~ /(d|day|days)$/i) && return "days";
return shift; # return default
}
# figureTimeSeconds number, defaultUnits
# Given an number like: 60m, 2h, 100s, 4d
# Return 60*60, 2*60*60, 100, 4*24*60*60
sub figureTimeSeconds {
my $arg = shift;
($arg =~ /([0-9]+)(s|sec|second|seconds)$/i) && return $1;
($arg =~ /([0-9]+)(m|min|minute|minutes)$/i) && return (60*$1);
($arg =~ /([0-9]+)(h|hr|hour|hours)$/i) && return (60*60*$1);
($arg =~ /([0-9]+)(d|day|days)$/i) && return (24*60*60*$1);
if ($_) {
my $def = shift;
return $arg * figureTimeSeconds ("1$def"); # return scaled by default
} else {
return $arg; # return it
}
}
# BACK COMPATIBILITY (everything now in the workload file)
# read the testbed conf file, convert to workload sections
# machine, how many processes, how many threads/proc, arch
# only the first 2 fields are required. Lines starting with # are ignored.
# You can include other files using <include conf/filename.tbd>
# exampe:
# client1 5 10 SunOS5.5.1
sub readTestbedFile {
my $filename = shift;
foreach $section (@workload) {
next unless ($section->{sectionTitle} =~ /CLIENT/i);
print "Testbed $filename skipped, clients read in workload\n";
return 1; # clients already read in workload
}
my $level = 0;
if ($_) {
$level = 1 + shift;
die "Too many nested includes ($level) in $filename!"
unless ($level < 100);
}
my $handle = "$filename$level";
open($handle, "<$filename") ||
open($handle, "gunzip -c $filename.gz |") ||
die "Couldn't open testbed $filename: $!";
while(<$handle>) {
chomp;
s/#.*//; # strip any comments from line
m/^\s*$/o && next; # continue if blank line
# handle include statement
if (m/^<(include|INCLUDE)\s+([^\s]+)\s*>/o) {
#print "Including $2 from $filename\n";
readTestbedFile ($2, $level) || die;
next;
}
# get the server name and number of processes
my @line = split(/\s+/);
# create CLIENT entry in workload
my $sparm = ArrayInstance->new();
if ($line[1]) {
$sparm->{"sectionTitle"} = "CLIENT";
$sparm->{"sectionParams"} = "HOSTS=$line[0]";
$sparm->{"PROCESSES"} = $line[1];
$sparm->{"THREADS"} = $line[2] if ($line[2]);
$sparm->{"ARCH"} = $line[3] if ($line[3]);
} else {
$sparm->{"sectionTitle"} = "MONITOR";
$sparm->{"sectionParams"} = "HOSTS=$line[0]";
$sparm->{"COMMAND"} = $line[2];
}
($params{DEBUG})
&& print "<$sparm->{sectionTitle} $sparm->{sectionParams}>\n";
push @workload, $sparm;
}
close ($handle);
}
# BACK COMPATIBILITY (everything now in the saved workload file)
# This is now only needed to process mailstone4.1 runs
sub readConfigFile {
my $filename = shift;
open(CONFIG, "<$filename") ||
open(CONFIG, "gunzip -c $filename.gz |") ||
die "Couldn't open config file $filename: $!";
while(<CONFIG>) {
chomp;
s/#.*//; # strip any comments from line
m/^\s*$/o && next; # continue if blank line
# get the property and value
my @line = split(/=/);
$params{$line[0]} = $line[1];
}
close CONFIG;
}
# read the workload file and store it as a list of hashes
# Each hash always has the fields: sectionTitle and sectionParams
# usage: readWorkloadFile filename, \@list
sub readWorkloadFile {
my $filename = shift || die "readWorkloadFile: Missing file name";
my $plist = shift || die "readWorkloadFile: Missing return list";
my $level = 0; # file inclusion level
my @handles;
my $fh = "$filename$level";
($params{DEBUG}) && print "Reading workload from $filename.\n";
open($fh, "<$filename") ||
open($fh, "gunzip -c $filename.gz |") ||
die "readWorkloadFile Couldn't open testbed $filename: $!";
$includedFiles{$filename} = 1; # mark file as included
my $sparm=0;
my $conline = "";
while($fh) {
while(<$fh>) {
s/#.*//; # strip any comments from line (quoting?)
s/\s*$//; # strip trailing white space
if ($conline) { # utilize line continue
$_ = $conline . "\\\n" . $_;
$conline = "";
}
if (m/\\$/o) { # check for quoted line continue
s/\\$//; #
$conline = $_;
next;
}
s/^\s*//; # strip initial white space
m/^$/o && next; # continue if blank line
# handle include and includeOnce statements
if ((m/^<(include)\s+(\S+)\s*>/i)
|| (m/^<(includeonce)\s+(\S+)\s*>/i)) {
my $incfile = $2;
if (($1 =~ m/^includeonce/i) && ($includedFiles{$incfile})) {
($params{DEBUG})
&& print "readWorkloadFile:includeOnce $incfile already read.\n";
next;
}
($params{DEBUG})
&& print "readWorkloadFile include $incfile from $filename.\n";
$includedFiles{$incfile} = 1; # mark file
push @handles, $fh; # push current handle on to stack
if ($level++ > 99) { # check recursion and make handles unique
die "readWorkloadFile: include level too deep: $filename $level\n";
}
$fh = "$incfile$level";
open($fh, "<$incfile") ||
open($fh, "gunzip -c $incfile.gz |") ||
die "readWorkloadFile Couldn't open testbed file $incfile: $!";
$filename = $incfile; # for error messages
next;
}
if (m!^</(\w+)>$!o) { # end of section
my $end = $1;
unless ($sparm->{"sectionTitle"} =~ /$end/i) {
die "readWorkloadFile Mismatched section $filename: $. '$sparm->{sectionTitle}' '$end'\n";
return 0;
}
($params{DEBUG}) && print "</$sparm->{sectionTitle}>\n";
push @$plist, $sparm;
$sparm = 0;
next;
}
if (m!^<(\w+)\s*(.*)>$!o) { # start of section
my $sec = $1;
my $more = $2;
if ($sparm) {
die "readWorkloadFile Missing section end $filename: $. '$sparm->{sectionTitle}'\n";
}
if ($sec =~ /CONFIG/i) { # special case, map to existing global
$sparm = \%params;
} elsif ($sec =~ /DEFAULT/i) { # special case, only one DEFAULT
if ($defaultSection) { # use existing defaultSection
$sparm = $defaultSection;
} else { # create a new one
$sparm = ArrayInstance->new();
$sparm->{"sectionTitle"} = uc $sec; # ignore case
$sparm->{"lineList"} = ();
$defaultSection = $sparm;
}
} else {
$sparm = ArrayInstance->new();
$sparm->{"sectionTitle"} = uc $sec; # ignore case
$sparm->{"lineList"} = ();
}
$sparm->{"sectionParams"} = $more; # take newest more info
($params{DEBUG})
&& print "<$sparm->{sectionTitle} $sparm->{sectionParams}>\n";
next;
}
# must be in a section, get parameters
unless ($sparm) {
die "readWorkloadFile Entry encountered outside a section $filename: $. $_\n";
return 0;
}
my ($nm, $val) = split (/[\s=]+/, $_, 2);
$nm = uc $nm; # ignore case
($params{DEBUG}) && print " $nm = $val\n";
if ($nm =~ /ACCOUNTFORMAT/) { # BACK COMPATIBILITY
print "WARNING: 'accountFormat' is obsolete. Use 'addressFormat' and 'loginFormat'\n";
$sparm->{"addressFormat"} = $val;
push @{$sparm->{"lineList"}}, "addressFormat $val";
$val =~ s/@.+$//; # strip at and everything after
$sparm->{"loginFormat"} = $val;
push @{$sparm->{"lineList"}}, "loginFormat $val";
next;
} elsif ($nm =~ /NUMACCOUNTS/) { # BACK COMPATIBILITY
print "WARNING: 'numAccounts' is obsolete. Use 'numAddresses' and 'numLogins'\n";
$sparm->{"numAddresses"} = $val;
push @{$sparm->{"lineList"}}, "numAddresses $val";
$sparm->{"numLogins"} = $val;
push @{$sparm->{"lineList"}}, "numLogins $val";
next;
} elsif ($nm =~ /BEGINACCOUNTS/) { # BACK COMPATIBILITY
print "WARNING: 'beginAccounts' is obsolete. Use 'firstAddress' and 'firstLogin'\n";
$sparm->{"firstAddress"} = $val;
push @{$sparm->{"lineList"}}, "firstAddress $val";
$sparm->{"firstLogin"} = $val;
push @{$sparm->{"lineList"}}, "firstLogin $val";
next;
}
push @{$sparm->{"lineList"}}, $_; # save lines in original order
$sparm->{$nm} = $val;
next;
}
close ($fh);
$fh = pop @handles || last; # empty include stack
$filename = $fh;
$sparm = 0; # can only include whole sections
}
return 1; # success
}
# Write out a workload list to a file
# Optionally, pass in a list of sectionTitle's it should ignore
# usage: writeWorkloadFile filename \@list [\@skipList]
sub writeWorkloadFile {
my $filename = shift || die "writeWorkloadFile: Missing file name";
my $plist = shift || die "writeWorkloadFile: Missing return list";
my $skip = shift;
my @skipH;
my $configSeen = 0;
my $defaultSeen = 0;
my @paramH;
if ($skip) {
foreach $s (@$skip) { # turn list into a hash
$skipH{(uc $s)} = $s; # fix case for index
}
}
foreach $s (@workloadParameters) { # turn list into a hash
$paramH{(uc $s)} = $s; # fix case for index
}
($params{DEBUG}) && print "Writing workload to $filename.\n";
unless (open(WORKOUT, ">$filename")) {
die "Couldn't open testbed $filename: $!";
}
foreach $sparm (@$plist) { # each hash reference in the list
if (($skip)
&& ($skipH{$sparm->{"sectionTitle"}})) {
#($params{DEBUG}) &&
#print "Skipping section $sparm->{sectionTitle}\n";
next;
}
# all CONFIG,DEFAULT sections point to the same hash, output once only
if ($sparm->{"sectionTitle"} =~ /^CONFIG$/) {
next if $configSeen;
$configSeen++;
}
if ($sparm->{"sectionTitle"} =~ /^DEFAULT$/) {
next if $defaultSeen;
$defaultSeen++;
}
if ($sparm->{sectionParams}) { # write section with extra args
print WORKOUT "<$sparm->{sectionTitle} $sparm->{sectionParams}>\n";
} else {
print WORKOUT "<$sparm->{sectionTitle}>\n";
}
if ($sparm->{"sectionTitle"} =~ /^(CONFIG|CLIENT)$/) {
# for Config or Client, output the hash to get computed config
foreach $k (sort keys %$sparm) { # output each parameter
# skip sectionTitle and sectionParams
($k =~ /^(sectionTitle|sectionParams|lineList)$/) && next;
printf WORKOUT " %s\t%s\n",
($paramH{$k}) ? $paramH{$k} : $k,
$sparm->{$k};
}
} else { # write out the line list
foreach $l (@{$sparm->{"lineList"}}) {
print WORKOUT " $l\n";
}
}
print WORKOUT "</$sparm->{sectionTitle}>\n\n";
}
close WORKOUT;
}
# Usage: getClientFilename hostname section
sub getClientFilename {
my $cli = shift || die "Missing client name";
my $section = shift || die "Missing section hash";
return "$tmpdir/$cli-$section->{GROUP}.out"
if ($params{USEGROUPS} && $section->{GROUP});
return "$tmpdir/$cli.out"
}
sub setConfigDefaults { # set CONFIG defaults
# These are set after writing out the test copy to avoid clutter
# Path to gnuplot executable
$params{GNUPLOT}="gnuplot/gnuplot"
unless ($params{GNUPLOT});
# This is the directory the client lives in
$params{TEMPDIR} = "/var/tmp"
unless($params{TEMPDIR});
# Set default remote shell
#$params{RSH} = "rsh"
$params{RSH} = "ssh"
unless($params{RSH});
# Set default remote copy
#$params{RCP} = "rcp"
$params{RCP} = "scp"
unless($params{RCP});
# Size of generated gifs
$params{CHARTHEIGHT} = 480
unless($params{CHARTHEIGHT});
$params{CHARTWIDTH} = 640
unless($params{CHARTWIDTH});
$params{CHARTPOINTS} = int (($params{CHARTWIDTH}-60)*0.8)
unless($params{CHARTPOINTS});
# The name of the remote executable
$params{CLIENTCOMMAND} = "mailclient"
unless ($params{CLIENTCOMMAND});
# Set default monitoring command
$params{MONITORCOMMAND} = "vmstat %f"
unless($params{MONITORCOMMAND});
# Set default switches to makeusers
$params{MAKEUSERSARGS} = "-4"
unless ($params{MAKEUSERSARGS});
# Figure out @protocols, this sets the report order
@protocols = ();
{
my %skipH;
foreach $s (@nonProtocolSections) { # turn list into a hash
#print "$s ";
$skipH{(uc $s)} = $s; # fix case for index
}
print "\n";
foreach $sparm (@workload) { # each hash reference in the list
next if ($skipH{$sparm->{"sectionTitle"}});
($params{DEBUG}) &&
print "Found protocol ". $sparm->{"sectionTitle"} . "\n";
push @protocols, $sparm->{"sectionTitle"};
# add to skip list so only added once
$skipH{(uc $sparm->{"sectionTitle"})} = $sparm->{"sectionTitle"};
}
}
@protocolsAll = @protocols;
push @protocolsAll, "Total";
# figure out the graphs ???
}
sub parseArgs { # get args
while (@ARGV) {
my $arg = shift(@ARGV);
if ($arg =~ /^-a$/i) { # was undocumented feature in 4.1
$params{ADDGRAPHS} = shift(@ARGV); # extra graphs
next;
}
if ($arg =~ /^-b$/i) {
$params{TITLE} = shift(@ARGV); # banner
next;
}
# BACK COMPATIBILITY (everything now in the saved workload file)
if ($arg =~ /^-c$/i) { # config file, read when encountered
my $configFile = shift(@ARGV);
readConfigFile ($configFile);
next;
}
if ($arg =~ /^-d$/i) {
$params{DEBUG}++; # Debug
next;
}
if ($arg =~ /^-h$/i) { # Help
print "Usage: -w workfile [-t time] [-r ramptime] [-l load] [-v] [-d]\n";
print "\t[-b banner] [-n notes] [-s sysconfigfile] [-a add_graphs_file]\n";
print "\t[-c configfile] [-m machinefile] [-z] [PARAM=value]...\n";
die "Usage";
}
if ($arg =~ /^-l$/i) { # "load", FIX: naming conventions
$params{CLIENTCOUNT} = shift(@ARGV); # desired client count
next;
}
# BACK COMPATIBILITY (everything now in the saved workload file)
if ($arg =~ /^-m$/i) {
$params{TESTBED} = shift(@ARGV); # testbed machines file
next;
}
if ($arg =~ /^-n$/i) {
$params{COMMENTS} = shift(@ARGV); # notes
next;
}
if ($arg =~ /^-r$/i) {
$params{RAMPTIME} = shift(@ARGV); # ramptime
next;
}
if ($arg =~ /^-s$/i) {
$params{SYSCONFIG} = shift(@ARGV); # system config html file
next;
}
if ($arg =~ /^-t$/i) {
$params{TIME} = shift(@ARGV); # test time
next;
}
if ($arg =~ /^-v$/i) {
$params{VERBOSE} = 1; # verbose mode
next;
}
if ($arg =~ /^-w$/i) { # workload file (may occur multiple times)
my $f = shift(@ARGV);
readWorkloadFile ($f, \@workload) || die "Error reading workload: $@\n";
$params{WORKLOAD} = $f;
next;
}
if ($arg =~ /^-z$/i) {
$params{NT} = 1; # NT mode
next;
}
# any other CONFIG parameter: FIELD=value
if ($arg =~ /^(\w+)=(\S.*)$/) {
my $field = uc $1;
$params{$field} = $2;
next;
}
die "Unknown argument '$arg'";
}
if ($params{NT}) { # should use Cwd module
$cwd = `cd`; # NT get current directory
$cwd = `pwd` unless ($cwd); # in case we are really on UNIX
} else {
$cwd = `pwd`; # in case we are really on UNIX
}
chomp $cwd; # strip NL
}
return 1;

View File

@@ -1,271 +0,0 @@
I. Format
II. Workload Configuration Sections
III. Report Generation Sections
---------
I. Format
---------
The config-file format is very free-form -- for example, this text is
skipped as a "comment" because it doesn't look like anything else. A
section always starts with a line ending in a colon. Everything up to
the next section, end-of-file, or `__END__' is part of the current
section.
Name/value pairs within a section are pairs starting with whitespace,
and separated by a colon followed by whitespace. So you can write
something like this
# hello there: mister foo
and it will be ignored. Had the '#' before the "hello" not been
there, the attribute name would have been `hello there' and its value
would have been `mister foo'. Leading and trailing whitespace is
skipped, but internal whitespace is perfectly OK. Note that the
"comment" character doesn't have to be a '#', but can be anything you
want (except whitespace).
Leading whitespace also denotes continued values. So
foo: blah blah
and some more words which are part of foo's value.
creates a variable named 'foo' with this value (including the \n) --
"blah blah
and some more words which are part of foo's value."
Finally, anything after '__END__' on a line by itself gets inserted
literally into each .wld file. This is the place to put <monitor>
sections.
--------------------------
II. Workload Configuration
--------------------------
Parameters with no default are required.
Messages
--------
Message attributes are defined in the `message' section.
Parameter Default Description
--------- ------- -----------
size size distribution (including headers).
recipients number of recipients
headers ~unif(10, 30) number of headers
line length 60 line length
mime 0 number of MIME parts
Users
-----
User behavior parameters are described in the `user' section.
Parameter Default Description
--------- ------- -----------
messages per day
protocol mail read
activity `DURATION each TIME' or `START - STOP'
check interval how often user checks mail when active
read messages 0 number of old msgs each user has
read time 0 how long user takes to `read' a message
keep 0 proportion of messages kept on server
connection type <unlimited> `latency = X ; bandwidth = X'
drop rate 0 proportion of connections dropped before logout
Delivery
--------
Delivery parameters are described in the `delivery' section.
Parameter Default Description
--------- ------- -----------
messages per connection 1 messages sent per SMTP session
percent remote 0 % mail going to remote host (sink)
connection type <unlimited>
fluctuation <uniform> `START - END = X % ; ...'
Test
----
The `test' section configures the number of users, the time of day to
be simulated, etc.
Parameter Default Description
--------- ------- -----------
start time of day to start sim
end end time of day.
length duration. Either length or end
must be specified.
users total user base
percent active percentage of total user base active
during test period
messages per second messages per second to delivery for
SMTP-only simulation. Either
`messages per second' or `users'
and `percent active' must be
specified.
comments <nothing> notes on test.
preparer Anonymous Name to use on reports.
date <ctime(3)>
configuration <nothing> Configuration name for report.
Environment Configuration
-------------------------
Several sections describe the test environment:
Sink
----
The `sink' section describes the remote mail sink.
Parameter Default Description
--------- ------- -----------
addressFormat smuser%ld@ Like addressFormat, but used to
generate remote addresses.
`hostname' will be appended if it
ends in `@'.
hostname host on which SMTP sink lives. Used
for remote delivery.
Server
------
The `server' section describes the mail server to be sized:
Parameter Default Description
--------- ------- -----------
smtp port 25
pop port 110
imap port 143
web port 1066
hostname Mail server
addressFormat smuser%ld@ Passed to
sprintf(recipient, addressFormat,
userNum, domainNum). If
addressFormat ends in `@', `server'
is automatically appended.
loginFormat smuser%ld@ Same as addressFormat, but used to
generate usernames.
passwdFormat twang passed to sprintf(passwd, passwdFormat,
userNum, domainNum).
firstAddress 0 first userNum for addresses
firstLogin 0 first userNum for logins
smtpMailFrom $USER@$HOST sending address on test mail.
name Printable server name for reports.
hardware Brief hardware description.
software Brief software description.
Clients
-------
The `clients' section describes test client configuration.
Parameter Default Description
--------- ------- -----------
smtp localhost client machines for SMTP
imap localhost for IMAP
pop localhost for POP3
web localhost for WEBMAIL
rsh rsh rsh program to start remote clients
rcp rcp rcp program to distribute files
command mailclient program to run to start clients
cert file file containing SSL certificate
key file file containing SSL key
Ugly Mstone details
-------------------
The `mstone' section controls low-level details of how the workload
description is translated into mstone terms. The parameters make some
assumptions about the size of both the test clients and the server, so
they may have to be tweaked. For small- to mid-size configurations,
the defaults should work.
Parameter Default Description
--------- ------- -----------
preload rate 5 msgs/sec to deliver during preload.
preload per connection 100 messages per SMTP session
preload delivery time 750 msec expected message delivery time.
used to control throttling.
preload throttle 500 msec faster/slower than expected at
which to throttle
throttleFactor 1.1 factor by which to increase/decrease
delivery rate when throttling
read rate 40 msgs/sec to read when aging old
messages.
read clients 5 test clients to use for aging
read protocol (user:protocol) protocol to age messages (e.g. imap)
rampTime 0 test rampup time
smtp connection time 10s
pop user spacing 10s MULTIPOP: time between users
pop connections per client 10 MULTIPOP: connections per client
no event queues false use 1 thread per client
max threads per proc 250
clientCount 10000 artificial global clientCount
----------------------
III. Report Generation
----------------------
There are several additional configuration sections to provide
additional information for sizing reports. The code is in
`lib/{sizing,hardware}_defaults.pm'.
QoS Constraints
---------------
Quality of Service constraints are specified in the `qos' section.
See reports/qos.in for an example. The qos section can have any
number of members. The name of each member is a description which
will appear in the sizing report. The value is a block of perl code
which should return a pair of values when evaluated in a context where
`$run' is a reference to a hash containing data on the test run to be
evaluated. The first value is a value corresponding to this
constraint which will be printed in the report. The second is true if
the run passed this constraint.
Hardware
--------
The `machine' section describes the hardware under test. Unlike
previous, simple sections, it containts nested values (as hash refs).
Parameter Description
--------- -----------
processors
speed
cache
network
storage
controllers
disks
type
speed
model
timing
OS
parameters
disks
logging
Software
--------
The `software' section describes the software under test. If multiple
types of software are in use, multiple software sections should be
specified. The only default parameter for software is the `name'.
Other parameters should describe configuration information, version,
etc.

View File

@@ -1,53 +0,0 @@
test:
start: 8 AM
length: 1h
users: ** Number of users here ***
percent active: 100
comments: auto-generated Corporate workload.
-- mail server configuration --
server:
hostname: ** SERVER **
# defaults given below --
# addressFormat: smuser%ld@
# loginFormat: smuser%ld@
# passwdFormat: twang
-- test client configuration --
clients:
smtp: ** SMTP clients here **
imap: ** IMAP clients here **
# defaults are `rsh' and `rcp'
# rsh: ssh
# rcp: scp
-- Don't edit between here and the `__END__' marker --
mstone:
rampTime: 30s
message:
size: ~lognormal(4k,4.5)
recipients: ~lognormal(1,2) : [1, ]
mime: ~binomial(0.3)
delivery:
fluctuation: 8 AM - 4 PM = 90%
user:
messages per day: 50
read messages: 50
protocol: IMAP
check interval: ~unif(5m, 8m)
connection type: latency = 0; bandwidth = 56k
keep: 100%
activity: 8 AM - 4 PM; arrival rate = ~normal(20m, 10m)
__END__
# your monitor sections go here...

View File

@@ -1,2 +0,0 @@
<client HOSTS=localhost>
</client>

View File

@@ -1,38 +0,0 @@
# common setup info for tests
# See sample.wld for detailed usage
# Information on how the test is distributed and reported
# Test independent configuration
<CONFIG>
comments Netscape MSG4.15
sysConfig conf/sample.html # File for additonal system config
# Debug with short runs and a few clients, then increase test time
# These get overridden in the test specific files (or the command line)
clientCount 5 # nominal clientCount (usually overriden)
rampTime 10s
time 30s
# each test should set a title in their CONFIG section
# This is a reminder when using old test workloads
title Need to set test title
</CONFIG>
# Specify client machines
<CLIENT HOSTS=localhost>
</CLIENT>
# Information on the test itself
# Use the <Default> tag to set command defaults
<DEFAULT>
server mailhost.example.com
smtpMailFrom mailtestuser0@mailhost.example.com
loginFormat mailtestuser%ld
addressFormat mailtestuser%ld@mailhost.example.com
passwdFormat myPassword
numLogins 100
firstLogin 0
numAddresses 100
firstAddress 0
</DEFAULT>

View File

@@ -1,10 +0,0 @@
# MailStone workload configuration file. See sample.wld for detailed usage
# Typical HTTP GETs
<includeOnce conf/general.wld>
<HTTP>
weight 100
numLoops 1
httpcommand GET /
</HTTP>

View File

@@ -1,74 +0,0 @@
#!/bin/ksh
# fire off the series of Mailstone IMAP tests
# To test series setup, do: go_imap -n
# Look for testname$test_form, first. Override with: go_series -f <string>.
export test_form="_mail02"
export test_host="mail02"
# string appended to every description. Override with: go_series -d <string>.
export desc_conf="12 CPUs"
# Extra arguments common to all tests. Any other args go here.
# Note that arguments with embedded spaces wont work here.
# Instead use: go_series -- <args...>
export extra_args=""
# error limit to abort sequence
export error_limit=500
# time to allow the server to calm down after each run (seconds)
export sleep_time=120
# who to mail results to
#export mail_list="me@example.com,you@example.com"
export mail_list=""
# Get all the helper functions
. test_utils.ksh
### This is where the series of tests is defined
# clean and re-start server
if [[ $only_show_it -gt 0 ]] ; then
echo "Would run:" "$@"
return 0
else
# BUG: rsh never returns.
# individual commands in clean work fine, but fail as a whole
rsh -n $test_host /bin/ksh /iplanet/bin/clean$test_form &
sleep 300 && kill -9 $!
wait
fi
# check our setup
run timesync
###echo "DEBUG exit" && exit 0
run_test popdel 'Create mailboxes (random order)' -t 60m maxblocks=100000 "$@"
run_test allpop 'Create mailboxes (exhaustive)' "$@"
run_test imaplogin 'IMAP login rate' "$@"
run_test smtp10k-5-5k 'Deliver 5, 5k messages to 10k users' "$@"
sleep 200 # let queue drain (2000/(10 msg/sec))
run_test imapread10k 'IMAP Message downloads 5k from 10k users' "$@"
run_test smtp10k-5-5k 'Deliver 5, 5k messages to 10k users' "$@"
sleep 200 # let queue drain (2000/(10 msg/sec))
run_test imapread 'IMAP Message downloads 5k' "$@"
run_test imapsmtp-throttle 'Combined IMAP-SMTP load (1 of 3)' "$@"
run_test imapsmtp-throttle 'Combined IMAP-SMTP load (2 of 3)' "$@"
run_test imapsmtp-throttle 'Combined IMAP-SMTP load (3 of 3)' "$@"
# Some messages will be left from previous test
run_test imapmaxusers 'IMAP 30K simultaneous users' "$@"
# e-mail the whole batch
[[ -n "$mail_list" ]] && \
mail_series "DotCom IMAP: `date`" "$mail_list"

View File

@@ -1,19 +0,0 @@
# MailStone workload configuration file. See sample.wld for detailed usage
# Typical IMAP checks/reads
<includeOnce conf/general.wld>
<CONFIG> # test specific config
title IMAP reads
clientCount 100 # since IMAP has long sleeps, use lots of clients
</CONFIG>
<IMAP4>
weight 100
#leaveMailOnServer 1
idleTime 2s # time between login and first download check
loopDelay 5m # time between download checks
numLoops 10 # how many check to do before closing the connection
blockTime 2s # time between logout and next login (or other block)
</IMAP4>

View File

@@ -1,51 +0,0 @@
-- test size --
test:
length: 90m
users: ** Number of users here ***
percent active: 10
comments: Auto-generated ISP workload.
-- mail server configuration --
server:
hostname: ** SERVER **
# defaults --
# addressFormat: smuser%ld@
# firstAddress: 0
# loginFormat: smuser%ld@
# firstLogin: 0
# passwdFormat: twang
#
-- test client configuration --
clients:
smtp: ** SMTP clients here **
pop: ** POP clients go here **
# defaults are `rsh' and `rcp'
# rsh: rsh
# rcp: rcp
-- Do not edit between here and the `__END__' marker
message:
size: ~lognormal(3k,4.5)
recipients: ~lognormal(1,1.5) : [1, ]
mime: 30 %
user:
messages per day: 5
read messages: 0
protocol: POP
check interval: ~unif(5m, 8m)
connection type: latency = 0; bandwidth = 56k
keep: 5%
activity: 30 m each 24 h
drop rate: 0.5%
__END__
# other things (e.g. <monitor> sections) can go here...

View File

@@ -1,36 +0,0 @@
<default>
addressFormat smuser%ld@** DOMAIN **
loginFormat smuser%ld@** DOMAIN **
passwdFormat twang
server ** SERVER **
</default>
<smtp HOSTS=smtp>
blockTime 0
file auto
firstAddress 0
headers ~unif(10, 30)
mime ~binomial(0.3)
numAddresses 1000
numLoops 1
numRecips ~lognormal(1,2) : [1, ]
size ~lognormal(4k,4.5)
smtpMailFrom sender0@** DOMAIN **
useEHLO 2
portNum 2003
</smtp>
<client HOSTS=localhost>
clients 50
group smtp
</client>
<config>
comments lmtp delivery
rampTime 0
time 5m
title lmtp delivery - IMAP
useGroups 1
</config>
# other things (e.g. <monitor> sections) can go here...

View File

@@ -1,36 +0,0 @@
<default>
addressFormat smuser%ld@** DOMAIN **
loginFormat smuser%ld@** DOMAIN **
passwdFormat twang
server ** SERVER **
</default>
<smtp HOSTS=smtp>
blockTime 0
file auto
firstAddress 0
headers ~unif(10, 30)
mime 30 %
numAddresses 1000
numLoops 1
numRecips ~lognormal(1,1.5) : [1, ]
size ~lognormal(3k,4.5)
smtpMailFrom sender0@** DOMAIN **
useEHLO 2
portNum 2003
</smtp>
<client HOSTS=localhost>
clients 50
group smtp
</client>
<config>
comments lmtp delivery
rampTime 0
time 5m
title lmtp delivery - POP
useGroups 1
</config>
# other things (e.g. <monitor> sections) can go here...

View File

@@ -1,84 +0,0 @@
#!/bin/ksh
# fire off the series of Mailstone tests
# To test series, do: go_series -n
# Look for testname$test_form, first. Override with: go_series -f <string>.
export test_form="_mail02"
export test_host="mail02"
# string appended to every description. Override with: go_series -d <string>.
export desc_conf="12 CPUs"
# Extra arguments common to all tests. Any other args go here.
# Note that arguments with embedded spaces wont work here.
# Instead use: go_series -- <args...>
export extra_args=""
# error limit to abort sequence
export error_limit=500
# time to allow the server to calm down after each run (seconds)
export sleep_time=120
# who to mail results to
#export mail_list="me@example.com,you@example.com"
export mail_list=""
# Get all the helper functions
. test_utils.ksh
### This is where the series of tests is defined
# clean and re-start server
if [[ $only_show_it -gt 0 ]] ; then
echo "Would run:" "$@"
return 0
else
# BUG: this never returns. rsh never returns
# individual commands in clean work fine, but fail as a whole
rsh -n $test_host /bin/ksh /iplanet/bin/clean$test_form &
sleep 300 && kill -9 $!
wait
fi
# check our setup
run timesync
###echo "DEBUG exit" && exit 0
run_test popdel 'Create mailboxes (random order)' -t 60m maxblocks=100000 "$@"
run_test allpop 'Create mailboxes (exhaustive)' "$@"
run_test popdel 'Empty checks: never used (1 of 3)' "$@"
run_test popdel 'Empty checks: never used (2 of 3)' "$@"
run_test popdel 'Empty checks: never used (3 of 3)' "$@"
run_test smtp10k-5-5k 'Deliver 5, 5k messages to 10k users' "$@"
sleep 200 # let queue drain (2000/(10 msg/sec))
run_test popsave10k 'Message downloads 5k from 10k users (1 of 3)' "$@"
run_test popsave10k 'Message downloads 5k from 10k users (2 of 3)' "$@"
run_test popsave10k 'Message downloads 5k from 10k users (3 of 3)' "$@"
run_test popsave 'Message downloads 5k (1 of 3)' "$@"
run_test popsave 'Message downloads 5k (2 of 3)' "$@"
run_test popsave 'Message downloads 5k (3 of 3)' "$@"
run_test popsmtp-throttle 'Combined load (1 of 3)' "$@"
run_test popsmtp-throttle 'Combined load (2 of 3)' "$@"
run_test popsmtp-throttle 'Combined load (3 of 3)' "$@"
run_test smtp100k 'SMTP delivery rate' "$@"
run_test popclean 'Message downloads/delete 5k ' "$@"
run_test popdel 'Empty checks (1 of 3)' "$@"
run_test popdel 'Empty checks (2 of 3)' "$@"
run_test popdel 'Empty checks (3 of 3)' "$@"
# e-mail the whole batch
[[ -n "$mail_list" ]] && \
mail_series "DotCom POP: `date`" "$mail_list"

View File

@@ -1,15 +0,0 @@
# MailStone workload configuration file. See sample.wld for detailed usage
# Typical POP checks/reads
<includeOnce conf/general.wld>
<CONFIG> # test specific config
title POP reads
clientCount 50
</CONFIG>
<POP3>
weight 100
numLoops 9999 # will close when messages run out
#leaveMailOnServer 1
</POP3>

View File

@@ -1,44 +0,0 @@
# MailStone workload configuration file. See sample.wld for detailed usage
# Deliver mail using SMTP
# This can measure delivery rates for a specified message type.
# This also fills the store for POP or IMAP tests
<includeOnce conf/general.wld>
<CONFIG> # test specific config
title POP, IMAP, SMTP combined load
clientCount 100
</CONFIG>
# MailStone workload configuration file. See sample.wld for detailed usage
# Typical SMTP delivery with 1K message size and restricted accounts
<SMTP HOSTS=client1>
file en-1k.msg
weight 100
#numAddresses 200
</SMTP>
# MailStone workload configuration file. See sample.wld for detailed usage
# Typical POP checks/reads
<POP3 HOSTS=client2>
weight 100
#leaveMailOnServer 1
</POP3>
# MailStone workload configuration file. See sample.wld for detailed usage
# Typical IMAP checks/reads
# IMAP maintains a connection (unlike POP or SMTP)
# for combined load tests, run it on separate client machines
<IMAP4 HOSTS=client3>
weight 100
idleTime 5
checkMailInterval 10
numLoops 1000
</IMAP4>

View File

@@ -1,21 +0,0 @@
# MailStone workload configuration file. See sample.wld for detailed usage
# Deliver mail using SMTP
# This can measure delivery rates for a specified message type.
# This also fills the store for POP or IMAP tests
<includeOnce conf/general.wld>
<CONFIG> # test specific config
title POP reads with SMTP message deliveries
clientCount 50
</CONFIG>
<include conf/smtp1k.wld>
<include conf/smtp5k.wld>
<include conf/smtp17k.wld>
<POP3>
weight 100
#leaveMailOnServer 1
</POP3>

View File

@@ -1,12 +0,0 @@
<!-- this file provides system comments and is merged into reports -->
<PRE>
<B> Mailhost.example.com </B>
EXAMPLE SYSTEM CONFIGURATION
Netscape Messaging Server 4.15 (7/21/99)
E6000
26x250MHz UltraSPARC-II
6.5GB RAM
A3500 w/ 60x9GB 7200 RPM
store: 5 x (10x9 RAID-0)
queue: 1 x (10x9 RAID-0)
</PRE>

View File

@@ -1,281 +0,0 @@
# MailStone workload configuration file
#
# Include other workload files like this:
# <include conf/morework.wld>
#
# If you want a workload included ONLY ONCE in the test, use this
# <includeOnce conf/morework.wld>
#
# See Also:
# smtp.wld - typical SMTP delivery test
# pop.wld - typical POP3 check/download test
# imap.wld - typical IMAP4 check/download test
######################################################################
# These sections discribe how the test is run:
# CONFIG, CLIENT, MONITOR, PRETEST, POSTTEST
# The <CONFIG> section defines test setup and report parameters
# Multiple <CONFIG> sections will be merged into a one.
# The equivalent command line switch is shown in parenthesis.
<CONFIG>
title POP reads # title for report and index (-b)
comments Netscape MSG4.1 # additional info at top of report (-n)
time 3m # test time (-t)
rampTime 20s # portion of test to start things (-r)
clientCount 12 # number of client connections (-l)
maxErrors 10000 # set an error abort limit
maxBlocks 50000 # stop after this many blocks
#sysConfig conf/mailhost.txt # Pull in config file (-s)
sysConfig \ # Inline config text
<PRE>\
<B> mailhost.example.com </B>\
Netscape Messaging Server 4.11\
Linux 2.2.5\
4x400Mhz Xeon (1Mb)\
2Gb RAM\
</PRE>
useGroups 1 # use group names instead of host names
telemetry 1 # log telemetry (for debugging)
# These usually dont need to be set. These are the defaults
GnuPlot gnuplot/gnuplot
RSH ssh
# RSH /usr/bin/remsh # HP-UX uses this path
RCP scp
# RCP /usr/bin/rcp
tempDir /var/tmp # client machine directory
chartWidth 640
chartHeight 480
clientCommand mailclient # CLIENT command to run
monitorCommand vmstat %f # MONITOR command to run
makeUsersArgs -4 # args to makeusers
imageType png # gnuplot image type: png, gif, ...
</CONFIG>
# Each <Client> section defines one or more client machines
# Every machine in the section will run the same number of connections
# Note that there cannot be whitespace between the client hostnames
<CLIENT HOSTS=client1,client2>
arch Linux2.2_x86
maxClients 200
maxThreads 50
# the group is only used if "useGroups" is set
group A
command mailclient -m 100 # override the command to run
</CLIENT>
# Set a specific number of processes and threads
<CLIENT HOSTS=client3,client4>
arch SunOS5.6
processes 2
threads 10
# the group is only used if "useGroups" is set
group B
</CLIENT>
# Here is how to configure a WinNT client from a Unix mail master
# The NT rshd must interoperate with Unix rsh; allow redirection of
# stdin, stdout, and stderr; and must support binary file copies.
# Denicomp's wrshdnt has been used sucessfully. www.denicomp.com
<CLIENT HOSTS=winnt01>
Arch WINNT4.0
command mailclient.exe
tempDir c:\temp
</CLIENT>
# The PreTest sections will run before the test starts
<PRETEST HOSTS=mailhost.example.com>
# RSH rsh -l mailuser
command cd /usr/netscape/msg-mailhost; ./getconf
</PRETEST>
# Each <Monitor> section defines remote monitoring commands
# for one or more machines.
# Commands containing '%c' run to completion.
# Otherwise the command will be shutdown down
<MONITOR HOSTS=mailhost.example.com>
command vmstat,%f,%c
</MONITOR>
# The PostTest sections will run after the test completes
<POSTTEST HOSTS=mailhost.example.com>
command df
</POSTTEST>
######################################################################
# available protcols: SMTP, POP3, IMAP4
# (command names are not case sensitive)
#
# Time formats use suffixes of 's', 'm', 'h', 'd'
# for seconds, minutes, hours, days
# In account formats, "%ld" is replaced by user number
# These parameters apply to the protocol sections
# Command parameter applicable command Example
#-------------------------------------------------------------------
# server <ALL> mail.example.com
# portNum <ALL> 25
# (if no value is given, the default port for that service is used)
#
# weight <ALL> 20
#
# loginFormat <ALL> test%ld
# %ld=address %ld=domain
# firstLogin <ALL> 0
# numLogins <ALL> 2000
# sequentialLogins <ALL> 1
# passwdFormat <ALL> netscape
#
# addressFormat <ALL> test%ld@mail.example%ld.com
# %ld=address %ld=domain
# firstAddress <ALL> 0
# numAddresses <ALL> 2000
# sequentialAddresses <ALL> 1
#
# numDomains <ALL> 3
# firstDomain <ALL> 0
# sequentialDomains <ALL> 1
#
# idleTime <ALL> 5m
# numLoops <ALL> 200
# loopDelay <ALL> 1m
# blockTime <ALL> 5m
#
# numRecips SMTP 3
# smtpMailFrom SMTP mailstone@mail.example.com
# file SMTP en-3k.msg
# useEHLO SMTP 1 (default is HELO)
# useAUTHLOGIN SMTP 1 (no AUTHLOGIN by default)
#
# leaveMailOnServer POP3,IMAP4 1
# leaveMailUnSeen IMAP4 1
# The <Default> section sets command block defaults
# Multiple <Default> sections will be merged into one
<DEFAULT>
server mailhost.example.com
smtpMailFrom mailhost0@mailhost.example.com
addressFormat mailhost%ld@mailhost.example.com
loginFormat mailhost%ld
passwdFormat netscape
numLogins 1000
numAddresses 1000
</DEFAULT>
# Note: empty host list means all hosts
<SMTP>
file en-1k.msg
weight 10
numAddresses 200
</SMTP>
<include conf/smtp17.wld>
# Note: the host name must be the same as specified in the CLIENT section
<POP3 HOSTS=client1,client2>
weight 10
#leaveMailOnServer 1
</POP3>
<IMAP4 HOSTS=client3>
idleTime 300
#weight 15
</IMAP4>
######################################################################
# These sections are used to generate the right graphs for the test
# This is the built in defaults
<GRAPH name=connects>
title Number of connections attempted
label Connections/sec
variables conn
field Try
</GRAPH>
<GRAPH name=connections>
title Total connections
label Connections
variables connections
</GRAPH>
<GRAPH name=connErrors>
title Number of connection errors
label Errors/sec
variables conn, banner, login, logout
field Error
</GRAPH>
<GRAPH name=msgErrors>
title Number of command/message errors
label Errors/sec
variables cmd, submit, retrieve
field Error
</GRAPH>
<GRAPH name=retrieves>
Title Number of messages read
label Messages/sec
variables retrieve
field Try
</GRAPH>
<GRAPH name=submits>
title Number of messages written
label Messages/sec
variables submit
field Try
</GRAPH>
<GRAPH name=commands>
title Number of commands sent
label Commands/sec
variables cmd
field Try
</GRAPH>
<GRAPH name=readBytes>
title Bytes read
label Bytes/sec
variables login, banner, cmd, retrieve, submit, logout
field BytesR
</GRAPH>
<GRAPH name=writeBytes>
title Bytes written
label Bytes/sec
variables login, banner, cmd, retrieve, submit, logout
field BytesW
</GRAPH>
<GRAPH name=msgTime>
title Message transfer time
label Seconds per message
variables cmd, submit, retrieve
field Time
</GRAPH>
<GRAPH name=setupTime>
Title Connection setup time
label Seconds per connection
variables conn, banner, login
field Time
</GRAPH>
<GRAPH name=blocks>
title Number of mailstone blocks executed
label Blocks/sec
variables blocks
# this is a scalar. No "field" needed/allowed
</GRAPH>

View File

@@ -1,16 +0,0 @@
# MailStone workload configuration file. See sample.wld for detailed usage
# Deliver mail using SMTP
# This can measure delivery rates for a specified message type.
# This also fills the store for POP or IMAP tests
<includeOnce conf/general.wld>
<CONFIG> # test specific config
title SMTP message deliveries
clientCount 20
</CONFIG>
# if we include more than one, we get a distribution of all sizes
<include conf/smtp1k.wld>
<include conf/smtp5k.wld>
<include conf/smtp17k.wld>

View File

@@ -1,33 +0,0 @@
-- test size --
test:
length: 90m
users: 100
messages per second: ** Delivery Rate **
comments: Auto-generated SMTP-only workload
-- server configuration --
server:
hostname: ** SERVER **
# addressFormat: smuser%ld@
# firstAddress: 0
# loginFormat: smuser%ld@
# firstLogin: 0
# passwdFormat: twang
-- client configuration --
clients:
smtp: ** SMTP clients **
-- Do not edit between here and the `__END__' marker --
message:
size: ~lognormal(3k,4.5)
recipients: ~lognormal(1,1.5) : [1, ]
mime: 30 %
__END__
# other things (e.g. <monitor> sections) can go here...

View File

@@ -1,16 +0,0 @@
#MailSTone workload configuration
# Send 17k, 3 recipient messages from all clients
<SMTP>
weight 100
file en-17k.msg
# uncomment this line to just deliver to a subset of addresses
#numAddresses 200
# deliver each message to more than 1 address
numRecips 1
numLoops 1 # number of messages to send per login
</SMTP>

View File

@@ -1,16 +0,0 @@
# MailStone workload configuration file. See sample.wld for detailed usage
# Typical SMTP delivery with 1K message size and restricted accounts
<SMTP>
weight 100
file en-1k.msg
# uncomment this line to just deliver to a subset of addresses
#numAddresses 200
# deliver each message to more than 1 address
numRecips 1
numLoops 1 # number of messages to send per login
</SMTP>

View File

@@ -1,16 +0,0 @@
# MailStone workload configuration file. See sample.wld for detailed usage
# Typical SMTP delivery with 5K message size and restricted accounts
<SMTP>
weight 100
file en-5k.msg
# uncomment this line to just deliver to a subset of addresses
#numAddresses 200
# deliver each message to more than 1 address
numRecips 1
numLoops 1 # number of messages to send per login
</SMTP>

View File

@@ -1,33 +0,0 @@
-- NOT READY! --
test:
length: ?
users: ?
percent active: ?
server:
hostname: server goes here
addressFormat: smuser%ld@
firstAddress: 0
loginFormat: smuser%ld@
firstLogin: 0
passwdFormat: twang
clients:
smtp: ...
web: ...
message:
size: ~lognormal(3k,4.5)
recipients: ~lognormal(1,1.5)
mime: 30 %
user:
messages per day: 5
read messages: 50
protocol: web
check interval: 30s
connection type: latency = 0; bandwidth = 56k
keep: 95%
activity: 30 m each 24h
drop rate: 50%

View File

@@ -1,74 +0,0 @@
#!/bin/ksh
# fire off the series of Mailstone WEBMAIL tests
# To test series setup, do: go_webmail -n
# Look for testname$test_form, first. Override with: go_series -f <string>.
export test_form="_mail02"
export test_host="mail02"
# string appended to every description. Override with: go_series -d <string>.
export desc_conf="12 CPUs"
# Extra arguments common to all tests. Any other args go here.
# Note that arguments with embedded spaces wont work here.
# Instead use: go_series -- <args...>
export extra_args=""
# error limit to abort sequence
export error_limit=500
# time to allow the server to calm down after each run (seconds)
export sleep_time=120
# who to mail results to
#export mail_list="me@example.com,you@example.com"
export mail_list=""
# Get all the helper functions
. test_utils.ksh
### This is where the series of tests is defined
# clean and re-start server
if [[ $only_show_it -gt 0 ]] ; then
echo "Would run:" "$@"
return 0
else
# BUG: rsh never returns.
# individual commands in clean work fine, but fail as a whole
rsh -n $test_host /bin/ksh /iplanet/bin/clean$test_form &
sleep 300 && kill -9 $!
wait
fi
# check our setup
run timesync
###echo "DEBUG exit" && exit 0
run_test popdel 'Create mailboxes (random order)' -t 60m maxblocks=100000 "$@"
run_test allpop 'Create mailboxes (exhaustive)' "$@"
run_test webmaillogin 'WebMail login rate' "$@"
run_test smtp10k-5-5k 'Deliver 5, 5k messages to 10k users' "$@"
sleep 200 # let queue drain (2000/(10 msg/sec))
run_test webmailread10k 'WebMail Message downloads 5k from 10k users' "$@"
run_test smtp10k-5-5k 'Deliver 5, 5k messages to 10k users' "$@"
sleep 200 # let queue drain (2000/(10 msg/sec))
run_test webmailread 'WebMail Message downloads 5k' "$@"
run_test webmailsmtp-throttle 'Combined WebMail-SMTP load (1 of 3)' "$@"
run_test webmailsmtp-throttle 'Combined WebMail-SMTP load (2 of 3)' "$@"
run_test webmailsmtp-throttle 'Combined WebMail-SMTP load (3 of 3)' "$@"
# Some messages will be left from previous test
run_test webmailmaxusers 'WebMail 30K simultaneous users' "$@"
# e-mail the whole batch
[[ -n "$mail_list" ]] && \
mail_series "DotCom WebMail: `date`" "$mail_list"

View File

@@ -1,209 +0,0 @@
# MailStone workload configuration file. See sample.wld for detailed usage
# Typical WMAP checks/reads
<includeOnce conf/general.wld>
<CONFIG> # test specific config
title WMAP reads
clientCount 1 # since WMAP has long sleeps, use lots of clients
</CONFIG>
<DEFAULT>
# leaveMailOnServer 1
file en-1k.msg
#numAddresses 200
numRecips 1
idleTime 2s # time between login and first download check
loopDelay 5m # time between download checks
numLoops 10 # how many check to do before closing the connection
blockTime 2s # time between logout and next login (or other block)
</DEFAULT>
# This version pulls in everything (no caching)
<WMAP>
weight 20
# %s=referhost %s=host %d=content-length
wmapClientHeader "\
Referer: http://%s/\r\n\
Connection: Keep-Alive\r\n\
User-Agent: Mozilla/4.7 [en] (WinNT; U)\r\n\
Host: %s\r\n\
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*\r\n\
Accept-Encoding: gzip\r\n\
Accept-Language: en\r\n\
Accept-Charset: iso-8859-1,*,utf-8\r\n"
wmapBannerCmds "GET / HTTP/1.0"
wmapBannerCmds "GET /imx/N24b.gif HTTP/1.0"
wmapLoginCmd "POST /login.msc HTTP/1.0"
# %s=user %s=password
wmapLoginData "user=%s&password=%s"
# %s=sid
# (this one is done automatically from the redirect URL)
# wmapInboxCmds "GET /en/mail.html?sid=%s&\
#lang=en&host=http://toad.mcom.com/&cert=false HTTP/1.0"
wmapInboxCmds "GET /util.js HTTP/1.0"
wmapInboxCmds "GET /en/i18n.js HTTP/1.0"
wmapInboxCmds "GET /main.js HTTP/1.0"
wmapInboxCmds "GET /frame.html HTTP/1.0"
wmapInboxCmds "GET /cfg.msc?sid=%s&security=false HTTP/1.0"
wmapInboxCmds "GET /mbox_fs.html HTTP/1.0"
wmapInboxCmds "GET /imx/N16.gif HTTP/1.0"
wmapInboxCmds "GET /imx/spacer.gif HTTP/1.0"
wmapInboxCmds "GET /imx/pull.gif HTTP/1.0"
wmapInboxCmds "GET /imx/compose.gif HTTP/1.0"
wmapInboxCmds "GET /imx/search.gif HTTP/1.0"
wmapInboxCmds "GET /imx/divider.gif HTTP/1.0"
wmapInboxCmds "GET /imx/trash.gif HTTP/1.0"
wmapInboxCmds "GET /imx/read.gif HTTP/1.0"
wmapInboxCmds "GET /imx/sort_dn.gif HTTP/1.0"
wmapInboxCmds "GET /imx/high-0.gif HTTP/1.0"
wmapInboxCmds "GET /imx/read-1.gif HTTP/1.0"
# %s=sid
wmapCheckCmds "GET /mbox.msc?sid=%s&security=false&mbox=INBOX&\
start=-9999&count=9999&date=true&srch= HTTP/1.0"
# %s=sid, %d=message uid
wmapMsgReadCmds "GET /msg.msc?sid=%s&security=false&mbox=INBOX&\
uid=13&process=js,link,target,html,binhex&maxtext=30720 HTTP/1.0"
wmapMsgReadCmds "GET /msg_fs.html HTTP/1.0"
wmapMsgReadCmds "GET /reply.gif HTTP/1.0"
wmapMsgReadCmds "GET /reply_all.gif HTTP/1.0"
wmapMsgReadCmds "GET /forward.gif HTTP/1.0"
wmapMsgReadCmds "GET /prev-0.gif HTTP/1.0"
wmapMsgReadCmds "GET /all-0.gif HTTP/1.0"
wmapMsgReadCmds "GET /next-1.gif HTTP/1.0"
# %s=sid
#TODO wmapMsgDeleteCmds "GET / HTTP/1.0"
# %s=sid
#TODO wmapMsgComposeCmds "GET / HTTP/1.0"
# %s=sid
#TODO wmapMsgReplyCmds "GET / HTTP/1.0"
# %s=sid
#TODO wmapMsgReplyallCmds "GET / HTTP/1.0"
# %s=sid
#TODO wmapMsgForwardCmds "GET / HTTP/1.0"
# %s=sid
wmapMsgWriteCmds "GET / HTTP/1.0"
# %s=sid
wmapLogoutCmds "GET /cmd.msc?sid=%s&security=false&mbox=&cmd=logout HTTP/1.0"
</WMAP>
# This version assumes all static URLs are cached
<WMAP>
weight 80
# %s=referhost %s=host %d=content-length
wmapClientHeader "\
Referer: http://%s/\r\n\
Connection: Keep-Alive\r\n\
User-Agent: Mozilla/4.7 [en] (WinNT; U)\r\n\
Host: %s\r\n\
Accept: image/gif, image/x-xbitmap, image/jpeg, image/pjpeg, image/png, */*\r\n\
Accept-Encoding: gzip\r\n\
Accept-Language: en\r\n\
Accept-Charset: iso-8859-1,*,utf-8\r\n"
wmapBannerCmds "GET / HTTP/1.0"
wmapLoginCmd "POST /login.msc HTTP/1.0"
# %s=user %s=password
wmapLoginData "user=%s&password=%s"
# %s=sid
# (this one is done automatically from the redirect URL)
# wmapInboxCmds "GET /en/mail.html?sid=%s&\
#lang=en&host=http://toad.mcom.com/&cert=false HTTP/1.0"
wmapInboxCmds "GET /cfg.msc?sid=%s&security=false HTTP/1.0"
# %s=sid
wmapCheckCmds "GET /mbox.msc?sid=%s&security=false&mbox=INBOX&\
start=-9999&count=9999&date=true&srch= HTTP/1.0"
# %s=sid, %d=message uid
wmapMsgReadCmds "GET /msg.msc?sid=%s&security=false&mbox=INBOX&\
uid=13&process=js,link,target,html,binhex&maxtext=30720 HTTP/1.0"
# %s=sid
wmapMsgWriteCmds "GET / HTTP/1.0"
# %s=sid
wmapLogoutCmds "GET /cmd.msc?sid=%s&security=false&mbox=&cmd=logout HTTP/1.0"
</WMAP>
########################################################################
#
# Typical Communicator 4.7 to Messenger Express 4.1 dataflow
# High level requests (as seen using Network Monitor) and client [port] numbers
#
### Login
#
# GET /
# (gets login screen)
# GET /imx/N24b.gif
# (gets a gif as part of the screen)
# POST /login.msc
# Content-type: application/x-www-form-urlencoded
# user=x&password=x
# (performs the login, gets a Location: redirect with session ID)
# Location: http://mailhost/en/mail.html?sid=ebp32po0bt9u95rh&lang=en&host=http://mailhost/&cert=false
#
### INBOX Listing
#
# (first fetch the redirect url)
# GET /en/mail.html?sid=ebp32po0bt9u95rh&lang=en&host=http://mailhost/&cert=false
# (gets the inbox screen)
# GET /util.js
# GET /en/i18n.js
# GET /main.js
# GET /frame.html
# GET /frame.html
# GET /frame.html
# GET /cfg.msc?sid=ebp32po0bt9u95rh&security=false
# GET /frame.html
# GET /frame.html
#
# GET /mbox.msc?sid=ebp32po0bt9u95rh&security=false&mbox=INBOX&start=-9999&count=9999&date=true&srch=
# GET /mbox_fs.html
# GET /imx/N16.gif
# GET /imx/spacer.gif
# GET /imx/pull.gif
# GET /imx/compose.gif
# GET /imx/divider.gif
# GET /imx/trash.gif
# GET /imx/search.gif
# GET /imx/read.gif
# GET /imx/sort_dn.gif
# GET /imx/high-0.gif
# GET /imx/read-1.gif
#
### Reading a message
#
# GET /msg.msc?sid=ebp32po0bt9u95rh&security=false&mbox=INBOX&uid=13&process=js,link,target,html,binhex&maxtext=30720
# GET /msg_fs.html
# GET /imx/reply.gif
# GET /imx/reply_all.gif
# GET /imx/forward.gif
# GET /imx/prev-0.gif
# GET /imx/all-0.gif
# GET /imx/next-1.gif
#
### Logout
#
# GET /cmd.msc?sid=ebp32po0bt9u95rh&security=false&mbox=&cmd=logout
#
########################################################################

View File

@@ -1,227 +0,0 @@
# Figure out the OS sepecific setup stuff
# Define a flag for include-at-most-once
INCLUDED_CONFIG_MK = 1
# Mstone features to choose at compile-time:
# See doc/mstone_changes.html for details.
AUTOGEN = 1 # automatic body generation
IMAP_RAMPDOWN = 1 # ramp-down time for IMAP
SOCK_LINESPEED = 1 # (primitive) linespeed limitation
# SOCK_SSL = 1 # SSL/TLS and STARTTLS
SSL_INCLUDE = /usr/include/openssl
SSL_LIBS = /usr/lib/openssl
# MSG_READ_TIME = 1 # delay after message retrieval
USE_EVENTS = 1 # use event-queue model -- less threads
GEN_CHECKSUM = 1 # try to verify message integrity
DYNAMIC_THROTTLE = 1 # throttle preload dynamically
# These normally get overridden on the command line from ../Makefile
# This is the default build type
BUILD_VARIANT = release
ifeq ($(BUILD_VARIANT), debug)
BUILD_TYPE = DEBUG
OBJDIR_TAG = _DBG
else
BUILD_TYPE = RELEASE
OBJDIR_TAG = _OPT
endif
OS_ARCH := $(shell uname -s)
ifeq ("$(OBJDIR)", "")
ifeq ($(OS_ARCH), WINNT)
NSARCH := WIN32
else
NSARCH := $(shell $(topsrcdir)/nsarch)
endif
OBJDIR = $(topsrcdir)/build/$(NSARCH)$(OBJDIR_TAG).OBJ
PKGDIR = $(topsrcdir)/build/package/$(NSARCH)$(OBJDIR_TAG).OBJ/mstone
endif
########################################################################
# setup OS specific compilers and options
CC = gcc
AR = ar
INCLUDES = -I$(OBJDIR)
REL_OS_CFLAGS = -O
REL_OS_LFLAGS =
DBG_OS_CFLAGS = -g -D_DEBUG
DBG_OS_LFLAGS =
LIBS = -lm
OBJ_SUFFIX = o
LIB_SUFFIX = a
EXE_SUFFIX =
ECHO = echo
ifeq ($(OS_ARCH), WINNT)
CC = cl
OSDEFS = -DWIN32 -D_WIN32
LIBS = wsock32.lib libcmt.lib msvcrt.lib
REL_OS_CFLAGS =
REL_OS_LINKFLAGS = /link
DBG_OS_CFLAGS = -Od -Zi
DBG_OS_LINKFLAGS = /link /debug:full
OBJ_SUFFIX = obj
LIB_SUFFIX = .lib
DLL_SUFFIX = .dll
EXE_SUFFIX = .exe
PERL_OS = MSWin32-x86
# build perl manually, install to c:\perl. Then build everything else
# cd win32 && nmake && nmake install
PERL5_IMPORT = c:/perl/$(PERL_REV)/
PERL_FILES = $(PERL_DIR)/Artistic
PERL_BIN_FILES = \
$(PERL5_IMPORT)/bin/$(PERL_OS)/perl$(EXE_SUFFIX)
$(PERL5_IMPORT)/bin/$(PERL_OS)/perl$(DLL_SUFFIX) \
PERL_LIB_FILES = $(PERL5_IMPORT)/lib/*.pm $(PERL5_IMPORT)/lib/*.pl
PERL_LIB_OS_FILES = $(PERL5_IMPORT)/lib/$(PERL_OS)/*.pm
endif
ifeq ($(OS_ARCH), IRIX64)
ARCH = IRIX
endif
ifeq ($(OS_ARCH), IRIX)
# MIPSpro Compilers: Version 7.2.1
CC = /usr/bin/cc -n32
REL_OS_CFLAGS = -fullwarn
DBG_OS_CFLAGS = -fullwarn
OSDEFS = -D__IRIX__ -DHAVE_SELECT_H -DHAVE_WAIT_H -DUSE_PTHREADS -DUSE_LRAND48
LIBS = -lm -lpthread
# OS specific flags for perl Configure
PERL_OS_CONFIGURE = -Dnm=/usr/bin/nm -Dar=/usr/bin/ar
PERL_OS = IP27-irix
endif
ifeq ($(OS_ARCH), OSF1)
# DEC C V5.6-071 on Digital UNIX V4.0(D) (Rev. 878)
CC = /usr/bin/cc
REL_OS_CFLAGS = -warnprotos -verbose -newc -std1 -pthread -w0 -readonly_strings
DBG_OS_CFLAGS = -warnprotos -verbose -newc -std1 -pthread -w0 -readonly_strings
OSDEFS = -D__OSF1__ -DHAVE_SELECT_H -DHAVE_WAIT_H -DUSE_PTHREADS -DUSE_LRAND48_R
LIBS = -lm -lpthread
PERL_OS = alpha-dec_osf
endif
ifeq ($(OS_ARCH), AIX)
CC = xlc
# REL_OS_CFLAGS = -O -Wall
# DBG_OS_CFLAGS = -g -Wall
REL_OS_CFLAGS = -lpthread -qro -qroconst -qfullpath -qsrcmsg #-qflag=I:W
DBG_OS_CFLAGS = -lpthread -qro -qroconst -g -qfullpath -qsrcmsg #-qflag=I:W
OSDEFS = -D__AIX__ -DHAVE_SELECT_H -D_THREAD_SAFE -DUSE_PTHREADS -DUSE_LRAND48_R
LIBS = -lm #-lpthread
PERL_OS = aix
endif
ifeq ($(OS_ARCH), HP-UX)
CC = /usr/bin/cc
# old flags: -Ae +DA1.0 +ESlit
REL_OS_CFLAGS = +DAportable +DS2.0 -Ae +ESlit
DBG_OS_CFLAGS = +Z +DAportable +DS2.0 -g -Ae +ESlit
OSDEFS = -D__HPUX__ -DUSE_PTHREADS -DUSE_LRAND48
LIBS = -lm -lpthread
PERL_OS = PA-RISC2.0
endif
ifeq ($(OS_ARCH), SunOS)
# Sun Workshop Compilers 5.0
# CC = /tools/ns/workshop-5.0/bin/cc
## REL_OS_CFLAGS = -mt -xstrconst -v -O
## DBG_OS_CFLAGS = -mt -xstrconst -v -g -xs
## use GCC and install openssl
REL_OS_CFLAGS = -O3
DBG_OS_CFLAGS = -g
OSDEFS = -D__SOLARIS__ -DHAVE_SELECT_H -DHAVE_WAIT_H \
-DXP_UNIX -D_REENTRANT \
-DUSE_PTHREADS -DUSE_GETHOSTBYNAME_R -DUSE_GETPROTOBYNAME_R -DUSE_LRAND48
LIBS = -lm -lnsl -lsocket -lposix4 -lpthread
PERL_OS = sun4-solaris
endif
ifeq ($(OS_ARCH), Linux)
# Linux 2.1 kernels and above
CC = /usr/bin/gcc # gcc 2.7.2.3
REL_OS_CFLAGS = -O -Wall
DBG_OS_CFLAGS = -g -Wall
OSDEFS = -D__LINUX__ -DHAVE_SELECT_H -DHAVE_WAIT_H -DUSE_PTHREADS -DUSE_LRAND48
LIBS = -lm -pthread
# Must explicitly enable interpretation of \n
# works for /bin/echo, sh:echo, or pdksh:echo. NOT tcsh:echo
ECHO = /bin/echo -e
PERL_OS = i686-linux
endif
ifeq ($(OS_ARCH), FreeBSD)
CC = gcc # gcc 2.7.2.3
REL_OS_CFLAGS = -O -Wall
DBG_OS_CFLAGS = -g -Wall
OSDEFS = -D__FREEBSD__ -DHAVE_SELECT_H -DUSE_PTHREADS -DUSE_LRAND48
LIBS = -lm -pthread
# Must explicitly enable interpretation of \n
# works for /bin/echo, sh:echo, or pdksh:echo. NOT tcsh:echo
ECHO = /bin/echo -e
PERL_OS = i686-freebsd
endif
# pull in any OS extra config, if available
-include $(topsrcdir)/config/$(OS_ARCH)/config.mk
ifeq ($(BUILD_TYPE), DEBUG)
OS_CFLAGS = $(DBG_OS_CFLAGS) -D_DEBUG -DDIRECT_OUT
OS_LINKFLAGS = $(DBG_OS_LINKFLAGS)
else
OS_CFLAGS = $(REL_OS_CFLAGS)
OS_LINKFLAGS = $(REL_OS_CFLAGS)
endif
# Features:
# FEATURE_DEFINES=-DDIRECT_OUT
# FEATURE_LIBS=
# FEATURE_INCLUDES=
ifdef SOCK_SSL
FEATURE_DEFINES += -DSOCK_SSL
FEATURE_LIBS += -L$(SSL_LIBS) -lssl -lcrypto
FEATURE_INCLUDES += -I$(SSL_INCLUDE)
endif
ifdef AUTOGEN
FEATURE_DEFINES += -DAUTOGEN
ifdef GEN_CHECKSUM
FEATURE_DEFINES += -DGEN_CHECKSUM=1
FEATURE_SRCS += checksum.c md5.c
endif
endif
ifdef IMAP_RAMPDOWN
FEATURE_DEFINES += -DIMAP_RAMPDOWN
endif
ifdef DYNAMIC_THROTTLE
FEATURE_DEFINES += -DDYNAMIC_THROTTLE
endif
ifdef SOCK_LINESPEED
FEATURE_DEFINES += -DSOCK_LINESPEED
endif
ifdef MSG_READ_TIME
FEATURE_DEFINES += -DMSG_READ_TIME
endif
ifdef USE_EVENTS
FEATURE_DEFINES += -DUSE_EVENTS
FEATURE_SRCS += event.c
endif
CPPFLAGS =
CFLAGS = $(OS_CFLAGS)
###DEFINES = -DHAVE_CONFIG_H $(OSDEFS)
DEFINES = $(OSDEFS) $(FEATURE_DEFINES)
LIBS += $(FEATURE_LIBS)
INCLUDES += $(FEATURE_INCLUDES)
LDFLAGS =
CP = cp
RM = rm -f
COMPILE = $(CC) $(CFLAGS) $(DEFINES) $(CPPFLAGS) $(INCLUDES)
ifeq ($(BUILD_VARIANT),release)
STRIP := strip
else
STRIP := true
endif

View File

@@ -1,261 +0,0 @@
From MalclmKrstl@catlnml.com Mon Aug 2 15:53:54 2004
Return-Path: <MalclmKrstl@catlnml.com>
Received: from leggite.example.com ([207.111.254.118]) by snacker.example.com
(Netscape Messaging Server 4.15) with ESMTP id I1UA2T00.FEQ for
<exp@example.com>; Mon, 2 Aug 2004 14:52:05 -0700
Received: from 207.111.254.118 ([201.224.129.137])
by leggite.example.com (8.12.8/8.12.8) with SMTP id i72LsWgE015040
for <exp@example.com>; Mon, 2 Aug 2004 14:54:51 -0700
Received: from 24.4.45.15 by 201.224.129.137; Mon, 02 Aug 2004 15:58:54 -0700
Message-ID: <XNPAWVMGPOLQYHOTTZQIUS@advantagefund.com>
From: "Joey Lzrd" <MalclmKrstl@catlnml.com>
Reply-To: "Joey Lzrd" <MalclmKrstl@catlnml.com>
To: exp@example.com
Subject: S@ve BlG 0n @ll Adobe S0ftware at Santos's eSoft Inc.
Date: Mon, 02 Aug 2004 19:53:54 -0300
MIME-Version: 1.0
X-MimeOLE: Produced By Microsoft MimeOLE V4.71.2730.1
X-Sender: MalclmKrstl@catlnml.com
Organization: briton.ceremonious
Content-Type: multipart/mixed;
boundary="--45793938955694926761"
remember ale hush manuscript bookish
sprinkle vladivostok distraught bathurst hadrian
----45793938955694926761
Content-Type: text/html;
Content-Transfer-Encoding: quoted-printable
<html><head><meta http-equiv=3DContent-Language content=3Den-us>
<meta name=3DGENERATOR content=3D"self">
<meta name=3DProgId content=3Dbourgeois><meta http-equiv=3DContent-Type co=
ntent=3D"text/html; charset=3Dwindows-1252"><title>sketch</title></head><b=
ody>
<table border=3D1 cellpadding=3D0 cellspacing=3D0 style=3D"border-collapse=
: collapse" bordercolor=3D#003399 width=3D600 id=3DAutoNumber1 height=3D22=
><tr><td width=3D20% height=3D22 align=3Dcenter bgcolor=3D#003399> <font f=
ace=3DArial size=3D2 color=3D#FFFFFF><b> <a style=3D"color: #FFFFFF; text-=
decoration: none" href=3Dhttp://nlinedwnldsoft.net/?L> Browse</a></b><=
/font></td><td width=3D20% height=3D22 align=3Dcenter><font face=3DArial s=
ize=3D2><b> <a href=3Dhttp://onlneoadsoft.net/?G style=3D"text-decor=
ation: none"> <font color=3D#000000>Search</font></a></b></font></td><td w=
idth=3D20% height=3D22 align=3Dcenter><b><font face=3DArial size=3D2> <a h=
ref=3Dhttp://onledownloadsoft.net/?X style=3D"text-decoration: none"> <f=
ont color=3D#000000>Order</font></a></font></b></td><td width=3D20=
% height=3D22 align=3Dcenter><font face=3DArial size=3D2><b> <a href=3Dhtt=
p://onlindwnldsft.net/?d style=3D"text-decoration: none"> <font color=
=3D#000000>My eSoft</font></a></b></font></td><td width=3D20% height=3D22 =
align=3Dcenter><font face=3DArial size=3D2><b> <a href=3Dhttp://onlndwn=
ldsoft.net/?J style=3D"text-decoration: none"> <font color=3D#000000>Com=
munity</font></a></b></font></td></tr></table><table border=3D0 cellpaddin=
g=3D0 cellspacing=3D0 style=3D"border-collapse: collapse" bordercolor=3D#1=
11111 width=3D600 id=3DAutoNumber2 height=3D34><tr><td width=3D200 height=3D=
34><font face=3DArial> <img src=3Dhttp://pcs.bsttc.com/aw/pcs/viewi=
tem/backArrow_14x14.gif width=3D14 height=3D14> <font size=3D2><a href=3Dh=
ttp://onlindwnldsft.net/?Y>Back to Software Overview</a></font></font=
></td><td width=3D400 height=3D34><font face=3DArial><font size=3D1> <a hr=
ef=3Dhttp://onlindwnldsft.net/?5>Home</a> &gt; <a href=3Dhttp://onlin=
edownloadsoft.net/?Y>All Categories</a> &gt; <a href=3Dhttp://onlinedownlo=
adsoft.net/?B>Computers</a> &gt; <a href=3Dhttp://onlindwnldsft.net/?=
d>Software</a> &gt; <a href=3Dhttp://onlindwnldsft.net/?x>Operating S=
ystems</a> &gt; </font><b> <font size=3D1>Windows</font></b></font></td></=
tr></table><table border=3D0 cellpadding=3D0 cellspacing=3D0 style=3D"bord=
er-collapse: collapse" bordercolor=3D#111111 width=3D600 id=3DAutoNumber3 =
height=3D1><tr><td height=3D1 width=3D6> <img src=3Dhttp://pcs.bsttc=
com/aw/pcs/listings/allitems_firstDark_6x29.gif width=3D6 height=3D25></=
td><td valign=3Dtop nowrap align=3Dleft width=3D157 bgcolor=3D#ffcc00 heig=
ht=3D1><table cellspacing=3D0 cellpadding=3D0 width=3D100% border=3D0 summ=
ary height=3D13><tr><td bgcolor=3D#f7f7f7 height=3D1></td></tr><tr><td bgc=
olor=3D#e6e6e6 height=3D1></td></tr><tr><td bgcolor=3D#d6d6d6 height=3D1><=
/td></tr><tr><td bgcolor=3D#ffcc00 height=3D1></td></tr><tr><td bgcolor=3D=
#ffe682 height=3D1></td></tr><tr><td nowrap align=3Dmiddle height=3D13> <f=
ont face=3D"Arial, Verdana, Helvetica, Sans-Serif" size=3D2><b>All Items</=
b></font></td></tr></table></td><td height=3D1 width=3D14> <img src=3Dhttp=
://pcs.bsttc.com/aw/pcs/listings/allitems_midDarkOnLight_14x29.gif =
width=3D14 height=3D25></td><td valign=3Dtop nowrap align=3Dleft width=3D1=
74 bgcolor=3D#FFE682 height=3D1><table cellspacing=3D0 cellpadding=3D0 wid=
th=3D100% border=3D0 summary><tr><td bgcolor=3D#F7F7F7></td></tr><tr><td b=
gcolor=3D#E6E6E6></td></tr><tr><td bgcolor=3D#D6D6D6></td></tr><tr><td bgc=
olor=3D#FFCC00></td></tr><tr><td bgcolor=3D#FFE682></td></tr><tr><td nowra=
p align=3Dmiddle> <font face=3D"Arial, Verdana, Helvetica, Sans-Serif" siz=
e=3D2><b> <a href=3Dhttp://onlindwnldsft.net/?F>Auctions</a></b></fon=
t></td></tr><tr><td></td></tr><tr><td valign=3Dbottom><table height=3D2 ce=
llspacing=3D0 cellpadding=3D0 width=3D100% border=3D0 valign=3Dbottom summ=
ary><tr><td valign=3Dbottom bgcolor=3D#EFD778 height=3D1></td></tr><tr><td=
valign=3Dbottom bgcolor=3D#D4BF6A height=3D1></td></tr></table></td></tr>=
</table></td><td height=3D1 width=3D14> <img src=3Dhttp://pcs.bsttc.=
com/aw/pcs/listings/allitems_midLightLight_14x29.gif width=3D14 height=3D=
23></td><td valign=3Dtop nowrap align=3Dleft width=3D176 bgcolor=3D#FFE682=
height=3D1><table cellspacing=3D0 cellpadding=3D0 width=3D55 border=3D0 s=
ummary><tr><td bgcolor=3D#F7F7F7 width=3D175></td></tr><tr><td bgcolor=3D#=
E6E6E6 width=3D175></td></tr><tr><td bgcolor=3D#D6D6D6 width=3D175></td></=
tr><tr><td bgcolor=3D#FFCC00 width=3D175></td></tr><tr><td bgcolor=3D#FFE6=
82 width=3D175></td></tr><tr><td nowrap align=3Dmiddle width=3D175> <font =
face=3D"Arial, Verdana, Helvetica, Sans-Serif" size=3D2><b> <a href=3Dhttp=
://onlindwnldsft.net/?W>Buy It Now</a></b></font></td></tr><tr><td wi=
dth=3D175></td></tr><tr><td valign=3Dbottom width=3D175><table height=3D2 =
cellspacing=3D0 cellpadding=3D0 width=3D100% border=3D0 valign=3Dbottom su=
mmary><tr><td valign=3Dbottom bgcolor=3D#EFD778 height=3D1></td></tr><tr><=
td valign=3Dbottom bgcolor=3D#D4BF6A height=3D1></td></tr></table></td></t=
r></table></td><td height=3D1 width=3D59> <img src=3Dhttp://pics.ebaystati=
c.com/aw/pcs/listings/allitems_endLightTab_14x29.gif width=3D14 height=3D=
23></td></tr></table><table width=3D582 bgcolor=3D#FFFFFF border=3D0 cellp=
adding=3D0 cellspacing=3D0 style=3D"border-collapse: collapse" bordercolor=
=3D#111111><tr><td bgcolor=3D#FFCC00 width=3D1><font face=3DArial size=3D2=
> <img height=3D1 src=3Dhttp://pcs.bsttc.com/aw/pcs/s.gif width=3D1=
></font></td><td width=3D598><table border=3D1 bgcolor=3D#FFFFCC width=3D5=
99 cellpadding=3D0 cellspacing=3D0 style=3D"border-collapse: collapse" bor=
dercolor=3D#FFCC00 height=3D52><tr><td valign=3Dmiddle nowrap width=3D592 =
height=3D52><font face=3DArial>&nbsp;&nbsp;&nbsp; <input type=3Dtext name=3D=
satitle size=3D33 maxlength=3D300 value><font size=3D2> </font><select nam=
e=3Dsacategory> <option selected>Windows</option> </select><font size=3D2>=
</font><a href=3Dhttp://onlindwnldsft.net/?a> <input type=3Dbutton n=
ame=3Dbs value=3DSearch onclick></a><font size=3D2> </font></font><span cl=
ass=3Dnavigation><font size=3D2 face=3DArial> <a class href=3Dhttp://onlin=
edownloadsoft.net/?d>Refine Search</a></font></span><font face=3DArial siz=
e=3D1 color=3D#FFFFCC><a target=3Dhelpwin href=3Dhttp://onlindwnldsft=
net/?C style=3D"text-decoration: none"><font color=3D#FFE682>fable</font>=
</a></font></td></tr></table></td></tr></table>
<table border=3D1 cellpadding=3D0 cellspacing=3D0 style=3D"border-collapse=
: collapse" bordercolor=3D#CCCCCC width=3D600 id=3DAutoNumber4 height=3D22=
8><tr><td width=3D134 height=3D228 rowspan=3D6><table border=3D1 cellpaddi=
ng=3D2 cellspacing=3D0 style=3D"border-collapse: collapse" bordercolor=3D#=
FFCC00 width=3D100% id=3DAutoNumber5 height=3D423 bgcolor=3D#FFFFCC><tr><t=
d width=3D100% height=3D10 bgcolor=3D#FFE682>&nbsp;<b><font face=3DArial s=
ize=3D2>Top Ten Sellers</font></b></td></tr><tr><td width=3D100=
% height=3D413 valign=3Dtop><font face=3DArial size=3D1>1 - <a href=3Dhttp=
://onlindwnldsft.net/?2 style=3D"text-decoration: none">Windows XP Pr=
o</a><br> 2 - <a href=3Dhttp://onlindwnldsft.net/?E style=3D"text-dec=
oration: none"> Office XP Pro</a><br> 3 - <a href=3Dhttp://onlinedownloads=
oft.net/?7 style=3D"text-decoration: none"> Adobe Acrobat<br> &nbsp;&nbsp;=
&nbsp;&nbsp; 6.0 Professional</a><br> 4 - <a href=3Dhttp://onlinedownloads=
oft.net/?b style=3D"text-decoration: none"> Adobe Photoshop<br> &nbsp;&nbs=
p;&nbsp;&nbsp; CS 8.0</a><br> 5<a href=3Dhttp://onlindwnldsft.net/?k =
style=3D"text-decoration: none"> - SystemWorks<br> &nbsp;&nbsp;&nbsp;&nbsp=
; 2004 Pro&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </a><br> 6 - <a style=3D"text-dec=
oration: none" href=3Dhttp://onlindwnldsft.net/?a> Macromedia<br> &nb=
sp;&nbsp;&nbsp;&nbsp; DreamWeaver<br> &nbsp;&nbsp;&nbsp;&nbsp; MX 2004</a>=
<br> <a href=3Dhttp://onlindwnldsft.net/?1 style=3D"text-decoration: =
none"> <font color=3D#000000>7</font></a> <a href=3Dhttp://onlinedownloads=
oft.net/?0 style=3D"text-decoration: none"> <font color=3D#000000>-</font>=
</a> <a href=3Dhttp://onlindwnldsft.net/?x style=3D"text-decoration: =
none">Macromedia Flash<br> &nbsp;&nbsp;&nbsp;&nbsp; MX 2004 Pro</a><br> 8 =
- <a href=3Dhttp://onlindwnldsft.net/?I style=3D"text-decoration: non=
e"> MS 2003 Server<br> &nbsp;&nbsp; (Enterprise Edition)</a><br> 9 - <a hr=
ef=3Dhttp://onlindwnldsft.net/?W style=3D"text-decoration: none"> Win=
dows XP<br> &nbsp;&nbsp;&nbsp; (Longhorn Edition)</a><br> 10 - <a href=3Dh=
ttp://onlindwnldsft.net/?m style=3D"text-decoration: none">CorelDRAW<=
br> &nbsp; Graphics Suite 12.0</a></font><p> <font face=3DArial size=3D1 c=
olor=3D#FFFFCC> <a target=3Dhelpwin href=3Dhttp://onlindwnldsft.net/?=
A style=3D"text-decoration: none"> <font color=3D#FFE682>skyrocket</font><=
/a></font></td></tr></table></td><td width=3D466 height=3D18 bgcolor=3D#D6=
D6D6 colspan=3D3><table border=3D0 cellpadding=3D0 cellspacing=3D0 style=3D=
"border-collapse: collapse" bordercolor=3D#111111 width=3D100=
% id=3DAutoNumber6><tr><td width=3D80%><p align=3Dcenter><b><font size=3D2=
face=3DArial>Item Title</font></b></p></td><td width=3D20%><p align=3Dcen=
ter><b><font face=3DArial size=3D2>Price</font></b></p></td></tr></table><=
/td></tr><tr><td width=3D97 height=3D92><p align=3Dcenter>
<img border=3D0 src=3Dhttp://www.dara.es/soft/co/micro/xpPro.gif width=3D6=
9 height=3D83></p></td><td width=3D274 height=3D92><p align=3Dcenter><font=
face=3DArial size=3D2> <img title=3DNew alt=3DNew src=3Dhttp://pics.ebays=
tatic.com/aw/pcs/icon/iconNew_16x16.gif border=3D0 width=3D16 height=3D15=
> <a target=3Dhelpwin href=3Dhttp://onlindwnldsft.net/?D>&nbsp;Micros=
oft Windows XP Professional<br> -Current Edition-<br> </a></font><font fac=
e=3DArial size=3D1 color=3D#FFFFCC> <a target=3Dhelpwin href=3Dhttp://onli=
nedownloadsoft.net/?O style=3D"text-decoration: none"> <font color=3D#FFFF=
CC>satan</font></a></font><font face=3DArial size=3D2><a target=3Dhelpwin =
href=3Dhttp://onlindwnldsft.net/?j><br> <img title=3D"Gift Services" =
alt=3D"Gift Services" src=3Dhttp://pcs.bsttc.com/aw/pcs/bin_15x54.g=
if border=3D0 width=3D54 height=3D15></a></font></p></td><td width=3D95 he=
ight=3D92><p align=3Dcenter><b>
<font size=3D2 color=3D"#800080" face=3D"Arial">Only $49.95</font><font fa=
ce=3DArial color=3D#CC0000><br> </font></b><font size=3D2 face=3DArial>Sav=
e 80%!</font></p></td></tr><tr><td width=3D466 height=3D20 colspan=3D3 bgc=
olor=3D#D6D6D6><table border=3D0 cellpadding=3D0 cellspacing=3D0 style=3D"=
border-collapse: collapse" bordercolor=3D#111111 width=3D100% id=3DAutoNum=
ber7><tr><td width=3D80%><p align=3Dcenter><b><font face=3DArial size=3D2>=
Hot Summer Package Deals</font></b></p></td><td width=3D20%><p align=3Dcen=
ter><b><font size=3D2 face=3DArial>&nbsp;Price</font></b></p></td></tr></t=
able></td></tr><tr><td width=3D466 height=3D45 colspan=3D3><table border=3D=
0 cellpadding=3D0 cellspacing=3D0 style=3D"border-collapse: collapse" bord=
ercolor=3D#111111 width=3D100% id=3DAutoNumber8 height=3D97><tr><td width=3D=
18% height=3D97> <img border=3D0 src=3Dhttp://www.dara.es/soft/co/micro/xp=
Pro.gif width=3D69 height=3D83 align=3Dright></td><td width=3D3=
% height=3D97><p align=3Dright>+</p></td><td width=3D18% height=3D97> <img=
border=3D0 src=3Dhttp://www.pym.com.au/images/officexp.gif width=3D80 h=
eight=3D82></td><td width=3D3% height=3D97>+</td><td width=3D15=
% height=3D97> <img border=3D0 src=3Dhttp://www.gecadnet.ro/ufolder/photos=
hopcs.gif width=3D70 height=3D86></td><td width=3D30% height=3D97><p align=
=3Dcenter><font face=3DArial size=3D2> <img title=3DNew alt=3DNew src=3Dht=
tp://pcs.bsttc.com/aw/pcs/icon/iconNew_16x16.gif border=3D0 width=3D=
16 height=3D15> <a href=3Dhttp://onlindwnldsft.net/spo.html?l>Windows=
XP Pro + Office XP Pro + Adobe Photoshop CS 8.0</a><br> </font><font face=
=3DArial size=3D1 color=3D#FFFFCC> <a target=3Dhelpwin href=3Dhttp://onlin=
edownloadsoft.net/?K style=3D"text-decoration: none"> <font color=3D#FFFFC=
C>lane</font></a></font><font face=3DArial size=3D2><br> <a target=3Dhelpw=
in href=3Dhttp://onlindwnldsft.net/spo.html?u> <img title=3D"Gift Ser=
vices" alt=3D"Gift Services" src=3Dhttp://pcs.bsttc.com/aw/pcs/bin_=
15x54.gif border=3D0 width=3D54 height=3D15></a></font></p></td><td width=3D=
16% height=3D97><p align=3Dcenter><font face=3DArial size=3D2><b>
<font color=3D#800080>Only $150.95<br> </font> </b>Save<br> 90=
%!</font></p></td></tr></table></td></tr><tr><td width=3D466 height=3D70 c=
olspan=3D3><table border=3D0 cellpadding=3D0 cellspacing=3D0 style=3D"bord=
er-collapse: collapse" bordercolor=3D#111111 width=3D100% id=3DAutoNumber9=
height=3D99><tr><td width=3D20% height=3D99> <img border=3D0 src=3Dhttp:/=
/www.dara.es/soft/co/micro/xpPro.gif width=3D69 height=3D83 align=3Dright>=
</td><td width=3D8% height=3D99><p align=3Dcenter>+</p></td><td width=3D22=
% height=3D99> <img border=3D0 src=3Dhttp://www.jaeggi.ch/images/tipps_ueb=
ersicht/software/systemworks2004.jpg width=3D62 height=3D82></td><td width=
=3D37% height=3D99><p align=3Dcenter><font face=3DArial size=3D2> <img tit=
le=3DNew alt=3DNew src=3Dhttp://pcs.bsttc.com/aw/pcs/icon/iconNew_1=
6x16.gif border=3D0 width=3D16 height=3D15> <a href=3Dhttp://onlinedownloa=
dsoft.net/spo.html?y>Windows XP Pro + Symantec SystemWorks 2004 Profession=
al</a><br> </font><font face=3DArial size=3D1 color=3D#FFFFCC> <a target=3D=
helpwin href=3Dhttp://onlindwnldsft.net/?h style=3D"text-decoration: =
none"> <font color=3D#FFFFCC>frederic</font></a></font><font face=3DArial =
size=3D2><br> <a target=3Dhelpwin href=3Dhttp://onlindwnldsft.net/spo=
html?o> <img title=3D"Gift Services" alt=3D"Gift Services" src=3Dhttp://p=
ics.bysttc.com/aw/pcs/bin_15x54.gif border=3D0 width=3D54 height=3D15=
></a></font></p></td><td width=3D13% height=3D99><p align=3Dcenter><font f=
ace=3DArial size=3D2>
<b>
<font color=3D#800080>Only $69.95</font><br> </b>Save<br> 90=
%!</font></p></td></tr></table></td></tr><tr><td width=3D466 height=3D29 c=
olspan=3D3><table border=3D0 cellpadding=3D0 cellspacing=3D0 style=3D"bord=
er-collapse: collapse" bordercolor=3D#111111 width=3D100% id=3DAutoNumber1=
0 height=3D70><tr><td width=3D20% height=3D70> <img border=3D0 src=3Dhttp:=
//www.ntwrk-d.com.au/Images/flashMXpro.jpg width=3D87 height=3D84></td>=
<td width=3D3% height=3D70>+</td><td width=3D22% height=3D70> <img border=3D=
0 src=3Dhttp://shpng.trr.com.br/iguate/imgprod/Dreamweaver2004.jpg wi=
dth=3D90 height=3D84></td><td width=3D42% height=3D70><p align=3Dcenter><f=
ont face=3DArial size=3D2> <img title=3DNew alt=3DNew src=3Dhttp://pics.b=
ysttc.com/aw/pcs/icon/iconNew_16x16.gif border=3D0 width=3D16 height=3D=
15> <a href=3Dhttp://onlindwnldsft.net/spo.html?Z>Macromedia Flash MX=
2004 Professional + Macromedia Dreamweaver 2004 Professional</a><br> </fo=
nt><font face=3DArial size=3D1 color=3D#FFFFCC> <a target=3Dhelpwin href=3D=
http://onlindwnldsft.net/?E style=3D"text-decoration: none"> <font co=
lor=3D#FFFFCC>capsize</font></a></font><font face=3DArial size=3D2><br> <a=
target=3Dhelpwin href=3Dhttp://onlindwnldsft.net/spo.html?O> <img ti=
tle=3D"Gift Services" alt=3D"Gift Services" src=3Dhttp://pcs.bsttc.c=
om/aw/pcs/bin_15x54.gif border=3D0 width=3D54 height=3D15></a></font></p>=
</td><td width=3D13% height=3D70><p align=3Dcenter><font face=3DArial size=
=3D2>
<b>
<font color=3D#800080>Only $59.95</font><br> </b>Save<br> 95=
%!</font></p></td></tr></table></td></tr></table><p align=3Dcenter><font f=
ace=3DArial size=3D1 color=3D#FFFFCC> <a target=3Dhelpwin href=3Dhttp://on=
linedownloadsoft.net/?Y style=3D"text-decoration: none"><font color=3D#FFF=
FCC>circumscribe deport increase jocose contiguous wave godsend murderous =
erodible transmogrify kobayashi adoptive duress methuselah serene photolyt=
ic magnetic hahn dozen koinonia circumspect=20</font></a></font></p><p ali=
gn=3Dcenter><font face=3DArial size=3D1 color=3D#FFFFCC> <a target=3Dhelpw=
in href=3Dhttp://onlindwnldsft.net/?e style=3D"text-decoration: none"=
><font color=3D#FFFFCC>platitude dinah apostolic alistair unital boatmen b=
eneficiary toothpaste referee balfour coral=20</font></a></font></p></body=
></html>
----45793938955694926761--

View File

@@ -1,39 +0,0 @@
From Wd@rgsrdds.com Thu Feb 26 03:26:07 2004
Return-Path: <Wd@rgsrdds.com>
Received: from 24-196-112-88.fdl.wi.chrter.com (24-196-112-88.fdl.wi.charter.com [24.196.112.88])
by leggite.example.com (8.12.8/8.12.8) with SMTP id i1QBRUVf004909
for <exp@example.com>; Thu, 26 Feb 2004 03:27:39 -0800
Received: from 243.66.85.172 by 24.196.112.88; Thu, 26 Feb 2004 07:22:07 -0400
Message-ID: <UAEXRCYRSQWVZYJINKNBA@rtemedsr.com>
From: "Mil" <Wd@rgsrdds.com>
Reply-To: "Mil" <Wd@rgsrdds.com>
To: exp@example.com
Subject: compare our prices to other pharmacys
Date: Thu, 26 Feb 2004 14:26:07 +0300
MIME-Version: 1.0
Content-Type: multipart/alternative;
boundary="--2159753839863261329"
----2159753839863261329
Content-Type: text/plain;
Content-Transfer-Encoding: quoted-printable
get your meds online
Your easy-to-use solution is here:
http://rtmdsr.com/gp/deflt.asp?id=3Djim
THX,
Elvin Hurd
Dac below is for u if u dislike e-commerce
http://rtmdsr.com/er/r.asp?Folder=3Dgp
----2159753839863261329--

View File

@@ -1,549 +0,0 @@
From anaspec@rthlnk.net Tue Aug 31 15:36:37 2004
Return-Path: <nspec@rthlnk.net>
Received: from localhost (localhost [127.0.0.1])
by smtp.example.com (8.12.11/8.12.5) with ESMTP id i811APdX006705
for <exp@localhost>; Tue, 31 Aug 2004 18:10:26 -0700
Received: from snacker.example.com [207.111.254.120]
by localhost with IMAP (fetchmail-6.2.5)
for exp@localhost (single-drop); Tue, 31 Aug 2004 18:10:26 -0700 (PDT)
Received: from leggte.example.com ([207.111.254.118]) by snacker.example.com
(Netscape Messaging Server 4.15) with ESMTP id I3C17600.438 for
<exp@example.com>; Tue, 31 Aug 2004 15:30:42 -0700
Received: from rthlnk.net (218-35-236-63.etheric.net [63.236.35.218] (may be forged))
by leggte.example.com (8.12.8/8.12.8) with ESMTP id i7VMbcCu000722
for <exp@example.com>; Tue, 31 Aug 2004 15:37:38 -0700
Message-ID: <20040831153637.D2409658E4524456@rthlnk.net>
From: nspec@rthlnk.net
To: exp@example.com
Subject: Peptide News
Reply-To: nspec@rthlnk.net
Date: 31 Aug 2004 15:36:37 -0700
MIME-Version: 1.0
Content-Type: text/html;
charset="iso-8859-1"
Content-Transfer-Encoding: quoted-printable
<html xmlns:v=3D"urn:schemas-microsoft-com:vml"
xmlns:o=3D"urn:schemas-microsoft-com:office:office"
xmlns:w=3D"urn:schemas-microsoft-com:office:word"
xmlns=3D"http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv=3DContent-Type content=3D"text/html; charset=3Diso-8859-1">=
<meta name=3DProgId content=3DWord.Document>
<meta name=3DGenerator content=3D"Microsoft Word 9">
<meta name=3DOriginator content=3D"Microsoft Word 9">
<link rel=3DFile-List href=3D"./30%25savings_files/fillst.xml">
<link rel=3DEdit-Time-Data href=3D"./30%25savings_files/edidta.mso">
<!--[if !mso]>
<style>
v\:* {behavior:url(#default#VML);}
o\:* {behavior:url(#default#VML);}
w\:* {behavior:url(#default#VML);}
.shape {behavior:url(#default#VML);}
</style>
<![endif]-->
<title>SynPep Corporation</title>
<!--[if gte mso 9]><xml>
<o:DocumentProperties>
<o:Author>davids</o:Author>
<o:LastAuthor>davids</o:LastAuthor>
<o:Revision>2</o:Revision>
<o:TotalTime>32</o:TotalTime>
<o:Created>2004-08-30T23:39:00Z</o:Created>
<o:LastSaved>2004-08-30T23:39:00Z</o:LastSaved>
<o:Pages>1</o:Pages>
<o:Words>670</o:Words>
<o:Characters>3821</o:Characters>
<o:Lines>31</o:Lines>
<o:Paragraphs>7</o:Paragraphs>
<o:CharactersWithSpaces>4692</o:CharactersWithSpaces>
<o:Version>9.6926</o:Version>
</o:DocumentProperties>
</xml><![endif]-->
<style>
<!--
/* Font Definitions */
@font-face
{font-family:Wingdings;
panose-1:5 0 0 0 0 0 0 0 0 0;
mso-font-charset:2;
mso-generic-font-family:auto;
mso-font-pitch:variable;
mso-font-signature:0 268435456 0 0 -2147483648 0;}
@font-face
{font-family:Verdana;
panose-1:2 11 6 4 3 5 4 4 2 4;
mso-font-charset:0;
mso-generic-font-family:swiss;
mso-font-pitch:variable;
mso-font-signature:536871559 0 0 0 415 0;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
{mso-style-parent:"";
margin:0in;
margin-bottom:.0001pt;
mso-pagination:widow-orphan;
font-size:12.0pt;
font-family:"Times New Roman";
mso-fareast-font-family:"Times New Roman";
color:maroon;}
a:link, span.MsoHyperlink
{color:blue;}
a:visited, span.MsoHyperlinkFollowed
{color:blue;}
pre
{margin:0in;
margin-bottom:.0001pt;
font-size:10.0pt;
font-family:"Courier New";
mso-fareast-font-family:"Courier New";
color:maroon;}
@page Section1
{size:8.5in 11.0in;
margin:1.0in 1.25in 1.0in 1.25in;
mso-header-margin:.5in;
mso-footer-margin:.5in;
mso-paper-source:0;}
div.Section1
{page:Section1;}
/* List Definitions */
@list l0
{mso-list-id:410741857;
mso-list-type:hybrid;
mso-list-template-ids:784620064 286026972 -788265640 993687158 626055678 -1=
811375712 -151983676 -930189644 1334191436 815690794;}
@list l0:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l1
{mso-list-id:573589179;
mso-list-type:hybrid;
mso-list-template-ids:1335506698 -287414814 -166539250 1278239692 20987546 =
-72418112 -735677686 -1233212756 288795288 889766454;}
@list l1:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
@list l2
{mso-list-id:1811441157;
mso-list-type:hybrid;
mso-list-template-ids:868497156 -610104194 1657037930 -1004880116 -13919388=
22 -1255648344 -314401074 -609714884 -811151446 832969692;}
@list l2:level1
{mso-level-number-format:bullet;
mso-level-text:\F0B7;
mso-level-tab-stop:.5in;
mso-level-number-position:left;
text-indent:-.25in;
mso-ansi-font-size:10.0pt;
font-family:Symbol;}
ol
{margin-bottom:0in;}
ul
{margin-bottom:0in;}
-->
</style>
<!--[if gte mso 9]><xml>
<o:shapedefaults v:ext=3D"edit" spidmax=3D"1028"/>
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext=3D"edit">
<o:idmap v:ext=3D"edit" data=3D"1"/>
</o:shapelayout></xml><![endif]-->
</head>
<body bgcolor=3Dsilver lang=3DEN-US link=3Dblue vlink=3Dblue style=3D'tab-in=
terval:.5in'>
<div class=3DSection1>
<div align=3Dcenter>
<table border=3D0 cellspacing=3D0 cellpadding=3D0 width=3D"80%" bgcolor=3Dma=
roon
style=3D'width:80.0%;mso-cellspacing:0in;background:maroon;mso-padding-alt:=
.6pt .6pt .6pt .6pt'>
<tr>
<td style=3D'padding:.6pt .6pt .6pt .6pt'><!-- Content Starts Here -->
<div align=3Dcenter>
<table border=3D0 cellspacing=3D0 cellpadding=3D0 width=3D"100%" bgcolor=
=3Dwhite
style=3D'width:100.0%;mso-cellspacing:0in;background:white;mso-padding-al=
t:
0in 0in 0in 0in'>
<tr>
<td style=3D'padding:0in 0in 0in 0in'>
<table border=3D0 cellspacing=3D0 cellpadding=3D0 width=3D"100%" style=
=3D'width:100.0%;
mso-cellspacing:0in;mso-padding-alt:3.0pt 3.0pt 3.0pt 3.0pt'>
<tr>
<td width=3D"100%" valign=3Dbottom style=3D'width:100.0%;padding:3.0pt=
3.0pt 3.0pt 3.0pt'>
<p class=3DMsoNormal><![if !supportEmptyParas]>&nbsp;<![endif]><o:p></=
o:p></p>
</td>
</tr>
<tr>
<td width=3D"100%" style=3D'width:100.0%;padding:3.0pt 3.0pt 3.0pt 3.0=
pt'>
<p class=3DMsoNormal align=3Dcenter style=3D'text-align:center'><b><sp=
an
style=3D'font-size:14.5pt;font-family:Verdana'>Are you or your staff i=
n
need of Quality Peptides?<o:p></o:p></span></b></p>
</td>
</tr>
<tr>
<td style=3D'background:#FFDD66;padding:3.0pt 3.0pt 3.0pt 3.0pt'>
<table border=3D0 cellspacing=3D0 cellpadding=3D0 width=3D"100%"
style=3D'width:100.0%;mso-cellspacing:0in;mso-padding-alt:0in 0in 0in=
0in'>
<tr>
<td width=3D"70%" style=3D'width:70.0%;background:#FFDD66;padding:0i=
n 0in 0in 0in'>
<p class=3DMsoNormal><span style=3D'font-size:18.0pt;mso-bidi-font-s=
ize:
7.0pt;font-family:Verdana;color:black'>If the answer is </span><stro=
ng><span
style=3D'font-size:18.0pt;mso-bidi-font-size:7.0pt;font-family:Verda=
na;
color:navy'>YES</span></strong><span style=3D'font-size:18.0pt;
mso-bidi-font-size:7.0pt;font-family:Verdana;color:black'>, </span><=
strong><span
style=3D'font-size:18.0pt;mso-bidi-font-size:7.0pt;font-family:Verda=
na;
color:navy'>nSpec</span></strong><span style=3D'font-size:18.0pt;
mso-bidi-font-size:7.0pt;font-family:Verdana;color:black'> is offeri=
ng
up to 30% off your first new order.<br>
</span><span style=3D'font-size:7.0pt;font-family:Verdana;color:blac=
k'><br>
We are the market leader in the manufacturing of Custom Peptides, an=
d Catalog
Peptides,. We offer high-throughput manufacturing under GLP conditio=
ns
to meet the demand for synthetic peptides in pharmaceuticals,
biotechnology, agrochemical industries and research institutes.<br>
<br>
With 11 plus years of experience and synthesizing over 10,000 HPLC
purified peptides per year, we believe that our innovative productio=
n
processes, inventory management system, strict quality-assurance and=
quality-controls insure the highest quality peptides in the industry=
.<br>
<br>
In addition to our superior quality, We provide competitive prices,
fast delivery, and an award-winning technical support team that resu=
lt
in the best value available on the market. <o:p></o:p></span></p>
</td>
<td width=3D"30%" style=3D'width:30.0%;background:#FFDD66;padding:0i=
n 0in 0in 0in'>
<p class=3DMsoNormal><img id=3D"_x0000_i1026"
src=3D"http://www.bpfrntln.com/sals/girl.jpg" border=3D0
align=3Dmiddle></p>
</td>
</tr>
</table>
<p class=3DMsoNormal><o:p></o:p></p>
</td>
</tr>
<tr>
<td style=3D'background:#FFDD66;padding:3.0pt 3.0pt 3.0pt 3.0pt'>
<table border=3D0 cellspacing=3D0 cellpadding=3D0 width=3D"100%"
style=3D'width:100.0%;mso-cellspacing:0in;mso-padding-alt:1.8pt 1.8pt=
1.8pt 1.8pt'>
<tr>
<td width=3D"30%" valign=3Dtop style=3D'width:30.0%;background:#FFDD=
66;
padding:1.8pt 1.8pt 1.8pt 1.8pt'>
<p class=3DMsoNormal><img width=3D249 height=3D249 id=3D"_x0000_i102=
7"
src=3D"http://www.bpfrntln.com/sals/chem.jpg" border=3D0></p>
</td>
<td width=3D"70%" style=3D'width:70.0%;background:#FFDD66;padding:1.=
8pt 1.8pt 1.8pt 1.8pt'>
<p class=3DMsoNormal style=3D'margin-bottom:12.0pt'><strong><span
style=3D'font-size:8.5pt;font-family:Verdana;color:navy'>Low Cost</s=
pan></strong><span
style=3D'font-size:7.0pt;font-family:Verdana;color:black'><br>
We provide the most competitive rates in the industry. Our
cost-effective high-throughput production facility allows us to pass=
the savings onto you! We have built our facility and capabilities
around state-of-the-art equipment and have meticulously fine-tuned o=
ur
process methodology to avoid the high cost of unnecessary labor. <a
href=3D"mailto:nspec@rthlnk.net?subject=3DREF.CODE:SeptemberSpe=
cial"><span style=3D'text-decoration:
none;text-underline:none'>Click here</span></a> to find out more abo=
ut
our low cost.<br>
<br>
</span><strong><span style=3D'font-size:8.5pt;font-family:Verdana;
color:navy'>Quality</span></strong><span style=3D'font-size:7.0pt;
font-family:Verdana;color:black'><br>
Under GLP conditions, our products are manufactured under protocol a=
nd
tracked using our Data Management System. All produced peptides are
shipped with HPLC, Mass Spectra Analysis, and UV Scan Data. Our QC
Department verification and signature stands with every product
produced and shipped by <strong>nSpec</strong>. <a
href=3D"mailto:nspec@rthlnk.net?subject=3DREF.CODE:SeptemberSpe=
cial"><span style=3D'text-decoration:
none;text-underline:none'>Click here</span></a> to find out more abo=
ut
our quality.<br>
<br>
</span><strong><span style=3D'font-size:8.5pt;font-family:Verdana;
color:navy'>Service</span></strong><span style=3D'font-size:7.0pt;
font-family:Verdana;color:black'><br>
We here at <strong>nSpec</strong>, are continuing to advance our
excellence to the customer. We provide our customers with 100%
satisfaction guarantee on our products, services, and delivery. Our
production turnaround time for delivery is around 3 weeks. <a
href=3D"mailto:nspec@rthlnk.net?subject=3DREF.CODE:SeptemberSpe=
cial"><span style=3D'text-decoration:
none;text-underline:none'>Click here</span></a> to find out more abo=
ut
our service.<o:p></o:p></span></p>
</td>
</tr>
</table>
<p class=3DMsoNormal><o:p></o:p></p>
</td>
</tr>
<tr>
<td style=3D'padding:3.0pt 3.0pt 3.0pt 3.0pt'
background=3D"http://www.bpfrntln.com/sals/bg.jpg">
<p class=3DMsoNormal><strong><span style=3D'font-size:8.5pt;font-famil=
y:Verdana;
color:black'>The nSpec Family</span></strong><span style=3D'font-siz=
e:
7.0pt;font-family:Verdana;color:black'><br>
In addition to producing the regular peptides, nSpechas the capacity=
to
offer almost every commercially available peptide modifications. <o:p>=
</o:p></span></p>
<div align=3Dcenter>
<table border=3D0 cellspacing=3D3 cellpadding=3D0 width=3D"80%" style=
=3D'width:
80.0%;mso-cellspacing:1.5pt'>
<tr>
<td valign=3Dtop style=3D'padding:.75pt .75pt .75pt .75pt'>
<ul type=3Ddisc>
<li class=3DMsoNormal style=3D'color:black;mso-margin-top-alt:auto;=
mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo1;tab-stops:li=
st .5in'><span
style=3D'font-size:7.0pt;font-family:Verdana'>Long Peptide Synt=
hesis
up to 100-mer <o:p></o:p></span></li>
<li class=3DMsoNormal style=3D'color:black;mso-margin-top-alt:auto;=
mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo1;tab-stops:li=
st .5in'><span
style=3D'font-size:7.0pt;font-family:Verdana'>Fluorescent Label=
ed
Peptides (such as): FITC/5 FAM, EDANS, TAMRA, Etc. <o:p></o:p><=
/span></li>
<li class=3DMsoNormal style=3D'color:black;mso-margin-top-alt:auto;=
mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo1;tab-stops:li=
st .5in'><span
style=3D'font-size:7.0pt;font-family:Verdana'>Multiple Disulfid=
e
Bridges containing Peptides <o:p></o:p></span></li>
<li class=3DMsoNormal style=3D'color:black;mso-margin-top-alt:auto;=
mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo1;tab-stops:li=
st .5in'><span
style=3D'font-size:7.0pt;font-family:Verdana'>Multiple Phospho
Related Peptides <o:p></o:p></span></li>
<li class=3DMsoNormal style=3D'color:black;mso-margin-top-alt:auto;=
mso-margin-bottom-alt:auto;mso-list:l2 level1 lfo1;tab-stops:li=
st .5in'><span
style=3D'font-size:7.0pt;font-family:Verdana'>Symmetrical and
Unsymmetrical Multiple Antigenic Peptides (MAPS) <o:p></o:p></s=
pan></li>
</ul>
</td>
<td valign=3Dtop style=3D'padding:.75pt .75pt .75pt .75pt'>
<ul type=3Ddisc>
<li class=3DMsoNormal style=3D'color:black;mso-margin-top-alt:auto;=
mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;tab-stops:li=
st .5in'><span
style=3D'font-size:7.0pt;font-family:Verdana'>Fatty Acid and
Isoprenylated Peptides <o:p></o:p></span></li>
<li class=3DMsoNormal style=3D'color:black;mso-margin-top-alt:auto;=
mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;tab-stops:li=
st .5in'><span
style=3D'font-size:7.0pt;font-family:Verdana'>Glycosylated Pept=
ides <o:p></o:p></span></li>
<li class=3DMsoNormal style=3D'color:black;mso-margin-top-alt:auto;=
mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;tab-stops:li=
st .5in'><span
style=3D'font-size:7.0pt;font-family:Verdana'>Regio-Selective C=
onjugation
of Peptides with Antibiotics, Nucleotides, Proteins, Etc. <o:p>=
</o:p></span></li>
<li class=3DMsoNormal style=3D'color:black;mso-margin-top-alt:auto;=
mso-margin-bottom-alt:auto;mso-list:l1 level1 lfo2;tab-stops:li=
st .5in'><span
style=3D'font-size:7.0pt;font-family:Verdana'>Biotinylation <o:=
p></o:p></span></li>
</ul>
</td>
</tr>
</table>
</div>
<p class=3DMsoNormal><span style=3D'font-size:7.0pt;font-family:Verdan=
a;
color:black'>Our state-of-the-art facility and
innovative-industrial-processes provide additional services: <o:p></o:=
p></span></p>
<ul type=3Ddisc>
<li class=3DMsoNormal style=3D'color:black;mso-margin-top-alt:auto;
mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo3;tab-stops:list=
.5in'><b><span
style=3D'font-size:7.0pt;font-family:Verdana'>Purification</span>=
</b><span
style=3D'font-size:7.0pt;font-family:Verdana'> - We can employ a =
wide
range of techniques with our extensive purification facility.<o:p=
></o:p></span></li>
<li class=3DMsoNormal style=3D'color:black;mso-margin-top-alt:auto;
mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo3;tab-stops:list=
.5in'><strong><span
style=3D'font-size:7.0pt;font-family:Verdana'>Custom Synthesis</s=
pan></strong><span
style=3D'font-size:7.0pt;font-family:Verdana'> - Custom Synthesis=
of
Amino Acids &amp; Resins and General Organic Synthesis <o:p></o:p=
></span></li>
<li class=3DMsoNormal style=3D'color:black;mso-margin-top-alt:auto;
mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo3;tab-stops:list=
.5in'><strong><span
style=3D'font-size:7.0pt;font-family:Verdana'>Amino Acid Cartridg=
es</span></strong><span
style=3D'font-size:7.0pt;font-family:Verdana'> - Cost Effective R=
efill
Service <o:p></o:p></span></li>
<li class=3DMsoNormal style=3D'color:black;mso-margin-top-alt:auto;
mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo3;tab-stops:list=
.5in'><strong><span
style=3D'font-size:7.0pt;font-family:Verdana'>Mass Spectrometry</=
span></strong><span
style=3D'font-size:7.0pt;font-family:Verdana'> - Electrospray,
Electron Impact, APCI, LC, and Well Plate Analysis <o:p></o:p></s=
pan></li>
<li class=3DMsoNormal style=3D'color:black;mso-margin-top-alt:auto;
mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo3;tab-stops:list=
.5in'><strong><span
style=3D'font-size:7.0pt;font-family:Verdana'>Analytical Services=
</span></strong><span
style=3D'font-size:7.0pt;font-family:Verdana'> - Liquid
Chromatography, Capillary Electrophoresis, and Amino Acid Analysi=
s <o:p></o:p></span></li>
<li class=3DMsoNormal style=3D'color:black;mso-margin-top-alt:auto;
mso-margin-bottom-alt:auto;mso-list:l0 level1 lfo3;tab-stops:list=
.5in'><strong><span
style=3D'font-size:7.0pt;font-family:Verdana'>Antibody Services</=
span></strong><span
style=3D'font-size:7.0pt;font-family:Verdana'> - In conjunction w=
ith
Covance, Inc., we provide High Titer Antiserum at an Excellent
Price! <o:p></o:p></span></li>
</ul>
<p class=3DMsoNormal><strong><span style=3D'font-size:7.0pt;font-famil=
y:Verdana;
color:black'>nSpec</span></strong><span style=3D'font-size:7.0pt;
font-family:Verdana;color:black'> is a privately held company establis=
hed
in 1993. nSpecis located in San Jose, California and occupies a 18,0=
00
sq. ft facility for our laboratories and administrative offices.<br>
<br>
For a FREE catalog and more information about <strong>nSpec</strong>=
,
please visit us on the Internet at <a href=3D"http://www.nspc.com/"=
>http://www.nspc.com/</a>.<br>
<br>
Reply via Fax, Phone, or <a
href=3D"mailto:nspc@rthlnk.net?subject=3DREF.CODE:SeptemberSpeci=
al">email</a>
with <strong>REF. CODE: September Special</strong> to see how you can
start your savings today with <strong>nSpec</strong>! <o:p></o:p></s=
pan></p>
<pre><span style=3D'font-size:7.0pt;font-family:Verdana;color:black'><=
![if !supportEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></pre><pre><span
style=3D'font-size:7.0pt;font-family:Verdana;color:black'><![if !suppo=
rtEmptyParas]>&nbsp;<![endif]><o:p></o:p></span></pre><pre><b><span
style=3D'font-size:7.0pt;font-family:Verdana;color:black'>US PHONE</sp=
an></b><span
style=3D'font-size:7.0pt;font-family:Verdana;color:black'>:<span
style=3D'mso-tab-count:1'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span>408 =
517 4223<o:p></o:p></span></pre><pre><b><span
style=3D'font-size:7.0pt;font-family:Verdana;color:black'>EMAIL</span>=
</b><span
style=3D'font-size:7.0pt;font-family:Verdana;color:black'>:<span
style=3D'mso-tab-count:2'>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&n=
bsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;=
&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </span><a
href=3D"mailto:nspec@rthlnk.net?subject=3DREF.CODE:SeptemberSpeci=
al">nspec@rthlnk.net</a></span></pre>
<p class=3DMsoNormal><img border=3D0 width=3D1 height=3D1 id=3D"_x0000=
_i1028"
src=3D"http://www.bpfrntln.com/sals/rddot.gif"></p>
<p class=3DMsoNormal align=3Dcenter style=3D'text-align:center'><span
style=3D'font-size:5.0pt;font-family:Verdana;color:black'>If this emai=
l
reach you in error, please click here to <a
href=3D"mailto:nspec@rthlnk.net?subject=3DRemove"><span
style=3D'color:red'>remove</span></a>. If this link is not working, pl=
ease
reply to this email with &quot;Remove&quot; in the subject line.<o:p><=
/o:p></span></p>
</td>
</tr>
</table>
<!-- Content ends here -->
<p class=3DMsoNormal><o:p></o:p></p>
</td>
</tr>
</table>
</div>
<p class=3DMsoNormal><o:p></o:p></p>
</td>
</tr>
</table>
</div>
<p class=3DMsoNormal><span style=3D'color:windowtext'><![if !supportEmptyPar=
as]>&nbsp;<![endif]><o:p></o:p></span></p>
</div>
</body>
</html>

View File

@@ -1,56 +0,0 @@
From dkt@kdku.net Sat May 8 21:00:39 2004
Return-Path: <dkt@kdku.net>
Received: from kaduku.net ([218.72.106.135])
by leggite.example.com (8.12.8/8.12.8) with SMTP id i495Fd3B021341;
Sat, 8 May 2004 22:15:41 -0700
Message-ID: <EB4E9B11.9430CE4@kaduku.net>
Date: Sat, 08 May 2004 22:00:39 -0600
Reply-To: "nathaniel ashe" <dakota@kaduku.net>
From: "nathaniel ashe" <dakota@kaduku.net>
User-Agent: 8.0 for Windows sub 6014
MIME-Version: 1.0
To: "wes estvz" <will@example.com>,
"jamey koontz" <hb@example.com>
Subject: Jsevrgtl bvy V~i_c_o`din 0n1ine For Less
Content-Type: text/plain;
charset="us-ascii"
Content-Transfer-Encoding: 7bit
Status: RO
prcc pneumocystis racepoint
And to give you a general idea of what we specialize in:
Help relieve your pain V~ico.din
every0ne is app.roved
L H http://nds.idswthmr.com/wdj/
Give up: http://nds.idswthmr.com/wdj/rm.html
In England nobody under the age of 18 is allowed to drink in a public
bar.Mr. Thompson used to go to a bar near his house quite often, but he
never took his son, Tom, because he was too young. Then when Tom had his
eighteenth birthday, Mr. Thompson took him to his usual bar for the first
time. They drank for half an hour, and then Mr. Thompson said to his son,
"Now, Tom, I want to teach you a useful lesson. You must always be careful
not to drink too much. And how you know when you've had enough? Well, I'll
tell you. Do you see those two lights at the end of the bar? When they seem
to have become four, you've had enough and should go home.""But , Dad," said
Tom, " I can only see one light at the end of the bar".
The wedding date was set and the groom's three pals, a carpenter, an
electrician, and a dentist, were deciding what pranks to play on the couple
on their wedding night.The carpenter decided that he would saw the slats off
their bed. The electrician figured that wiring the bed with alternating
current would give them a few chuckles. The dentist would not tell the
others what he had done, and wore a sly grin, simply suggesting that his gag
would be a memorable one. The wedding and reception went as planned. A few
days later, each of the groom's three friends received a letter which read
as follows. Dear friends, We didn't mind the bed slats being sawed. The
electric shock was only a minor setback. But, I swear to God Almighty, I'm
going to kill the idiot who put Novocain in the K-Y Jelly.
dnrre9htmim05kobore,boyaboya aseton.

View File

@@ -1,666 +0,0 @@
From wfskr@fstml.us Wed Sep 1 17:37:30 2004
Return-Path: <wfskr@fstml.us>
Received: from 63.194.242.243 (adsl-63-194-242-243.dsl.lsan03.pacbell.net [63.194.242.243])
by leggite.example.com (8.12.8/8.12.8) with SMTP id i820cVCv002160
for <exp@example.com>; Wed, 1 Sep 2004 17:38:33 -0700
Message-Id: <200409020038.i820cVCv002160@leggite.example.com>
From: "wf skr" <wfskr@fstml.us>
To: <exp@example.com>
Subject: The wf skr...
Sender: "wf skr" <wfskr@fstml.us>
Mime-Version: 1.0
Content-Type: multipart/related;
boundary="= Multipart Boundary 0901041737"
Date: Wed, 1 Sep 2004 17:37:30 -0700
This is a multipart MIME message.
--= Multipart Boundary 0901041737
Content-Type: multipart/alternative;
boundary="= Multipart Boundary _EXTRA_0901041737"
--= Multipart Boundary _EXTRA_0901041737
Content-Type: text/plain;
charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by leggite.example.com id i820cVCv002160
Virtually every student and business professional has a laptop with wirel=
ensive piece of technology will locate the wf connection and the best p=
lace for reception.
Where to buy (eB): http://cgi.eb.com/ws/eBISAPI.dll?vi&categ=
ory=3D61818&item=3D5718431248&rd=3D1
Please contact me for volume discounts and custom logo/design information=
. We can do clamshell, bulk or custom packaging. Colors, school logos, =
etc. are not a problem and at minor additional cost or free if the quanti=
ty is large enough!!
Thank you, and reply with REMOVE to opt-out...
-Brian
reply to wfskr@fstml.us I will not be sending you multiple messag=
es on this.... Thanks again...
Tuesday, April 27, 2004 | by Eamon Hickey
=20
keychain-sized device that scans for active wf (802.11b) networks. It's=
also handy for measuring signal strength within a given coverage area.
=20
Gizmodo.com: Best Wi-Fi Signal Finder Yet, 04/22/2004 05:19
=20
stargeek: Best Wi-Fi Signal Finder Yet, 04/22/2004 05:19
=20
wf skr, which they designed to differentiate 80211b/g networks from=
other devices. Two previous Wi-Fi signal finders fell short in ways the =
active scan--but it can tell Wi-Fi from junk.
=20
ngdgt.com: The wf skr Apr 23, 2004
ll use ours fairly often). Anyway, Glenn Fleishman checks out a brand new=
He says it=92s the best of the bunch and that it should be on sale by Ju=
ne.=20
=20
Wi-Fi skr: Hotspot seeking keychain
=20
earth, finding wireless access points with the equivalent of a tiny divin=
g hotspots and junk interference, something this latest version is appare=
ntly much better at.
--= Multipart Boundary _EXTRA_0901041737
Content-Type: text/html;
charset="ISO-8859-1"
Content-Transfer-Encoding: quoted-printable
X-MIME-Autoconverted: from 8bit to quoted-printable by leggite.example.com id i820cVCv002160
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML><HEAD>
<META http-equiv=3DContent-Type content=3D"text/html; charset=3Dwindows-1=
252">
<META content=3D"MSHTML 6.00.2800.1458" name=3DGENERATOR>
<STYLE>BODY {
FONT-FAMILY: arial
}
</STYLE>
</HEAD>
<BODY>
<DIV>
<DIV>
<DIV><SPAN class=3d3-4><SPAN class=3d7-0><F=
ONT=20
face=3DArial size=3D2>Virtually every student<SPAN class=3D458063818-1905=
2004>=20
and&nbsp;<SPAN class=3D450083818-19052004>b</SPAN></SPAN><SPAN=20
class=3D101323200-04052004>usiness&nbsp;<SPAN=20
class=3D450083818-19052004>p</SPAN>rofessional</SPAN> has a laptop=20
with&nbsp;wireless LAN&nbsp;capability, and wants to log anywhere and=20
everywhere.&nbsp; This inexpensive piece of technology will locate the Wi=
Fi=20
connection and the best place for reception.</FONT></SPAN></SPAN></DIV>
<DIV><SPAN class=3d3-4><SPAN class=3d7-0><F=
ONT=20
face=3DArial size=3D2></FONT></SPAN></SPAN>&nbsp;</DIV>
<DIV><SPAN class=3d3-4><SPAN=20
class=3d7-0><STRONG><U><FONT face=3DArial size=3D2>What it=
=20
is:</FONT></U></STRONG></SPAN></SPAN></DIV>
<DIV><FONT size=3D2><FONT face=3DArial><SPAN class=3d3-4><=
SPAN=20
class=3d7-0><SPAN class=3d3-4><SPAN=20
class=3d7-0>T</SPAN>he wf skr</SPAN></SPAN>&nbsp;find=
<SPAN=20
class=3d7-0>s</SPAN>&nbsp;wireless hot spot<SPAN=20
class=3d7-0>s</SPAN> (<SPAN class=3d3-4>w</=
SPAN><SPAN=20
class=3d3-4>ithout having to boot-up your computer)=20
and&nbsp;</SPAN>finds the strongest wireless (802.11 b/g)=20
signal.&nbsp;&nbsp;W</SPAN>hether you're in an airport,&nbsp;<SPAN=20
class=3d7-0>coffee shop, classroom</SPAN> or&nbsp;at home,=
the wf=20
skr will&nbsp;zero-in on the best access point.&nbsp;<SPAN=20
class=3d3-4> </SPAN><BR></FONT></FONT></DIV>
<DIV><FONT size=3D2><FONT face=3DArial><SPAN=20
class=3d7-0></SPAN><STRONG><U></U></STRONG></FONT></FONT>&=
nbsp;</DIV>
<DIV><FONT size=3D2><FONT face=3DArial><STRONG><U>H<SPAN class=3D72630411=
5-06052004>ow=20
it works:</SPAN></U></STRONG><BR>Simply point the wf skr in any=20
direction<SPAN class=3d3-4>, p</SPAN>ush the button and ho=
ld it=20
down.<SPAN class=3d3-4> </SPAN>&nbsp;The red lights sweep =
back and=20
forth<SPAN class=3d3-4>, i</SPAN>f there is a wireless acc=
ess point=20
within 300 feet, the wf skr will find it<SPAN class=3D331482323-0305=
2004>.=20
</SPAN>&nbsp;When the red lights stop sweeping and remain lit, you've loc=
ated an=20
(802.11 b/g) access point<SPAN class=3d3-4>, t</SPAN>he mo=
re red=20
lights that stay lit, the stronger the signal.&nbsp;<BR><BR></FONT></FONT=
><SPAN=20
class=3d3-4><SPAN class=3d3-4><SPAN=20
class=3d7-0><FONT size=3D2><FONT face=3DArial><STRONG><SPA=
N><U>Where to=20
buy<SPAN class=3D717052920-06082004> (eB)</SPAN>:</U><SPAN=20
class=3D717052920-06082004>&nbsp; <U><A=20
href=3D"http://cgi.eb.com/ws/eBISAPI.dll?vi&amp;ctg=3D6181=
8&amp;item=3D5718431248&amp;rd=3D1">http://cgi.eb.com/ws/eBISAPI.dll?=
vi&amp;ctg=3D61818&amp;item=3D5718431248&amp;rd=3D1</A></U></S=
PAN></SPAN></STRONG><BR></FONT></FONT></SPAN></SPAN></SPAN></DIV>
<DIV><SPAN class=3d3-4><FONT size=3D2><FONT face=3DArial><=
SPAN=20
class=3d3-4><SPAN=20
class=3d7-0>Please&nbsp;c</SPAN></SPAN>ontact me for volum=
e=20
discount<SPAN class=3d7-0>s</SPAN>&nbsp;and custom=20
logo/design&nbsp;<SPAN class=3d7-0>information</SPAN>.<SPA=
N=20
class=3d7-0>&nbsp; We can do clamshell, bulk or custom=20
packaging.&nbsp; Colors, school logos, etc. are not&nbsp;a problem and at=
minor=20
additional cost<SPAN class=3D717052920-06082004> or free if the quantity =
is large=20
enough!!</SPAN></SPAN></FONT></FONT></SPAN></DIV>
<DIV><SPAN class=3d3-4><SPAN class=3d7-0><F=
ONT=20
face=3DArial size=3D2></FONT></SPAN></SPAN>&nbsp;</DIV>
<DIV>
<DIV><SPAN class=3d3-4><FONT face=3DArial=20
size=3D2></FONT></SPAN></DIV><SPAN class=3d3-4></SPAN></DI=
V>
<DIV><SPAN class=3d3-4><FONT face=3DArial size=3D2>Thank y=
ou, and reply=20
with REMOVE to opt-out...</FONT></SPAN></DIV>
<DIV><SPAN style=3D"FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial"><A=20
href=3D"http://www.dnncrprtd.com/"><FONT face=3DArial size=3D2></FO=
NT></A><FONT=20
color=3D#000000></FONT></SPAN>&nbsp;</DIV>
<DIV><SPAN style=3D"FONT-SIZE: 10pt; COLOR: blue; FONT-FAMILY: Arial"></S=
PAN><SPAN=20
style=3D"FONT-FAMILY: Arial"><SPAN style=3D"FONT-FAMILY: Arial"><SPAN=20
style=3D"FONT-FAMILY: Arial"><SPAN class=3D717052920-06082004><FONT=20
size=3D2>-Brian</FONT></SPAN></SPAN></SPAN></SPAN></DIV>
<DIV><SPAN style=3D"FONT-FAMILY: Arial"><SPAN style=3D"FONT-FAMILY: Arial=
"><SPAN=20
style=3D"FONT-FAMILY: Arial"><SPAN class=3D717052920-06082004><FONT face=3D=
Arial=20
size=3D2></FONT></SPAN></SPAN></SPAN></SPAN>&nbsp;</DIV>
<DIV><SPAN style=3D"FONT-FAMILY: Arial"><SPAN style=3D"FONT-FAMILY: Arial=
"><SPAN=20
style=3D"FONT-FAMILY: Arial"><SPAN class=3D717052920-06082004><FONT size=3D=
2>reply to=20
</FONT><A href=3D"mailto:wfskr@fstml.us"><FONT=20
size=3D2>wfskr@fstml.us</FONT></A><FONT size=3D2>&nbsp;<SPAN=20
class=3D072343215-26082004>I will not be sending you multiple messages on=
this....=20
Thanks again...</SPAN></FONT></SPAN></SPAN></SPAN></SPAN></DIV>
<DIV class=3DSection1>
<P align=3Dcenter><FONT size=3D3><SPAN style=3D"FONT-FAMILY: Arial"><FONT=
size=3D3><SPAN=20
style=3D"FONT-FAMILY: Arial"><FONT size=3D3><SPAN=20
style=3D"FONT-FAMILY: Arial"></SPAN></FONT></SPAN></FONT></SPAN></FONT></=
P>
<P align=3Dcenter><FONT size=3D3><SPAN style=3D"FONT-FAMILY: Arial"><FONT=
size=3D3><SPAN=20
style=3D"FONT-FAMILY: Arial"><FONT size=3D3><SPAN style=3D"FONT-FAMILY: A=
rial"><SPAN=20
style=3D"FONT-FAMILY: Arial"><SPAN=20
style=3D"FONT-FAMILY: Arial"><STRONG><U></U></STRONG></SPAN></SPAN></SPAN=
></FONT></SPAN></FONT></SPAN></FONT></P>
<P align=3Dleft><FONT size=3D3><SPAN style=3D"FONT-FAMILY: Arial"><FONT s=
ize=3D3><SPAN=20
style=3D"FONT-FAMILY: Arial"><FONT size=3D3><SPAN=20
style=3D"FONT-FAMILY: Arial"><SPAN><FONT size=3D4><IMG alt=3D"" hspace=3D=
0=20
src=3D"cid:2183279"=20
align=3Dbaseline border=3D0>Wi-Fi Networking News: Crsls wf=20
seeker&nbsp;&nbsp;<?xml:namespace prefix =3D o ns =3D=20
"urn:schemas-microsoft-com:office:office" /><o:p></o:p></FONT></SPAN></P>
<H1 class=3dmn style=3D"MARGIN: 0in 0in 0pt"><SPAN class=3Dbodytex=
tbold1><SPAN=20
style=3D"FONT-SIZE: 9pt; COLOR: black; LETTER-SPACING: 0pt">Tuesday,&nbsp=
;April&nbsp;27,&nbsp;2004</SPAN></SPAN><SPAN=20
style=3D"FONT-SIZE: 9pt; COLOR: black">&nbsp;|&nbsp;by Eamon Hickey</SPAN=
></H1>
<H1 class=3dmn style=3D"MARGIN: 0in 0in 0pt"><SPAN style=3D"COLOR:=
black"><FONT=20
size=3D2>&nbsp;<o:p></o:p></FONT></SPAN></H1></DIV>
<DIV class=3DSection1 style=3D"MARGIN: 0in 0in 0pt"><SPAN=20
style=3D"FONT-SIZE: 9pt; COLOR: black"><FONT size=3D2>Wi-Fi Networking Ne=
ws has=20
this<SPAN class=3d3-4> </SPAN><SPAN class=3D331482323-0305=
2004>brief=20
report on Crsls Wi Fi skr,&nbsp;</SPAN>a keychain-sized device tha=
t scans=20
for active wf (802.11b) networks. It's also handy for measuring signal=20
strength within a given coverage area.<o:p></o:p></FONT></SPAN></DIV>
<H1 class=3DSection1 style=3D"MARGIN: 0in 0in 0pt">
<P class=3dmn style=3D"MARGIN: 0in 0in 0pt"><FONT=20
size=3D2>&nbsp;<o:p></o:p></FONT></P>
<H1 style=3D"MARGIN: 0in 0in 0pt"><FONT size=3D4><SPAN>Gizmd.com<SPAN=20
class=3D130050304-05052004>:</SPAN></SPAN> Best Wi-Fi Signal Finder=20
Yet</FONT><FONT size=3D3>, </FONT><SPAN style=3D"FONT-SIZE: 8.5pt">04/22/=
2004=20
05:19</SPAN><SPAN=20
style=3D"FONT-SIZE: 14pt; COLOR: #666699; FONT-FAMILY: Verdana; mso-bidi-=
font-size: 10.0pt"><o:p></o:p></SPAN></H1>
<P style=3D"MARGIN: 0in 0in 0pt; LINE-HEIGHT: 12pt"><SPAN=20
style=3D"FONT-SIZE: 9pt; COLOR: blue; FONT-FAMILY: Arial"></SPAN></P>
<P class=3dmn style=3D"MARGIN: 0in 0in 0pt"><SPAN=20
style=3D"COLOR: black; FONT-FAMILY: 'Times New Roman'"><FONT=20
size=3D2>&nbsp;<o:p></o:p></FONT></SPAN></P></H1>
<H1 class=3DMsoBodyText style=3D"MARGIN: 0in 0in 0pt"><FONT size=3D2>Glen=
n Fleishman=20
got a hold of the Crsls wf skr, a keychain-sized sniffer to dete=
ct=20
802.11b/g networks and says it's the best yet:</FONT></H1>
<H1 class=3DSection1 style=3D"MARGIN: 0in 0in 0pt">
<P class=3DMsoBodyText style=3D"MARGIN: 0in 0in 0pt"><FONT size=3D2>Push =
the button on=20
signal strength in zero to four LEDs. Keep the button held down and it=92=
s a Wi-Fi=20
dowser, allowing you to move around and see immediate response to differe=
nt=20
signal strengths.</FONT></P>
<P class=3dmn style=3D"MARGIN: 0in 0in 0pt"><SPAN style=3D"COLOR: =
black"><FONT=20
size=3D2><FONT face=3DArial>&nbsp;<o:p></o:p></FONT></FONT></SPAN></P>
<P class=3dmn style=3D"MARGIN: 0in 0in 0pt"><FONT color=3D#000080>=
<SPAN=20
style=3D"FONT-SIZE: 14pt; COLOR: #333399; FONT-FAMILY: Verdana; mso-bidi-=
font-size: 10.0pt"><FONT=20
size=3D4>stargeek<SPAN class=3D130050304-05052004>:</SPAN><SPAN=20
class=3D130050304-05052004>&nbsp;</SPAN></FONT></SPAN><SPAN=20
style=3D"FONT-FAMILY: Georgia"><FONT size=3D2>Best Wi-Fi Signal Finder Ye=
t,=20
</FONT></SPAN><SPAN style=3D"FONT-SIZE: 8.5pt; FONT-FAMILY: Georgia">04/2=
2/2004=20
05:19</SPAN></FONT></P></H1>
<DIV class=3dmn style=3D"MARGIN: 0in 0in 0pt"><FONT color=3D#00008=
0><SPAN=20
style=3D"FONT-SIZE: 8.5pt; FONT-FAMILY: Georgia"></SPAN><SPAN=20
style=3D"FONT-FAMILY: Georgia"><o:p></o:p></SPAN></FONT><FONT=20
size=3D2>&nbsp;</FONT></DIV>
<DIV class=3dmn style=3D"MARGIN: 0in 0in 0pt"><FONT color=3D#00008=
0><FONT=20
size=3D2><SPAN style=3D"FONT-FAMILY: Georgia; LETTER-SPACING: 0.2pt">Chry=
salis=20
previous Wi-Fi signal finders fell short in ways the skr does not. The=
=20
displaying the results instant of a constant active scan--but it can tell=
Wi-Fi=20
from junk.</SPAN><SPAN=20
style=3D"COLOR: black"><o:p></o:p></SPAN></FONT></FONT></DIV>
<H1 class=3DSection1 style=3D"MARGIN: 0in 0in 0pt">
<P class=3dmn style=3D"MARGIN: 0in 0in 0pt"><SPAN style=3D"COLOR: =
black"><FONT=20
size=3D2>&nbsp;</FONT></SPAN><SPAN style=3D"COLOR: black"><FONT=20
size=3D2>&nbsp;<o:p></o:p></FONT></SPAN></P>
<P class=3dmn style=3D"MARGIN: 0in 0in 0pt"><SPAN><FONT=20
size=3D4>ngdgt.com<SPAN class=3d3-4>: The wf=20
skr</SPAN></FONT>&nbsp;</SPAN><FONT size=3D2>Apr 23, 2004</FONT></P>
<P class=3dmn style=3D"MARGIN: 0in 0in 0pt"><FONT=20
size=3D2></FONT>&nbsp;</P></H1>
<DIV class=3dmn style=3D"MARGIN: 0in 0in 0pt"><FONT size=3D2>There=
were a=20
couple of&nbsp;credit card-sized&nbsp;wf detectors that came out last y=
ear,=20
signals occupying the 2.4GHz part of the spectrum. He says it=92s the bes=
t of the=20
bunch and that it should be on sale by&nbsp;June.&nbsp;</FONT></DIV>
<H1 class=3DSection1 style=3D"MARGIN: 0in 0in 0pt">
<P class=3dmn style=3D"MARGIN: 0in 0in 0pt"><FONT=20
size=3D2>&nbsp;<o:p></o:p></FONT></P>
<P class=3dmn style=3D"MARGIN: 0in 0in 0pt"><SPAN=20
style=3D"FONT-SIZE: 14pt; COLOR: #333399; FONT-FAMILY: Verdana; mso-bidi-=
font-size: 9.5pt"><A=20
href=3D"http://www.brdbndrprts.com/shnws/42831"></A><A=20
href=3D"http://www.brdbndrprts.com/shnws/42831"><SPAN=20
style=3D"COLOR: #333399; TEXT-DECORATION: none; mso-bidi-font-size: 10.0p=
t; text-underline: none"><FONT=20
color=3D#000000 size=3D4>Wi-Fi skr</FONT></SPAN></A><FONT color=3D#000=
000><FONT=20
size=3D4><SPAN class=3d3-4></SPAN>: </FONT></FONT><A=20
href=3D"http://www.brdbndrprts.com/shnws/42831"><SPAN=20
style=3D"COLOR: #333399; TEXT-DECORATION: none; text-underline: none"><FO=
NT=20
color=3D#000000 size=3D4>Hotspot seeking=20
keychain</FONT></SPAN></A><o:p></o:p></SPAN></P>
<P class=3dmn style=3D"MARGIN: 0in 0in 0pt"><SPAN=20
style=3D"FONT-SIZE: 9.5pt; COLOR: black; FONT-FAMILY: Verdana"><FONT=20
size=3D2>&nbsp;<o:p></o:p></FONT></SPAN></P></H1>
<DIV class=3dmn style=3D"MARGIN: 0in 0in 0pt"><SPAN class=3Dnews1>=
<SPAN=20
style=3D"FONT-SIZE: 9.5pt; COLOR: black; FONT-FAMILY: Verdana"><A=20
href=3D"http://wifntnws.com/archives/003248.html"><SPAN=20
style=3D"COLOR: black"><FONT size=3D2>Wi-Fi Networking News</FONT></SPAN>=
</A><FONT=20
size=3D2> takes a look at the new "</FONT><A=20
href=3D"http://wifntnws.com/archives/003248.html"><SPAN=20
style=3D"COLOR: black"><FONT size=3D2>Wi-Fi skr</FONT></SPAN></A><FONT=
size=3D2>"=20
and junk interference, something this latest version is apparently much b=
etter=20
at.</FONT></SPAN></SPAN></DIV></SPAN></FONT></SPAN></FONT></SPAN></FONT><=
/DIV></DIV></BODY></HTML>
--= Multipart Boundary _EXTRA_0901041737--
--= Multipart Boundary 0901041737
Content-Type: application/octet-stream;
name="retail.jpg"
Content-ID: <2183279>
Content-Disposition: attachment;
filename="retail.jpg"
Content-Transfer-Encoding: base64
/9j/6wJgRVBTAHic7ZjJigIxEIbn/Z/EiwfxoHjQgyfB5aKg4oKouIH7goow
UPAdDJPpZKxMO0N/l5+mO92V6qSWfHwkJCT8d87ns+hmsxGtVqui5XJZNJVK
ic7n8y/HX69X0VarJZrJZJ7G9fv9EGYHYzqdimI/mk6nRYvFomilUhFtNpui
+Xxe1Jw/yv16vf40LpvNiv4VP2Hvcrn0GsfzzJvr2+327Tju4793YzabiRYK
BdHJZBKLHcPhMJbvDgYDUeZvrnvWC/tFi6h1Y0J8Ox6Pqnas12tR1/nzn06n
k6odJp1OR/R+v3uN6/V6Kt/fbreixE3iHvvD9/9pcblcvJ4nv0Gj0VCxI5fL
icblh8ViIcq+0IL4/iqs39CMRiNRbT/YiCs//BWIi6vVKsj749pv2lBva8M+
IK+Hej/5kvxIXW0qcdK3PqaPCYV2PUrfQJ3gWx9QV+CvKLTitA3sob/05fF4
iOJnrXqJ/d9ut799jv7Et37ytaNUKv1oPH7xjWfUM/QttVpNlDxI/WfLU4fD
4el6PB57fd8X376Bde26XogTtrrdjEfcJ451u90vvw9a9bQN7HCNj5zr2NYN
72OezJv97Lre8D/7iPeZ5wb7/d7pfa/iGq/N8wlgv9DPaNdxvucp2rj2pZyP
sU52u50ofvmtOjoufOM1ceS3/ELfHRf0+VHgj9B+0erXtWB/kXdthM4b1Ffk
g3eDvGM7T7fZHeXXKDjPe/d4Rh4mX3FeEhW/8aurn+gD+Q/v7pdXwa9mvWdT
4jv/4b+cL7jCOqB+QUOfbyckJCTExSfQUQHQ/+AAEEpGSUYAAQIBAGAAYAAA
//4AJkNyZWF0ZWQgYnkgSW1hZ2VHZWFyLCBBY2N1U29mdCBDb3JwLv/AABEI
ASwBkAMBIgACEQEDEQH/2wCEAAcFBQYFBAcGBgYICAcJCxMMCwoKCxgREg4T
HBkeHRwZGxsfIy0mHyErIhsbJzYoKy8wMzMzHiY4PDcxOy0yMzEBCAgICwoL
FwwMFzEgGyAgMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTExMTEx
MTExMTExMTExMTExMf/EAaIAAAEFAQEBAQEBAAAAAAAAAAABAgMEBQYHCAkK
CxAAAgEDAwIEAwUFBAQAAAF9AQIDAAQRBRIhMUEGE1FhByJxFDKBkaEII0Kx
wRVS0fAkM2JyggkKFhcYGRolJicoKSo0NTY3ODk6Q0RFRkdISUpTVFVWV1hZ
WmNkZWZnaGlqc3R1dnd4eXqDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKz
tLW2t7i5usLDxMXGx8jJytLT1NXW19jZ2uHi4+Tl5ufo6erx8vP09fb3+Pn6
AQADAQEBAQEBAQEBAAAAAAAAAQIDBAUGBwgJCgsRAAIBAgQEAwQHBQQEAAEC
dwABAgMRBAUhMQYSQVEHYXETIjKBCBRCkaGxwQkjM1LwFWJy0QoWJDThJfEX
GBkaJicoKSo1Njc4OTpDREVGR0hJSlNUVVZXWFlaY2RlZmdoaWpzdHV2d3h5
eoKDhIWGh4iJipKTlJWWl5iZmqKjpKWmp6ipqrKztLW2t7i5usLDxMXGx8jJ
ytLT1NXW19jZ2uLj5OXm5+jp6vLz9PX29/j5+v/aAAwDAQACEQMRAD8A+kaK
KKACiiigAooooAKKKKACiiigCK6/485v9w/yrnBXR3X/AB5zf7h/lXOVnMaD
8KWkpagYopeKaKdTELxRSUtABS0lLQAUtJRQAtFJRRYBaPak7UdqLALxRSUd
qACiikpALSUUnSiwBSUZpKACm0uaQ0WASkpaSkMQ11lcma6ytKYmFFFFaCCi
iigAooooAKKKKACiiigAooooAKKKKACiiigAooooAKKKKAIrr/jzm/3D/Kub
rpLr/jzm/wBw/wAq5us5jQUtJUsETTzLGvU96SQDBS9q249Pt40+ZA2OpNRy
Q24QlYBgd6pQEZNFaPkRTKoWH7w4ZAf59KQaUrEg+YMd9w5p8gGfS1e/slcZ
xLx23jmmnScchZD7eZ0o5AKdFWzpDdAGPuZTxTDo8xGAij3Mzc/pRyAQUVP/
AGPOR9yMEdB5zHP6Un9jXGMhYgf7vmtj88UcgXIe1HSpv7FuByPJ56gu3FL/
AGHMDjdFj1y2aOQLkGaSrA0OUnBkjA7EbqX+w5T1kjH0Lf40cgXK1HarP9hy
7s+an5t/jTToc4PyyRkZ7swxRyBcr0lT/wBh3X3fMjxjht7Z/Kk/sS7wTmIE
dAJW5/SjkAgpKlOmXMa72VBjjaJXx+eKng06aIhzbhww6CTO388UuQLlKkq9
DFGXnUYDqOQ6/d9OKz53kjbDhAT0wODRyBcWkpiSb1zjFPrNqwxDXW1yVdbV
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
5E4q0qhVAUAAdhQB/9k=
--= Multipart Boundary 0901041737--

View File

@@ -1,57 +0,0 @@
From bownrdstrm@attb.com Sun Jun 6 07:52:37 2004
Return-Path: <purgcrw@attb.com>
Received: from leggite.example.com ([207.111.254.118]) by snacker.example.com
(Netscape Messaging Server 4.15) with ESMTP id HYW65I00.GCU for
<exp@example.com>; Sun, 6 Jun 2004 07:41:42 -0700
Received: from accfd8ce.ipt.aol.com (ACCFD8CE.ipt.aol.com [172.207.216.206])
by leggite.example.com (8.12.8/8.12.8) with SMTP id i56EpkRt007759
for <exp@example.com>; Sun, 6 Jun 2004 07:52:03 -0700
Received: from [220.15.207.252] by 172.207.216.206 with dazzle SMTP;
Sun, 06 Jun 2004 08:52:37 -0600
X-Authentication-Warning: ryder ancestral
Date: Sun, 06 Jun 2004 08:52:37 -0600
From: "Stphn Hand" <bownrdstrm@attb.com>
Reply-To: "Stphn Hand" <resceflblb@attb.com>
Message-ID: <3749823059370.835538001008932913@chckwll>
To: exp@example.com
Subject:
References: <168425683841079245159@duke>
In-Reply-To: <7406146144666267721836@prevalent>
X-Mailer: silicic leafy
Content-Type: text/html;
charset=us-ascii
Content-Transfer-Encoding: 7bit
<html>
<body>
<p><br>
</p>
<p align="center"><a href="http://www.cFZ.phrnw.com/tp/indx.asp?ID=w">&nbsp;</p>
<p align="center"><img src="http://www.zP6.qwmeds.com/wlt.gif" border="0"></a></p>
<p><br>
<br>
<br><br><br><br>
<br><br><br><br>
To say adios muchachos head on over to go to: pharmnw.com/host/emlremve.asp<br>
<br><br><br><br>
broach glutamine gurkha disciplinarian brawl atypic ridicule dandy hereof difficulty yourself satellite courtney alicia elude mcleod consist dunedin charlotte shoe bequest aluminate handlebar nebular bent booty shutout concision algonquin more connector tuple barge downriver denebola urgent caleb gordon shield prima perhaps dar dreg weir ecuador edible broke compactify circuitry forsook fiske moscow tall influence alterman mountain such excuse railbird caw
</body>
</html>
<br><br>
ghana managua ptolemaic ritter tina aden travel wang morn someone cocoon apparatus manchester crime daniel florin aile handicapped effort hairy poodle allegation doubloon basis fantasia windward chisel brink bibb fashion aspire farcical sorority eastward callahan cyrillic thoroughgoing awoke thyrotoxic adopt dial simultaneous zeiss partisan elm commission eat ornately drumlin grandeur shields awaken meningitis aren't equipped intractable dwarf behest featherbrain
shell vacationland disseminate regurgitate decolonize jules methodology beverly drowse cried earl applied storeroom cattle revved kim sharp frizzle bevel continua hangable rhodonite carcinogen bodybuild dusenbury acapulco pine stormbound ark suspension katz fabulous lend lilly matthews firewood groggy gallop
apocalypse break valois emporium flown cookbook jeff fanout nathaniel mollify royalty twirl whittle amethystine ladylike plywood terpsichorean analyses avocate basis hemingway aluminate gladiolus levin polymer arkansan diagnostician danielson augustus deplore rachmaninoff assyriology model alexander importune civic sprite concise haughty wean peripatetic shove booky sonny book lyric presence cruz boisterous buttercup sidelong breed distributor

View File

@@ -1,134 +0,0 @@
From ladymrs@hotmail.com Wed Feb 4 15:18:52 2004
Return-Path: <ladymrs@htmal.com>
Received: from psszone01 ([220.85.210.40])
by seagrss.example.com (8.12.8/8.12.8) with SMTP id i1501w8m026266
for <exp@example.com>; Wed, 4 Feb 2004 19:01:59 -0500
Message-Id: <200402050001.i1501w8m026266@seagrss.example.com>
From: ladymore <ladymrs@htmal.com>
To: exp@example.com
Subject: =?euc-kr?q?(=B1=A4=B0=ED)=B9=CC=B1=B9=C1=F7=B9=E8=BC=DB...=B0=C7=B0=AD=BD=C4=C7=B0=B0=FA_=B4=D9=C0=CC=BE=EE=C6=AE_=C1=A6=C7=B0=B8=A6_=BC=D2=B0=B3=C7=D5=B4=CF=B4=D9._@?=
Content-Transfer-Encoding: quoted-printable
MIME-Version: 1.0
Content-Type: multipart/related;
boundary="def67978-b4e7-4853-987a-b20e2bc5050e"
Reply-To: ladymr <ladymrs@htmal.com>
Date: Thu, 05 Feb 2004 08:18:52 +0900
This is a multi-part message in MIME format
--def67978-b4e7-4853-987a-b20e2bc5050e
Content-Type: text/html; charset=euc-kr
Content-Transfer-Encoding: quoted-printable
<HTML>
<HEAD>
<TITLE>spam_mail6</TITLE>
<META HTTP-EQUIV=3D"Content-Type" CONTENT=3D"text/html; charset=3Deuc-kr">
</HEAD>
<BODY BGCOLOR=3D#FFFFFF LEFTMARGIN=3D0 TOPMARGIN=3D0 MARGINWIDTH=3D0 =
MARGINHEIGHT=3D0>
<TABLE WIDTH=3D595 BORDER=3D0 align=3D"center" CELLPADDING=3D0 CELLSPACING=3D=
0>
<TR>
<TD COLSPAN=3D2>
<a href=3D"http://www.ldymr.com" target=3D"_blank"><IMG SRC=3D=
"http://www.ldymr.com/ad_mail07/imgs/mail7_01.jpg" ALT=3D"" WIDTH=3D595 =
HEIGHT=3D24 border=3D"0"></a></TD>
</TR>
<TR>
<TD COLSPAN=3D2>
<a href=3D"http://www.ldymr.com" target=3D"_blank"><IMG SRC=3D=
"http://www.ldymr.com/ad_mail07/imgs/mail7_02.jpg" ALT=3D"" WIDTH=3D595 =
HEIGHT=3D51 border=3D"0"></a></TD>
</TR>
<TR>
<TD COLSPAN=3D2>
<a href=3D"http://www.ldymr.com" target=3D"_blank"><IMG SRC=3D=
"http://www.ldymr.com/ad_mail07/imgs/mail7_03.jpg" ALT=3D"" WIDTH=3D595 =
HEIGHT=3D161 border=3D"0"></a></TD>
</TR>
<TR>
<TD>
<a href=3D"http://www.ldymr.com" target=3D"_blank"><IMG SRC=3D=
"http://www.ldymr.com/ad_mail07/imgs/mail7_04.jpg" ALT=3D"" WIDTH=3D173 =
HEIGHT=3D166 border=3D"0"></a></TD>
<TD>
<a href=3D"http://www.ldymr.com" target=3D"_blank"><IMG SRC=3D=
"http://www.ldymr.com/ad_mail07/imgs/mail7_05.jpg" ALT=3D"" WIDTH=3D422 =
HEIGHT=3D166 border=3D"0"></a></TD>
</TR>
<TR>
<TD>
<a href=3D"http://www.ldymr.com" target=3D"_blank"><IMG SRC=3D=
"http://www.ldymr.com/ad_mail07/imgs/mail7_06.jpg" ALT=3D"" WIDTH=3D173 =
HEIGHT=3D163 border=3D"0"></a></TD>
<TD>
<a href=3D"http://www.ldymr.com" target=3D"_blank"><IMG SRC=3D=
"http://www.ldymr.com/ad_mail07/imgs/mail7_07.jpg" ALT=3D"" WIDTH=3D422 =
HEIGHT=3D163 border=3D"0"></a></TD>
</TR>
<TR>
<TD>
<a href=3D"http://www.ldymr.com" target=3D"_blank"><IMG SRC=3D=
"http://www.ldymr.com/ad_mail07/imgs/mail7_08.jpg" ALT=3D"" WIDTH=3D173 =
HEIGHT=3D163 border=3D"0"></a></TD>
<TD>
<a href=3D"http://www.ldymr.com" target=3D"_blank"><IMG SRC=3D=
"http://www.ldymr.com/ad_mail07/imgs/mail7_09.jpg" ALT=3D"" WIDTH=3D422 =
HEIGHT=3D163 border=3D"0"></a></TD>
</TR>
<TR>
<TD>
<a href=3D"http://www.ldymr.com" target=3D"_blank"><IMG SRC=3D=
"http://www.ldymr.com/ad_mail07/imgs/mail7_10.jpg" ALT=3D"" WIDTH=3D173 =
HEIGHT=3D170 border=3D"0"></a></TD>
<TD>
<a href=3D"http://www.ldymr.com" target=3D"_blank"><IMG SRC=3D=
"http://www.ldymr.com/ad_mail07/imgs/mail7_11.jpg" ALT=3D"" WIDTH=3D422 =
HEIGHT=3D170 border=3D"0"></a></TD>
</TR>
<TR>
<TD>
<a href=3D"http://www.ldymr.com" target=3D"_blank"><IMG SRC=3D=
"http://www.ldymr.com/ad_mail07/imgs/mail7_12.jpg" ALT=3D"" WIDTH=3D173 =
HEIGHT=3D170 border=3D"0"></a></TD>
<TD>
<a href=3D"http://www.ldymr.com" target=3D"_blank"><IMG SRC=3D=
"http://www.ldymr.com/ad_mail07/imgs/mail7_13.jpg" ALT=3D"" WIDTH=3D422 =
HEIGHT=3D170 border=3D"0"></a></TD>
</TR>
<TR>
<TD COLSPAN=3D2>
<IMG SRC=3D"http://www.ldymr.com/ad_mail07/imgs/mail7_14.jpg" WIDTH=3D=
595 HEIGHT=3D114 ALT=3D""></TD>
</TR>
<TR>
<TD COLSPAN=3D2>
<IMG SRC=3D"http://www.ldymr.com/ad_mail07/imgs/mail7_15.jpg" WIDTH=3D=
595 HEIGHT=3D113 ALT=3D""></TD>
</TR>
<TR>
<TD COLSPAN=3D2>
<IMG SRC=3D"http://www.ldymr.com/ad_mail07/imgs/mail7_16.jpg" WIDTH=3D=
595 HEIGHT=3D115 ALT=3D""></TD>
</TR>
</TABLE>
<table border=3D0 cellpadding=3D0 cellspacing=3D0 width=3D595 align=3D=
"center" style=3D"font-size: 9pt; line-height: 150%">
<tr>
<td>=B1=CD=C7=CF=C0=C7 =C0=CC=B8=DE=C0=CF=C1=D6=BC=D2=B4=C2 =C0=CE=C5=CD=B3=
=DD=BC=AD=C7=CE=C1=DF=BE=CB=B0=D4=B5=C7=BE=FA=C0=B8=B8=E7, =B8=DE=C0=CF=C1=D6=
=BC=D2=C0=CC=BF=DC=C0=C7 =BE=EE=B6=B0=C7=D1 =C1=A4=BA=B8=B5=B5 =B0=A1=C1=F6=B0=
=ED =C0=D6=C1=F6 =BE=CA=BD=C0=B4=CF=B4=D9.<br> =B8=DE=C0=CF=BC=F6=BD=C5=C0=BB =
=BF=F8=C7=CF=C1=F6 =BE=CA=C0=BB=B0=E6=BF=EC <a href=3D=
"mailto:ldymr@nvr.com">[=BC=F6=BD=C5=B0=C5=BA=CE]</a>=B8=A6 =B4=AD=B7=AF=
=C1=D6=BD=CA=BD=C3=BF=E4.. =B0=A8=BB=E7 =C7=D5=B4=CF=B4=D9. If you feel that =
this information is not what you want, please click [HERE] requesting to be =
removed. Thank you, and we apologize for any inconvenience.</td>
</tr>
<tr><td>&nbsp;</td></tr>
</table>
</BODY>
</HTML>
--def67978-b4e7-4853-987a-b20e2bc5050e--

View File

@@ -1,32 +0,0 @@
From tiffany21action@hotmail.com Mon Feb 23 06:25:12 2004
Return-Path: <mmimcha@hotmail.com>
Received: from e.com (ns.lefco.co.jp [210.162.221.66])
by leggite.e.com (8.12.8/8.12.8) with SMTP id i1NETCVg022171
for <en1k@example.com>; Mon, 23 Feb 2004 06:29:12 -0800
To: <en1k@example.com>
From: "jesph" <tffn21ctn@htmal.com>
Date: Mon, 23 Feb 2004 14:25:12 GMT
Message-Id: <1077546312-23378@excite.com>
Sender: krn1crrll@htmal.com
Subject: Super Cheap V-!-A-G-R-A!!
Content-Type: text/plain;
Status: RO
Starting at $2.50 a dose!!
http://prescrbdmds.com/gv/indx.php?pid=eph9106
Isn't $2.50 worth it for you and your lady?!
rufus bobcatelliot jared amanda1 nautica sarah1 japan
metallic metallicgray chance wolfMan
oranges young philip

View File

@@ -1,239 +0,0 @@
From ycruhaztbxo@yh.com Mon Aug 30 20:22:16 2004
Return-Path: <ycruhaztbx@yh.com>
Received: from localhost (localhost [127.0.0.1])
by smtp.example.com (8.12.11/8.12.5) with ESMTP id i7V4RAvY010450
for <exp@localhost>; Mon, 30 Aug 2004 21:27:10 -0700
Received: from snacker.example.com [207.111.254.120]
by localhost with IMAP (fetchmail-6.2.5)
for exp@localhost (single-drop); Mon, 30 Aug 2004 21:27:10 -0700 (PDT)
Received: from leggte.example.com ([207.111.254.118]) by snacker.example.com
(Netscape Messaging Server 4.15) with ESMTP id I3AH9K00.F2I for
<exp@example.com>; Mon, 30 Aug 2004 19:22:32 -0700
Received: from 207.111.254.118 ([211.53.120.209])
by leggte.example.com (8.12.8/8.12.8) with SMTP id i7V2THZe005873
for <exp@example.com>; Mon, 30 Aug 2004 19:29:20 -0700
Message-Id: <200408310229.i7V2THZe005873@leggte.example.com>
X-Mozilla-Status: 0001
X-Mozilla-Status2: 00000000
FCC: mailbox://ycruhaztbx@yh.com/Sent
X-Identity-Key: id1
Date: Mon, 30 Aug 2004 23:22:16 -0400
From: Kimberly Murdock <ycruhaztbx@yh.com>
X-Mozilla-Draft-Info: internal/draft; vcard=0; receipt=0; uuencode=0
User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.4) Gecko/20030624 Netscape/7.1 (ax)
X-Accept-Language: en-us, en
MIME-Version: 1.0
To: exp@example.com
Subject: re[15]
Content-Type: multipart/related;
boundary="------------040805020002040802060003"
This is a multi-part message in MIME format.
--------------040805020002040802060003
Content-Type: text/html; charset=us-ascii
Content-Transfer-Encoding: 7bit
<html><head><meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"></head><body bgcolor="#FFFFFE" text="#1BDDE2"><p><IMG SRC="cid:part1.04080303.03020805@vmcva@html.com" border="0" ALT=""></p><p><font color="#FFFFF0">aren't you? Jessica Alba Nostradamus in 1851</font></p><p><font color="#FFFFF7">Stephen King Easter</font></p></body></html>
--------------040805020002040802060003
Content-Type: image/gif;
name="radon.GIF"
Content-Transfer-Encoding: base64
Content-ID: <part1.04080303.03020805@vmcva@html.com>
Content-Disposition: inline;
filename="radon.GIF"
R0lGODlh4wGPAfY9AAABAICAAMDAwMDcwKbK8EAgAGAgAKAgAABAACBAAGBAAIBAAKBAAMBAACBgAGBg
AIBgAMBgAOBgAOCAACCgAMCgAMDAAAAgQCAgQEAgQKAgQMAgQCBAQEBAQGBAQIBAQKBAQMBAQOBAQEBg
QGBgQIBgQKBgQMBgQOBgQCCAQECAQGCAQKCAQMCAQOCAQACgQCCgQECgQGCgQICgQKCgQMCgQOCgQEDA
QGDAQIDAQODAQCBAgEBAgGBggGCAgICAgKCAgMCAgOCAgGCggICggKCggMCggOCggEDAgGDAgIDAgKDA
gMDAgODAgIDggKDggMDggODggGBgwECAwGCAwGCgwICgwKCgwMCgwOCgwGDAwIDAwKDAwP/78KCgpP8A
AP//AAAA/////wAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA
AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAACH5BAQAAAAALAAAAADbAYoBAAf/gGKC
g4SFhoeIiYqLjI2Oj5CRkpOUlZaXmJmam5ydnp+goaKjpKWmp6ipqqusiF9fna+trq+whLW2s7q7vL2+
prjBwpy4sbm7smK1gsnLlcm/0dLT1KXQhdea2dWUx823x5Lb3OTl5ueD48ye6uiK4+2T8e709fbW4bfs
+feH8PzPAPYbSLCgPIGf5g38RwyhwYcQIyrj5zCgRHD+KkJSeLGjx3LwwDmbmC2YoWYjSXpbFg7lyGLp
YDYyKRKmsJUpJzK7xvGjz5+9tglteTJXyZVF02HcCS0nUaaMeOZjiC2mrWFSgWrdKu1mzp1KseFcClZs
2LIxya47i5ZWUrVp//WpbaeRq927oYZmhDW171y/bVsilatT5Lu9cAMLNiqwLt7HkC+FRPz23WCyX+Nq
xnkzkbqslVUOa1s1sunTmyZnXL0I9N+vR9n21GyWNu15dFHr3n0wEuyKrm2rrB1XsG+AwW87zM27uXPP
CJ/GPvk3tGHhsoxTd8uatGJ/wtk+H++crjer15Unbkq8MMbF2ymXDi91anjy+MkzX2s7pXbvTV3mXmIk
EcYdXFShJ5tj+TUI2T+MWdcZgowV81J7901oWYRi9bWYTANi6OCIQHk1IYg0MfVhfVcZBZVVTjWWGS2/
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
LuD6/dec3d/+zNj/zd+JPeITTuCf/dgYruGaoeCcPdYd7tEg7uE0vtM1jt4krtzqfNagfdgHzuKL4eLK
reNY/d7ZjdpFPtdJTuER/tXHzdWzzd1ALhgUbtdxDdSN/dJHPtoS7uFBLeCnLeXoreVfvv/OYj7lwGHh
aC7Nar7m0Nzmbu7McB7nzDzndK7Mdn7ner7nfN7nfv7ngK4WA4CuMfCoge7MBcWth57MBcWl0Oqni54p
yWBJLCgDbdqtSUBBkX4Xk06Q4bqsy6Or1OdDZrjpMvGurVlHXACt03d5SlDqph4OqG6tp6RgvMetrU7q
7frnAeMNhAnqOvSPS1BQSYDrt67rsc4u8Ipgq059rUfsxq56rg7rhx6n4opjtp56SaAeqlXsrD7qr77r
vm3td2Ltm6qbhv5zKxHt4E7tLE7uW+AkKFlvzY6sm7Hu3255yN7n8L4e8x6Y0J7v77fvaN7vOIKS4m5v
AZ/vl4eC0v6E6ntt8I2AksA+sAsv8M6+0RKvCQqT8Jp38d+e7tm88UXdBexOAdpM8pM9AI7Oe296zSpf
3qqlSvb+yzGf7P168zifrzq/85nZ8z5/lkAf9N34nPFO9DwPrkt59Ehvr7Dq8U0vau9a8VGPi1Nf9Zlp
9Fjv9EwJ9VvPZgXi9V8/9mRfG4EAACH+dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0dHR0
bGdsemJvd2xucnVhbndidXlpdWdxdmF0eGd1cmhqd3FueWpnZm5mZWZkADt=
--------------040805020002040802060003--

View File

@@ -1,65 +0,0 @@
From mri-srvce@fstmal.gr Mon Aug 2 08:53:44 2004
Return-Path: <root@77qq.net>
Received: from 77qq.net (S0106000f662071da.vc.shawcable.net [24.81.14.82])
by leggite.example.com (8.12.8/8.12.8) with ESMTP id i72Ft8gE010695
for <exp@example.com>; Mon, 2 Aug 2004 08:55:21 -0700
Received: from 77qq.net (77qq.net [127.0.0.1])
by 77qq.net (8.12.10/8.12.10) with ESMTP id i72FrjjM013257
for <exp@example.com>; Mon, 2 Aug 2004 08:53:45 -0700
Received: (from root@localhost)
by 77qq.net (8.12.10/8.12.10/Submit) id i72Frib7013231;
Mon, 2 Aug 2004 08:53:44 -0700
Date: Mon, 2 Aug 2004 08:53:44 -0700
Message-Id: <200408021553.i72Frib7013231@77qq.net>
To: dcl@example.com
Subject: =?ISO-2022-JP?B?TVJJGyRCRDQ6OiVsJV0hPCVIGyhCIHZvbC4zOBskQiEhKCFGQ0pMSEco?=
=?ISO-2022-JP?B?IRsoQg==?=
MIME-Version: 1.0
From: mri-srvce@fstmal.gr
Reply-To: mri-srvce@fstmal.gr
Content-type: text/plain;
charset=JIS
Content-Transfer-Encoding: 7bit
$B(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(B 4,313,786$BItH/9T(B $B(,(B
MRI$BD4::%l%]!<%H(B vol.38$B!!(!FCJLHG(!(B
$B(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(B
$B"":#2s$N$b$/$8(B
$B"#IW!"?M:J$G$"$k$3$H$rK:$l$?$$%*%H%J5^A}Cf!*(B
$B!!!|%5%$%H2q0w$XEEOC<h:`!*!!40A4F?L>$G8l$i$l$?%*%H%J$N%[%s%M(B
$B"#:G8e$K$O$d$C$Q$j!"%^%a$JCK$,%H%/$r$9$k(B
$B!!!|=P2q$$%3%_%e%K%F%#%5%$%H4IM}?M$@$+$i$o$+$k!":#$N%[%s%H(B
$B!&!&!#!&!,!z!&!#!&!&!#!&!,!z!&!#!&!&!#!&!,!z!&!#!&!#!&!,!z!&!#!&!&!#!&!,(B
$B(.(,(,(,(,(B $BIW!"?M:J$G$"$k$3$H$rK:$l$?$$%*%H%J5^A}Cf!*(B $B(,(,(,(,(/(B
$B!!!!!!!!!!!!!!!!!!!!(Bhttp://7qq.net/mrs/1/
$B(1(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(0(B
$B%5%$%H4IM}<T$N6(NO$G!"F?L>$r>r7o$K8==w@-2q0w$X$NEEOC<h:`$N5v2D$rF@$F(B
$BD>@\<h:`$7$^$7$?!#$*$H$J$N=w@-$,<g:E$9$k=P2q$$%5%$%HN";v>p$D$-$G$9!#(B
$B!!(B $BFbMF$O%3%A%i(B-----------http://7qq.net/mrs/1/
$B(.(,(,(,(,(,(B $B:G8e$K$O$d$C$Q$j!"%^%a$JCK$,%H%/$r$9$k(B $B(,(,(,(,(,(/(B
$B!!!!!!!!!!!!!!!!!!!!(Bhttp://77qq.net/mrs/2/
$B(1(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(0(B
$B!!%5%$%H4IM}<T$H$N!"%a!<%k$G$N#Q!u#A$G8=:_$N=P2q$$%3%_%e%K%F%#>u67(B
$B96N,K!$J$I$rD4::$7$^$7$?!#<c<T$N=P2q$$;v>p$rLVMe$7$F$$$^$9!#(B
$B!!!!FbMF$O%3%A%i(B-----------http://7qq.net/mrs/2/
$B"#(B------------------------------------------------------------------$B"#(B
$B!!!!;d$I$b!JM-!K=P2q$$D4::%7%9%F%`$G$O!"J@<RFH<+$N%3%M%/%7%g%s$d(B
$B!!!!@:1T<h:`?X$K$h$kD>@\$N<h:`$K$h$C$F!"3'$5$^$K$*4+$a$G$-$k=P2q$$(B
$B!!!!%3%_%e%K%F%#$N>R2p$r$7$F$*$j$^$9!#(B
$B"#(B------------------------------------------------------------------$B"#(B
$B!!!!J@<R$G$OK\%[!<%`%Z!<%8$N@.$jN)$A!"J@<R$N9M$(J}$K$4;?F1$$$?$@$1$k(B
$B!!!!9-9p<gMM$rJg=8$$$?$7$F$*$j$^$9!#$*5$7Z$K$*Ld$$9g$o$;$/$@$5$$!#(B
$B!!!!!!!!!!!JM-!K=P2q$$D4::%7%9%F%`!!(B

View File

@@ -1,115 +0,0 @@
From dlvry@hosy-r.mn.nu Mon Apr 12 00:25:51 2004
Return-Path: <dlvry@hosy-r.mn.nu>
Received: from leggite.example.com ([207.111.254.118]) by snacker.example.com
(Netscape Messaging Server 4.15) with ESMTP id HW1R7A00.G23 for
<exp@example.com>; Mon, 12 Apr 2004 00:23:34 -0700
Received: from hosyou-r.mine.nu (p1061-ipad402marunouchi.tokyo.ocn.ne.jp [222.146.113.61])
by leggite.example.com (8.12.8/8.12.8) with ESMTP id i3C7QYBl032246
for <exp@example.com>; Mon, 12 Apr 2004 00:26:34 -0700
Received: from hosy-r.mn.nu (unknown [192.168.3.80])
by hosy-r.mn.nu (Postfix) with ESMTP id 2F2BA5540B7
for <exp@example.com>; Mon, 12 Apr 2004 16:25:51 +0900 (JST)
Message-ID: <12845318.1081754751281.JavaMail.postgres@hosyou-r.mine.nu>
Date: Mon, 12 Apr 2004 16:25:51 +0900 (JST)
From: =?iso-2022-jp?Q?=1B=24B=22!3Z!9=25H=25/=25H=25/=25S=258=25M=1B=28B?= =?iso-2022-jp?Q?=1B=24B=259=3EpJs=24H=24*E75=24=3EpJs=3CR=1B=28B?= <delivery@hosyou-r.mine.nu>
To: exp@example.com
Subject: =?iso-2022-jp?Q?=1B$B!Z$*E75$%a%k%^%,![#52/#9=1B(B?=
=?iso-2022-jp?Q?=1B$B@iK|1=5F>Z5r!&=3DPMh$k:=5FBp%S%8=1B(B?=
=?iso-2022-jp?Q?=1B$B%M%9$HA49q$*E75$>pJs!!Bh=1B(B4?=
=?iso-2022-jp?Q?10=1B$B9f!J=1B(B8,000=1B$BItG[=3F.=1B(B)?=
Mime-Version: 1.0
Content-Type: text/plain
Content-Transfer-Encoding: 7bit
exp@example.com$BMM!"(B
$B$*FI$_D:$-!"$"$j$,$H$&$4$6$$$^$9!#(B
$B!~K\%a%k%^%,$NG[?.ITMW!"$^$?$OEPO?$7$?3P$($N$J$$>l9g$O(B
$B!!0lHV2<$N!z!z!z!!:#F|$NE75$M=Js!!!z!z!z(B
$B!!!!!!!!$H(,KhD+8+$l$k!*!!A49q$N$*E75$(,!!(B
$B!!!!!!$N4V$K$"$k%"%I%l%9$G2r=|$5$;$FD:$-$^$9!#!!(B
$B!!!!(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(B
$B!!!!!~#52/#9@iK|1_>Z5rM-%S%8%M%9!*9b3[6b3[$O4X?4$,9b$$!~(B
$B!!!!(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(B
$B!y#5@iK|1_Cy6b$,M_$7$$!*(B
$B!y#32/1_$N;v6H;q6b$,M_$7$$!*(B
$B!yO78e$N$?$a$K#4@iK|1_M_$7$$(B
$B!y0B?4$N0Y$KJ]>Z$,M_$7$$(B
$B!y%M%C%H$G#7@iK|1_0J>e<}F~$,M_$7$$(B
$B$=$s$J5.J}$K:GE,$J4JC1:_Bp%S%8%M%9$G$9!#(B
$B4{$K#32/!"#52/#9@iK|1_$N<}F~<TB3=P$7$F$$$^$9!#(B
$B$^$:$O!">Z5r$r8+$F$/$@$5$$!"$=$l$+$i$G$9!*(B
$B!z>Z5r$OEl5~9b:[$K$FH=7h!z(B
$B"!9b3[<}F~$N>Z5r%"%j!*"!(B
$B>\$7$/$O(BHP$B$K$F$43NG'$/$@$5$$!#(B
$B!!(Bhttp://brk.at/hosy
$B2?;v$bO@$h$j>Z5r!&:[H=41$NL\$G$*3N$+$a?d>)!*!*(B
$B!!!!!!!!!!!!(B
$B!!!!!!!!!!!!(,(,(,(,(,(,(,(,(,(,(,(,(,(B
$B!!!!!!!!!!(B $B5.J}MM$O!*$4B8$8$G$9$+!*(B
$B!!!!!!!!!!!!(,(,(,(,(,(,(,(,(,(,(,(,(,(B
$B!!$D$$$K%0%i%s%I%*!<%W%s$NF|Dx$,7h$^$j$^$7$?!*(B
$B!!$=$l$^$G$K5.J}$N%]%8%7%g%s$r3NJ]$7$FCV$$$F2<$5$$!*(B
$B!!"-!!!!"-!!(B
http://fortn.lv-jpn.com/indx.cgi?id=world
$B!!!!!!(B
$B!!!!!!!!!!!!!!(,(,(,(,(,(,(,(,(,(,(,(,(,(,(B
$B!!!!!!!!!!!!!!F/$/%^%^$N!*;d$K$b=PMh$k;v!*(B
$B!!!!!!!!!!!!!!(,(,(,(,(,(,(,(,(,(,(,(,(,(,(B
$B:_8K$J$7!&%;%_%J!<;22C$J$7!&=i?4<T$K$b4JC1!*!&%5%]!<%H(B
$BBN@)%P%C%A%j(B
$B;22C<T$N(B8$B3d$,=w@-$NJ}$H$$$&$N$bG<F@$G$9(B
http://stag-n.jp/jc/mo/
$B!!!!!!!!!!!!(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(,(B
$B!Z9-9pEj9F?o;~Jg=8Cf(B !!$B![(B
$B9-9p!!#52s7G:\#3#0F|$G#3#0#0#01_(B
$B9-9p!!#72s7G:\#5F|$G#4#0#0#01_(B
$B9-9p#1#02s7G:\#6#0F|$G#5#0#0#01_(B
$B!!!!!!!!(B
$B!}!!K\F|$bEj9F!*$"$j$,$H$&$4$6$$$^$7$?"v!}(B
<<$B%a%k%^%,H/9T<T!d!d3Z!9%H%/%H%/>pJs<R(B
yazawa@easy.to
$B"#LH@U;v9`(B
$BEv%a!<%k%^%,%8%s$K7G:\$7$F$$$k>pJs$K4X$7$FH/9T<T$G$O0l@Z$N(B
$B@UG$$rIi$$$^$;$s!#(B
$B0l@Z$N@UG$$rIi$$$+$M$^$9$N$G$4N;>5$/$@$5$$!#7G:\5-;v$K4X$9(B
$B$k$*Ld$$9g$o$;$OD>@\Ej9F<T$X$*4j$$$$$?$7$^$9!#(B
$B!!!!!!!!!!!z!z!z!!:#F|$NE75$M=Js!!!z!z!z(B
$B"#!!%"%I%l%9$GG[?.2r=|!!"#(B
$B!~K\%a%k%^%,$NG[?.ITMW!"$^$?$OEPO?$7$?3P$($N$J$$>l9g$O(B
$B!!<!$N%"%I%l%9$+$i$NEPO?$K$h$j2r=|$5$;$FD:$-$^$9!#!!!!!!!!!!!!!!(B
http://bck.t/mlstp
$B!!!!!!(,(,(,KhD+8+$l$k!*!!A49q$N$*E75$(,(,!!(B
-------------------------------------------
4$B7n(B12$BF|(B11$B;~H/I=(B
$B<gMWET;T(B $B:#Lk(B $BL@F|(B
$B;%KZ(B $BF^$j$N$A;~!9@2$l(B $B@2$l(B
$B@gBf(B $B@2$l(B $BF^$j;~!9@2$l(B
$BEl5~(B $B@2$l(B $B@2$l$N$A;~!9F^$j(B
$BD9Ln(B $B@2$l(B $B@2$l(B
$B@E2,(B $B@2$l(B $B@2$l$N$A;~!9F^$j(B
$BL>8E20(B $B@2$l(B $B@2$l$N$A;~!9F^$j(B
$B?73c(B $B@2$l(B $B@2$l(B
$B6bBt(B $B@2$l(B $B@2$l(B
$BBg:e(B $B@2$l(B $B@2$l$N$A;~!9F^$j(B
$B2,;3(B $B@2$l(B $B@2$l$N$A;~!9F^$j(B
$B9-Eg(B $B@2$l(B $B@2$l$N$A0l;~1+(B
$B9b>>(B $B@2$l(B $BF^$j(B
$BJ!2,(B $B@2$l$N$A;~!9F^$j(B $BF^$j0l;~1+(B
$B</;yEg(B $B@2$l$N$A;~!9F^$j(B $B1+(B
$BFaGF(B $B@2$l(B $B@2$l(B

File diff suppressed because it is too large Load Diff

Binary file not shown.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 90 B

File diff suppressed because it is too large Load Diff

Binary file not shown.

Before

Width:  |  Height:  |  Size: 4.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 61 B

Binary file not shown.

Before

Width:  |  Height:  |  Size: 125 B

View File

@@ -1,64 +0,0 @@
# optional component libgd
# This should be run using 'gmake'
########################################################################
topsrcdir = .
ifndef INCLUDED_CONFIG_MK
include $(topsrcdir)/config/config.mk
endif
ifneq ("$(LIBGD_DIR)", "")
LIBGD_OBJDIR = $(OBJDIR)/gd
LIBGD = $(LIBGD_OBJDIR)/libgd.$(LIB_SUFFIX)
GDDEMO = $(LIBGD_OBJDIR)/gddemo$(EXE_SUFFIX)
GIFTOGD = $(LIBGD_OBJDIR)/giftogd$(EXE_SUFFIX)
WEBGIF = $(LIBGD_OBJDIR)/webgif$(EXE_SUFFIX)
#LIBPATH += -L$(LIBGD_OBJDIR)
#INCLUDES += -I./$(LIBGD_DIR)
LIBGD_SRCS = gd.c gdfontt.c gdfonts.c gdfontmb.c gdfontl.c gdfontg.c
LIBGD_SRCS2 = $(addprefix $(LIBGD_DIR)/, $(LIBGD_SRCS))
LIBGD_OBJS = $(addprefix $(LIBGD_OBJDIR)/, $(LIBGD_SRCS:.c=.$(OBJ_SUFFIX)))
LIBGD_ALL = $(LIBGD_OBJDIR) $(LIBGD) $(GDDEMO) $(GIFTOGD) $(WEBGIF)
libgd:: $(LIBGD_ALL)
$(LIBGD_OBJDIR):
ifeq ($(ARCH), WINNT)
mkdir $(LIBGD_OBJDIR)
else
[ -d $(LIBGD_OBJDIR) ] || mkdir -p $(LIBGD_OBJDIR)
endif
$(LIBGD): $(LIBGD_OBJS)
@$(ECHO) "\n===== [`date`] making libgd...\n"
$(AR) rc $(LIBGD) $(LIBGD_OBJS)
cp $(LIBGD_DIR)/gd.h $(LIBGD_OBJDIR)
cp $(LIBGD_DIR)/demoin.gif $(LIBGD_OBJDIR)
cp $(LIBGD_DIR)/readme.txt $(LIBGD_OBJDIR)/gd.txt
cp $(LIBGD_DIR)/index.html $(LIBGD_OBJDIR)/gd.html
$(GDDEMO): $(LIBGD) $(LIBGD_OBJDIR)/gddemo.$(OBJ_SUFFIX)
$(COMPILE) $(LIBGD_OBJDIR)/gddemo.$(OBJ_SUFFIX) $(LIBPATH) $(LIBGD) $(LIBS) $(OS_LINKFLAGS) -o $(GDDEMO)
$(GIFTOGD): $(LIBGD) $(LIBGD_OBJDIR)/giftogd.$(OBJ_SUFFIX)
$(COMPILE) $(LIBGD_OBJDIR)/giftogd.$(OBJ_SUFFIX) $(LIBPATH) $(LIBGD) $(LIBS) $(OS_LINKFLAGS) -o $(GIFTOGD)
$(WEBGIF): $(LIBGD) $(LIBGD_OBJDIR)/webgif.$(OBJ_SUFFIX)
$(COMPILE) $(LIBGD_OBJDIR)/webgif.$(OBJ_SUFFIX) $(LIBPATH) $(LIBGD) $(LIBS) $(OS_LINKFLAGS) -o $(WEBGIF)
distclean::
$(RM) $(LIBGD) $(LIBGD_OBJS)
$(LIBGD_OBJDIR)/%.$(OBJ_SUFFIX): $(LIBGD_DIR)/%.c
ifeq ($(ARCH), WINNT)
$(COMPILE) -c -MT $< -Fo$(LIBGD_OBJDIR)/$*.$(OBJ_SUFFIX)
else
$(COMPILE) -c $< -o $(LIBGD_OBJDIR)/$*.$(OBJ_SUFFIX)
endif
endif

View File

@@ -1,57 +0,0 @@
# optional component gnuplot (can use libgd)
# This should be run using 'gmake'
########################################################################
topsrcdir = .
ifndef INCLUDED_CONFIG_MK
include $(topsrcdir)/config/config.mk
endif
ifneq ("$(GNUPLOT_DIR)", "")
GNUPLOT = gnuplot$(EXESUFFIX)
GNUPLOT_OBJDIR = $(OBJDIR)/gnuplot
GNUPLOT_TARGET = $(GNUPLOT_OBJDIR)/$(GNUPLOT)
GNUPLOT_HELP = $(GNUPLOT_OBJDIR)/gnuplot.gih
GNUPLOT_CONFIG_H = $(GNUPLOT_OBJDIR)/config.h
ifneq ("$(LIBGD_DIR)", "")
GNUPLOT_CONFIG_OPTS = --prefix=/opt/mailstone --with-gd=../$(OBJDIR)/gd --with-png=no --without-linux-vga
endif
GNUPLOT_ALL = $(GNUPLOT_OBJDIR) $(GNUPLOT_TARGET) $(GNUPLOT_HELP)
gnuplot:: $(GNUPLOT_ALL)
$(GNUPLOT_OBJDIR):
ifeq ($(ARCH), WINNT)
mkdir $(GNUPLOT_OBJDIR)
else
[ -d $(GNUPLOT_OBJDIR) ] || mkdir -p $(GNUPLOT_OBJDIR)
endif
$(GNUPLOT_TARGET): $(GNUPLOT_CONFIG_H)
@$(ECHO) "\n===== [`date`] making gnuplot...\n"
(cd $(GNUPLOT_OBJDIR); $(MAKE) MAKE=$(MAKE) all)
$(GNUPLOT_HELP):
cp $(GNUPLOT_DIR)/docs/gnuplot.1 $(GNUPLOT_OBJDIR)
cp $(GNUPLOT_DIR)/Copyright $(GNUPLOT_OBJDIR)
cp $(GNUPLOT_OBJDIR)/docs/gnuplot.gih $(GNUPLOT_HELP)
$(GNUPLOT_CONFIG_H):
@$(ECHO) "\n===== [`date`] making gnuplot config.h...\n"
(cd $(GNUPLOT_OBJDIR); CC="$(CC) $(CFLAGS)" ../../../$(GNUPLOT_DIR)/configure $(GNUPLOT_CONFIG_OPTS))
distclean::
[ ! -f $(GNUPLOT_OBJDIR)/Makefile ] || \
(cd $(GNUPLOT_OBJDIR); $(MAKE) MAKE=$(MAKE) distclean)
$(RM) $(GNUPLOT_TARGET) $(GNUPLOT_CONFIG_H)
$(GNUPLOT_OBJDIR)/%.$(OBJ_SUFFIX): $(GNUPLOT_DIR)/%.c
ifeq ($(ARCH), WINNT)
$(COMPILE) -c -MT $< -Fo$(GNUPLOT_OBJDIR)/$*.$(OBJ_SUFFIX)
else
$(COMPILE) -c $< -o $(GNUPLOT_OBJDIR)/$*.$(OBJ_SUFFIX)
endif
endif

View File

@@ -1,97 +0,0 @@
# Microsoft Developer Studio Project File - Name="mailstone" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=mailstone - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "mailstone.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "mailstone.mak" CFG="mailstone - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "mailstone - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "mailstone - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "mailstone - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "built\WINNT4.0_OPT.OBJ"
# PROP Intermediate_Dir "built\WINNT4.0_OPT.OBJ"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D VERSION="4.1" /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x409 /d "NDEBUG"
# ADD RSC /l 0x409 /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# Begin Special Build Tool
OutDir=.\built\WINNT4.0_OPT.OBJ
SOURCE="$(InputPath)"
PostBuild_Cmds=if not exist built\package\WINNT4.0_OPT.OBJ\nul mkdir built\package\WINNT4.0_OPT.OBJ copy $(OutDir)\mailclient.exe built\package\WINNT4.0_OPT.OBJ
# End Special Build Tool
!ELSEIF "$(CFG)" == "mailstone - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "built\WINNT4.0_DBG.OBJ"
# PROP Intermediate_Dir "built\WINNT4.0_DBG.OBJ"
# PROP Ignore_Export_Lib 0
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /Zi /Od /D VERSION="4.1" /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /FR /FD /c
# SUBTRACT CPP /YX
# ADD BASE RSC /l 0x409 /d "_DEBUG"
# ADD RSC /l 0x409 /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# Begin Special Build Tool
OutDir=.\built\WINNT4.0_DBG.OBJ
SOURCE="$(InputPath)"
PostBuild_Cmds=if not exist built\package\WINNT4.0_DBG.OBJ\nul mkdir built\package\WINNT4.0_DBG.OBJ copy $(OutDir)\mailclient.exe built\package\WINNT4.0_DBG.OBJ
# End Special Build Tool
!ENDIF
# Begin Target
# Name "mailstone - Win32 Release"
# Name "mailstone - Win32 Debug"
# End Target
# End Project

View File

@@ -1,74 +0,0 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "gnuplot"=".\src\gnuplot-3.7\gnuplot.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name libgd
End Project Dependency
}}}
###############################################################################
Project: "libgd"=.\src\gd1.3\libgd.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "mailclient"=.\src\mailclient.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Project: "mailstone"=.\mailstone.dsp - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
Begin Project Dependency
Project_Dep_Name mailclient
End Project Dependency
Begin Project Dependency
Project_Dep_Name gnuplot
End Project Dependency
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

View File

@@ -1,221 +0,0 @@
# Microsoft Developer Studio Generated NMAKE File, Based on mailstone.dsp
!IF "$(CFG)" == ""
CFG=mailstone - Win32 Debug
!MESSAGE No configuration specified. Defaulting to mailstone - Win32 Debug.
!ENDIF
!IF "$(CFG)" != "mailstone - Win32 Release" && "$(CFG)" != "mailstone - Win32 Debug"
!MESSAGE Invalid configuration "$(CFG)" specified.
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "mailstone.mak" CFG="mailstone - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "mailstone - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "mailstone - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
!ERROR An invalid configuration is specified.
!ENDIF
!IF "$(OS)" == "Windows_NT"
NULL=
!ELSE
NULL=nul
!ENDIF
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "mailstone - Win32 Release"
OUTDIR=.\built\WINNT4.0_OPT.OBJ
INTDIR=.\built\WINNT4.0_OPT.OBJ
!IF "$(RECURSE)" == "0"
ALL :
!ELSE
ALL : "gnuplot - Win32 Release" "mailclient - Win32 Release"
!ENDIF
!IF "$(RECURSE)" == "1"
CLEAN :"mailclient - Win32 ReleaseCLEAN" "gnuplot - Win32 ReleaseCLEAN"
!ELSE
CLEAN :
!ENDIF
-@if exist $(INTDIR)\postbld.dep erase $(INTDIR)\postbld.dep
-@if exist built\package\WINNT4.0_OPT.OBJ\mailclient.exe erase built\package\WINNT4.0_OPT.OBJ\mailclient.exe
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP_PROJ=/nologo /ML /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\mailstone.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:no /pdb:"$(OUTDIR)\mailstone.pdb" /machine:I386 /out:"$(OUTDIR)\mailstone.exe"
LINK32_OBJS= \
OutDir=.\built\WINNT4.0_OPT.OBJ
SOURCE="$(InputPath)"
DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
ALL : $(DS_POSTBUILD_DEP)
$(DS_POSTBUILD_DEP) : "gnuplot - Win32 Release" "mailclient - Win32 Release"
if not exist built\package\WINNT4.0_OPT.OBJ\nul mkdir built\package\WINNT4.0_OPT.OBJ
copy .\built\WINNT4.0_OPT.OBJ\mailclient.exe built\package\WINNT4.0_OPT.OBJ
echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
!ELSEIF "$(CFG)" == "mailstone - Win32 Debug"
OUTDIR=.\built\WINNT4.0_DBG.OBJ
INTDIR=.\built\WINNT4.0_DBG.OBJ
!IF "$(RECURSE)" == "0"
ALL :
!ELSE
ALL : "gnuplot - Win32 Debug" "mailclient - Win32 Debug"
!ENDIF
!IF "$(RECURSE)" == "1"
CLEAN :"mailclient - Win32 DebugCLEAN" "gnuplot - Win32 DebugCLEAN"
!ELSE
CLEAN :
!ENDIF
-@if exist $(INTDIR)\postbld.dep erase /q $(INTDIR)\postbld.dep
-@if exist built\package\WINNT4.0_DBG.OBJ\mailclient.exe erase /q built\package\WINNT4.0_DBG.OBJ\mailclient.exe
"$(OUTDIR)" :
if not exist "$(OUTDIR)/$(NULL)" mkdir "$(OUTDIR)"
CPP_PROJ=/nologo /MLd /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /D "_WIN32" /FR"$(INTDIR)\\" /Fo"$(INTDIR)\\" /Fd"$(INTDIR)\\" /FD /c
BSC32=bscmake.exe
BSC32_FLAGS=/nologo /o"$(OUTDIR)\mailstone.bsc"
BSC32_SBRS= \
LINK32=link.exe
LINK32_FLAGS=kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /incremental:yes /pdb:"$(OUTDIR)\mailstone.pdb" /debug /machine:I386 /out:"$(OUTDIR)\mailstone.exe" /pdbtype:sept
LINK32_OBJS= \
OutDir=.\built\WINNT4.0_DBG.OBJ
SOURCE="$(InputPath)"
DS_POSTBUILD_DEP=$(INTDIR)\postbld.dep
ALL : $(DS_POSTBUILD_DEP)
$(DS_POSTBUILD_DEP) : "gnuplot - Win32 Debug" "mailclient - Win32 Debug"
if not exist built\package\WINNT4.0_DBG.OBJ\nul mkdir built\package\WINNT4.0_DBG.OBJ
copy .\built\WINNT4.0_DBG.OBJ\mailclient.exe built\package\WINNT4.0_DBG.OBJ
echo Helper for Post-build step > "$(DS_POSTBUILD_DEP)"
!ENDIF
.c{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.obj::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.c{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cpp{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
.cxx{$(INTDIR)}.sbr::
$(CPP) @<<
$(CPP_PROJ) $<
<<
!IF "$(NO_EXTERNAL_DEPS)" != "1"
!IF EXISTS("mailstone.dep")
!INCLUDE "mailstone.dep"
!ELSE
!MESSAGE Warning: cannot find "mailstone.dep"
!ENDIF
!ENDIF
!IF "$(CFG)" == "mailstone - Win32 Release" || "$(CFG)" == "mailstone - Win32 Debug"
!IF "$(CFG)" == "mailstone - Win32 Release"
"mailclient - Win32 Release" :
cd ".\src"
$(MAKE) /$(MAKEFLAGS) /F .\mailclient.mak CFG="mailclient - Win32 Release"
cd ".."
"mailclient - Win32 ReleaseCLEAN" :
cd ".\src"
$(MAKE) /$(MAKEFLAGS) /F .\mailclient.mak CFG="mailclient - Win32 Release" RECURSE=1 CLEAN
cd ".."
!ELSEIF "$(CFG)" == "mailstone - Win32 Debug"
"mailclient - Win32 Debug" :
cd ".\src"
$(MAKE) /$(MAKEFLAGS) /F .\mailclient.mak CFG="mailclient - Win32 Debug"
cd ".."
"mailclient - Win32 DebugCLEAN" :
cd ".\src"
$(MAKE) /$(MAKEFLAGS) /F .\mailclient.mak CFG="mailclient - Win32 Debug" RECURSE=1 CLEAN
cd ".."
!ENDIF
!IF "$(CFG)" == "mailstone - Win32 Release"
"gnuplot - Win32 Release" :
cd ".\src\gnuplot-3.7"
$(MAKE) /$(MAKEFLAGS) /F ".\gnuplot.mak" CFG="gnuplot - Win32 Release"
cd "..\.."
"gnuplot - Win32 ReleaseCLEAN" :
cd ".\src\gnuplot-3.7"
$(MAKE) /$(MAKEFLAGS) /F ".\gnuplot.mak" CFG="gnuplot - Win32 Release" RECURSE=1 CLEAN
cd "..\.."
!ELSEIF "$(CFG)" == "mailstone - Win32 Debug"
"gnuplot - Win32 Debug" :
cd ".\src\gnuplot-3.7"
$(MAKE) /$(MAKEFLAGS) /F ".\gnuplot.mak" CFG="gnuplot - Win32 Debug"
cd "..\.."
"gnuplot - Win32 DebugCLEAN" :
cd ".\src\gnuplot-3.7"
$(MAKE) /$(MAKEFLAGS) /F ".\gnuplot.mak" CFG="gnuplot - Win32 Debug" RECURSE=1 CLEAN
cd "..\.."
!ENDIF
!ENDIF

View File

@@ -1,56 +0,0 @@
.\" @(#)template.1 1.2 10/22/96 template.1 "
.TH setup 1 "5 Nov 1999" "iPlanet" "Mailstone"
.SH NAME
setup \- Configure Mailstone and copy bits to client machines
.SH SYNOPSIS
.B setup
[
.B \-w workload_file
]
.SH FILES
Workload file are store in the
.BR conf/
directory and have the extension
.BR .wld.
.SH DESCRIPTION
.B Setup
will ask you to accept the licensing terms and ask for an initial
configuration (if these steps have never been performed). The test
system configuration is stored in
.BR conf/general.wld.
.PP
Once there is a valid configuration
.B setup
will copy the appropriate
.B bin/mailclient
and
.B data/*.msg
files to each client machine.
.PP
.B Setup
should be run whenever a new client machine is added, the message file change,
or files are missing on the client machine (due to a clean up of
.B /var/tmp.
.SH OPTIONS
.TP 12
.B \-w workload_file
Specify a workload other than conf/general.wld. This file must define
(or include)
.B CLIENT
sections that list the client machines to use.
.SH EXAMPLES
.IP
.BR example% " setup"
.SH SEE ALSO
.PP
.BR mailstone (1)
.BR checktime (1)
.BR timesync (1)
.BR mstone (1)
.BR workloads (5)
.SH DIAGNOSTICS
The most common problem is insufficient rsh permissions.
Most errors should be self explanitory.

View File

@@ -1,188 +0,0 @@
#!/bin/sh
# 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 the Netscape Mailstone utility,
# released March 17, 2000.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1999-2000 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Dan Christian <robodan@netscape.com>
# Marcel DePaolis <marcel@netcape.com>
#
# Alternatively, the contents of this file may be used under the
# terms of the GNU Public License (the "GPL"), in which case the
# provisions of the GPL are applicable instead of those above.
# If you wish to allow use of your version of this file only
# under the terms of the GPL and not to allow others to use your
# version of this file under the NPL, indicate your decision by
# deleting the provisions above and replace them with the notice
# and other provisions required by the GPL. If you do not delete
# the provisions above, a recipient may use your version of this
# file under either the NPL or the GPL.
#####################################################
# push or clean up mailclient and message files to client hosts
# Usage: setup|cleanup|timesync|checktime|config [mode] [-w workload_file]
#
# Setup (or cleanup) OS specific versions of mailclient and utilities
gconf=conf/general.wld # default file for machines info
# figure out the host arch
run_nsarch() {
if [ ! -x bin/nsarch ] ; then
echo "Installation error! Cannot locate $1 or nsarch.\n"
exit 1
fi
OUROS=`bin/nsarch`
# deal with new versions of OS falling back to versions we have
if [ ! -d build/$OUROS ] ; then
shortos=`echo $OUROS | sed -e 's/[0-9].*//'`
near=`ls build | grep $shortos`
if [ -n "$near" ] ; then
near=`echo $near | cut -f2 -d' '`
echo "No support for $OUROS, using $near"
OUROS=$near
else
echo "No support for $OUROS and nothing similar"
fi
fi
export OUROS
}
# Setup perl to work from perl/bin/perl
setup_perl() {
[ -n "$OUROS" ] || run_nsarch $1
if [ -d perl ] ; then # found it in our distribution
(cd perl; ln -s arch/$OUROS bin)
else
local=`which perl | wc -w`
if [ 1 -eq "$local" ] ; then
[ -d perl/bin ] || mkdir -p perl/bin
(cd perl/bin; ln -s `which perl` perl)
else
echo "No packaged version of perl and no local version"
exit 1;
fi
fi
}
# we always need this
[ -d perl/bin ] || setup_perl # need perl, even for cleanup mode
# Get the default version of mailclient
setup_mailclient() {
[ -n "$OUROS" ] || run_nsarch $1
(cd bin; ln -s ../build/$OUROS/mailclient ./ )
}
# setup_file source_dir directory filename
# usually link in a directory.
# if needed, make the directory and link a local executable.
setup_dir_file() {
[ -n "$OUROS" ] || run_nsarch $1
if [ -d $1/$OUROS/$2 ] ; then # found it in our distribution
ln -s $1/$OUROS/$2 $2
else # look for a system copy
local=`which $3 | wc -w`
if [ 1 -eq "$local" ] ; then
[ -d $2 ] || mkdir -p $2
(cd $2; ln -s `which $3` $3)
else
echo "WARNING: No packaged version of $3 and no local version"
echo " Operation may be severely limited"
fi
fi
}
# Pick up mode as an argument
if [ $# -gt 0 -a \( "$1" = timesync -o "$1" = checktime \
-o "$1" = setup -o "$1" = cleanup -o "$1" = config \
-o "$1" = mstone \) ] ; then
mode=$1
shift
else # or the name we were called
mode=$0
sm=`echo $mode | cut -f2 -d/` # strip ./ from name
if [ -n "$sm" ] ; then
mode=$sm
fi
fi
# see if setup was ever run
if [ "$mode" != setup -a "$mode" != cleanup \
-a \( ! -x perl/bin/perl -o ! -f .license \) ] ; then
echo "mstone setup was never run. Running setup."
mode=setup
fi
if [ "$mode" = setup ] ; then # setup mode
# check to see if our binaries are configured right
#echo "Checking links"
[ -x gnuplot/gnuplot ] || setup_dir_file bin gnuplot gnuplot
[ -x bin/mailclient ] || setup_mailclient
# copy in an initial conf/general.wld, if needed
[ ! -f $gconf -a -f ${gconf}.in ] && cp ${gconf}.in $gconf
fi
# figure out an OS specific flags
extra=""
if [ `uname -s` = HP-UX ] ; then # HP uses remsh for remote exec
extra="RSH=/usr/bin/remsh $extra"
fi
if [ "$mode" != mstone ] ; then # other setup modes
perl/bin/perl -Ibin -- bin/setup.pl $mode -w $gconf $extra "$@"
else # run a mstone test
# This just runs the test with the right path to perl
# Usage: mstone testname
if [ -z "$1" -o "$1" = "-h" -o "$1" = "--help" ] ; then
echo "Usage: $0 testname [arguments]"
echo "Common arguments:"
echo " -t time Test time. s=seconds, m=minutes, h=hours"
echo " -r ramp_time Connection ramp up time. s=seconds, m=..."
echo " -l load Number of test clients to use."
echo " -b 'banner' Test description banner."
echo " -n 'notes' Test notes."
echo "Example:"
echo " ./mstone pop -t 10m -r 90s -l 24 -b 'Pop reads (full store)'"
exit 1
fi
testcase=$1 # get testname
shift
if [ -f $testcase ] ; then # if they gave us the full path
testfile=$testcase
elif [ -f conf/$testcase.wld ] ; then
testfile="conf/$testcase.wld"
else
echo "Cannot find test: $testcase"
fi
exec perl/bin/perl -Ibin -- bin/mailmaster.pl $extra -w $testfile "$@"
# no need to return
fi
if [ "$mode" = cleanup ] ; then # cleanup mode
#echo "Check for old links"
# remove any configured links. if these are directories, it will fail
rm -f perl/bin gd gnuplot 2> /dev/null
# the built in [ on Solaris does not have -L
/usr/bin/test -L bin/mailclient && rm -f bin/mailclient
fi

View File

@@ -1,31 +0,0 @@
@if not "%echo%" == "on" echo off
setlocal
REM
REM This runs the specified test with the correct path to perl.
REM Fills in the TEMP variable
REM
REM Usage: mstone testname [arguments]
REM
if "%1" == "" goto Usage
perl\bin\perl -Ibin -- bin\mailmaster.pl -w conf\%1.wld TEMPDIR=%TEMP% -z %2 %3 %4 %5 %6 %7 %8 %9
goto end
:Usage
echo.
echo Usage: %0 testname [arguments]
echo.
echo where testname is one of the .wld files in the conf\ subdirectory
goto end
:end
echo.
endlocal

View File

@@ -1,141 +0,0 @@
#!/bin/sh
# 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 the Netscape Mailstone utility,
# released March 17, 2000.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1999-2000 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Dan Christian <robodan@netscape.com>
# Marcel DePaolis <marcel@netcape.com>
#
# Alternatively, the contents of this file may be used under the
# terms of the GNU Public License (the "GPL"), in which case the
# provisions of the GPL are applicable instead of those above.
# If you wish to allow use of your version of this file only
# under the terms of the GPL and not to allow others to use your
# version of this file under the NPL, indicate your decision by
# deleting the provisions above and replace them with the notice
# and other provisions required by the GPL. If you do not delete
# the provisions above, a recipient may use your version of this
# file under either the NPL or the GPL.
#####################################################
# Figure out standard system names
UNAME_REPORTS=`uname`
UNAME_OS_SYSTEM=`uname -s`
UNAME_OS_RELEASE=`uname -r`
OS_SYSTEM=${UNAME_OS_SYSTEM}
OS_RELEASE=${UNAME_OS_RELEASE}
OS_CONFIG=${OS_SYSTEM}${OS_RELEASE}
if [ "$UNAME_OS_SYSTEM" = "SunOS" ]; then
PROCESSOR=`uname -p`
if [ "$PROCESSOR" = "i386" ]; then
BUILD_ARCH=x86
else
BUILD_ARCH=sparc
fi
BUILD_OS=Solaris
if [ "$UNAME_OS_RELEASE" = "5.5" ]; then
BUILD_VER=2.5
elif [ "$UNAME_OS_RELEASE" = "5.5.1" ]; then
BUILD_VER=2.5
elif [ "$UNAME_OS_RELEASE" = "5.6" ]; then
BUILD_VER=2.6
elif [ "$UNAME_OS_RELEASE" = "5.7" ]; then
BUILD_VER=7
elif [ "$UNAME_OS_RELEASE" = "5.8" ]; then
BUILD_VER=8
elif [ "$UNAME_OS_RELEASE" = "5.9" ]; then
BUILD_VER=9
fi
OS_CONFIG=${OS_SYSTEM}${OS_RELEASE}_${BUILD_ARCH}
elif [ "$UNAME_OS_SYSTEM" = "HP-UX" ]; then
BUILD_ARCH=HPPA
BUILD_OS=$UNAME_OS_SYSTEM
BUILD_VER=$OS_RELEASE
elif [ "$UNAME_OS_SYSTEM" = "AIX" ]; then
BUILD_ARCH=POWER
BUILD_OS=$UNAME_OS_SYSTEM
BUILD_VER=`uname -v`.`uname -r`
OS_CONFIG=${BUILD_OS}${BUILD_VER}
elif [ "$UNAME_OS_SYSTEM" = "OSF1" ]; then
BUILD_ARCH=ALPHA
BUILD_OS=$UNAME_OS_SYSTEM
BUILD_VER=$OS_RELEASE
elif [ "$UNAME_OS_SYSTEM" = "IRIX64" -o "$UNAME_OS_SYSTEM" = "IRIX" ]; then
BUILD_ARCH=MIPS
BUILD_OS=IRIX
BUILD_VER=$OS_RELEASE
OS_CONFIG=${BUILD_OS}${OS_RELEASE}
elif [ "$UNAME_OS_SYSTEM" = "BSD/386" ]; then
BUILD_ARCH=x86
BUILD_OS=BSDI
BUILD_VER=$OS_RELEASE
elif [ "$UNAME_OS_SYSTEM" = "SCO_SV" ]; then
BUILD_ARCH=x86
BUILD_OS=SCO
BUILD_VER=$OS_RELEASE
elif [ "$UNAME_OS_SYSTEM" = "UNIX_SV" ]; then
# Check for braindamage
grep NCR /etc/bcheckrc > /dev/null 2>&1
BUILD_ARCH=x86
if [ $? = 0 ]; then
BUILD_OS=NCR
else
BUILD_OS=UNIXWARE
fi
BUILD_VER=$OS_RELEASE
elif [ "$UNAME_OS_SYSTEM" = "NEWS-OS" ]; then
BUILD_ARCH=`uname -p`
BUILD_OS=SONY
BUILD_VER=$OS_RELEASE
elif [ "$UNAME_OS_SYSTEM" = "UNIX_System_V" ]; then
BUILD_ARCH=`uname -p`
BUILD_OS=NEC
BUILD_VER=$OS_RELEASE
elif [ $UNAME_OS_SYSTEM = Linux ]; then
BUILD_ARCH=`uname -m`
if [ -n "`echo $BUILD_ARCH | grep -e '86$'`" ] ; then
BUILD_ARCH=x86
fi
BUILD_OS=$UNAME_OS_SYSTEM
BUILD_VER=`echo $OS_RELEASE | cut -f1,2 -d.`
OS_CONFIG=${BUILD_OS}${BUILD_VER}_${BUILD_ARCH}
fi
case "$UNAME_OS_SYSTEM" in
SINIX*|ReliantUNIX*)
BUILD_ARCH=`uname -p`
BUILD_OS="ReliantUNIX"
BUILD_VER=$OS_RELEASE
;;
esac
#PLATFORM=${BUILD_ARCH}_${BUILD_OS}_${BUILD_VER}
#echo $PLATFORM
echo $OS_CONFIG

View File

@@ -1,72 +0,0 @@
#!/bin/sh
# package an OS into a multi-OS tree
# usage ospkg.sh targetOS os...
target=$1; shift
pkgdir=./build/package/$target/mstone
errors=0
for obj
do
srcdir=./build/package/$obj/mstone
if [ ! -d $srcdir ] ; then
echo "Error! Source directory $srcdir is missing."
errors=1
continue;
fi
arch=`echo $obj | sed -e 's/_OPT.OBJ//' | sed -e 's/_DBG.OBJ//'`
echo "===== adding $arch packaging to $pkgdir"
echo "Installing mailclient"
[ -d $pkgdir/bin/$arch/bin ] || mkdir -p $pkgdir/bin/$arch/bin
cp -p $srcdir/bin/mailclient $pkgdir/bin/$arch/bin/
if [ -d $srcdir/gd ] ; then
echo "Installing gd"
[ -d $pkgdir/bin/$arch/gd ] || mkdir -p $pkgdir/bin/$arch/gd
cp -p $srcdir/gd/* $pkgdir/bin/$arch/gd/
fi
if [ -d $srcdir/gnuplot ] ; then
echo "Installing gnuplot"
[ -d $pkgdir/bin/$arch/gnuplot ] || mkdir -p $pkgdir/bin/$arch/gnuplot
cp -p $srcdir/gnuplot/* $pkgdir/bin/$arch/gnuplot/
fi
if [ -d $srcdir/perl ] ; then
perlver=`cd $srcdir/perl/lib; ls -d 5.* | head -1`
perlarch=`cd $srcdir/perl/lib/$perlver; ls -d */Config.pm | cut -f1 -d/`
echo "Installing perl $perlver for $perlarch"
[ -d $pkgdir/perl ] || mkdir -p $pkgdir/perl
cp -pf $srcdir/perl/Artistic $pkgdir/perl/
# we dont pull everything in, just the potentially useful parts
for subdir in man/man1 \
lib/$perlver lib/$perlver/$perlarch \
lib/$perlver/Time lib/$perlver/Term lib/$perlver/Class \
lib/$perlver/Sys lib/$perlver/Data lib/$perlver/Getopt \
lib/$perlver/Test lib/$perlver/Text \
lib/$perlver/File lib/$perlver/File/Spec \
lib/$perlver/CGI lib/$perlver/Net \
lib/$perlver/$perlarch/auto/DynaLoader \
lib/$perlver/$perlarch/auto/Socket \
lib/$perlver/$perlarch/auto/re \
lib/$perlver/$perlarch/auto/attrs
do
[ -d $srcdir/perl/$subdir ] || continue;
[ -d $pkgdir/perl/$subdir ] || mkdir -p $pkgdir/perl/$subdir
# HACK: all the files have dots in them, directories dont
cp -pf $srcdir/perl/$subdir/*.* $pkgdir/perl/$subdir
done
# where we put multi-os perl binaries
perlbin=$pkgdir/perl/arch/$arch
[ -d $perlbin ] || mkdir -p $perlbin
cp -p $srcdir/perl/bin/* $perlbin/
fi
done
exit $errors

View File

@@ -1,143 +0,0 @@
# optional component perl
# This should be run using 'gmake'
########################################################################
topsrcdir = .
ifndef INCLUDED_CONFIG_MK
include $(topsrcdir)/config/config.mk
endif
PERL_OBJDIR = $(OBJDIR)/perl
PERL_PKGDIR = $(PKGDIR)/perl
# HACK, should figure out dynamically from PERL_DIR
PERL_REV = 5.00503
###package:: $(PERL_PKGDIR) package-perl
$(PERL_PKGDIR):
ifeq ($(ARCH), WINNT)
mkdir $(PERL_PKGDIR)
mkdir $(PERL_PKGDIR)/bin
mkdir $(PERL_PKGDIR)/lib
mkdir $(PERL_PKGDIR)/lib/$(PERL_REV)
mkdir $(PERL_PKGDIR)/lib/$(PERL_REV)/$(PERL_OS)
else
[ -d $(PERL_PKGDIR)/bin ] || mkdir -p $(PERL_PKGDIR)/bin
[ -d $(PERL_PKGDIR)/lib ] || mkdir -p $(PERL_PKGDIR)/lib
# subdirs created by perl install
endif
ifeq ("$(PERL_FILES)", "")
# building our own perl
###all:: perl
all::
PERL_TARGET = $(PERL_OBJDIR)/perl
PERL_SRCSTAMP = $(PERL_OBJDIR)/perl_src.stamp
PERL_TESTSTAMP = $(PERL_OBJDIR)/perl_test.stamp
PERL_CONFIG_H = $(PERL_OBJDIR)/config.h
PERL_FINAL_PKGDIR = /opt/mstone/perl
PERL_ADMIN = mailstone+perl@netscape.com
PERL_PAGER = /bin/more
perl:: $(PERL_OBJDIR) $(PERL_TARGET) $(PERL_TESTSTAMP)
$(PERL_OBJDIR):
ifeq ($(ARCH), WINNT)
mkdir $(PERL_OBJDIR)
else
[ -d $(PERL_OBJDIR) ] || mkdir -p $(PERL_OBJDIR)
endif
$(PERL_TARGET): $(PERL_CONFIG_H)
@$(ECHO) "\n===== [`date`] making perl...\n"
( cd $(PERL_OBJDIR); $(MAKE) MAKE=$(MAKE) )
@$(ECHO) "\n===== [`date`] making perl done.\n"
$(PERL_CONFIG_H): $(PERL_OBJDIR)/config.over
@$(ECHO) "\n===== [`date`] making perl config.h...\n"
(\
cd $(PERL_OBJDIR); \
rm -f config.sh makedir makedepend makeaperl config.h cflags \
Policy.sh Makefile writemain perl.exp perlmain.c makefile; \
$(ECHO) MAKE=$(MAKE) MAKEFLAGS=$(MAKEFLAGS); \
MAKEFLAGS= ; export MAKEFLAGS; \
sh Configure -Dprefix=$(PERL_FINAL_PKGDIR) \
-Uinstallusrbinperl -Uusethreads -Uusedl \
-Dcc="$(CC)" -Dmake=$(MAKE) \
-Dcf_email=$(PERL_ADMIN) \
-Dperladmin=$(PERL_ADMIN) -Dpager=$(PERL_PAGER) $(PERL_OS_CONFIGURE) -de ; \
)
$(PERL_OBJDIR)/config.over: $(PERL_SRCSTAMP)
@$(ECHO) "\n===== [`date`] making perl config.over...\n"
(\
perl_pkgdir=`pwd`/$(PERL_PKGDIR); \
cd $(PERL_OBJDIR); \
$(ECHO) "\
installprefix=$${perl_pkgdir}\n\
$(ECHO) \"overriding tmp install dir from \$$prefix to \$$installprefix\"\n\
test -d \$$installprefix || mkdir \$$installprefix\n\
test -d \$$installprefix/bin || mkdir \$$installprefix/bin\n\
installarchlib=\`$(ECHO) \$$installarchlib | sed \"s!\$$prefix!\$$installprefix!\"\`\n\
installbin=\`$(ECHO) \$$installbin | sed \"s!\$$prefix!\$$installprefix!\"\`\n\
installman1dir=\`$(ECHO) \$$installman1dir | sed \"s!\$$prefix!\$$installprefix!\"\`\n\
installman3dir=\`$(ECHO) \$$installman3dir | sed \"s!\$$prefix!\$$installprefix!\"\`\n\
installprivlib=\`$(ECHO) \$$installprivlib | sed \"s!\$$prefix!\$$installprefix!\"\`\n\
installscript=\`$(ECHO) \$$installscript | sed \"s!\$$prefix!\$$installprefix!\"\`\n\
installsitelib=\`$(ECHO) \$$installsitelib | sed \"s!\$$prefix!\$$installprefix!\"\`\n\
installsitearch=\`$(ECHO) \$$installsitearch | sed \"s!\$$prefix!\$$installprefix!\"\`" \
> config.over;\
)
$(PERL_SRCSTAMP): $(PERL_DIR)
@$(ECHO) "\n===== [`date`] making perl src links from $(PERL_DIR) to $(PERL_OBJDIR)...\n"
-rm -f $(PERL_SRCSTAMP)
[ -d $(PERL_OBJDIR) ] || mkdir -p $(PERL_OBJDIR)
-(\
perl_dir=`pwd`/$(PERL_DIR); \
cd $(PERL_OBJDIR); \
for i in `(cd $${perl_dir} && find . -type d -print)` ; do \
$(ECHO) "linking dir $$i ..."; \
[ -d $$i ] || mkdir $$i; \
for j in `(cd $${perl_dir}/$$i; echo *)` ; do \
[ -f $${perl_dir}/$$i/$$j -o -h $${perl_dir}/$$i/$$j ] && ( \
/bin/true || $(ECHO) " $$i/$$j"; \
ln -s $${perl_dir}/$$i/$$j $$i/$$j); \
done; \
done; \
)
touch $(PERL_SRCSTAMP)
@$(ECHO) "\n===== [`date`] making perl src links done...\n"
$(PERL_TESTSTAMP): $(PERL_TARGET)
@$(ECHO) "\n===== [`date`] making perl test-notty...\n"
-rm -f $(PERL_TESTSTAMP)
-( cd $(PERL_OBJDIR); $(MAKE) MAKE=$(MAKE) test-notty )
touch $(PERL_TESTSTAMP)
@$(ECHO) "\n===== [`date`] making perl test-notty done.\n"
package-perl:: $(PERL_PKGDIR)/Artistic
@$(ECHO) "\n===== [`date`] making perl package done.\n"
$(PERL_PKGDIR)/Artistic:
@$(ECHO) "\n===== [`date`] making perl package ...\n"
( cd $(PERL_OBJDIR); $(MAKE) MAKE=$(MAKE) install )
-rm -rf $(PERL_PKGDIR)/lib/$(PERL_REV)/*/CORE/
cp $(PERL_OBJDIR)/Artistic $(PERL_PKGDIR)
else # PERL_FILES
# importing a perl
package-perl:: $(PERL_PKGDIR) $(PERL_TARGET)
$(PERL_TARGET): $(PERL_FILES) $(PERL_BIN_FILES) $(PERL_LIB_FILES)
cp $(PERL_FILES) $(PERL_PKGDIR)/
cp $(PERL_BIN_FILES) $(PERL_PKGDIR)/bin/
cp $(PERL_LIB_FILES) $(PERL_PKGDIR)/lib/$(PERL_REV)/
cp $(PERL_LIB_OS_FILES) $(PERL_PKGDIR)/lib/$(PERL_REV)/$(PERL_OS)/
endif # PERL_FILES

View File

@@ -1,70 +0,0 @@
#!/bin/sh
# The conZtents 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 the Netscape Mailstone utility,
# released March 17, 2000.
#
# The Initial Developer of the Original Code is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1999-2000 Netscape Communications Corporation. All
# Rights Reserved.
#
# Contributor(s): Dan Christian <robodan@netscape.com>
# Marcel DePaolis <marcel@netcape.com>
#
# Alternatively, the contents of this file may be used under the
# terms of the GNU Public License (the "GPL"), in which case the
# provisions of the GPL are applicable instead of those above.
# If you wish to allow use of your version of this file only
# under the terms of the GPL and not to allow others to use your
# version of this file under the NPL, indicate your decision by
# deleting the provisions above and replace them with the notice
# and other provisions required by the GPL. If you do not delete
# the provisions above, a recipient may use your version of this
# file under either the NPL or the GPL.
#####################################################
# re-process a data run
# by default, use the most recent one
# Usage: process
# or
# Usage: process TIMESTAMP [args...]
# or
# Usage: process results/TIMESTAMP [args...]
if [ ! -x perl/bin/perl -o ! -f .license ] ; then # see if setup was ever run
echo "Critical files are missing. Run setup."
exit 2;
fi
if [ $# -lt 1 ] ; then # do most recent run
# since the directories are time stamps with fixed fields,
# alphabetical order is also time order
dir=`ls -d results/[0-9]*.[0-9]* | tail -1`
else # use specified run
if [ -d results/$1 ] ; then # timestamp
dir=results/$1
shift
elif [ -d $1 ] ; then # results/timestamp
dir=$1
shift
fi
fi
if [ -n "$dir" ] ; then
if [ -f $dir/all.wld ] ; then # unified workload file
perl/bin/perl -Ibin -- bin/process.pl -w $dir/all.wld "$@"
else # BACK COMPATIBILITY form
perl/bin/perl -Ibin -- bin/process.pl -c $dir/config.cfg "$@"
fi
else # pass in whatever they gave us
perl/bin/perl -Ibin -- bin/process.pl "$@"
fi

View File

@@ -1,30 +0,0 @@
@if not "%echo%" == "on" echo off
setlocal
REM
REM This a processes a previous test with the correct path to perl.
REM
REM Usage: process TIMESTAMP [arguments]
REM
if "%1" == "" goto Usage
perl\bin\perl -Ibin -- bin/process.pl -c results\%1\config.cfg %2 %3 %4 %5 %6 %7 %8 %9
goto end
:Usage
echo.
echo Usage: %0 TIMESTAMP [arguments]
echo.
echo where TIMESTAMP is one of the directories in the results\ subdirectory
goto end
:end
echo.
endlocal

View File

@@ -1,126 +0,0 @@
@if not "%echo%" == "on" echo off
REM
REM copy program and messages to temp directory
REM
setlocal
set OS_ARCH=WINNT
set OS_RELEASE=4.0
set OS_CONFIG=%OS_ARCH%%OS_RELEASE%
if not exist perl\nul mkdir perl
if not exist perl\bin\nul mkdir perl\bin
if exist perl\bin\perl.exe goto PerlExists
if not exist perl\arch\%OS_CONFIG%\perl.exe goto NoPerl
copy perl\arch\%OS_CONFIG%\*.* perl\bin > nul
if not exist perl\bin\perl.exe goto NoPerl
:PerlExists
if not exist gd\nul mkdir gd
if exist gd\gd.html goto GDExists
if not exist bin\%OS_CONFIG%\gd\gd.html goto NoGD
copy bin\%OS_CONFIG%\gd\* gd > nul
if not exist gd\gd.html goto NoGD
:GDExists
if not exist gnuplot\nul mkdir gnuplot
if exist gnuplot\gnuplot.exe goto GnuPlotExists
if not exist bin\%OS_CONFIG%\gnuplot\gnuplot.exe goto NoGnuPlot
copy bin\%OS_CONFIG%\gnuplot\* gnuplot > nul
if not exist gnuplot\gnuplot.exe goto NoGnuPlot
:GnuPlotExists
if not exist bin\nul mkdir bin
if exist bin\mailclient.exe goto MailClientExists
if not exist bin\%OS_CONFIG%\bin\mailclient.exe goto NoMailClient
copy bin\%OS_CONFIG%\bin\mailclient.exe bin > nul
:MailClientExists
REM Mode is our name unless the first word is a known mode
set MODE=%0
REM SetMode will jump back to ModeCheckDone
if "%1" == "setup" goto SetMode
if "%1" == "cleanup" goto SetMode
if "%1" == "config" goto SetMode
if "%1" == "checktime" goto SetMode
:ModeCheckDone
REM All the OS setup is done, now make the copies for test execution
REM While debugging the perl version, just do the copies
copy data\*.msg %TEMP% > nul
copy bin\mailclient.exe %TEMP% > nul
REM Run the perl version of setup to handle license and configuration
perl\bin\perl -Ibin -- bin\setup.pl %MODE% TEMPDIR=%TEMP% -w conf\general.wld -z %1 %2 %3 %4 %5 %6 %7 %8
goto end
:SetMode
REM set the MODE to be the arg1 instead of arg0. shift remaining args
set MODE=%1
shift
goto ModeCheckDone
:NoPerl
echo.
echo ERROR: Cannot find perl\arch\%OS_CONFIG%\perl.exe nor perl\bin\perl.exe
echo.
echo Either your mailstone package is incomplete, or you are
echo attempting to run setup.bat from the wrong location.
goto end
:NoGD
echo.
echo ERROR: Cannot find bin\%OS_CONFIG%\gd\gd.html nor gd\gd.html
echo.
echo Either your mailstone package is incomplete, or you are
echo attempting to run setup.bat from the wrong location.
goto end
:NoGnuPlot
echo.
echo ERROR: Cannot find bin\%OS_CONFIG%\gnuplot\gnuplot.exe nor gnuplot\gnuplot.exe
echo.
echo Either your mailstone package is incomplete, or you are
echo attempting to run setup.bat from the wrong location.
goto end
:NoMailClient
echo.
echo ERROR: Cannot find bin\%OS_CONFIG%\bin\mailclient.exe nor bin\mailclient.exe
echo.
echo Either your mailstone package is incomplete, or you are
echo attempting to run setup.bat from the wrong location.
goto end
:end
echo.
endlocal

View File

@@ -1,132 +0,0 @@
# Makefile for mailstone
# This should be run using 'gmake'
########################################################################
topsrcdir = ..
ifndef INCLUDED_CONFIG_MK
include $(topsrcdir)/config/config.mk
endif
# you may want to force debug on the command line (default is release)
# BUILD_VARIANT=debug
# pass in extra compile arguments in CPPFLAGS
BINDIR = ../bin
########################################################################
# what are we making
all:: $(OBJDIR) mailclient
########################################################################
.SUFFIXES: .c .$(OBJ_SUFFIX)
.SUFFIXES: .c .$(OBJ_SUFFIX)
.c.$(OBJ_SUFFIX):
ifeq ($(ARCH), WINNT)
$(COMPILE) -c -MT $< -Fo$(OBJDIR)/$@
else
$(COMPILE) -c $< -o $(OBJDIR)/$@
endif
$(OBJDIR)/%.$(OBJ_SUFFIX): %.c
ifeq ($(ARCH), WINNT)
$(COMPILE) -c -MT $< -Fo$(OBJDIR)/$*.$(OBJ_SUFFIX)
else
$(COMPILE) -c $< -o $(OBJDIR)/$*.$(OBJ_SUFFIX)
endif
########################################################################
# mailclient itself
STONE = $(OBJDIR)/mailclient$(EXE_SUFFIX)
STONESRCS = bench.c client.c errexit.c main.c \
parse.c sysdep.c timefunc.c \
http-util.c http.c imap4.c pop3.c smtp.c wmap.c \
idle.c generate.c socket.c multipop.c webmail.c \
xalloc.c sb.c $(FEATURE_SRCS)
STONEOBJS = $(addprefix $(OBJDIR)/, $(STONESRCS:.c=.$(OBJ_SUFFIX)) )
mailclient:: $(STONE)
$(OBJDIR):
mkdir -p $(OBJDIR)
$(STONE): $(STONEOBJS) Makefile
@$(ECHO) "\n===== [`date`] making $(STONE)...\n"
$(COMPILE) $(STONEOBJS) $(LIBS) $(OS_LINKFLAGS) -o $(STONE)
$(OBJDIR)/bench.$(OBJ_SUFFIX): bench.c bench.h sysdep.h Makefile
$(OBJDIR)/client.$(OBJ_SUFFIX): client.c bench.h sysdep.h idle.h Makefile
$(OBJDIR)/errexit.$(OBJ_SUFFIX): errexit.c bench.h sysdep.h Makefile
$(OBJDIR)/http.$(OBJ_SUFFIX): http.c bench.h sysdep.h http-util.h Makefile
$(OBJDIR)/imap4.$(OBJ_SUFFIX): imap4.c bench.h pish.h sysdep.h idle.h Makefile
$(OBJDIR)/main.$(OBJ_SUFFIX): main.c bench.h sysdep.h Makefile
$(OBJDIR)/parse.$(OBJ_SUFFIX): parse.c bench.h sysdep.h Makefile generate.h
$(OBJDIR)/pop3.$(OBJ_SUFFIX): pop3.c bench.h pish.h sysdep.h Makefile
$(OBJDIR)/smtp.$(OBJ_SUFFIX): smtp.c bench.h pish.h sysdep.h Makefile generate.h
$(OBJDIR)/stats.$(OBJ_SUFFIX): stats.c bench.h sysdep.h Makefile
$(OBJDIR)/sysdep.$(OBJ_SUFFIX): sysdep.c bench.h sysdep.h Makefile
$(OBJDIR)/timefunc.$(OBJ_SUFFIX): timefunc.c bench.h sysdep.h Makefile
$(OBJDIR)/wmap.$(OBJ_SUFFIX): wmap.c bench.h sysdep.h Makefile http-util.h
$(OBJDIR)/http-util.$(OBJ_SUFFIX): http-util.c bench.h sysdep.h Makefile http-util.h
$(OBJDIR)/idle.$(OBJ_SUFFIX): idle.c idle.h bench.h Makefile
$(OBJDIR)/generate.$(OBJ_SUFFIX): generate.c generate.h bench.h idle.h Makefile
$(OBJDIR)/socket.$(OBJ_SUFFIX): socket.c socket.h sysdep.h Makefile
$(OBJDIR)/multipop.$(OBJ_SUFFIX): multipop.c bench.h pish.h sysdep.h Makefile
$(OBJDIR)/webmail.$(OBJ_SUFFIX): webmail.c bench.h pish.h sysdep.h Makefile
$(OBJDIR)/event.$(OBJ_SUFFIX): event.c event.h Makefile
$(OBJDIR)/checksum.$(OBJ_SUFFIX): checksum.c checksum.h Makefile
$(OBJDIR)/sb.$(OBJ_SUFFIX): sb.c sb.h Makefile
$(OBJDIR)/md5.$(OBJ_SUFFIX): md5.c md5.h Makefile
# currently broken. See ../Makefile for packaging
install: all
$(CP) $(STONE) $(BINDIR)
# clean out everything that we created.
distclean:: clean
$(RM) -rf $(OBJDIR)
# clean out the intermediate files, keep the executable
clean::
$(RM) $(STONEOBJS)
debug::
@$(ECHO) "\n===== [`date`] making debug...\n"
$(MAKE) BUILD_VARIANT=debug OBJDIR_TAG=_DBG
release::
@$(ECHO) "\n===== [`date`] making release...\n"
$(MAKE) BUILD_VARIANT=release OBJDIR_TAG=_OPT
########################################################################

View File

@@ -1,61 +0,0 @@
To build on a new OS, simply edit the Makefile to reflect your
compilers and options.
Everything currently builds on Linux-2.1/2.2, Solaris-2.5.1/2.6, HPUX-11
IRIX-6.5, AIX-4.2, OSF1-4.0 and NT-4. Operating systems without
POSIX threads (or NT threads) will be limited.
NT uses ../autobuild.bat, *.dsw, and *.mak.
Perl is imported from a common build area.
Notes on protocol plug in API:
Fundamental data structures:
event_timer_t
Holds the critical results information. This gets added up
over all the block in all the threads periodically during the test.
cmd_stats_t
This holds all the dynamic information including event timers,
and state for sequencing the command block (like next login).
mail_command_t
This hold all the read only information about a command block.
thread_context_t
All the information about each thread. There is one thread
per server connection.
range_t
Integer range based on a starting number and a length. This
can be sequentially or randomly returned. This needs to be adjusted
for each command thread.
protocol_t
This defines the callbacks and shared information for each protocol.
Adding a new protocol:
Create all the handler functions. Look at smtp.c for an example
Add the entry to g_protocols in main.c
Add it to the makefiles
Design issues:
Timing accuracy
Scalability (current limit is 26000 clients/machine)
Extendibility
Memory use (limits scalability)
Result data efficiency

View File

@@ -1,774 +0,0 @@
/* -*- Mode: C; c-file-style: "stroustrup"; comment-column: 40 -*- */
/*
* 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 the Netscape Mailstone utility,
* released March 17, 2000.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1997-2000 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s): Dan Christian <robodan@netscape.com>
* Marcel DePaolis <marcel@netcape.com>
* Mike Blakely
* Sean O'Rourke <sean@sendmail.com>
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License Version 2 or later (the "GPL"), in
* which case the provisions of the GPL are applicable instead of
* those above. If you wish to allow use of your version of this file
* only under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice and
* other provisions required by the GPL. If you do not delete the
* provisions above, a recipient may use your version of this file
* under either the NPL or the GPL.
*/
/*
bench.c has all the OS independent utilities.
*/
#include "bench.h"
#include "checksum.h"
/*
* waitReadWrite(int fd, int flags)
* parameter: fd: file descriptor
* read_write: 0 --> read
* 1 --> write
* 2 --> read & write
* return: NON-Zero something is read
* 0 sth is wrong
*/
#define CHECK_READ 0x0
#define CHECK_WRITE 0x1
#define CHECK_RW 0x2
#define CHECK_ALL 0x3
#define CHECK_FOREVER 0x4
#define waitReadable(fd, t) waitReadWrite((fd), (t), CHECK_READ)
#define waitWriteable(fd, t) waitReadWrite((fd), (t), CHECK_WRITE)
#define waitWriteableForever(fd) waitReadWrite((fd), -1, CHECK_WRITE | CHECK_FOREVER)
/* Return 1 if bytes readable; 0 if error or time up */
int
waitReadWrite(SOCKET s, int timeout, int flags)
{
#ifdef _WIN32
return 0;
#else
int fd = SOCK_FD(s);
struct pollfd pfd;
int ret;
pfd.fd = fd;
pfd.events = POLLHUP;
if ((flags & CHECK_ALL) == CHECK_READ) {
pfd.events |= POLLIN;
} else if ((flags & CHECK_ALL) == CHECK_WRITE) {
pfd.events |= POLLOUT;
} else if ((flags & CHECK_ALL) == CHECK_RW) {
pfd.events |= (POLLIN | POLLOUT);
}
if (flags & CHECK_FOREVER) {
timeout = 0; /* truly forever */
} else {
if (gf_timeexpired >= EXIT_FAST) {
D_PRINTF(stderr, "waitReadWrite gf_timeexpired=%d\n",
gf_timeexpired);
return 0;
}
}
try_again:
ret = poll(&pfd, 1, timeout);
if (ret < 0) {
if (errno == EAGAIN || errno == EINTR)
goto try_again;
D_PRINTF(stderr, "waitReadWrite error ret=%d\n", ret);
ret = 0;
}
return ret;
#endif
}
int
retryRead(ptcx_t ptcx, SOCKET sock, char *buf, int count)
{
int ret;
int bytesread = 0;
D_PRINTF(debugfile, "retryRead(%d, %d (gf_timeexpired=%d))\n",
SOCK_FD(sock), count, gf_timeexpired);
while (count) {
if (gf_timeexpired >= EXIT_FAST) {
D_PRINTF (debugfile, "retryRead gf_timeexpired\n");
strcpy (ptcx->errMsg, "retryRead:TIMEOUT");
break;
}
if (0 == waitReadable (sock, ptcx->net_timeout)) {
D_PRINTF (debugfile, "retryRead waitReadable time/error\n");
strcpy (ptcx->errMsg, "waitReadable TIMEOUT<retryRead");
break;
}
ret = NETREAD(sock, buf, count);
if (ret < 0) {
if (errno == EINTR)
continue;
if (errno == EAGAIN) {
if (bytesread > 0)
break; /* return what we got so far */
if (waitReadable(sock, ptcx->net_timeout)) {
continue;
}
}
if (bytesread == 0) {
bytesread = -1;
}
sprintf (ptcx->errMsg, "retryRead(sock=%d) IO error",
SOCK_FD(sock));
break;
}
if(ret == 0 && errno == EAGAIN)
continue;
bytesread += ret;
buf += ret;
count -= ret;
break; /* return any good bytes */
}
D_PRINTF(debugfile, "retryRead(%d, %d)=%d\n", SOCK_FD(sock),
count, bytesread);
return bytesread;
}
int
retryWrite(ptcx_t ptcx, SOCKET sock, char *buf, int count)
{
int ret;
int byteswritten = 0;
D_PRINTF(debugfile, "retryWrite(%d, %d)...\n", SOCK_FD(sock), count);
while (count) {
if (gf_timeexpired >= EXIT_FAST) {
D_PRINTF (debugfile, "retryWrite gf_timeexpired\n");
strcpy (ptcx->errMsg, "read:timeout");
break;
}
ret = NETWRITE(sock, buf, count);
if (ret < 0) {
if (errno == EINTR)
continue;
if (errno == EAGAIN) {
if (waitWriteable(sock, ptcx->net_timeout)) {
continue;
}
}
if (byteswritten == 0) {
byteswritten = -1;
}
sprintf (ptcx->errMsg,
"retryWrite(sock=%d, n=%d) IO error",
SOCK_FD(sock), count);
break;
}
byteswritten += ret;
buf += ret;
count -= ret;
}
D_PRINTF(debugfile, "retryWrite(%d, %d)=%d\n",
SOCK_FD(sock), count, byteswritten);
return byteswritten;
}
int
readResponse(ptcx_t ptcx, SOCKET sock, char *buffer, int buflen)
{
/* read the server response and do nothing with it */
int totalbytesread = 0;
int resplen = 0;
int bytesread;
char *offset;
memset (buffer, 0, sizeof(buffer));
while (totalbytesread < buflen)
{
if (gf_timeexpired >= EXIT_FAST) {
D_PRINTF(debugfile,"readResponse() Time expired.\n");
break;
}
if ((bytesread = retryRead(ptcx, sock, buffer+totalbytesread,
buflen-totalbytesread)) <= 0) {
strcat (ptcx->errMsg, "<ReadResponse");
return -1;
}
totalbytesread += bytesread;
buffer[totalbytesread] = 0;
/* search for end of response (assume single line) */
if ((offset = strstr(buffer, "\n"))) {
resplen = offset - buffer + 1;
break;
} else if ((offset = strstr(buffer, "\r\n"))) {
resplen = offset - buffer + 2;
break;
}
}
D_PRINTF(debugfile, "Read from server: %s\n", buffer );
ptcx->bytesread += resplen;
return resplen;
}
/* expects pointers to buffers of these sizes */
/* char command[MAX_COMMAND_LEN] */
/* char response[MAX_RESPONSE_LEN] */
int
doCommandResponse(ptcx_t ptcx, SOCKET sock, char *command, char *response, int resplen)
{
int ret;
if (response == NULL)
return -1;
memset(response, 0, resplen);
/* send the command already formatted */
if ((ret = sendCommand(ptcx, sock, command)) == -1) {
strcat (ptcx->errMsg, "<doCommandResponse");
return -1;
}
/* read server response line */
if ((ret = readResponse(ptcx, sock, response, resplen)) <= 0) {
strcat (ptcx->errMsg, "<doCommandResponse");
return -1;
}
return ret;
}
int
sendCommand(ptcx_t ptcx, SOCKET sock, char *command)
{
int writelen;
int sentbytes = 0;
int sent;
D_PRINTF(debugfile, "sendCommand(%s)\n", command );
writelen = strlen(command);
while (sentbytes < writelen) {
if ((sent = retryWrite(ptcx, sock, command + sentbytes,
writelen - sentbytes)) == -1) {
strcat (ptcx->errMsg, "<sendCommand");
return -1;
}
sentbytes += sent;
if (gf_timeexpired >= EXIT_FAST) {
D_PRINTF(debugfile,"sendCommand() Time expired.\n");
break;
}
}
ptcx->byteswritten += sentbytes;
return sentbytes;
}
/* This is how status messages are sent */
int
sendOutput(int fd, char *string)
{
int writelen;
int sentbytes = 0;
int sent;
/*D_PRINTF(stderr, "sendOutput(%d, %s)\n", fd, string );*/
writelen = strlen(string);
while (sentbytes < writelen) {
sent = OUTPUT_WRITE(fd, string + sentbytes, writelen - sentbytes);
if (sent == -1) {
if (errno == EINTR)
continue;
if (errno == EAGAIN) {
/* if (waitWriteableForever(fd)) */
/* continue; */
/* else */
returnerr(stderr,
"sendOutput(%d) - Got EAGAIN and fd not ready\n",
fd); /* has this ever happened? die??? */
}
return -1;
}
sentbytes += sent;
}
return sentbytes;
}
/* read from socket until we find <CRLF>.<CRLF>, throwing it away as
we go. */
int
retrMsg(ptcx_t ptcx, SOCKET sock)
{
int totalbytesread = 0;
int bytesread;
int sz;
char garbage[10000], *sp;
sp = garbage;
sz = sizeof (garbage)-1;
while (1) {
if (gf_timeexpired >= EXIT_FAST) {
D_PRINTF(debugfile,"Time expired while reading messages - in retrMsg\n");
break;
}
bytesread = retryRead(ptcx, sock,
sp+totalbytesread, sz-totalbytesread);
/*D_PRINTF (stderr, "retrMsg: got %d bytes\n", bytesread);*/
if (bytesread <= 0) {
strcat (ptcx->errMsg, "<retrMsg");
return -1;
}
ptcx->bytesread += bytesread;
totalbytesread += bytesread;
sp[totalbytesread] = 0; /* terminate string */
if (NULL != strstr (sp, "\r\n.\r\n")) {
D_PRINTF (stderr, "retrMsg: saw terminating string\n");
break;
}
if (!strncmp (sp, "-ERR", 4)) { /* watch for error response */
trimEndWhite (sp);
sprintf (ptcx->errMsg, "retrMsg: ERROR response=[%.40s]", sp);
return -1;
}
if (totalbytesread > 5) { /* reset our scratch buffer */
int i;
char *from, *to;
/* shuffle last 5 bytes to start */
from = sp + totalbytesread - 5;
to = garbage;
for (i=5; i > 0; --i)
*to++ = *from++;
totalbytesread = 5;
}
}
return totalbytesread;
}
/*
Record current time
*/
int
timeval_stamp(struct timeval *tv)
{
int rc;
rc = GETTIMEOFDAY(tv, NULL);
if (rc != 0) {
errexit(stderr, "Error from gettimeofday()\n");
}
return rc;
}
/*
This is the main event timing routine. This resets counters
Note that event timing cannot be nested.
*/
void
event_start(ptcx_t ptcx, event_timer_t *pevent)
{
ptcx->bytesread = 0;
ptcx->byteswritten = 0;
timeval_stamp(&ptcx->starttime);
}
/*
This ends an event and increments the counters
Multiple stops are no longer allowed. (broke min, max, and sum of t*t)
*/
void
event_stop(ptcx_t ptcx, event_timer_t *pevent)
{
struct timeval tv;
double t;
timeval_stamp(&tv); /* get the time */
if (gf_timeexpired >= EXIT_FAST) { /* if aborting run, ignore it */
return;
}
pevent->trys++; /* count try with time */
pevent->bytesread += ptcx->bytesread;
pevent->byteswritten += ptcx->byteswritten;
t = compdifftime_double(&tv, &ptcx->starttime); /* find time span */
pevent->elapsedtime += t;
pevent->elapsedtimesq += t * t;
if (t > pevent->maxtime) /* check max time */
pevent->maxtime = t;
/* this gets initialized to 0.0 */
if (!pevent->mintime || /* check min time */
((t > 0.0) && (t < pevent->mintime))) /* smallest non 0 time */
pevent->mintime = t;
}
/*
reset the event structure
*/
void
event_reset(event_timer_t *pevent)
{
memset(pevent, 0, sizeof(event_timer_t));
}
/*
Add pincr event into psum event
*/
void
event_sum(event_timer_t *psum, event_timer_t *pincr)
{
psum->trys += pincr->trys;
psum->errs += pincr->errs;
psum->bytesread += pincr->bytesread;
psum->byteswritten += pincr->byteswritten;
psum->elapsedtime += pincr->elapsedtime;
psum->elapsedtimesq += pincr->elapsedtimesq;
if (pincr->maxtime > psum->maxtime)
psum->maxtime = pincr->maxtime;
if (!psum->mintime ||
((pincr->mintime > 0.0) && (pincr->mintime < psum->mintime)))
psum->mintime = pincr->mintime;
}
/* Format string for every timer. Must match event_to_text */
const char *gs_eventToTextFormat = "Try+Error/BytesR+BytesW/Time[TimeMin,TimeMax]Time2";
/*
Output event into ebuf.
*/
char *
event_to_text(event_timer_t *pevent, char *ebuf)
{
/* these have to be sane to avoid overflowing the print buffer */
assert (pevent->bytesread < 1.0e20);
assert (pevent->byteswritten < 1.0e20);
assert (pevent->elapsedtime < 1.0e10);
assert (pevent->maxtime < 1.0e10);
assert (pevent->elapsedtimesq < 1.0e20);
if (pevent->elapsedtime) {
sprintf(ebuf, "%ld+%ld/%.0f+%.0f/%.6f[%.6f,%.6f]%.6f",
pevent->trys, pevent->errs,
pevent->bytesread, pevent->byteswritten,
pevent->elapsedtime,
pevent->mintime,
pevent->maxtime,
pevent->elapsedtimesq);
} else { /* trim extra 0s for simple case*/
sprintf(ebuf, "%ld+%ld/%.0f+%.0f/0.0[0.0,0.0]0.0",
pevent->trys, pevent->errs,
pevent->bytesread, pevent->byteswritten);
}
return ebuf;
}
/*
Given the last value we returned, return the next sequential or random value
If the initial value is out of the range, a valid number will be returned.
*/
unsigned long
rangeNext (range_t *range, unsigned long last)
{
unsigned long n;
assert (range != NULL);
if (range->span == 0) /* empty range (span = 0) */
return range->first;
if (range->sequential > 0) { /* incrementing sequential */
n = last + 1;
} else if (range->sequential < 0) { /* decrementing sequential */
n = last - 1;
} else { /* random */
n = range->first + (RANDOM() % (range->span+1));
assert ((n >= range->first) && (n <= range->last));
}
/* check range */
if (n > range->last) n = range->first;
if (n < range->first) n = range->last;
return n;
}
/*
Setup range given a first and last valid values (inclusive)
Direction: + incrementing, 0 random, - decrementing
If first and last are reversed, it will adjust accordingly
*/
void
rangeSetFirstLast (range_t *range,
unsigned long first,
unsigned long last,
int dir)
{
assert (range != NULL);
if (last > first) {
range->first = first;
range->last = last;
range->sequential = dir;
} else {
range->first = last;
range->last = first;
range->sequential = -dir;
}
range->span = range->last - range->first;
}
/*
Setup range given a first valid value (inclusive) and number (1..)
Direction: + incrementing, 0 random, - decrementing
*/
void
rangeSetFirstCount (range_t *range,
unsigned long first,
unsigned long num,
int dir)
{
assert (range != NULL);
if (num > 0) --num; /* adjust to internal notation */
range->first = first;
range->span = num;
range->last = range->first + range->span;
range->sequential = dir;
}
/*
Given a specified range, split it based on process and thread
*/
void
rangeSplit (range_t *whole, range_t *sub, int pnum, int tnum)
{
unsigned long perproc, first, count;
if (!whole->sequential) { /* just copy it */
sub->first = whole->first;
sub->last = whole->last;
sub->span = whole->span;
sub->sequential = whole->sequential;
return;
}
/* To avoid cumulative rounding errors,
the 0th process/thread rounds up, all others round down */
perproc = (pnum > 0)
? (whole->span+1) / gn_numprocs
: (whole->span+1 + gn_numprocs - 1) / gn_numprocs;
if (perproc <= 0) perproc = 1; /* in case logins > processes */
if (gn_numthreads > 0) {
unsigned long perthread;
perthread = (tnum > 0)
? perproc / gn_numthreads
: (perproc + gn_numthreads - 1) / gn_numthreads;
if (perthread <= 0) perthread = 1; /* in case logins > threads */
first = whole->first + (perproc * pnum) + (perthread * tnum);
count = perthread;
} else {
first = whole->first + (perproc * pnum);
count = perproc;
}
/* If logins > processes*threads, we have to wrap the space */
while (first >= (whole->first + whole->span+1)) {
first -= whole->span+1;
}
assert (first >= whole->first);
rangeSetFirstCount (sub, first, count, whole->sequential);
}
/*
clear protocol independ parts of cmd_stats_t
*/
void
cmdStatsInit (cmd_stats_t *p)
{
assert (NULL != p);
p->totalerrs = 0;
p->totalcommands = 0;
event_reset (&p->combined);
event_reset (&p->idle);
}
void
stats_init(stats_t *p)
{
memset(p, 0, sizeof(*p));
}
/*
Given a buffer, trim tailing CR-NL and whitespace from it
Moves 0 terminator to exclude extra portion.
*/
void
trimEndWhite (char *buff)
{
char *cp;
if (!buff) return;
for (cp = buff; *cp; ++cp); /* find the end */
while (cp > buff) {
--cp;
if ((*cp != '\n') && (*cp !='\r')
&& (*cp != '\t') && (*cp != ' ')) return;
*cp = 0;
}
}
#if 0 /* never used */
int
timeval_clear(struct timeval *tv)
{
if (tv == NULL)
return -1;
tv->tv_sec = 0;
tv->tv_usec = 0;
return 0;
}
/* timetextbuf should be (SIZEOF_TIMEVALTEXT + 1) */
char *
timeval_to_text(const struct timeval *the_timeval, char *timetextbuf)
{
/*
* given a timeval (seconds and microseconds), put the text
* "seconds.microseconds" into timeval_as_text
*/
int seconds, microseconds;
seconds = the_timeval->tv_sec;
microseconds = the_timeval->tv_usec;
sprintf(timetextbuf, "%10d.%6.6d\t", seconds, microseconds);
return timetextbuf;
}
/* doubletextbuf should be (SIZEOF_DOUBLETEXT+1) */
char *
double_to_text(const double the_double, char *doubletextbuf)
{
/*
* given a double, return text
*/
sprintf(doubletextbuf, "%17.01f\t", the_double);
return(doubletextbuf);
}
struct timeval
text_to_timeval(ptcx_t ptcx, char *timeval_as_text) {
long int seconds, microseconds;
struct timeval the_timeval;
D_PRINTF(debugfile,"T/%d %s\n", (int)timeval_as_text, timeval_as_text);
sscanf(timeval_as_text, "%ld.%ld", &seconds, &microseconds);
the_timeval.tv_sec = seconds;
the_timeval.tv_usec = microseconds;
return the_timeval;
}
double
text_to_double(ptcx_t ptcx, char *double_as_text) {
double the_double = 0;
int returnval = 0;
D_PRINTF(debugfile,"D/%d %s\n", (int)double_as_text, double_as_text);
returnval = sscanf(double_as_text, "%lf", &the_double);
if (returnval == 1)
return(the_double);
else
return(0.0);
}
#endif
#if 0
/* not currently used, but useful for debugging */
void
dumpevent(ptcx_t ptcx, event_timer_t *pevent)
{
D_PRINTF(debugfile, "trys=%d errs=%d br=%f bw=%f elapsed=%f sq=%f\n",
pevent->trys, pevent->errs,
pevent->bytesread, pevent->byteswritten,
pevent->elapsedtime,
pevent->elapsedtimesq);
}
void
dumptimer(ptcx_t ptcx, cmd_stats_t *rqsttimer)
{
if (gn_debug) {
D_PRINTF(debugfile, "Connect: ");
dumpevent(ptcx, &rqsttimer->connect);
D_PRINTF(debugfile, "Banner: ");
dumpevent(ptcx, &rqsttimer->banner);
D_PRINTF(debugfile, "Login: ");
dumpevent(ptcx, &rqsttimer->login);
D_PRINTF(debugfile, "Cmd: ");
dumpevent(ptcx, &rqsttimer->cmd);
D_PRINTF(debugfile, "MsgRead: ");
dumpevent(ptcx, &rqsttimer->msgread);
D_PRINTF(debugfile, "MsgWrite: ");
dumpevent(ptcx, &rqsttimer->msgwrite);
D_PRINTF(debugfile, "Idle: ");
dumpevent(ptcx, &rqsttimer->idle);
D_PRINTF(debugfile, "Logout: ");
dumpevent(ptcx, &rqsttimer->logout);
}
}
#endif

View File

@@ -1,590 +0,0 @@
/* -*- Mode: C; c-file-style: "stroustrup"; comment-column: 40 -*- */
/*
* 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 the Netscape Mailstone utility,
* released March 17, 2000.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1997-2000 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s): Dan Christian <robodan@netscape.com>
* Marcel DePaolis <marcel@netcape.com>
* Mike Blakely
* David Shak
* Sean O'Rourke <sean@sendmail.com>
* Thom O'Connor <thom@sendmail.com>
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License Version 2 or later (the "GPL"), in
* which case the provisions of the GPL are applicable instead of
* those above. If you wish to allow use of your version of this file
* only under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice and
* other provisions required by the GPL. If you do not delete the
* provisions above, a recipient may use your version of this file
* under either the NPL or the GPL.
*/
#ifndef __BENCH_H__
#define __BENCH_H__
#ifdef USE_PTHREADS
#include <signal.h>
#include <pthread.h>
#endif
#include <stdio.h>
#include <stdarg.h>
#include <limits.h>
#include <float.h>
#include <sys/stat.h>
#include <assert.h>
#ifdef _WIN32
#include <windows.h>
#include <winsock.h>
#include <time.h>
#include <process.h>
#include <io.h>
#define NT_STACKSIZE 50*1024
#endif /* _WIN32 */
#include <errno.h>
#include <signal.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#include <math.h>
#include <sys/types.h>
#include <ctype.h>
#include <fcntl.h>
#ifndef _WIN32
#include <sys/poll.h>
/*
* thom@sendmail.com, 2004/06/07
* This FREEBSD define prevents building mstone on post-FreeBSD 4.8
* so removing it
* #ifdef __FREEBSD__
* #define poll _thread_sys_poll
* #endif
*/
#include <sys/param.h>
#include <sys/ipc.h>
#include <sys/errno.h>
#include <sys/socket.h>
#include <sys/time.h>
#ifndef timersub
/* aix doesn't seem to define this */
# define timersub(a, b, result) \
do { \
(result)->tv_sec = (a)->tv_sec - (b)->tv_sec; \
(result)->tv_usec = (a)->tv_usec - (b)->tv_usec; \
if ((result)->tv_usec < 0) { \
--(result)->tv_sec; \
(result)->tv_usec += 1000000; \
} \
} while (0)
#endif /* timersub */
#ifndef timeradd
# define timeradd(a, b, result) \
do { \
(result)->tv_sec = (a)->tv_sec + (b)->tv_sec; \
(result)->tv_usec = (a)->tv_usec + (b)->tv_usec; \
if ((result)->tv_usec >= 1000000) \
{ \
++(result)->tv_sec; \
(result)->tv_usec -= 1000000; \
} \
} while (0)
#endif /* timeradd */
#ifndef timercmp
# define timercmp(a, b, CMP) \
(((a)->tv_sec == (b)->tv_sec) ? \
((a)->tv_usec CMP (b)->tv_usec) : \
((a)->tv_sec CMP (b)->tv_sec))
#endif /* timercmp */
#include <sys/wait.h>
#include <stdlib.h>
#include <arpa/inet.h>
#include <netdb.h>
#include <unistd.h>
#include <sys/resource.h> /* for struct rlimit, RLIMIT_NOFILE */
#ifdef HAVE_SELECT_H
#include <sys/select.h>
#endif
#ifdef HAVE_WAIT_H
#include <wait.h>
#endif
#endif /* _WIN32 */
#include "sysdep.h"
#include "socket.h"
#include "idle.h"
#include "constants.h"
#define USECINSEC 1000000
#define MSECINSEC 1000
#define MAX_ACCEPT_SECS 180 /* maximum time master will wait for listen() */
#define SECS_2_USECS(x) ((x) * USECINSEC)
#define USECS_2_SECS(x) ((x) / USECINSEC)
#define LINE_BUFSIZE 4096
#define MAXPROCSPERNODE 4096 /* max # of procs/node */
#define SMTP_PORT 25 /* standard port numbers */
#define POP3_PORT 110
#define IMAP4_PORT 143
#define HTTP_PORT 80
#define WMAP_PORT 80
#define CRLF "\r\n"
#define MAX_USERNAME_LEN 32
#define MAX_MAILADDR_LEN 64
#define MAX_ERRORMSG_LEN 256
#define DATESTAMP_LEN 40
#define MAX_IMAP_FOLDERNAME_LEN 256
#define MAX_SEARCH_PATTERN_LEN 256
#define MAX_HTTP_COMMAND_LEN 1024
/* TODO make these dynamic. For now just use big buffers */
#define SIZEOF_EVENTTEXT 150 /* report text from a single timer */
#define SIZEOF_RQSTSTATSTEXT 2048 /* report text from all timers */
#define SIZEOF_SUMMARYTEXT 8192 /* report text from all protocols */
/* levels for timeexpired */
#define EXIT_SOON 1 /* do a clean shutdown ASAP */
#define EXIT_FAST 20 /* shutdown now, dont block */
#define EXIT_FASTEST 50 /* close sockets unconnditionally */
/* Debug macros */
#define D_PRINTF if (gn_debug > 0) d_printf
#define T_PRINTF if (gn_record_telemetry) t_printf
/* make sure we don't pass NULL's to printf() and friends */
#define PSTR(X) ((X)?(X):"(null)")
/*
Simple keyword indexed string storage
This kind of thing has been invented many times. Once more with gusto!
*/
typedef struct param_list {
struct param_list *next;
char * name;
char * value;
} param_list_t;
/*
Simple keyword indexed string storage
This kind of thing has been invented many times. Once more with gusto!
*/
typedef struct string_list {
struct string_list *next;
char * value;
} string_list_t;
/* Numeric range (Shared). Previous value must be stored seperately */
typedef struct range {
unsigned long first; /* first valid value */
unsigned long last; /* last valid value */
unsigned long span; /* last-first */
int sequential; /* 0=random, +=sequential up, -=down */
} range_t;
/* basic timing structure */
typedef struct event_timer {
unsigned long trys;
unsigned long errs;
double bytesread;
double byteswritten;
double elapsedtime;
double elapsedtimesq;
double maxtime;
double mintime;
} event_timer_t;
/* command stats kept for every block and for every thread */
typedef struct cmd_stats {
/* This is protocol independent */
unsigned long totalerrs;
unsigned long totalcommands;
event_timer_t combined; /* AKA total */
event_timer_t idle;
void * data; /* protocol dependent data */
} cmd_stats_t;
typedef struct stats { /* used for throttling ??? */
struct timeval starttime;
struct timeval endtime;
unsigned int total_num_of_commands;
} stats_t;
typedef struct resolved_addr {
char * hostName; /* name of server */
NETPORT portNum; /* port ot use */
int resolved;
struct hostent host_phe;
struct protoent host_ppe;
unsigned long host_addr;
short host_type;
} resolved_addr_t;
typedef struct thread_context *ptcx_t;
typedef struct mail_command *pmail_command_t;
typedef struct protocol *p_protocol_t;
typedef int (*parseStartPtr_t)(pmail_command_t, char *, param_list_t *);
typedef int (*parseEndPtr_t)(pmail_command_t, string_list_t *, param_list_t *);
typedef void *(*commStartPtr_t)(ptcx_t , pmail_command_t , cmd_stats_t *);
typedef int (*commLoopPtr_t)(ptcx_t , pmail_command_t , cmd_stats_t *, void *);
typedef void (*commEndPtr_t)(ptcx_t , pmail_command_t , cmd_stats_t *, void *);
typedef void (*statsFormatPtr_t)(p_protocol_t, const char *extra, char *buf);
typedef void (*statsInitPtr_t)(pmail_command_t, cmd_stats_t *, int, int);
typedef void (*statsUpdatePtr_t)(p_protocol_t, cmd_stats_t *, cmd_stats_t *);
typedef void (*statsOutputPtr_t)(p_protocol_t, cmd_stats_t *, char *);
typedef struct protocol {
const char * name; /* text name */
parseStartPtr_t parseStart; /* section start parse routine */
parseEndPtr_t parseEnd; /* section end parse routine */
commStartPtr_t cmdStart; /* command start routine */
commLoopPtr_t cmdLoop; /* command loop routine */
commEndPtr_t cmdEnd; /* command end routine */
statsFormatPtr_t statsFormat; /* output format information */
statsInitPtr_t statsInit; /* init and zero stats structure */
statsUpdatePtr_t statsUpdate; /* sum commands */
statsOutputPtr_t statsOutput; /* output stats */
int cmdCount; /* commands using this protocol */
cmd_stats_t stats; /* total stats for this protocol */
} protocol_t;
/* This structure defines a mail command */
typedef struct mail_command {
/* Required fields */
protocol_t * proto;
int weight;
/* These are protocol independent (client.c) */
int blockID; /* ID number for each block */
int numLoops; /* typically messages per connection */
/* Sean O'Rourke: added startDelay to simulate arrival rates */
dinst_t *startDelay;
dinst_t *idleTime;
dinst_t *loopDelay;
dinst_t *blockTime;
/* XXX: not threadsafe! */
double throttle; /* throttling factor */
int loopThrottle; /* loopDelay over/underrun for throttling */
double throttleFactor; /* multiple by which to change throttle rate */
void *data; /* protocol specific data */
} mail_command_t;
typedef struct child_context { /* forked sub processes */
int pid;
_SOCKET socket;
} ccx_t, *pccx_t;
typedef struct thread_context {
/* initialized by parent thread */
THREAD_ID tid; /* thread id */
int processnum; /* ordinal process number */
int threadnum; /* ordinal thread number */
int random_seed; /* seed for srandom */
/* local thread context, also read by parent */
int blockCount; /* how many command blocks */
int connectCount; /* how many connections */
cmd_stats_t *cmd_stats; /* stats for each command */
/* temporary storage (event_start, event_stop) */
struct timeval starttime; /* a starting timestamp */
int bytesread; /* num bytes read in per event */
int byteswritten; /* num bytes written per event */
int ofd; /* connection to master */
FILE *dfile; /* debug file */
int logfile; /* telemetry log file */
#ifdef USE_EVENTS
int ev_loop; /* loops left for current event */
struct timeval ev_next; /* time to schedule next init */
void * ev_state; /* client state */
mail_command_t * ev_comm;
cmd_stats_t * ev_stats;
#endif /* USE_EVENTS */
SOCKET sock; /* network connection */
char errMsg[MAX_ERRORMSG_LEN]; /* low level error string */
int net_timeout; /* timeout for network ops (msec) */
} tcx_t;
/* About errMsg:
This should store what was being attempted when a IO error occurs.
From errMsg and errno (or its NT equivalent) you should be able
to understand what went wrong.
No message is printed by the common functions (since some errors are
recoverable).
The protocol handlers combine errMsg with neterrstr() to generate
the message that the user sees (if not handled by the protocol).
Note that this is a small buffer (since it is replicated with every
thread). Don't try to stuff the read/written data into it.
The routine getting the system error sets errMsg (strcpy, or sprintf).
Calling routines append a "call trace" with additional info (strcat).
The "call trace" starts with '<' as a seperator.
*/
#define debugfile (ptcx->dfile)
/* routines in bench.c */
extern void event_start(ptcx_t ptcx, event_timer_t *pevent);
extern void event_stop(ptcx_t ptcx, event_timer_t *pevent);
extern void event_reset(event_timer_t *pevent);
extern void event_sum(event_timer_t *psum, event_timer_t *pincr);
extern char *event_to_text(event_timer_t *pevent, char *ebuf);
extern void stats_init(stats_t *);
extern char * double_to_text(const double the_double, char *textbuf);
#if 0
extern cmd_stats_t *text_to_cmd_stats(ptcx_t ptcx, char *cmd_stats_as_text, cmd_stats_t *the_cmd_stats);
extern cmd_stats_t * text_to_cmd_stats(ptcx_t ptcx, char *, cmd_stats_t *the_cmd_stats);
extern stats_t * text_to_stats(ptcx_t ptcx, char *, stats_t *the_stats);
extern char * stats_to_text(ptcx_t ptcx, const stats_t *, char *statstextbuf);
#endif
/* shared variables */
extern int gn_debug;
extern int gn_record_telemetry;
extern int gn_total_weight;
extern int gn_client_throttle;
extern int gn_maxerrorcnt;
extern int gn_maxBlockCnt;
extern int gn_numprocs;
extern int gn_numthreads;
extern int gn_feedback_secs;
extern time_t gt_testtime;
extern time_t gt_startedtime;
extern volatile time_t gt_shutdowntime;
extern volatile int gf_timeexpired;
extern time_t gt_stopinterval; /* MAX (ramptime/5, 10) */
extern time_t gt_aborttime; /* startedtime + testtime + ramptime*/
extern int gn_number_of_commands;
extern int gf_abortive_close;
extern int gf_imapForceUniqueness;
extern char gs_dateStamp[DATESTAMP_LEN];
extern char gs_thishostname[];
extern char *gs_parsename;
extern pid_t gn_myPID;
extern mail_command_t *g_loaded_comm_list; /* actually a dynamic array */
extern protocol_t g_protocols[];
extern const char *gs_eventToTextFormat;
/* more routines in bench.c */
extern int timeval_clear(struct timeval *tv);
extern int timeval_stamp(struct timeval *tv);
/* extern int waitReadWrite(int fd, int flags); */
extern int waitReadWrite(SOCKET s, int timeout, int flags);
extern int retryRead(ptcx_t ptcx, SOCKET sock, char *buf, int count);
extern int retryWrite(ptcx_t ptcx, SOCKET sock, char *buf, int count);
extern int recvdata(ptcx_t ptcx, SOCKET sock, char *ptr, int nbytes);
extern int senddata(ptcx_t ptcx, SOCKET sock, char *ptr, int nbytes);
extern void rqstat_times(cmd_stats_t *rs, cmd_stats_t *rt);
extern void rqstat_to_buffer(char *buf, char *comm, cmd_stats_t *stats);
extern int readResponse(ptcx_t ptcx, SOCKET sock, char *buffer, int buflen);
extern int sendCommand(ptcx_t ptcx, SOCKET sock, char *command);
extern int doCommandResponse(ptcx_t ptcx, SOCKET sock, char *command, char *response, int resplen);
extern int sendOutput(int fd, char *command);
extern int retrMsg(ptcx_t ptcx, SOCKET sock);
extern void trimEndWhite (char *buff);
unsigned long rangeNext (range_t *, unsigned long );
void rangeSetFirstLast (range_t *, unsigned long , unsigned long , int );
void rangeSetFirstCount (range_t *, unsigned long , unsigned long , int );
void rangeSplit (range_t *whole, range_t *sub, int pnum, int tnum);
extern void cmdStatsInit (cmd_stats_t *p);
/* routines in sysdep.c */
extern void MS_usleep(unsigned int microsecs);
extern void MS_sleep(unsigned int secs);
/* routines in errexit.c */
extern void errexit(FILE *dfile, const char *, ...);
extern int returnerr(FILE *dfile, const char *, ...);
extern int d_printf(FILE *dfile, const char *, ...);
extern int t_printf(int fd, const char *buffer, size_t count, const char *format, ...);
extern char *neterrstr(void);
/* routines in smtp.c */
/* TRANSITION functions */
extern void pishStatsFormat (protocol_t *pp, const char *extra, char *buf);
extern void pishStatsInit(pmail_command_t, cmd_stats_t *, int pN, int tN);
extern void pishStatsUpdate(protocol_t *, cmd_stats_t *, cmd_stats_t *);
extern void pishStatsOutput(protocol_t *, cmd_stats_t *, char *);
extern int SmtpParseStart (pmail_command_t , char *, param_list_t *);
extern int SmtpParseEnd (pmail_command_t , string_list_t *, param_list_t *);
extern void *sendSMTPStart(ptcx_t ptcx, pmail_command_t, cmd_stats_t *);
extern int sendSMTPLoop(ptcx_t ptcx, pmail_command_t, cmd_stats_t *, void *);
extern void sendSMTPEnd(ptcx_t ptcx, pmail_command_t, cmd_stats_t *, void *);
/* routines in pop3.c */
extern int Pop3ParseStart (pmail_command_t , char *, param_list_t *);
extern int Pop3ParseEnd (pmail_command_t , string_list_t *, param_list_t *);
extern void *doPop3Start(ptcx_t ptcx, pmail_command_t, cmd_stats_t *);
extern int doPop3Loop(ptcx_t ptcx, pmail_command_t, cmd_stats_t *, void *);
extern void doPop3End(ptcx_t ptcx, pmail_command_t, cmd_stats_t *, void *);
/* in multipop.c */
extern int MPopParseStart (pmail_command_t , char *, param_list_t *);
extern int MPopParseEnd (pmail_command_t , string_list_t *, param_list_t *);
extern void *MPopCheckStart(ptcx_t ptcx, pmail_command_t, cmd_stats_t *);
extern int MPopCheck(ptcx_t ptcx, pmail_command_t, cmd_stats_t *, void *);
extern void MPopCheckEnd(ptcx_t ptcx, pmail_command_t, cmd_stats_t *, void *);
/* in webmail.c */
extern int WebmailParseStart (pmail_command_t , char *, param_list_t *);
extern int WebmailParseEnd (pmail_command_t , string_list_t *, param_list_t *);
extern void *doWebmailStart(ptcx_t ptcx, pmail_command_t, cmd_stats_t *);
extern int doWebmailLoop(ptcx_t ptcx, pmail_command_t, cmd_stats_t *, void *);
extern void doWebmailEnd(ptcx_t ptcx, pmail_command_t, cmd_stats_t *, void *);
/* routines in imap4.c */
extern int Imap4ParseStart (pmail_command_t , char *, param_list_t *);
extern int Imap4ParseEnd (pmail_command_t , string_list_t *, param_list_t *);
extern void *doImap4Start(ptcx_t ptcx, pmail_command_t, cmd_stats_t *);
extern int doImap4Loop(ptcx_t ptcx, pmail_command_t, cmd_stats_t *, void *);
extern void doImap4End(ptcx_t ptcx, pmail_command_t, cmd_stats_t *, void *);
/* routines in http.c */
extern int HttpParseStart (pmail_command_t , char *, param_list_t *);
extern int HttpParseEnd (pmail_command_t , string_list_t *, param_list_t *);
extern void HttpStatsFormat (protocol_t *pp, const char *extra, char *buf);
extern void HttpStatsInit(pmail_command_t, cmd_stats_t *, int pN, int tN);
extern void HttpStatsUpdate(protocol_t *, cmd_stats_t *, cmd_stats_t *);
extern void HttpStatsOutput(protocol_t *, cmd_stats_t *, char *);
extern void *doHttpStart(ptcx_t ptcx, pmail_command_t, cmd_stats_t *);
extern int doHttpLoop(ptcx_t ptcx, pmail_command_t, cmd_stats_t *, void *);
extern void doHttpEnd(ptcx_t ptcx, pmail_command_t, cmd_stats_t *, void *);
/* routines in wmap.c */
extern int WmapParseStart (pmail_command_t , char *, param_list_t *);
extern int WmapParseEnd (pmail_command_t , string_list_t *, param_list_t *);
extern void WmapStatsFormat (protocol_t *pp, const char *extra, char *buf);
extern void WmapStatsInit(pmail_command_t, cmd_stats_t *, int pN, int tN);
extern void WmapStatsUpdate(protocol_t *, cmd_stats_t *, cmd_stats_t *);
extern void WmapStatsOutput(protocol_t *, cmd_stats_t *, char *);
extern void *doWmapStart(ptcx_t ptcx, pmail_command_t, cmd_stats_t *);
extern int doWmapLoop(ptcx_t ptcx, pmail_command_t, cmd_stats_t *, void *);
extern void doWmapEnd(ptcx_t ptcx, pmail_command_t, cmd_stats_t *, void *);
/* routines in parse.c */
extern char *string_tolower(char *string);
extern char *string_unquote(char *string);
extern int cmdParseNameValue (pmail_command_t cmd, char *name, char *tok);
extern int time_atoi(const char *pstr);
extern int millitime_atoi(const char *pstr);
extern double size_atof(const char *);
extern int load_commands(char *commands);
extern param_list_t *paramListInit (void);
/* paramListAdd returns: 1 update existing value, 0 new, -1 out of memory */
extern int paramListAdd (param_list_t *list, const char *name, const char *value);
/* paramListGet returns value or NULL */
extern char *paramListGet (param_list_t *list, const char *name);
extern param_list_t *g_default_params; /* default section params */
extern string_list_t *stringListInit (const char *value);
extern int stringListAdd (string_list_t *list, const char *value);
extern void stringListFree (string_list_t *list);
/* routines in timefunc.c */
extern double timevaldouble(struct timeval *);
extern void doubletimeval(const double, struct timeval *);
extern double compdifftime_double(struct timeval *End, struct timeval *Strt);
/* routines in main.c */
extern char *safe_inet_ntoa(struct in_addr ina, char *psz);
extern SOCKET connectSocket(ptcx_t ptcx, resolved_addr_t *, char *protocol);
extern int set_abortive_close(SOCKET sock);
extern void throttle(ptcx_t ptcx, mail_command_t *comm, cmd_stats_t *timer);
/* routines in client.c */
extern void beginShutdown (void);
extern int clientInit(ptcx_t ptcx);
extern int clientLoop(ptcx_t ptcx);
extern THREAD_RET clientThread(void *);
extern void clientSummary(ptcx_t ptcxs, int ntcxs, int ii, int outfd);
extern THREAD_RET summaryThread(void *);
/* extern int clientProc(int pnum, SOCKET outfd, unsigned int timeleft, unsigned int thread_stagger_usec); */
extern int clientProc(int pnum, int outfd, unsigned int timeleft, unsigned int thread_stagger_usec);
extern void MS_idle(ptcx_t ptcx, int idleSecs);
extern int resolve_addrs(char *host, char *protocol, struct hostent *host_phe,
struct protoent *proto_ppe, unsigned long *addr,
short *type);
#if 0
extern void dumpevent(ptcx_t ptcx, event_timer_t *pevent);
extern void dumptimer(ptcx_t ptcx, cmd_stats_t *rqsttimer);
extern int clientStats(ptcx_t ptcx);
unsigned long get_next_login(ptcx_t ptcx, mail_command_t *comm, cmd_stats_t *ptimer);
unsigned long get_next_address(ptcx_t ptcx, mail_command_t *comm, cmd_stats_t *ptimer);
#endif
#undef VERSION
#define VERSION "4.9"
#ifdef _DEBUG
#define MAILCLIENT_VERSION "mailclient (" VERSION " DEBUG built " __DATE__ " " __TIME__ ")"
#else
#define MAILCLIENT_VERSION "mailclient (" VERSION " built " __DATE__ " " __TIME__ ")"
#endif
FILE *fdopen(int fildes, const char *mode);
#ifndef _WIN32
extern int getopt(int, char *const *, const char *);
#endif
#ifndef __OSF1__
#ifndef __LINUX__
extern long random(void);
#endif
#endif
/* miscellaneous */
#ifndef MIN
#define MIN(x,y) (((x) < (y)) ? (x) : (y))
#endif
#ifndef MAX
#define MAX(x,y) (((x) >= (y)) ? (x) : (y))
#endif
#endif /* !__BENCH_H__ */

View File

@@ -1,201 +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 the Netscape Mailstone utility,
* released March 17, 2000.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1999-2000 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s): Sean O'Rourke <sean@sendmail.com>
* Sendmail, Inc.
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License Version 2 or later (the "GPL"), in
* which case the provisions of the GPL are applicable instead of
* those above. If you wish to allow use of your version of this file
* only under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice and
* other provisions required by the GPL. If you do not delete the
* provisions above, a recipient may use your version of this file
* under either the NPL or the GPL.
*/
#include "checksum.h"
#include "xalloc.h"
#include "sb.h"
/* openldap md5 functions */
#include "md5.h"
struct checksum_t
{
cs_type_t type;
union {
struct lutil_MD5Context md5;
} u;
};
struct checksum_t *
cs_begin(cs_type_t cstype)
{
struct checksum_t * ret = XALLOC(struct checksum_t);
ret->type = cstype;
switch (cstype)
{
case CS_MD5:
lutil_MD5Init(&ret->u.md5);
break;
default:
assert(0);
};
return ret;
}
void
cs_data(struct checksum_t * state, char * buf, int len)
{
assert(state != NULL);
assert(buf != NULL);
switch (state->type)
{
case CS_MD5:
lutil_MD5Update(&state->u.md5, (unsigned char *)buf, len);
break;
default:
assert(0);
};
}
char *
cs_end(struct checksum_t * state)
{
char *ret;
assert(state != NULL);
switch (state->type)
{
case CS_MD5:
{
unsigned char digest[16];
lutil_MD5Final(digest, &state->u.md5);
ret = xalloc(32 + strlen(CS_MARKER "MD5=") + 1);
sprintf(ret, CS_MARKER "MD5=%08lx%08lx%08lx%08lx",
*(unsigned long*)digest,
*(unsigned long*)(digest + 4),
*(unsigned long*)(digest + 8),
*(unsigned long*)(digest + 12));
break;
}
default:
assert(0);
};
return ret;
}
int
cs_retrieve(ptcx_t ptcx, SOCKET sock, char *msg_start, char *msg_term)
{
socket_buffer * sb;
struct checksum_t * cs;
char *cs_value;
char *cs_seen;
int nread;
int msg_term_len;
int ret = -1;
cs = NULL;
cs_value = NULL;
sb = sb_new(sock, 4096);
msg_term_len = strlen(msg_term);
/* skip to start of message */
if (sb_discard(ptcx, sb, msg_start) < 0)
goto CLEANUP;
/* checksum over body */
cs = cs_begin(CS_MD5);
for (;;)
{
nread = sb_get(ptcx, sb, msg_term);
if (nread < 0)
{
D_PRINTF (debugfile, "EOF looking for checksum\n");
ret = 2; /* XXX: might be error */
goto CLEANUP;
}
else if (strncmp(sb->buf + nread,
msg_term, msg_term_len) == 0)
break;
if (nread > CS_MAXLEN)
{
/* do more checksumming */
cs_data(cs, sb->buf, nread - CS_MAXLEN);
sb_discardn(ptcx, sb, nread - CS_MAXLEN);
}
}
/* sb->buf + nread is the start of msg_term */
sb->buf[nread] = '\0';
if (nread < CS_MAXLEN)
cs_seen = sb->buf;
else
cs_seen = sb->buf + nread - CS_MAXLEN;
cs_seen = strstr(cs_seen, CS_MARKER);
if (cs_seen == NULL)
{
ret = 2;
goto CLEANUP;
}
/* remember the last bit of message left in buffer */
cs_data(cs, sb->buf, cs_seen - sb->buf);
cs_value = cs_end(cs);
if (strncmp(cs_seen, cs_value, strlen(cs_value)) == 0)
ret = 1;
else
ret = 0;
CLEANUP:
switch (ret)
{
case -1:
D_PRINTF(stderr, "retrMsg: ERROR checksum\n");
break;
case 0:
D_PRINTF(stderr, "retrMsg: BAD checksum\n");
break;
case 1:
D_PRINTF(stderr, "retrMsg: OK checksum\n");
break;
case 2:
D_PRINTF(stderr, "retrMsg: NO checksum\n");
break;
};
if (cs)
xfree(cs);
if (cs_value)
xfree(cs_value);
if (sb)
sb_delete(sb);
return ret;
}

View File

@@ -1,103 +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 the Netscape Mailstone utility,
* released March 17, 2000.
*
* The Initial Developer of the Original Code is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1999-2000 Netscape Communications Corporation. All
* Rights Reserved.
*
* Contributor(s): Sean O'Rourke <sean@sendmail.com>
* Sendmail, Inc.
*
* Alternatively, the contents of this file may be used under the
* terms of the GNU Public License Version 2 or later (the "GPL"), in
* which case the provisions of the GPL are applicable instead of
* those above. If you wish to allow use of your version of this file
* only under the terms of the GPL and not to allow others to use your
* version of this file under the NPL, indicate your decision by
* deleting the provisions above and replace them with the notice and
* other provisions required by the GPL. If you do not delete the
* provisions above, a recipient may use your version of this file
* under either the NPL or the GPL.
*/
#ifndef _checksum_h
#define _checksum_h
#include "bench.h"
typedef enum {
CS_MD5, /* MD5 hash */
CS_NTYPES
} cs_type_t;
/*
** CS_MARKER marks the start of a checksum. It should be something
** that will not otherwise appear in the text.
*/
#define CS_MARKER CRLF "=CS="
#define CS_MAXLEN 64
/*
** CS_BEGIN(t) -- start cstype-type checksum
**
** This routine will never return NULL.
*/
struct checksum_t *
cs_begin(cs_type_t cstype);
/*
** CS_DATA(state, buf, len) -- sum another buffer
*/
void
cs_data(struct checksum_t * state, char * buf, int len);
/*
** CS_END(state) -- return checksum value.
**
** The value returned is a printable string starting with
** CS_MARKER, which should be freed using xfree(). cs_end() may
** be called any number of times, but cs_data may not be called
** after the first call to cs_end().
*/
char *
cs_end(struct checksum_t * state);
/*
** CS_RETRIEVE(ptcx, sock, msg_start, msg_term) -- verify a message
**
** A convenience routine to allow retrieval protocols to
** calculate checksums over retrieved messages, cs_retrieve reads
** data from sock up to and including the first instance of
** msg_term. The checksum is calculated over all data beteween
** the first instance of msg_start and the first subsequent
** CS_MARKER. If CS_MARKER is found, the computed checksum is
** compared with the data at CS_MARKER.
**
** Returns:
** -1 -- read error.
** 0 -- invalid checksum found.
** 1 -- valid checksum found.
** 2 -- no checksum.
*/
int
cs_retrieve(ptcx_t ptcx, SOCKET sock, char *msg_start, char *msg_term);
#endif /* _checksum_h */

File diff suppressed because it is too large Load Diff

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