Compare commits

..

452 Commits

Author SHA1 Message Date
(no author)
9dd29f4c90 This commit was manufactured by cvs2svn to create branch 'Mac_CW4_BRANCH'.
git-svn-id: svn://10.0.0.236/branches/Mac_CW4_BRANCH@9687 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-10 00:08:34 +00:00
valeski%netscape.com
78ea06c997 fixing compile warning
git-svn-id: svn://10.0.0.236/trunk@9686 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-10 00:08:33 +00:00
hyatt%netscape.com
3e45e0fcd8 Docked and popup windows can now co-exist.
git-svn-id: svn://10.0.0.236/trunk@9685 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-10 00:01:00 +00:00
despotdaemon%netscape.com
0236e06fda Pseudo-automatic update of changes made by mang@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@9684 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 23:58:27 +00:00
kipp%netscape.com
ba9d85891c Checked in some bug fixes from michaelp to make fullscreen plugins work better/more often
git-svn-id: svn://10.0.0.236/trunk@9683 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 23:52:16 +00:00
kipp%netscape.com
d87f9d1060 Support (in a shaky way) some various and sundry mime types for plugins
git-svn-id: svn://10.0.0.236/trunk@9682 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 23:51:43 +00:00
kipp%netscape.com
596e7c0a01 Added new source
git-svn-id: svn://10.0.0.236/trunk@9681 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 23:51:19 +00:00
kipp%netscape.com
8957ccb149 new
git-svn-id: svn://10.0.0.236/trunk@9680 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 23:50:46 +00:00
karnaze%netscape.com
e382cf5f41 converted frame/iframe/frameset to new layout/content separation
git-svn-id: svn://10.0.0.236/trunk@9679 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 23:30:30 +00:00
hyatt%netscape.com
9857b1a59e Moving the control strip underneath the title strip.
git-svn-id: svn://10.0.0.236/trunk@9678 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 23:18:38 +00:00
hyatt%netscape.com
5d50ddb72d Fixing damage caused by internationalization. Making it use the right UI font (MS Sans Serif).
git-svn-id: svn://10.0.0.236/trunk@9677 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 23:11:20 +00:00
hyatt%netscape.com
400154027a Removed CIntlWins drawtext call. When they get it working on Windows 95, then
we can hook it back up.


git-svn-id: svn://10.0.0.236/trunk@9676 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 23:05:01 +00:00
spider%netscape.com
949e30c64f Use twips on width calculations for font metrics in app
git-svn-id: svn://10.0.0.236/trunk@9675 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 22:24:00 +00:00
buster%netscape.com
4fb1136a6c integrate caption with new frame creation code
git-svn-id: svn://10.0.0.236/trunk@9674 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 22:18:01 +00:00
despotdaemon%netscape.com
148d6b590e Pseudo-automatic update of changes made by jsun@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@9673 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 22:16:08 +00:00
pinkerton%netscape.com
79727e94d8 fix build bustage (removed call to HT_ToggleTreeMode)
git-svn-id: svn://10.0.0.236/trunk@9672 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 21:36:14 +00:00
buster%netscape.com
f97d444d8f integrates with new frame creation methods
git-svn-id: svn://10.0.0.236/trunk@9671 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 21:34:10 +00:00
hyatt%netscape.com
74584ed8b6 Fixes to the toolbar code.
git-svn-id: svn://10.0.0.236/trunk@9670 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 21:30:28 +00:00
vidur%netscape.com
5e856a67d9 Added nsIJSScriptObject interface to nsGenericHTMLContent class and fixed element.childNodes
git-svn-id: svn://10.0.0.236/trunk@9669 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 21:02:42 +00:00
vidur%netscape.com
c63cdad1a0 Adjusted to change in signature for FE_SetRefreshURLTimer
git-svn-id: svn://10.0.0.236/trunk@9665 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 20:56:47 +00:00
pnunn%netscape.com
22be840209 fix for #309770. Port fix from 4.06 to Moz.
git-svn-id: svn://10.0.0.236/trunk@9663 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 20:47:35 +00:00
hyatt%netscape.com
b06ce42e18 Fixes and improvements to NavCenter.
git-svn-id: svn://10.0.0.236/trunk@9657 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 20:26:33 +00:00
hyatt%netscape.com
bb7136efe1 Added notion of window type (standalone, docked, embedded, popup) to RDF.
git-svn-id: svn://10.0.0.236/trunk@9656 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 20:26:16 +00:00
buster%netscape.com
e325a433cd many fixes that effect http://www.mozilla.org and related pages.
these fixes are for nested tables with percent widths, for tables including both rowspan and colspan,
and for tables with only a single column.
some rounding errors were eliminated.
more debugging output, and some new assertions.


git-svn-id: svn://10.0.0.236/trunk@9655 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 20:00:40 +00:00
slamm%netscape.com
b651be006c Pull netscape-specific hack.
git-svn-id: svn://10.0.0.236/trunk@9654 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 20:00:33 +00:00
slamm%netscape.com
c669313675 Get the 'Change Log' link right. Set 'LANGUAGE=JavaScript' for the SCRIPT tag
git-svn-id: svn://10.0.0.236/trunk@9653 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 19:29:00 +00:00
brendan%netscape.com
1ac77c94fe Remove javaData, left over from original LiveConnect.
git-svn-id: svn://10.0.0.236/trunk@9650 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 19:20:07 +00:00
brendan%netscape.com
74114cf984 Now that SRC_COMMA has been renamed to reflect its generality (SRC_PCDELTA),
and more important, to save a byte of useless note offset, use SRC_CONTINUE
instead of SRC_PCDELTA to annotate JSOP_ENDINIT when there's an extra comma
at the end of an array literal (e.g. [1,2,,]).


git-svn-id: svn://10.0.0.236/trunk@9649 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 19:18:01 +00:00
pnunn%netscape.com
056cdd590e fix for #309770. Porting "RefreshURLTimer" fix from 4.06 to 5.0.
git-svn-id: svn://10.0.0.236/trunk@9648 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 19:13:11 +00:00
pnunn%netscape.com
2f8cb685c4 fix for #309770. Porting "RefreshURLTimer" fix from 4.06 to Moz
git-svn-id: svn://10.0.0.236/trunk@9647 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 19:12:31 +00:00
pnunn%netscape.com
9f7e6c5e8a fix for #309770. Porting "RefreshURLTimer" fix from 4.06 to Moz.
git-svn-id: svn://10.0.0.236/trunk@9646 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 19:11:22 +00:00
pnunn%netscape.com
1558689e2b fix for #309770. Porting RefreshURLTimer fix from 4.06 to Moz.
git-svn-id: svn://10.0.0.236/trunk@9645 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 19:08:32 +00:00
pnunn%netscape.com
3ef73042ff fix for bug#309770. Porting "RefreshURLTimer" fix from 4.06 to Moz.
git-svn-id: svn://10.0.0.236/trunk@9644 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 19:06:55 +00:00
rjc%netscape.com
b49b48f521 Fix some more drag&drop issues (regarding re-ordering of existing local/remote items). Also, on PowerPPC, force compiler to use no byte padding regarding structure alignment.
git-svn-id: svn://10.0.0.236/trunk@9643 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 19:06:23 +00:00
spider%netscape.com
0fba81dc0a Checkin for sman. Support for remote CAPI and User def's
git-svn-id: svn://10.0.0.236/trunk@9642 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 19:00:40 +00:00
pinkerton%netscape.com
0f24b39bdf use CAdSpaceView class for embedded html area.
git-svn-id: svn://10.0.0.236/trunk@9640 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 18:19:19 +00:00
pinkerton%netscape.com
67af347c93 Turned off (ifdef'd) the property to not use selection in the tree view so we get d&d even in single-click modes.
git-svn-id: svn://10.0.0.236/trunk@9639 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 18:19:08 +00:00
pinkerton%netscape.com
44aa69ed84 don't bother trying to close the adSpace shelf here, RestorePlace() usurps it.
git-svn-id: svn://10.0.0.236/trunk@9638 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 18:19:02 +00:00
pinkerton%netscape.com
5d51b8377f close adspace shelf by default. Needs to be done after RestorePlace() so it cannot be done in the coordinator.
git-svn-id: svn://10.0.0.236/trunk@9637 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 18:17:54 +00:00
pinkerton%netscape.com
1894fc9484 register CAdSpaceView
git-svn-id: svn://10.0.0.236/trunk@9635 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 18:17:13 +00:00
pinkerton%netscape.com
78e0c6e329 added CAdSpaceView to special case things for the embedded html pane.
git-svn-id: svn://10.0.0.236/trunk@9634 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 18:17:00 +00:00
mcafee%netscape.com
fe233fddf4 debug stuff for add_row()
git-svn-id: svn://10.0.0.236/trunk@9633 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 18:10:27 +00:00
mcafee%netscape.com
d6c0c53360 HT_PaneFromURL() needs a context passed in from XFE_DisplayBuiltin(), so we now pass the context along.
git-svn-id: svn://10.0.0.236/trunk@9632 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 18:07:10 +00:00
rods%netscape.com
0cf8a140a9 Removed TraverseBlockContent static function
git-svn-id: svn://10.0.0.236/trunk@9631 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 17:42:21 +00:00
slamm%netscape.com
710729e972 Fix the 'Change Log' like to pass along the branch and the root. Trim the email addresses of netscape folks (i.e. slamm%netscape.com becomes slamm).
git-svn-id: svn://10.0.0.236/trunk@9630 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 17:37:12 +00:00
despotdaemon%netscape.com
f0b2db257c Pseudo-automatic update of changes made by blizzard@appliedtheory.com.
git-svn-id: svn://10.0.0.236/trunk@9629 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 17:22:07 +00:00
despotdaemon%netscape.com
87ac646444 Pseudo-automatic update of changes made by shaver@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@9627 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 17:18:46 +00:00
spider%netscape.com
698f313f61 Remove pull_trex_ns target, no longer needed
git-svn-id: svn://10.0.0.236/trunk@9626 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 16:41:42 +00:00
kipp%netscape.com
5d665f2238 Support direct loading of image documents by using the GetImageFromStream method on the image group.
git-svn-id: svn://10.0.0.236/trunk@9625 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 16:19:30 +00:00
kipp%netscape.com
874cb1072c Removed some cruft
git-svn-id: svn://10.0.0.236/trunk@9624 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 16:18:40 +00:00
kipp%netscape.com
f9928a5225 Support reconnect callback
git-svn-id: svn://10.0.0.236/trunk@9623 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 16:17:55 +00:00
kipp%netscape.com
1b47ada470 Added GetImageFromStream
git-svn-id: svn://10.0.0.236/trunk@9622 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 16:15:40 +00:00
kipp%netscape.com
8684bc6d2a Added Reconnect call-back to NS_NewImageNetContext
git-svn-id: svn://10.0.0.236/trunk@9621 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 16:14:49 +00:00
kipp%netscape.com
c759fe4fbd whitespace fixup
git-svn-id: svn://10.0.0.236/trunk@9620 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 16:14:16 +00:00
kipp%netscape.com
c0384026c1 Turned off image load skid marks
git-svn-id: svn://10.0.0.236/trunk@9619 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 16:13:52 +00:00
spider%netscape.com
0c2451e92b WIP: API change on OnResize for ViewManager support.
git-svn-id: svn://10.0.0.236/trunk@9618 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 16:12:03 +00:00
rods%netscape.com
5dd2f359cc XPCOM'ed the Selection and Search methods
git-svn-id: svn://10.0.0.236/trunk@9617 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 16:11:59 +00:00
ramiro%netscape.com
c9dfe90303 Move html pane to XFE_RDFChromeTreeView.
git-svn-id: svn://10.0.0.236/trunk@9615 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 14:43:13 +00:00
ramiro%netscape.com
04671136ea Unbreak MOZ_SELECTOR_BAR for the hell of it.
git-svn-id: svn://10.0.0.236/trunk@9614 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 10:56:48 +00:00
brendan%netscape.com
7b7ccadd57 - Might as well use tempPool to arena-allocate collected_args as well as the
tokenstream in Function, to avoid calling malloc at all.
- But do check for malloc failure under PR_ARENA_ALLOCATE (the old call to
  JS_malloc was unchecked).


git-svn-id: svn://10.0.0.236/trunk@9611 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 10:02:12 +00:00
brendan%netscape.com
5f08bf111e Fix tempPool bloat bugs in Function by mark/release around NewTokenStream.
git-svn-id: svn://10.0.0.236/trunk@9610 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 09:50:40 +00:00
brendan%netscape.com
d06c6009ae - Don't cast malloc's return value, it's void *.
- Don't double-report a scanner error such as illegal character in
  Function("a@b", "return a*b")
- Do report a "malformed formal parameter" error in
  Function("a,b,", "return a*b")
- Fiddle comments to more precisely rule out the above bugs.


git-svn-id: svn://10.0.0.236/trunk@9609 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 09:27:56 +00:00
ramiro%netscape.com
d12da9f536 Many cpp's do not like "#ifdef 0" (it's illegal in strict ANSI C I suspect),
including HP-UX's ANSI C. Line 1633 of cmd/xfe/XfeWidgets/Xfe/Pane.c uses
"#ifdef 0" - it should be "#if 0" of course. HP's ANSI C refuses to compile
this file without it being fixed.
Thanks to rkl@connect.org.uk for pointing this out.


git-svn-id: svn://10.0.0.236/trunk@9608 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 09:09:00 +00:00
brendan%netscape.com
0c04e27eb1 JSMSG_NO_FORMAL duplicated DUPLICATE_FORMAL, now is reborn as BAD_FORMAL.
git-svn-id: svn://10.0.0.236/trunk@9607 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 09:04:35 +00:00
ramiro%netscape.com
f69e90bfdb Fix infinite loop on scrollbar resize from waterson@netscape.com
(Chris Waterson).
The problem with resizing on XFE has to do with the fact that the widget
resize callback is directly calling LO_RelayoutOnResize(), which causes the
scrollbars to get remapped, which causes the resize callback to be called,
which causes LO_RelayoutOnResize() to be called, which causes the scrollbars
to get remapped...you get the idea.


git-svn-id: svn://10.0.0.236/trunk@9606 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 09:03:30 +00:00
ramiro%netscape.com
9206fd904c Fix the hanging problem when invoked with -xpm (and possibly other flags) and
no include/Xm.h is found anywhere.


git-svn-id: svn://10.0.0.236/trunk@9605 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 08:34:48 +00:00
ramiro%netscape.com
71bc545ac6 This script should only do 1 thing: print a reasonable guess for a unique
host identifier.  Overriding should happen in the Makfile or wherever else
this script is invoked.


git-svn-id: svn://10.0.0.236/trunk@9604 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 08:33:49 +00:00
cls%seawood.org
3820e80eb0 Sync'd.
git-svn-id: svn://10.0.0.236/trunk@9603 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 08:15:05 +00:00
ramiro%netscape.com
ea84a1fe8e Allow the 'unique host identity' to be overriden by MOZILLA_CONFIG_HOST_IDENT.
Also make the clean target in config/mkdetect actually work.


git-svn-id: svn://10.0.0.236/trunk@9602 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 08:00:10 +00:00
brendan%netscape.com
dfee645789 Improve TABLESWITCH comment precision and add XXX about JSVERSION_IS_ECMAv2.
git-svn-id: svn://10.0.0.236/trunk@9598 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 06:35:30 +00:00
ramiro%netscape.com
623a1739b0 Add /usr/X to DEFAULT_MOTIF_SEARCH_PATH.
Thanks to tim@trr.metro.NET (Tim Rice).


git-svn-id: svn://10.0.0.236/trunk@9594 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 06:17:46 +00:00
jwz%mozilla.org
a35e03ab51 paragraph break after README (from dawn)
git-svn-id: svn://10.0.0.236/trunk@9593 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 05:14:57 +00:00
gagan%netscape.com
30fe903120 Cache_object for nu_cache.
git-svn-id: svn://10.0.0.236/trunk@9592 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 02:23:27 +00:00
gagan%netscape.com
93979e7a13 Resetting cache_objects.
git-svn-id: svn://10.0.0.236/trunk@9591 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 02:19:30 +00:00
brendan%netscape.com
4976336cd7 Renamed SRC_COMMA to SRC_PCDELTA and fixed related comments.
git-svn-id: svn://10.0.0.236/trunk@9590 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 02:16:19 +00:00
brendan%netscape.com
293dc6ae2d Fix busted version check in JSOP_TABLESWITCH.
git-svn-id: svn://10.0.0.236/trunk@9589 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 02:01:52 +00:00
cyeh%netscape.com
2722c6abf9 revert file
git-svn-id: svn://10.0.0.236/trunk@9588 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 01:37:41 +00:00
joki%netscape.com
8458f73950 Do not allow script errors to stop page parsing.
git-svn-id: svn://10.0.0.236/trunk@9587 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 01:19:52 +00:00
joki%netscape.com
c5e8af16d8 Remove duplicate functionality of nsIBrowserWindow and nsIWebShellContainer.
git-svn-id: svn://10.0.0.236/trunk@9586 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 01:19:11 +00:00
wtc%netscape.com
fb7f0ca845 Fixed dprintf as suggested by Patrick Beard (beard@netscape.com).
Now dprintf calls PR_vsnprintf instead of PR_vsmprintf, so that
dprintf does not allocate memory.  This is because PR_Assert (which
calls dprintf) can get called at interrupt time, and it is unsafe
to allocate memory at interrupt time on the Mac.


git-svn-id: svn://10.0.0.236/trunk@9585 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 01:17:41 +00:00
shaver%netscape.com
f2fe16c9ca initial import of toshok's gnomefe
git-svn-id: svn://10.0.0.236/trunk@9584 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 01:15:49 +00:00
kipp%netscape.com
d56cfbd643 Set fast-8bit-text hint on x windows
git-svn-id: svn://10.0.0.236/trunk@9583 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 01:04:29 +00:00
spider%netscape.com
79d217f984 Adding support for ViewManager into xpfc
Change painting methods to pass around the rendering context
  and dirty rect instead of gui event to be compatible with
  view api's


git-svn-id: svn://10.0.0.236/trunk@9582 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 00:55:35 +00:00
jwz%mozilla.org
1a09b34777 vivat grendel!
git-svn-id: svn://10.0.0.236/trunk@9581 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 00:52:38 +00:00
thom%netscape.com
c96ec32790 added support for DOM dll
git-svn-id: svn://10.0.0.236/trunk@9580 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 00:02:23 +00:00
thom%netscape.com
a90938b7fe added nsDOMFactory.cpp and nsHTMLTagsEnums.cpp
git-svn-id: svn://10.0.0.236/trunk@9579 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 00:01:43 +00:00
slamm%netscape.com
ff2e648658 Call show() on the builtin for SHACK.
git-svn-id: svn://10.0.0.236/trunk@9578 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 00:00:53 +00:00
slamm%netscape.com
824c376c99 Move tree widget management into RDFTreeView. Don't choke when no columns are created.
git-svn-id: svn://10.0.0.236/trunk@9577 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 00:00:42 +00:00
slamm%netscape.com
b7c785dbb9 Move tree widget management into RDFTreeView.
git-svn-id: svn://10.0.0.236/trunk@9576 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 00:00:33 +00:00
slamm%netscape.com
201747cf09 Avoid annoying warnings about _ht_pane being nil.
git-svn-id: svn://10.0.0.236/trunk@9575 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 00:00:23 +00:00
slamm%netscape.com
3b3150a851 Add default constructor call for RDFBase.
git-svn-id: svn://10.0.0.236/trunk@9574 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 00:00:20 +00:00
slamm%netscape.com
5e7c6cadbe Change relationship to RDFTreeView to 'isa' (was 'hasa'). Get SHACK going.
git-svn-id: svn://10.0.0.236/trunk@9573 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-09 00:00:17 +00:00
kipp%netscape.com
a629c89a47 Use a buffer to translate unichar's into XChar2b's
git-svn-id: svn://10.0.0.236/trunk@9572 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 23:52:29 +00:00
kipp%netscape.com
e12d74e626 Added a buffer used by DrawString
git-svn-id: svn://10.0.0.236/trunk@9571 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 23:52:10 +00:00
kipp%netscape.com
74460cc8e8 Whitespace tidy up
git-svn-id: svn://10.0.0.236/trunk@9570 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 23:51:54 +00:00
cyeh%netscape.com
211c01a1e7 according to scc, use do instead of system
git-svn-id: svn://10.0.0.236/trunk@9569 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 23:50:44 +00:00
spider%netscape.com
81585718f4 No longer use julian as shared library
git-svn-id: svn://10.0.0.236/trunk@9568 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 23:35:54 +00:00
pinkerton%netscape.com
82eb7aec56 sitemap/HTML area registration in docked Aurora view.
git-svn-id: svn://10.0.0.236/trunk@9567 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 23:17:21 +00:00
kipp%netscape.com
f92bc6705a Fixed unix compile bugs
git-svn-id: svn://10.0.0.236/trunk@9566 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 23:17:12 +00:00
kipp%netscape.com
1e5e004c86 Flush font cache before destroying device context to break circular links (ick)
git-svn-id: svn://10.0.0.236/trunk@9565 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 22:38:48 +00:00
kipp%netscape.com
9d8f9aaffa Create HTML-html-element not a root part
git-svn-id: svn://10.0.0.236/trunk@9564 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 22:38:17 +00:00
kipp%netscape.com
3ab02b9896 Implement HandleDOMEvent properly; clean up whitespace
git-svn-id: svn://10.0.0.236/trunk@9563 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 22:37:46 +00:00
kipp%netscape.com
e2c7517492 Use NS_NewBodyFrame and NS_NewHTMLFrame
git-svn-id: svn://10.0.0.236/trunk@9562 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 22:37:24 +00:00
kipp%netscape.com
f49ffdeb17 Renamed source files
git-svn-id: svn://10.0.0.236/trunk@9561 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 22:37:00 +00:00
kipp%netscape.com
4688f4a267 Removed some cruft; added NS_NewBodyFrame
git-svn-id: svn://10.0.0.236/trunk@9560 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 22:36:30 +00:00
kipp%netscape.com
392496f910 CHanged NewFrame method to NS_NewBodyFrame
git-svn-id: svn://10.0.0.236/trunk@9559 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 22:35:54 +00:00
kipp%netscape.com
429035b95e new
git-svn-id: svn://10.0.0.236/trunk@9558 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 22:34:40 +00:00
kipp%netscape.com
60e776c0b1 Added new atoms
git-svn-id: svn://10.0.0.236/trunk@9557 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 22:34:06 +00:00
kipp%netscape.com
3c90229bd1 Revised list of build files
git-svn-id: svn://10.0.0.236/trunk@9556 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 22:33:54 +00:00
kipp%netscape.com
e8824a34c4 Fixed bug caused during XPCOM'ing the nsIContent API
git-svn-id: svn://10.0.0.236/trunk@9555 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 22:32:32 +00:00
kipp%netscape.com
5e56e0d9f0 Implement revised font metrics API
git-svn-id: svn://10.0.0.236/trunk@9554 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 22:32:07 +00:00
kipp%netscape.com
ce87194f82 Revised API
git-svn-id: svn://10.0.0.236/trunk@9553 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 22:31:51 +00:00
kipp%netscape.com
8b0ea79b27 Destroy font metrics before releasing it
git-svn-id: svn://10.0.0.236/trunk@9552 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 22:31:28 +00:00
akkana%netscape.com
c93a7af987 Register type converters for mail compose. This makes "Send Page" work.
Approved by gagan.


git-svn-id: svn://10.0.0.236/trunk@9551 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 22:14:51 +00:00
rods%netscape.com
5b61252657 Changed Find to use all nsIDOMxxx classes instead of nsIContent
git-svn-id: svn://10.0.0.236/trunk@9550 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 22:13:29 +00:00
dcone%netscape.com
1ad612fe04 added a routine gethints() needed by the interface.
git-svn-id: svn://10.0.0.236/trunk@9549 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 22:13:10 +00:00
terry%netscape.com
e82ae91d3b Added 1998-09-04 version.
git-svn-id: svn://10.0.0.236/trunk@9548 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 22:06:33 +00:00
wtc%netscape.com
89a7ea308b Backed out an accidental change of the setting of OBJDIR_NAME in the
previous revision.


git-svn-id: svn://10.0.0.236/trunk@9547 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 21:45:31 +00:00
briano%netscape.com
baef3ff491 Tried to make the differences/similarities between MOZ_LITE, MOZ_MEDIUM, and MOZ_DARK more obvious.
git-svn-id: svn://10.0.0.236/trunk@9546 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 21:40:13 +00:00
cyeh%netscape.com
bacc204129 *** empty log message ***
git-svn-id: svn://10.0.0.236/trunk@9545 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 21:34:22 +00:00
sdagley%netscape.com
ad616e2ae7 Implement real version of FE_CheckConfirm
git-svn-id: svn://10.0.0.236/trunk@9544 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 21:32:03 +00:00
briano%netscape.com
11e8e272dc Minor cleanup, and changed EDITOR to MOZ_EDITOR.
git-svn-id: svn://10.0.0.236/trunk@9543 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 21:24:12 +00:00
pinkerton%netscape.com
6049d54d57 use IdenticalString instead of RelString to be more localizable.
git-svn-id: svn://10.0.0.236/trunk@9542 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 21:20:19 +00:00
pinkerton%netscape.com
1bce069dc7 don't redraw caption when it doesn't change (avoids flashing).
git-svn-id: svn://10.0.0.236/trunk@9541 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 21:12:26 +00:00
raman%netscape.com
020c0b0f7f Added libsoftupdat.a to the link line when MOZ_SMARTUPDATE is defined. Made SmartUpdate independent of Java
git-svn-id: svn://10.0.0.236/trunk@9540 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 21:06:54 +00:00
raman%netscape.com
7d0b7c66d6 Added building of autoupdt.c
git-svn-id: svn://10.0.0.236/trunk@9539 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 21:00:51 +00:00
shaver%netscape.com
91f063881e ToBoolean behaviour for all non-ECMA versions, not just 1.2
git-svn-id: svn://10.0.0.236/trunk@9538 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 20:59:19 +00:00
rjc%netscape.com
b67d47c22e Allow mixing/repositioning of local/remote items in the same container.
git-svn-id: svn://10.0.0.236/trunk@9537 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 20:55:41 +00:00
dcone%netscape.com
02fcf730c2 added files to html/content area that vidor added to windows project
git-svn-id: svn://10.0.0.236/trunk@9536 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 20:55:14 +00:00
pinkerton%netscape.com
85c80d8532 Since we are now weak-linked against AppearanceLib, make sure it is available and quit if it is not. We were also never initializing UEnvironment's feature set. Call RegisterAppearanceClient() since we are one (again).
git-svn-id: svn://10.0.0.236/trunk@9535 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 20:48:29 +00:00
pinkerton%netscape.com
d3076a4587 weak link against AppearanceLib.
git-svn-id: svn://10.0.0.236/trunk@9534 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 20:47:16 +00:00
pinkerton%netscape.com
2928e184e7 add a new dialog to inform users how to get AppearanceLib.
git-svn-id: svn://10.0.0.236/trunk@9533 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 20:47:01 +00:00
spider%netscape.com
21ba3d6cb8 Removing LIBJULIAN to use julian as standalone dll.
Adding ViewManager on a per 'container' basis.


git-svn-id: svn://10.0.0.236/trunk@9532 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 20:34:42 +00:00
slamm%netscape.com
136fdedb42 Pass through 'nocrap' argument from express.
git-svn-id: svn://10.0.0.236/trunk@9531 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 20:33:28 +00:00
ftang%netscape.com
351bb2c436 check in comment about history code may need to change later. No code change.
git-svn-id: svn://10.0.0.236/trunk@9530 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 20:21:23 +00:00
slamm%netscape.com
e2497544f4 Add toolbar deletion.
git-svn-id: svn://10.0.0.236/trunk@9529 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 20:14:23 +00:00
slamm%netscape.com
83a23b5f1c Avoid adding the wrong nodes to the toolbar
git-svn-id: svn://10.0.0.236/trunk@9528 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 20:14:15 +00:00
slamm%netscape.com
108d88aa73 Avoid opening nodes too soon.
git-svn-id: svn://10.0.0.236/trunk@9527 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 20:14:12 +00:00
slamm%netscape.com
d4508c551c more support for pane creation/deletion.
git-svn-id: svn://10.0.0.236/trunk@9526 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 20:14:06 +00:00
slamm%netscape.com
96eae3899d Break up the constructor into more intelligible parts. Standadize some of the variable names. Massage some ht calls.
git-svn-id: svn://10.0.0.236/trunk@9525 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 20:13:59 +00:00
slamm%netscape.com
4ab5d272a8 Hook up the bookmarks and history windows. Get rid of the unneeded command handing stuff.
git-svn-id: svn://10.0.0.236/trunk@9524 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 20:13:56 +00:00
slamm%netscape.com
ec872fb07e change some extern 'C' functions to static members of the XFE_Image
git-svn-id: svn://10.0.0.236/trunk@9523 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 20:13:51 +00:00
slamm%netscape.com
0fb3e85ef4 create the bookmarks pane in RDFBase.
git-svn-id: svn://10.0.0.236/trunk@9522 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 20:13:46 +00:00
slamm%netscape.com
99f0b0e6ed Move bookmark frame creation to NavCenterFrame.cpp
git-svn-id: svn://10.0.0.236/trunk@9521 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 20:13:43 +00:00
slamm%netscape.com
24a97a12ef Re-commit the 'nocrap'. This time it's not crappy.
git-svn-id: svn://10.0.0.236/trunk@9519 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 19:48:29 +00:00
slamm%netscape.com
6c5d2d1f76 Oops, not ready yet. backout last change.
git-svn-id: svn://10.0.0.236/trunk@9518 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 19:36:56 +00:00
slamm%netscape.com
e75a82953c Add a 'nocrap' flag so the top of the page has useful information (i.e. no image, no legend).
git-svn-id: svn://10.0.0.236/trunk@9517 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 19:34:51 +00:00
akkana%netscape.com
4659274e32 Remove vcards from MOZ_MAIL_COMPOSE; fix unresolved symbols
git-svn-id: svn://10.0.0.236/trunk@9516 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 19:32:10 +00:00
akkana%netscape.com
e759a9f0ec Remove vcards from MOZ_MAIL_COMPOSE
git-svn-id: svn://10.0.0.236/trunk@9515 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 19:30:41 +00:00
despotdaemon%netscape.com
0448460aa8 Pseudo-automatic update of changes made by cyeh@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@9514 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 19:29:51 +00:00
beard%netscape.com
63d006d51c Lazy LiveConnect fixes.
git-svn-id: svn://10.0.0.236/trunk@9513 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 19:11:50 +00:00
buster%netscape.com
8aa191848a fixed 2 small errors in computing table widths.
1) sometimes we were adding 1 too many pixels in constrained tables
2) sometimes we were using the wrong value for the max width as an input to constrained tables


git-svn-id: svn://10.0.0.236/trunk@9512 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 19:11:14 +00:00
beard%netscape.com
34c2fcfcff Changed JavaPackage_resolve, to remove a memory leak.
git-svn-id: svn://10.0.0.236/trunk@9510 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 19:08:09 +00:00
pinkerton%netscape.com
86c01f03ff stupid RidL resources....
git-svn-id: svn://10.0.0.236/trunk@9509 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 18:52:00 +00:00
brendan%netscape.com
7d1f9f8984 Don't emit two SRC_HIDDENs in a row.
git-svn-id: svn://10.0.0.236/trunk@9508 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 18:26:37 +00:00
cyeh%netscape.com
a4b652fb6e remove CHANGES.html
git-svn-id: svn://10.0.0.236/trunk@9507 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 18:25:11 +00:00
norris%netscape.com
7f284fbf17 Fix bug: space was not allocated for terminal '\0' in string.
Spell "JavaScript" correctly.


git-svn-id: svn://10.0.0.236/trunk@9506 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 18:18:52 +00:00
pinkerton%netscape.com
0309575105 increase/decrease font size in html area. Fix column hiding bug in embedded tree.
git-svn-id: svn://10.0.0.236/trunk@9505 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 18:10:54 +00:00
pinkerton%netscape.com
b1ce1292cd increase/decrease font sizes in browser window.
git-svn-id: svn://10.0.0.236/trunk@9504 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 18:10:16 +00:00
pinkerton%netscape.com
b56da5283c use LScrollerView and LScrollBar
git-svn-id: svn://10.0.0.236/trunk@9503 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 18:09:16 +00:00
pinkerton%netscape.com
bb94402f82 Allow the user of the class to pass "" for the requested icon url.
git-svn-id: svn://10.0.0.236/trunk@9502 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 18:08:35 +00:00
pinkerton%netscape.com
f4e66ce9d5 use LScrollerView.
git-svn-id: svn://10.0.0.236/trunk@9501 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 18:07:59 +00:00
pinkerton%netscape.com
88a72b7e1b use LScrollerView
git-svn-id: svn://10.0.0.236/trunk@9500 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 18:07:48 +00:00
pinkerton%netscape.com
fbb3a02aba New HTML area in docked view.
git-svn-id: svn://10.0.0.236/trunk@9499 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 18:07:02 +00:00
pinkerton%netscape.com
d9d2d87c22 Use new FeatureFlags to configure properties.
git-svn-id: svn://10.0.0.236/trunk@9498 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 18:06:26 +00:00
pinkerton%netscape.com
8a3070e4d1 Landing of 4.5 changes to get more flexibility in how divided views are handled.
git-svn-id: svn://10.0.0.236/trunk@9497 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 18:05:48 +00:00
pinkerton%netscape.com
795c474aa2 Move to LScrollerView
git-svn-id: svn://10.0.0.236/trunk@9496 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 18:05:17 +00:00
pinkerton%netscape.com
6acb44cc6b Fixes for font scaling (increase/decrease) in browser.
git-svn-id: svn://10.0.0.236/trunk@9495 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 18:04:59 +00:00
pinkerton%netscape.com
44348b0ffc Using LScrollerView
git-svn-id: svn://10.0.0.236/trunk@9494 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 18:04:30 +00:00
pinkerton%netscape.com
ba637881d0 Adding increase/decrease font size menus.
git-svn-id: svn://10.0.0.236/trunk@9493 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 18:04:00 +00:00
pinkerton%netscape.com
f252f64f26 LScrollerView and HTML area in docked view. Now using includeViews more to avoid duplication.
git-svn-id: svn://10.0.0.236/trunk@9492 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 18:03:44 +00:00
pinkerton%netscape.com
f4175f9d93 changes for LScrollerView
git-svn-id: svn://10.0.0.236/trunk@9491 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 18:03:17 +00:00
pinkerton%netscape.com
c4d121b673 Removed CConfigActiveScroller and CExpandoDivider.
git-svn-id: svn://10.0.0.236/trunk@9490 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 18:03:02 +00:00
pinkerton%netscape.com
2305c46add move to LScrollerView for things that scroll and HTML view in docked Aurora.
git-svn-id: svn://10.0.0.236/trunk@9489 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 18:02:39 +00:00
pinkerton%netscape.com
cdf03c828e More AM classes and moving from LActiveScroller to LScrollerView.
git-svn-id: svn://10.0.0.236/trunk@9488 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 18:01:57 +00:00
dcone%netscape.com
415018ddda added a .h to the file Vidur added
git-svn-id: svn://10.0.0.236/trunk@9487 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 16:37:05 +00:00
ramiro%netscape.com
1dafb61497 Cleanup fe_getPixelFromRGB(). Move it to xfe/colors.c and rename it to
fe_GetPixelFromRGBString().


git-svn-id: svn://10.0.0.236/trunk@9486 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 14:01:20 +00:00
ramiro%netscape.com
b90a717fb1 Use real XtCallbacks instead of a hack.
git-svn-id: svn://10.0.0.236/trunk@9485 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 12:22:21 +00:00
ramiro%netscape.com
5853f77a56 Add layable children info.
git-svn-id: svn://10.0.0.236/trunk@9484 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 12:15:55 +00:00
ramiro%netscape.com
e94feb1a94 Add XfeSubResourceGetWidgetXmStringValue().
git-svn-id: svn://10.0.0.236/trunk@9483 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 11:59:26 +00:00
brendan%netscape.com
8189f39979 Oops! How did that ever work on my Win32 build?
git-svn-id: svn://10.0.0.236/trunk@9476 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 05:49:12 +00:00
brendan%netscape.com
12a9d81b7f js.c jsemit.c jsemit.h jsgc.c jsinterp.c jsopcode.c jsopcode.def
- Switch improvements:
  - JSOP_CONDSWITCH is a 1 byte nop, not variable length with the same kind
    of immediate operand as JSOP_LOOKUPSWITCH (which is useless except for
    decompilation).  New scheme uses SRC_COMMA notes on each JSOP_CASE opcode,
    usually 2 bytes per note, and a typically-1-byte 2nd offset on SRC_SWITCH:
      1 + 2 * ncases
    vs. the previous JSOP_LOOKUPSWITCH immediate, which consumed:
      4 * ncases
    bytes after the switch opcode just for decompilation.
  - SRC_SWITCH has two offsets, first to end of switch as before, the second
    to first case if JSOP_CONDSWITCH, for decompilation.
  - Optimize switches with all-constant cases using JSOP_TABLESWITH, or if
    that can't be used, JSOP_LOOKUPSWITCH, before falling back on ECMAv2's
    JSOP_CONDSWITCH.
  - Use cx->gcDisabled when evaluating case exprs at compile time for old,
    pre-ECMAv2 switches, to prevent branch-callback-based GC invocations
    from ripping apart the unrooted temporary script for each case expr.
  - Fixed up stale SRC_SWITCH comments in jsemit.h.

jsemit.c jsemit.h
  - TREE_CONTEXT_INIT to match ATOM_LIST_INIT, not English word order.
  - Reorganized JSCodeGenerator to sort of match argument order to
    js_InitCodeGenerator.
  - Got rid of confusing CG_RESET* macros and used memset(cg, 0, sizeof *cg)
    and non-zero-default init in js_InitCodeGenerator.  js_ResetCodeGenerator
    just releases the code and temp arena pools and leaves the cg in a state
    where it must be re-initialized (as before, but more obvious).
  - In the same spirit, don't do partial "resets" or src and trynotes in their
    js_FinishTaking*Notes functions -- those are friends of jsscript.c and are
    not general, idempotent functions.

jsapi.c jsapi.h jsarray.c jsatom.c jsatom.h jscntxt.c jsemit.c jsmsg.def
jsnum.c jsobj.c jsopcode.c jsregexp.c jsscan.c jsstr.c jsxdrapi.
  - Use PR_snprintf rather than sprintf always, so we don't have to worry
    about systems with 64-bit longs that overflow 12-byte buffers and open
    Morris-Worm-type security holes.
  - Trim extra spaces, fix hanging indentation, and similar anal retention.
  - Renamed JSMSG_BAD_PROTO_SORT to JSMSG_BAD_SORT_ARG cuz that's what it
    is complaining about.
  - SRC_CATCHGUARD still lived in comments, but it's SRC_CATCH in code.

jscntxt.c jscntxt.h jsinterp.c
  - Packed nearby JSPackedBools and added a new one: gcDisabled, for use by
    jsemit.c's pre-ECMAv2 switch case expr eval.
  - Rip out old js_InterpreterHooks stuff from original liveconnect (moja).
  - Remove javaData and savedErrors from JSContext.  Leaving it to fur or
    shaver to remove javaData from jsscript.h.


git-svn-id: svn://10.0.0.236/trunk@9475 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 05:39:51 +00:00
cls%seawood.org
36609ca04c Changed EDITOR env to MOZ_EDITOR. Submitted by Tim Rowley <tor@cs.brown.edu>
git-svn-id: svn://10.0.0.236/trunk@9474 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 04:52:26 +00:00
cls%seawood.org
e04e2ec644 Unset NO_EDITOR when mail-compose is enabled and removed unused variables.
git-svn-id: svn://10.0.0.236/trunk@9473 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 03:57:15 +00:00
cls%seawood.org
2bfc8c424b Made sure CC is being passed down to detect scripts.
git-svn-id: svn://10.0.0.236/trunk@9472 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 03:50:42 +00:00
cls%seawood.org
5f974b4509 Removed unused variables.
git-svn-id: svn://10.0.0.236/trunk@9471 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 03:45:34 +00:00
cls%seawood.org
f175f1713d Let user set CC & CXX to propagate the c and c++ compiler throughout the main build.
git-svn-id: svn://10.0.0.236/trunk@9470 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 03:33:40 +00:00
briano%netscape.com
55d0da1124 Deleting the 'patcher' subdir from DIRS. Not used.
git-svn-id: svn://10.0.0.236/trunk@9469 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-08 03:12:37 +00:00
raman%netscape.com
7a4a69ccea Checking bug fixes for SmartUpdate. It is not part of the build system
git-svn-id: svn://10.0.0.236/trunk@9468 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-07 21:49:56 +00:00
kipp%netscape.com
6187415172 Allocated another IID
git-svn-id: svn://10.0.0.236/trunk@9467 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-07 19:15:41 +00:00
kipp%netscape.com
538780b53b Added GetHints to nsIRenderingContext API
git-svn-id: svn://10.0.0.236/trunk@9466 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-07 19:12:44 +00:00
shaver%netscape.com
7191ecc710 remove some unbelievably dump debugging code (I no longer randomly dump core)
git-svn-id: svn://10.0.0.236/trunk@9465 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-07 18:50:13 +00:00
sdagley%netscape.com
219619ac4d Add new Privacy prefs sub-pane under Navifator, move cookie settings there (trusted cookie checkbox and config button not implemented yet), add new prefs checkbox for saving name and password, add new prefs checkbox for warning when server has no privacy policy.
git-svn-id: svn://10.0.0.236/trunk@9464 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-07 06:04:24 +00:00
toshok%netscape.com
e978f4bd52 uhh... remove xphist.* from the build.
git-svn-id: svn://10.0.0.236/trunk@9463 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-06 22:03:50 +00:00
toshok%netscape.com
d511d6f7cf add xp_hist.c/h. not built.
git-svn-id: svn://10.0.0.236/trunk@9462 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-06 22:03:12 +00:00
toshok%netscape.com
80e54a7d35 we need lo_alignStrings when we don't have memory arenas too. not just when EDITOR is defined.
git-svn-id: svn://10.0.0.236/trunk@9461 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-06 21:00:43 +00:00
ramiro%netscape.com
0d56597e86 BSD/OS 3.x and 4.x no longer define ___386BSD__ (which really existed
only for backward compatibility with the old Jolitz BSD releases).
Anyways, this patch makes it compile again.
Thanks to Bert Driehuis <driehuis@playbeing.org>.


git-svn-id: svn://10.0.0.236/trunk@9460 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-06 19:42:08 +00:00
ramiro%netscape.com
3c6f0accb0 Convert '/' to '_' in the output of uname.
Thanks to Bert Driehuis <driehuis@playbeing.org>.


git-svn-id: svn://10.0.0.236/trunk@9459 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-06 19:40:05 +00:00
brendan%netscape.com
828b802387 Remove '(balance' comments, fix hanging indents, other nits.
git-svn-id: svn://10.0.0.236/trunk@9458 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-06 19:23:06 +00:00
brendan%netscape.com
40a84ecba5 Fix switch comments, it's not a ternary node any longer.
git-svn-id: svn://10.0.0.236/trunk@9457 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-06 19:19:04 +00:00
terry%netscape.com
91bc17ca27 Chouck isn't here; fix owner of LibMocha.
git-svn-id: svn://10.0.0.236/trunk@9456 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-06 15:03:41 +00:00
brendan%netscape.com
f85feaca03 - Use consistent spelling in the API: "Callback" not "CallBack" -- it's a one
word neologism, not two words.
- Use consistent neighboring terseness ("error" rather than "err" in intercaps
  identifiers).
- Don't leave pointers in JSErrorReport to freed memory if bailing on OOM in
  jscntxt.c:js_ExpandErrorArguments.
- Hanging indentation, code fusion via continue, and other misc. cleanups.


git-svn-id: svn://10.0.0.236/trunk@9455 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-06 08:07:35 +00:00
kipp%netscape.com
3862b13620 Fixed linux compiling bugs
git-svn-id: svn://10.0.0.236/trunk@9454 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-06 04:16:22 +00:00
kipp%netscape.com
90c7bcd9de Updated to support latest API's
git-svn-id: svn://10.0.0.236/trunk@9453 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-06 00:21:40 +00:00
kipp%netscape.com
7c684bbb7c Create text using NS_NewTextNode API
git-svn-id: svn://10.0.0.236/trunk@9452 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-06 00:21:22 +00:00
kipp%netscape.com
e9662bac89 Use nsITextContent to initialize text node
git-svn-id: svn://10.0.0.236/trunk@9451 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-06 00:20:59 +00:00
kipp%netscape.com
7c2909f337 Cleaned up some whitespace
git-svn-id: svn://10.0.0.236/trunk@9450 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-06 00:19:49 +00:00
kipp%netscape.com
652229634f Expose NS_QuoteForHTML; remove duplicate frame ctor method decls
git-svn-id: svn://10.0.0.236/trunk@9449 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-06 00:19:14 +00:00
kipp%netscape.com
5b597d4bc6 Layer on top of nsGenericDOMData for full implementation
git-svn-id: svn://10.0.0.236/trunk@9448 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-06 00:18:43 +00:00
kipp%netscape.com
d7badd5a07 Added nsTextNode
git-svn-id: svn://10.0.0.236/trunk@9447 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-06 00:18:26 +00:00
kipp%netscape.com
43f634963b Nuked old content code
git-svn-id: svn://10.0.0.236/trunk@9446 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-06 00:18:12 +00:00
kipp%netscape.com
79472d0bf2 Removed some cruft; added NS_NewTextNode
git-svn-id: svn://10.0.0.236/trunk@9445 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-06 00:17:30 +00:00
kipp%netscape.com
50a0d285a1 new
git-svn-id: svn://10.0.0.236/trunk@9444 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-06 00:16:36 +00:00
troy%netscape.com
497b238e4c Reserved an IID
git-svn-id: svn://10.0.0.236/trunk@9443 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-06 00:15:45 +00:00
kipp%netscape.com
65ab40f772 Use allocated IID; update interface to be XPCOM'd and updated the methods
git-svn-id: svn://10.0.0.236/trunk@9442 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-06 00:15:10 +00:00
kipp%netscape.com
53c7e57bc9 Allocated iid for nsITextContent
git-svn-id: svn://10.0.0.236/trunk@9441 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 23:28:08 +00:00
kipp%netscape.com
f9c2c2bcd2 Added a macro and normalized auto-string initialization; reordered methods slightly just to annoy rickg :-)
git-svn-id: svn://10.0.0.236/trunk@9440 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 23:21:42 +00:00
cls%seawood.org
cb74fa0564 Removed libaddr and libmsg Makefile.ins
git-svn-id: svn://10.0.0.236/trunk@9439 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 23:17:44 +00:00
cls%seawood.org
41f723e37a Added missing / to command.c target.
git-svn-id: svn://10.0.0.236/trunk@9438 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 21:35:59 +00:00
michaelp%netscape.com
947b11003e added Scrolled() method. and support to call it. fixed NS_RELEASE(rc) bug in
pres shell as reported by pierre.


git-svn-id: svn://10.0.0.236/trunk@9437 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 20:57:57 +00:00
cls%seawood.org
6d2f9e6924 Added --enable-mail-compose option.
git-svn-id: svn://10.0.0.236/trunk@9436 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 20:40:43 +00:00
kipp%netscape.com
458facb9aa Stub out fe routine so that app will link
git-svn-id: svn://10.0.0.236/trunk@9435 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 20:13:34 +00:00
kipp%netscape.com
b884486032 Added missing files to the build
git-svn-id: svn://10.0.0.236/trunk@9434 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 20:11:17 +00:00
cls%seawood.org
36caf9e033 Updated.
git-svn-id: svn://10.0.0.236/trunk@9433 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 10:25:13 +00:00
pierre%netscape.com
ac435378f8 fixed other crashes in Comparators and ref counts
git-svn-id: svn://10.0.0.236/trunk@9432 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 10:25:04 +00:00
cls%seawood.org
420116584d Fixing autoconf breakage. LO_BuiltinStruct is the same for both the OJI and non-OJI cases.
git-svn-id: svn://10.0.0.236/trunk@9431 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 10:23:12 +00:00
pierre%netscape.com
66997919f6 fixed other crash
mTimers becomes a LArray, not a LArray*


git-svn-id: svn://10.0.0.236/trunk@9430 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 09:16:58 +00:00
pierre%netscape.com
f5e5c0a6f4 fixed crash in SpendTime()
git-svn-id: svn://10.0.0.236/trunk@9429 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 08:14:15 +00:00
pierre%netscape.com
367299ddef removed explicit creation of static object ImageManagerInit because "__initialize" was added to the project
git-svn-id: svn://10.0.0.236/trunk@9428 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 08:12:08 +00:00
briano%netscape.com
368872de77 If I had been paying attention, I'd have seen that the endian.h problem had already been fixed properly in mcom_db.h.
git-svn-id: svn://10.0.0.236/trunk@9427 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 08:11:59 +00:00
pierre%netscape.com
5e61c45025 removed temporary NET_PollSockets()
added OnPaint() call


git-svn-id: svn://10.0.0.236/trunk@9426 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 08:10:15 +00:00
pierre%netscape.com
0f30acf71c ported AddMouseListener() and AddEventListener() from Windows
git-svn-id: svn://10.0.0.236/trunk@9425 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 08:05:30 +00:00
pierre%netscape.com
4757c8e0e4 added __initialize and __terminate
git-svn-id: svn://10.0.0.236/trunk@9424 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 08:03:28 +00:00
ramiro%netscape.com
4049071b62 Comment out code that breaks MOZ_SELECTOR_BAR.
git-svn-id: svn://10.0.0.236/trunk@9423 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 06:44:15 +00:00
mcafee%netscape.com
eaecbf611e newPaneFromURL() can now pass paramters to HT_PaneFromURL.
git-svn-id: svn://10.0.0.236/trunk@9422 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 06:26:28 +00:00
mcafee%netscape.com
5946788239 SHACK: builtin struct gets passed in now, and we create an XFE_BuiltinTreeView instead of an XFE_NavCenterView.
git-svn-id: svn://10.0.0.236/trunk@9421 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 06:23:54 +00:00
mcafee%netscape.com
dacbe3641b added BuiltinTreeView.cpp
git-svn-id: svn://10.0.0.236/trunk@9420 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 06:21:30 +00:00
mcafee%netscape.com
91139eba00 Initial version
git-svn-id: svn://10.0.0.236/trunk@9419 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 06:21:00 +00:00
shaver%netscape.com
f5b78d1114 add refcounting to lo_TextAttr
git-svn-id: svn://10.0.0.236/trunk@9418 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 05:08:18 +00:00
shaver%netscape.com
91df78a054 Start of infrastructure for DOM-as-one-true-attr-source. Implement
DOM_NewElement.  Defend against NULL NodeOps.


git-svn-id: svn://10.0.0.236/trunk@9417 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 04:36:38 +00:00
shaver%netscape.com
454d0090b2 Remove DOMSetAttribute event guck (now tweak on mocha thread with layout
lock held, and signal reflow via event).  Check doc_id before trusting
LO_Element *s.  Make <TD>.bgcolor mutable.  Use DOM_NewElement instead
of inline hackery.  Defend against NULL returns from DOM_HTMLPopElementByType.
Make PR_ASSERTs XP_ASSERT for sake of brave users.


git-svn-id: svn://10.0.0.236/trunk@9416 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 04:34:13 +00:00
shaver%netscape.com
ab12796192 Add COW textattrs. Clean up lo_SetColor. Make <TD>.bgcolor mutable.
Remove some debugging cruft.


git-svn-id: svn://10.0.0.236/trunk@9415 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 04:29:56 +00:00
briano%netscape.com
1b0fc032b5 Added support for OpenBSD. Thanks to Marco Hyman (marc@snafu.org) for the actual work.
git-svn-id: svn://10.0.0.236/trunk@9414 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 04:22:25 +00:00
briano%netscape.com
a90118cc0c Support OpenBSD.
git-svn-id: svn://10.0.0.236/trunk@9413 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 04:16:15 +00:00
peterl%netscape.com
c728b9f01f changed the way map attributes into is connected
git-svn-id: svn://10.0.0.236/trunk@9412 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 04:00:06 +00:00
peterl%netscape.com
c053a8b481 tweaked output of percent values
git-svn-id: svn://10.0.0.236/trunk@9411 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 03:59:44 +00:00
peterl%netscape.com
0e107c4842 added content dir to includes
git-svn-id: svn://10.0.0.236/trunk@9410 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 03:58:05 +00:00
peterl%netscape.com
07befae09b added content directory to includes
git-svn-id: svn://10.0.0.236/trunk@9409 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 03:56:08 +00:00
peterl%netscape.com
ac4e93b3e5 added content to includes
git-svn-id: svn://10.0.0.236/trunk@9408 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 03:53:32 +00:00
peterl%netscape.com
dbbef7396e added base url
git-svn-id: svn://10.0.0.236/trunk@9407 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 03:52:40 +00:00
peterl%netscape.com
df4d7336c5 removed content from style mapping api
git-svn-id: svn://10.0.0.236/trunk@9406 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 03:52:30 +00:00
peterl%netscape.com
22106bc014 removed content from style map api
git-svn-id: svn://10.0.0.236/trunk@9405 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 03:51:56 +00:00
peterl%netscape.com
cbd43bb108 added base url accessor
git-svn-id: svn://10.0.0.236/trunk@9404 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 03:51:16 +00:00
sdagley%netscape.com
db0b7bc7d0 Merging fix from 4.0x branch. It's not clear that we really want to call GetURLForReferral when the passed referer is NIL since it breaks Smart Browsing keywords and does not actually appear to be needed to fix bug #90892 (which is why it was originally added). It's also a security hole since it causes the URL of the front window to be sent as the referer even if the user manually types in a URL.
git-svn-id: svn://10.0.0.236/trunk@9403 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 02:41:28 +00:00
cyeh%netscape.com
7160be3fdb dialup begone.
git-svn-id: svn://10.0.0.236/trunk@9402 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 02:04:12 +00:00
briano%netscape.com
55df62eda3 Potential fix for at least part of bug#522. Also turned off -taso for default Mozilla builds; only needed when building the commercial product.
git-svn-id: svn://10.0.0.236/trunk@9401 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 01:54:58 +00:00
briano%netscape.com
196d4e0d9a Added MOZ_EDITOR support, and did some minor cleanup.
git-svn-id: svn://10.0.0.236/trunk@9400 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 01:10:54 +00:00
waterson%netscape.com
d0a8fe62ca Fix build bustage due to change in header file from Boolean to PRBool
on XFE_Image::isImageLoaded().


git-svn-id: svn://10.0.0.236/trunk@9399 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 00:41:05 +00:00
bjorn%netscape.com
945b841d48 Added a missing read in ArenaAllocate.
git-svn-id: svn://10.0.0.236/trunk@9398 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 00:36:14 +00:00
bjorn%netscape.com
c4ef934afe Locks with almost no global locking. This will relieve contention.
git-svn-id: svn://10.0.0.236/trunk@9397 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 00:34:03 +00:00
cyeh%netscape.com
9d076721e8 this is stupid, since we now have http://www.mozilla.org/bonsai.html
to lookup changes in the tree


git-svn-id: svn://10.0.0.236/trunk@9396 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-05 00:32:35 +00:00
vidur%netscape.com
62fd8be727 Fixed bustage
git-svn-id: svn://10.0.0.236/trunk@9395 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 23:55:37 +00:00
nisheeth%netscape.com
ae9593fa10 Fix for bug #313278. Some links were unclickable. Added initialization code in lo_NewElement() for all the common fields shared across layout elements. Now, all the common fields should get sane values assigned to them at creation time.
git-svn-id: svn://10.0.0.236/trunk@9394 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 23:55:04 +00:00
ftang%netscape.com
78ab560f17 Change to the new selector so Japanese bookmark in UNIX (EUC) could be import correctly. This is a special case where bookmark file is different from the locale csid.
git-svn-id: svn://10.0.0.236/trunk@9393 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 23:25:00 +00:00
ftang%netscape.com
e486040111 add INTL_OldBookmarkCsidSel to support RDF bookmark import
git-svn-id: svn://10.0.0.236/trunk@9392 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 23:22:51 +00:00
cyeh%netscape.com
f7dea89c7a remove libaddr and libmsg from MozillaSourceCommon module
git-svn-id: svn://10.0.0.236/trunk@9391 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 23:17:25 +00:00
ftang%netscape.com
8b5a2b428e add new selector for oldbookmark
git-svn-id: svn://10.0.0.236/trunk@9390 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 23:12:45 +00:00
ftang%netscape.com
944cace649 add INTL_OldBookmarkCsidSel
git-svn-id: svn://10.0.0.236/trunk@9389 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 23:12:04 +00:00
ftang%netscape.com
08f111dd0c Add bookmark import UTF8 conversion code to convert the bookmark entry into UTF8. reviewed by rjc
git-svn-id: svn://10.0.0.236/trunk@9388 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 23:11:05 +00:00
vidur%netscape.com
c849307960 New content code adjusts to getting script objects through a factory interface
git-svn-id: svn://10.0.0.236/trunk@9387 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 23:03:16 +00:00
vidur%netscape.com
c846a918fc Tag enums
git-svn-id: svn://10.0.0.236/trunk@9386 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 23:02:06 +00:00
radha%netscape.com
04645c7a9d Implement singleclick activation for grid widget
git-svn-id: svn://10.0.0.236/trunk@9385 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 22:56:22 +00:00
radha%netscape.com
7847db06f7 Define new resource singleClickActivation for Grid widget
git-svn-id: svn://10.0.0.236/trunk@9384 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 22:55:08 +00:00
radha%netscape.com
52ff426581 Set singleClick activation in docked mode
git-svn-id: svn://10.0.0.236/trunk@9383 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 22:54:17 +00:00
radha%netscape.com
38a53f8448 Change the RDFImage Cache to a doubly linked list instead of a array.
Add a bunch of utility functions


git-svn-id: svn://10.0.0.236/trunk@9382 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 22:53:34 +00:00
radha%netscape.com
e3ce6f3f30 Make the close button close the RDFChromeTreeView
git-svn-id: svn://10.0.0.236/trunk@9381 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 22:52:19 +00:00
radha%netscape.com
d5701c2435 Change the declaration, usage and definition of isImageLoaded().
git-svn-id: svn://10.0.0.236/trunk@9380 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 22:51:29 +00:00
mcafee%netscape.com
779f5ad78d Updating -ncols, -config-dir -h comments.
git-svn-id: svn://10.0.0.236/trunk@9379 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 22:37:20 +00:00
akkana%netscape.com
306ba98b1e Fix some unresolved symbols for MOZ_MAIL_COMPOSE build.
Won't affect default build.


git-svn-id: svn://10.0.0.236/trunk@9378 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 22:30:14 +00:00
akkana%netscape.com
db39744a08 Oops, type in mailto lib name
git-svn-id: svn://10.0.0.236/trunk@9377 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 22:28:06 +00:00
cls%seawood.org
51e2313515 Applied patch by S.J.Moller <sjm@nwc.dk> to fix problem with OPTIMIZER not being overridden by ACCFLAGS.
git-svn-id: svn://10.0.0.236/trunk@9376 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 22:27:13 +00:00
cls%seawood.org
51d9b43023 Swapped order of checking for X libs as Xt requires SM as of X11R6.
git-svn-id: svn://10.0.0.236/trunk@9375 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 22:22:26 +00:00
akkana%netscape.com
97b5c848d9 mailto doesn't need mimevcrd.c after all
git-svn-id: svn://10.0.0.236/trunk@9374 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 22:07:25 +00:00
spider%netscape.com
3bf64af6a4 Adding support for depend and clobber
git-svn-id: svn://10.0.0.236/trunk@9373 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 22:02:21 +00:00
ramiro%netscape.com
f62051d76f Add lib/mailto.
git-svn-id: svn://10.0.0.236/trunk@9372 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 22:01:45 +00:00
dcone%netscape.com
de6c30b510 fixed clipping
git-svn-id: svn://10.0.0.236/trunk@9371 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 21:12:49 +00:00
dcone%netscape.com
4bf9e70937 added checkbutton
git-svn-id: svn://10.0.0.236/trunk@9370 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 21:12:12 +00:00
dcone%netscape.com
bf0f71d504 fixed text
git-svn-id: svn://10.0.0.236/trunk@9369 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 21:10:30 +00:00
dcone%netscape.com
23c40b5c0f new mac version
git-svn-id: svn://10.0.0.236/trunk@9368 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 21:10:13 +00:00
akkana%netscape.com
93682bb687 Fix build bustage -- missed an ifdef MOZ_MAIL
git-svn-id: svn://10.0.0.236/trunk@9367 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 20:26:35 +00:00
akkana%netscape.com
fa2f9817cc Mailto landing: include mime.c ifdef MOZ_MAIL_COMPOSE.
git-svn-id: svn://10.0.0.236/trunk@9366 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 19:27:45 +00:00
terry%netscape.com
f9cd004867 Encourage people to use the secure server.
git-svn-id: svn://10.0.0.236/trunk@9365 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 19:23:40 +00:00
akkana%netscape.com
1d8ede9301 Mailto landing (ifdef MOZ_MAIL_COMPOSE).
Also, add a FULL_STATIC define to the Makefile to allow the option
of compiling a truly static binary (e.g. to test for unresolveds).


git-svn-id: svn://10.0.0.236/trunk@9364 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 19:21:43 +00:00
akkana%netscape.com
a5b7868cf3 Mailto landing. ifdef MOZ_MAIL_COMPOSE, build lib/mailto.
git-svn-id: svn://10.0.0.236/trunk@9363 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 19:08:24 +00:00
akkana%netscape.com
0b1647e004 Mailto landing (ifdef MOZ_MAIL_COMPOSE). Aproved by mwelch.
Turns off MOZILLA_30, which Jamie says is probably a bad idea;
this will be reworked in the future.


git-svn-id: svn://10.0.0.236/trunk@9362 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 19:07:08 +00:00
akkana%netscape.com
3e79243700 Mailto landing.
The mailto library is the mail compose code ripped out of the old
Messenger libmsg library, then cleaned up somewhat
(it could still use more cleaning).
This library should only be built ifdef MOZ_MAIL_COMPOSE.


git-svn-id: svn://10.0.0.236/trunk@9361 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 19:04:30 +00:00
akkana%netscape.com
498b0dfae9 Mailto landing (ifdef MOZ_MAIL_COMPOSE). Approved by ftang.
git-svn-id: svn://10.0.0.236/trunk@9360 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 19:01:58 +00:00
akkana%netscape.com
67c07c175d Mailto landing (ifdef MOZ_MAIL_COMPOSE). Approved by valeski.
git-svn-id: svn://10.0.0.236/trunk@9359 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 18:59:53 +00:00
despotdaemon%netscape.com
93854c4c6b Pseudo-automatic update of changes made by leaf@mozilla.org.
git-svn-id: svn://10.0.0.236/trunk@9358 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 18:53:16 +00:00
akkana%netscape.com
b6a185a70e Mailto landing: grok MOZ_MAIL_COMPOSE. Approved by Briano.
git-svn-id: svn://10.0.0.236/trunk@9357 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 18:53:02 +00:00
valeski%netscape.com
0485308878 String insertion was broken if you wanted to insert at the begining (index '0') of a string.
git-svn-id: svn://10.0.0.236/trunk@9356 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 18:49:50 +00:00
shaver%netscape.com
952f75d830 fix ifdef breakage
git-svn-id: svn://10.0.0.236/trunk@9355 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 18:48:16 +00:00
terry%netscape.com
8f8f7701f0 Added "Viewer App" component.
git-svn-id: svn://10.0.0.236/trunk@9354 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 18:26:09 +00:00
dcone%netscape.com
67b43e8565 updated kipps changes
git-svn-id: svn://10.0.0.236/trunk@9353 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 18:01:46 +00:00
dcone%netscape.com
e3b01c7595 fixed to XP again
git-svn-id: svn://10.0.0.236/trunk@9352 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 18:01:00 +00:00
spider%netscape.com
e85e9626d1 adding clobber and depend support for julian
git-svn-id: svn://10.0.0.236/trunk@9351 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 18:00:47 +00:00
dcone%netscape.com
586c0aca07 updated to kipps changes
git-svn-id: svn://10.0.0.236/trunk@9350 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 18:00:21 +00:00
dcone%netscape.com
5cfb45537b updated for the latest kipp changes
git-svn-id: svn://10.0.0.236/trunk@9349 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 17:59:21 +00:00
dcone%netscape.com
245cbae5b2 Fixed mac build for the Kipp changes - Raptor only
git-svn-id: svn://10.0.0.236/trunk@9348 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 17:58:28 +00:00
dcone%netscape.com
f14fd1ee00 fixed the offscreen buffer mac things
git-svn-id: svn://10.0.0.236/trunk@9347 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 17:57:36 +00:00
dcone%netscape.com
40b4bf37e7 Mac Implementation
git-svn-id: svn://10.0.0.236/trunk@9346 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 17:57:04 +00:00
spider%netscape.com
3dc5150cef Adding depend and clobber support
git-svn-id: svn://10.0.0.236/trunk@9345 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 17:34:31 +00:00
spider%netscape.com
52061f624e adding clobber and depend support
git-svn-id: svn://10.0.0.236/trunk@9344 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 17:33:41 +00:00
spider%netscape.com
0ac14e35b2 Adding in depend and clobber support
git-svn-id: svn://10.0.0.236/trunk@9343 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 17:32:19 +00:00
cyeh%netscape.com
059f0b427f changes to CalendarClient module for spider
git-svn-id: svn://10.0.0.236/trunk@9342 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 17:30:56 +00:00
rickg%netscape.com
3615d64e55 new string improvements
git-svn-id: svn://10.0.0.236/trunk@9341 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 17:26:37 +00:00
despotdaemon%netscape.com
ce6c987c8c Pseudo-automatic update of changes made by cyeh@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@9340 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 17:25:45 +00:00
spider%netscape.com
372b246ae4 remove core from garbage
git-svn-id: svn://10.0.0.236/trunk@9339 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 17:14:31 +00:00
kipp%netscape.com
d7cef5dc99 Fixed bug in handling of textarea that caused them to terminate documents
git-svn-id: svn://10.0.0.236/trunk@9338 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 16:33:40 +00:00
kipp%netscape.com
47fb9492d2 new
git-svn-id: svn://10.0.0.236/trunk@9337 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 15:57:54 +00:00
rods%netscape.com
807f7d7725 Fixed up Find to include Replace, replace will be moved to it's
own place later.


git-svn-id: svn://10.0.0.236/trunk@9336 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 15:41:20 +00:00
terry%netscape.com
c1b6656939 Give a better message, in the case that someone changes a bug that had
an invalid component or version field.  (Like, for example, all the
new NGLayout bugs.)


git-svn-id: svn://10.0.0.236/trunk@9335 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 14:30:04 +00:00
ramiro%netscape.com
3a33b18b34 context_funcs.cpp does not build on BSD/OS because no definition for
STATFS is found. This trivial patch adds it back. It sure looks like a
pasto.
Thanks to Bert Driehuis <driehuis@playbeing.org>.


git-svn-id: svn://10.0.0.236/trunk@9334 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 13:44:34 +00:00
rods%netscape.com
70889d7b15 check for mLines being being null in FrameDeletedReflow
git-svn-id: svn://10.0.0.236/trunk@9333 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 13:33:22 +00:00
shaver%netscape.com
5412c22c77 fix ancient #if DOM breakage
git-svn-id: svn://10.0.0.236/trunk@9332 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 11:51:24 +00:00
cls%seawood.org
241c21b75a Changed checks for LINUX to linux as linux is defined by the compiler and fixes autoconf breakage under libc5.
git-svn-id: svn://10.0.0.236/trunk@9331 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 10:37:27 +00:00
cls%seawood.org
6ea484d1f5 Added USE_AUTOCONF to DEFS and made building editor disabled by default.
git-svn-id: svn://10.0.0.236/trunk@9330 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 08:50:18 +00:00
despotdaemon%netscape.com
413fab33e5 Pseudo-automatic update of changes made by brendan@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@9329 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 08:49:47 +00:00
briano%netscape.com
30b0eff13f Added -DHAVE_SNPRINTF, as discussed with wtc.
git-svn-id: svn://10.0.0.236/trunk@9328 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 07:59:55 +00:00
cls%seawood.org
a2db8495bc Replaced JAVA_OR_OJI surrounding ANTHRAX with USE_AUTOCONF until the proper generic combo can be decided upon.
git-svn-id: svn://10.0.0.236/trunk@9327 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 07:36:37 +00:00
cls%seawood.org
48f6f9d56b Surrounded ANTHRAX with ifdef JAVA_OR_OJI to fix non-OJI case.
git-svn-id: svn://10.0.0.236/trunk@9325 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 05:15:42 +00:00
scc%netscape.com
3fbe1524e4 moved FCInitialize() to post pref-init for FULL CIRCLE stuff
git-svn-id: svn://10.0.0.236/trunk@9324 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 03:48:27 +00:00
ftang%netscape.com
018bd46884 add INTL_ConvertLineWithoutAutoDetect and INTL_GetCharSetID to the list
git-svn-id: svn://10.0.0.236/trunk@9323 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 03:47:20 +00:00
ftang%netscape.com
6d2ba575bd add INTL_GetCharSetID from 4.5 tree
git-svn-id: svn://10.0.0.236/trunk@9322 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 03:46:31 +00:00
ftang%netscape.com
bbcb9cc63c add FE_GetCharSetID from 4.5 tree
git-svn-id: svn://10.0.0.236/trunk@9321 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 03:45:51 +00:00
ftang%netscape.com
e9214b000b Add FE_GetCharSetID from 4.5 tree
git-svn-id: svn://10.0.0.236/trunk@9320 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 03:44:52 +00:00
ftang%netscape.com
b88451df35 Add INTL_GetCharSetID from 4.5 tree
git-svn-id: svn://10.0.0.236/trunk@9319 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 03:44:23 +00:00
wtc%netscape.com
38ce488bd0 On Unix, include <sys/types.h> for 'uint'.
git-svn-id: svn://10.0.0.236/trunk@9318 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 03:43:07 +00:00
morse%netscape.com
35c87b9bc6 improve wording on trust label info
git-svn-id: svn://10.0.0.236/trunk@9317 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 03:28:26 +00:00
mcafee%netscape.com
4f7c26fb59 Getting rid of the MOZILLA_NO_FULLCIRCLE hack.
git-svn-id: svn://10.0.0.236/trunk@9316 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 03:01:54 +00:00
briano%netscape.com
2c188de044 Added -DHAVE_SNPRINTF, as discussed with wtc.
git-svn-id: svn://10.0.0.236/trunk@9315 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 02:53:32 +00:00
rickg%netscape.com
227c173869 a few small bug fixes for DTD
git-svn-id: svn://10.0.0.236/trunk@9314 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 02:52:47 +00:00
shaver%netscape.com
34ac502065 added missing #if DOM (bad!)
git-svn-id: svn://10.0.0.236/trunk@9313 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 01:16:11 +00:00
joki%netscape.com
86035599fe Fix makefile
git-svn-id: svn://10.0.0.236/trunk@9312 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 01:09:33 +00:00
kipp%netscape.com
745aee0c4c Use new wbr element
git-svn-id: svn://10.0.0.236/trunk@9311 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 01:03:20 +00:00
kipp%netscape.com
e39b3b0498 Removed old content code
git-svn-id: svn://10.0.0.236/trunk@9310 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 01:03:05 +00:00
kipp%netscape.com
b4b6440297 Added wbr
git-svn-id: svn://10.0.0.236/trunk@9309 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 01:02:54 +00:00
kipp%netscape.com
72917f8f44 Added WBR
git-svn-id: svn://10.0.0.236/trunk@9308 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 01:02:30 +00:00
kipp%netscape.com
cf434cfd08 new
git-svn-id: svn://10.0.0.236/trunk@9307 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 01:02:20 +00:00
kipp%netscape.com
507cb508d7 Create a spacer frame for spacer parts
git-svn-id: svn://10.0.0.236/trunk@9306 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:55:47 +00:00
kipp%netscape.com
bc5eaf1b20 Removed some cruft and promoted a few frame creation routines
git-svn-id: svn://10.0.0.236/trunk@9305 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:55:20 +00:00
kipp%netscape.com
0398940b8e Removed obsoelte content code
git-svn-id: svn://10.0.0.236/trunk@9304 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:54:57 +00:00
kipp%netscape.com
b1bd236e79 Added new atoms
git-svn-id: svn://10.0.0.236/trunk@9303 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:54:45 +00:00
kipp%netscape.com
f22d94b95a Create spacer element instead of obsolete spacer part
git-svn-id: svn://10.0.0.236/trunk@9302 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:52:49 +00:00
kipp%netscape.com
ce6f7d8d9f New file
git-svn-id: svn://10.0.0.236/trunk@9301 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:52:34 +00:00
norris%netscape.com
e41858a470 Previous checkin was mistaken; back it out.
git-svn-id: svn://10.0.0.236/trunk@9300 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:47:22 +00:00
joki%netscape.com
720db7820e Add New Window menu item, added window.close()
git-svn-id: svn://10.0.0.236/trunk@9299 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:47:15 +00:00
clu%netscape.com
58d40d97e6 tweaks to the encoding dialog box so the xp strings would fit.
git-svn-id: svn://10.0.0.236/trunk@9298 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:46:13 +00:00
joki%netscape.com
560e1d1ec1 Adding window.close(), fixing window.opener, window.name
git-svn-id: svn://10.0.0.236/trunk@9297 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:46:06 +00:00
norris%netscape.com
bc2d3f5307 Add support for ECMA switch statements. These are like LISP cond in that they
evaluate the case label each time.
Still to do is to optimize so that TABLESWITCH and LOOKUPSWITCH are created
when possible.


git-svn-id: svn://10.0.0.236/trunk@9296 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:45:21 +00:00
terry%netscape.com
6e086b553a Amusil now owns plugins.
git-svn-id: svn://10.0.0.236/trunk@9295 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:45:20 +00:00
spider%netscape.com
47c94bbe3c Removing no longer used mozilla/shell
git-svn-id: svn://10.0.0.236/trunk@9294 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:39:05 +00:00
pierre%netscape.com
ba1fadc3f7 fix a crash in the destructor (don't delete mFrontBuffer)
git-svn-id: svn://10.0.0.236/trunk@9293 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:33:49 +00:00
thom%netscape.com
9668f3bd42 Quick hack to get timers working (added call to tickle LPeriodical class)
git-svn-id: svn://10.0.0.236/trunk@9292 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:28:35 +00:00
clu%netscape.com
37bfaf7023 got rid of StUseCharFormattingCache for better typing performance. Also added an EDT_SetEncoding call in OBeyCommand to get the encoding dialog box up.
git-svn-id: svn://10.0.0.236/trunk@9291 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:28:05 +00:00
thom%netscape.com
a1fd716f3b Fixed crash in timer (AddItem (&something) not AddIten (something))
git-svn-id: svn://10.0.0.236/trunk@9290 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:23:30 +00:00
kipp%netscape.com
ca034ab855 Use new content class instead of the old obsolete one
git-svn-id: svn://10.0.0.236/trunk@9289 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:20:14 +00:00
kipp%netscape.com
df0413f361 Fold in some code from nsHTMLImage.cpp
git-svn-id: svn://10.0.0.236/trunk@9288 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:19:48 +00:00
kipp%netscape.com
859eb894bc Create image frames for images
git-svn-id: svn://10.0.0.236/trunk@9287 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:19:32 +00:00
kipp%netscape.com
3b3e4fc761 obsolete
git-svn-id: svn://10.0.0.236/trunk@9286 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:19:02 +00:00
kipp%netscape.com
3dd1960b2a Added decl for NS_NewImageFrame
git-svn-id: svn://10.0.0.236/trunk@9285 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:18:53 +00:00
kipp%netscape.com
9069de4eea Stop building nsBOdyPart since it's gone
git-svn-id: svn://10.0.0.236/trunk@9284 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:18:30 +00:00
kipp%netscape.com
4d72d837be Removed image content code
git-svn-id: svn://10.0.0.236/trunk@9283 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:18:18 +00:00
despotdaemon%netscape.com
70d9be09cc Pseudo-automatic update of changes made by terry@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@9282 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:13:54 +00:00
terry%netscape.com
8f441bb341 Detecting the "default" partition wasn't working right.
git-svn-id: svn://10.0.0.236/trunk@9281 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:13:17 +00:00
despotdaemon%netscape.com
f59b95da76 Pseudo-automatic update of changes made by terry@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@9280 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:12:04 +00:00
shaver%netscape.com
35c4e01d18 Enable setting of table cell attributes (bgcolor -- still broken), and
expose lo_SetColor to other code (libmocha's DOM stuff, specifically).


git-svn-id: svn://10.0.0.236/trunk@9279 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:08:08 +00:00
shaver%netscape.com
18f85f8dd0 Wired up DOM-node destruction after firing onUnload.
Added event guck for altering attributes (will be rewritten to do
poke-and-schedule).
Tentatively blocked out LM_ClearContextStream, which looks like dead code.


git-svn-id: svn://10.0.0.236/trunk@9278 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-04 00:05:53 +00:00
despotdaemon%netscape.com
a693e71f28 Pseudo-automatic update of changes made by terry@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@9277 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 23:58:46 +00:00
terry%netscape.com
c9939d1fd3 Make the generated regexps not too general!
git-svn-id: svn://10.0.0.236/trunk@9276 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 23:57:21 +00:00
shaver%netscape.com
b36957e25d Implemented DOM_NewText.
Added stuff for node destruction, including making node_finalize module-public
for use by other node types.
Added new methods to Element (setAttribute + stubs).


git-svn-id: svn://10.0.0.236/trunk@9275 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 23:51:58 +00:00
despotdaemon%netscape.com
9e8f848074 Pseudo-automatic update of changes made by leaf@mozilla.org.
git-svn-id: svn://10.0.0.236/trunk@9274 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 23:50:30 +00:00
despotdaemon%netscape.com
5516bd4ec8 Pseudo-automatic update of changes made by leaf@mozilla.org.
git-svn-id: svn://10.0.0.236/trunk@9273 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 23:47:49 +00:00
despotdaemon%netscape.com
2d724b771e Pseudo-automatic update of changes made by leaf@mozilla.org.
git-svn-id: svn://10.0.0.236/trunk@9272 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 23:45:02 +00:00
despotdaemon%netscape.com
5f5d8230ea Pseudo-automatic update of changes made by leaf@mozilla.org.
git-svn-id: svn://10.0.0.236/trunk@9271 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 23:01:06 +00:00
despotdaemon%netscape.com
642ad8797c Pseudo-automatic update of changes made by leaf@mozilla.org.
git-svn-id: svn://10.0.0.236/trunk@9270 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 23:00:19 +00:00
rogerl%netscape.com
9f90098dfb Removed redundant #undef
git-svn-id: svn://10.0.0.236/trunk@9269 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 22:50:55 +00:00
terry%netscape.com
95101e1958 Added in NGLayout stuff. (gotta come up with a better way of tweaking
these tables!)


git-svn-id: svn://10.0.0.236/trunk@9268 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 22:50:31 +00:00
kipp%netscape.com
a20cd83e5d new
git-svn-id: svn://10.0.0.236/trunk@9267 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 22:23:41 +00:00
kipp%netscape.com
314b8f7958 Make more objects invisible
git-svn-id: svn://10.0.0.236/trunk@9266 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 22:23:22 +00:00
kipp%netscape.com
93c3e23672 Use new content objects wherever possible
git-svn-id: svn://10.0.0.236/trunk@9265 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 22:23:09 +00:00
kipp%netscape.com
76b3e558b9 tweaked element ctor methods
git-svn-id: svn://10.0.0.236/trunk@9264 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 22:22:34 +00:00
kipp%netscape.com
ab78e4bef0 Removed attribute handling since containers don't get used this way anymore
git-svn-id: svn://10.0.0.236/trunk@9263 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 22:22:16 +00:00
kipp%netscape.com
f3e136fff6 disabled most of the body part code
git-svn-id: svn://10.0.0.236/trunk@9262 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 22:21:57 +00:00
kipp%netscape.com
18a14d6bf5 Implement StringToAttribute/AttributeToString/MapAttributesInto; fix up name of embedded object
git-svn-id: svn://10.0.0.236/trunk@9261 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 22:21:32 +00:00
cyeh%netscape.com
8be3e5f2e2 final warning text
git-svn-id: svn://10.0.0.236/trunk@9260 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:47:33 +00:00
slamm%netscape.com
71379d00bf Add a form widget so that subclasses can add their own widgets.
git-svn-id: svn://10.0.0.236/trunk@9259 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:44:02 +00:00
slamm%netscape.com
33f1662279 Add ht_event debugging
git-svn-id: svn://10.0.0.236/trunk@9258 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:43:55 +00:00
akkana%netscape.com
5d8f30356a New encoding dialog API
git-svn-id: svn://10.0.0.236/trunk@9257 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:43:52 +00:00
slamm%netscape.com
60b166ac4d Let RDFBase handle deleting the pane.
git-svn-id: svn://10.0.0.236/trunk@9256 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:43:47 +00:00
slamm%netscape.com
f01c807873 Change RDFView to RDFChromeTreeView (per mcafee's request). RDFChromeTreeView inherits from RDFTreeView (adding chrome around it).
git-svn-id: svn://10.0.0.236/trunk@9255 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:43:38 +00:00
slamm%netscape.com
24d3f55a34 Make debugging fancier. Cleanup the view and destroy the
pane properly.


git-svn-id: svn://10.0.0.236/trunk@9254 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:43:29 +00:00
slamm%netscape.com
ade96f441e Replaced by RDFToolbar.
git-svn-id: svn://10.0.0.236/trunk@9253 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:43:27 +00:00
slamm%netscape.com
df22a923c4 With no selector, just pick the first view that comes
along (this will later be replace by something more useful).  Clean up
debugging. change references of RDFView to the new name, RDFChromeTreeView


git-svn-id: svn://10.0.0.236/trunk@9252 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:43:21 +00:00
slamm%netscape.com
a0b25e82f5 Replaced by RDFMenuToolbarBase.
git-svn-id: svn://10.0.0.236/trunk@9251 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:43:13 +00:00
akkana%netscape.com
953feea5d3 Fix IRIX build problem
git-svn-id: svn://10.0.0.236/trunk@9250 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:40:20 +00:00
spider%netscape.com
4785e69585 minor fix to pull calendar instead of trex
git-svn-id: svn://10.0.0.236/trunk@9249 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:37:43 +00:00
clu%netscape.com
4bfcd968a7 implmented macfe of the encoding dialog
git-svn-id: svn://10.0.0.236/trunk@9248 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:36:11 +00:00
clu%netscape.com
fd4b78e95d implement macfe of the encoding dialog
git-svn-id: svn://10.0.0.236/trunk@9247 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:34:40 +00:00
akkana%netscape.com
86867b76dd UI changes to FE_EncodingDialog to coordinate with backend and other FEs
git-svn-id: svn://10.0.0.236/trunk@9246 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:33:46 +00:00
cmanske%netscape.com
3584b2144e Added dialog for changing encoding in Composer
git-svn-id: svn://10.0.0.236/trunk@9245 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:33:18 +00:00
cmanske%netscape.com
7165b8b1c8 More work on I18N features in Composer
git-svn-id: svn://10.0.0.236/trunk@9244 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:33:05 +00:00
cmanske%netscape.com
1cdde3c8d0 Changed spelling of const and removed string not used for Change Encoding dialog
git-svn-id: svn://10.0.0.236/trunk@9243 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:33:02 +00:00
thom%netscape.com
d0bc5df348 Added comment to clarify an implementation issue (what conditions did nsITimer callback functions expect).
git-svn-id: svn://10.0.0.236/trunk@9242 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:16:41 +00:00
amusil%netscape.com
802e907ae5 MacFE code for Anthrax along with minor XP tweaks
git-svn-id: svn://10.0.0.236/trunk@9241 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:08:25 +00:00
racham%netscape.com
31019c1652 Small change in error handling
git-svn-id: svn://10.0.0.236/trunk@9240 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:03:21 +00:00
pnunn%netscape.com
a21756dedc fix for #79167. ncols. reviewed by mcafee.
Note: doc message should be changed to reflect
that ncols is added to number of system colors
for total number of colors allowed.


git-svn-id: svn://10.0.0.236/trunk@9239 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:02:31 +00:00
racham%netscape.com
976d4ef267 Changes to reflect the transition from Windows to Netscape Registry
git-svn-id: svn://10.0.0.236/trunk@9238 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 21:00:52 +00:00
cyeh%netscape.com
05b2cbb310 remove JSJ.mcp from all builds3
git-svn-id: svn://10.0.0.236/trunk@9237 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 20:54:33 +00:00
ftang%netscape.com
9a8a2fb72b merge one of 4.06 fix. bug 123957 and 311153. approved by mlm
git-svn-id: svn://10.0.0.236/trunk@9236 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 20:53:44 +00:00
cyeh%netscape.com
b355f7ea0e remove JSJDebug.o and JSJ.o files from all targets. also turn modification date caching off to fix dependencies not working
git-svn-id: svn://10.0.0.236/trunk@9235 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 20:53:27 +00:00
ftang%netscape.com
791b3309c8 Merge the fix 311741 from 4.5 tree.
git-svn-id: svn://10.0.0.236/trunk@9234 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 20:47:32 +00:00
rogerl%netscape.com
5bc4554a6e New errorNumber handling.
Fixed bug #317398, for loop without condition wasn't decompiling the body
correctly since the first statement in that body was getting eaten by
mistake when trying to consume the condition expression.


git-svn-id: svn://10.0.0.236/trunk@9233 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 20:44:55 +00:00
rogerl%netscape.com
1400e8fb8b New errorNumber handling
git-svn-id: svn://10.0.0.236/trunk@9232 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 20:35:41 +00:00
rogerl%netscape.com
f039948f09 New break-out of error message text from core engine
git-svn-id: svn://10.0.0.236/trunk@9231 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 20:33:32 +00:00
rogerl%netscape.com
112983b87d New errorNumber handling
git-svn-id: svn://10.0.0.236/trunk@9230 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 20:29:37 +00:00
spider%netscape.com
e46aa34185 fixes for new source tree
git-svn-id: svn://10.0.0.236/trunk@9229 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 20:20:45 +00:00
spider%netscape.com
211f718d25 Misc build fixes for migration to free source
git-svn-id: svn://10.0.0.236/trunk@9228 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 20:20:06 +00:00
spider%netscape.com
0d77d2ea11 Changes relative depth to gconfig
git-svn-id: svn://10.0.0.236/trunk@9227 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 20:14:26 +00:00
rods%netscape.com
b52be5a0e7 Fixed Find (still need to do more clean up)
git-svn-id: svn://10.0.0.236/trunk@9226 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 20:09:33 +00:00
spider%netscape.com
1d4b7fca78 First pass at XPFC migration to Free Source repo
git-svn-id: svn://10.0.0.236/trunk@9225 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 19:38:52 +00:00
spider%netscape.com
da31012521 First pass at XPFC migration to Free Source repo
git-svn-id: svn://10.0.0.236/trunk@9224 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 19:32:45 +00:00
despotdaemon%netscape.com
c343611bf2 Pseudo-automatic update of changes made by cata@netscape.com.
git-svn-id: svn://10.0.0.236/trunk@9223 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 19:03:22 +00:00
spider%netscape.com
e0f3d96f9a First pass at XPFC migration to Free Source repo
git-svn-id: svn://10.0.0.236/trunk@9222 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 18:59:33 +00:00
spider%netscape.com
bb3b7c2ff1 First pass at XPFC migration to Free Source repo
git-svn-id: svn://10.0.0.236/trunk@9221 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 18:47:47 +00:00
spider%netscape.com
bed2259ede First pass migrating Free Source Calendar client to mozilla repo
git-svn-id: svn://10.0.0.236/trunk@9220 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 18:23:17 +00:00
spider%netscape.com
8208dea9e2 First pass migrating Free Source Calendar client to mozilla repo
git-svn-id: svn://10.0.0.236/trunk@9219 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 18:10:14 +00:00
spider%netscape.com
94729cf355 First pass migrating Free Source Calendar client to mozilla repo
git-svn-id: svn://10.0.0.236/trunk@9218 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 18:03:30 +00:00
mcafee%netscape.com
795aee180d More solaris breakage, nsImageUnix::BuildImage() needs to return status.
git-svn-id: svn://10.0.0.236/trunk@9217 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 10:51:54 +00:00
mcafee%netscape.com
083c21c7c6 CreateSeparator() needs to return a widget, how about the one this function creates.
git-svn-id: svn://10.0.0.236/trunk@9216 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 10:48:13 +00:00
mcafee%netscape.com
c3aa33f7e2 nsToolkitErrorhandler() needs to return a value, this breaks Solaris.
git-svn-id: svn://10.0.0.236/trunk@9215 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 10:32:55 +00:00
fur%netscape.com
ae6d9a5466 Backing out check-in of these files that are causing pain with Mozilla builds,
at least until we can properly control search paths on the Mac.


git-svn-id: svn://10.0.0.236/trunk@9214 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 07:28:30 +00:00
ramiro%netscape.com
00780a8a6f Make sure MOZ_SELECTOR_BAR continues to work.
git-svn-id: svn://10.0.0.236/trunk@9213 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 06:55:12 +00:00
ramiro%netscape.com
097307a8f0 Switch the window and bookmarks menus.
git-svn-id: svn://10.0.0.236/trunk@9212 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 06:51:14 +00:00
pierre%netscape.com
5d49bab0b1 fix bug in FE_FileType()
git-svn-id: svn://10.0.0.236/trunk@9211 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 06:21:26 +00:00
pierre%netscape.com
6514a7cdee XP_FileOpen() now uses MSL like the other functions from xp_file.h, not NSPR
git-svn-id: svn://10.0.0.236/trunk@9210 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 06:21:06 +00:00
pierre%netscape.com
69cd9ff712 temporarily call NET_PollSockets() before WNE, waiting for the timers to be implemented
git-svn-id: svn://10.0.0.236/trunk@9209 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 06:20:32 +00:00
pierre%netscape.com
4682b73269 temporarily disable the scrollbars on Mac, waiting for the widgets to be implemented
git-svn-id: svn://10.0.0.236/trunk@9208 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 06:20:12 +00:00
pierre%netscape.com
62f9808ce8 set resourceBase to the magic string "usr/local/netscape/bin/"
git-svn-id: svn://10.0.0.236/trunk@9207 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 06:19:13 +00:00
buster%netscape.com
acbcec3004 fixed minColSpan to always be at least one. This helps support empty rows,
among other problems.


git-svn-id: svn://10.0.0.236/trunk@9206 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 06:15:18 +00:00
kipp%netscape.com
417b9730b3 Fixed body tags for bug reported by dbaron@netaxs.com
git-svn-id: svn://10.0.0.236/trunk@9205 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 05:07:16 +00:00
cyeh%netscape.com
9a3269d91b re-arranged search path so that :dist is searched before the local
project folder.


git-svn-id: svn://10.0.0.236/trunk@9204 18797224-902f-48f8-a5cc-f745e15eee43
1998-09-03 05:01:40 +00:00
4683 changed files with 1692249 additions and 13013 deletions

40
mozilla/LEGAL Normal file
View File

@@ -0,0 +1,40 @@
Please be apprised of the following Legal Notices:
A) The U.S. District Court for the Eastern District of Virginia has
ruled that the Netscape Navigator code does not infringe Wang's U.S.
Patent No. 4,751,669 ("the '669 Patent") because: 1) HTML is not
Videotex as defined by the '669 patent; 2) web servers are not central
suppliers; and 3) Navigator does not "connect," as defined by the '669
Patent, to web servers on the Internet. Wang may appeal this decision to
the Federal Circuit. Wang contended that its Patent disclosing a
"Videotext" system, is infringed by the following functionality in the
Netscape Navigator code: 1) the animated logo and status line indicators
--See Claims 1,8 and 9; 2) the "File Save As" function --See Claims
23-27; 3) Bookmarks and Rename Bookmarks in the Properties window --See
Claims 20-22; 4) storing HTML, GIF, and JPEG files and adding filename
extensions --See Claim 38
B) Intermind owns pending U.S. patent applications on communications
systems which employ metadata ("channel objects") to define a control
structure for information transfer. The Netscape code does not infringe
as released; however, modifications which utilize channel objects as
described by Intermind should be considered carefully. The following is
a statement from Intermind: "Intermind's claims fundamentally involve
the use of a control structure to automate communications. ...The
essence of Intermind's top claim is that two devices sender and
receiver have persistent storage, communicate over a network,
and exchange a control structure including metadata which describes: 1)
what information is to be updated, 2) when to update this information,
and 3) how to transfer the updated information. In addition, at least
the receiving device must be able to process the metadata in order to
perform the update determination and transfer. Any digital
communications system which incorporates all of these elements will be
covered by Intermind's patents." See Intermind.com.
C) Stac, Inc., and its licensing agent Hi/fn, own several patents which
disclose data compression methods implementing an LZS compression
algorithm, including U.S. Patent Nos. 4,701,745 and 5,016, 009 ("the
Stac Patents"). The Netscape Communicator code does not perform
compression. If you modify the Netscape source code to perform
compression, please take notice of the Stac Patents.

421
mozilla/LICENSE Normal file
View File

@@ -0,0 +1,421 @@
NETSCAPE PUBLIC LICENSE
Version 1.0
----------------
1. Definitions.
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.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.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 a list of 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'' 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 fifty percent (50%) or more 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) to use, reproduce, modify, display, perform, sublicense and
distribute the Original Code (or portions thereof) with or without
Modifications, or as part of a Larger Work; and
(b) under patents now or hereafter owned or controlled by Initial
Developer, to make, have made, use and sell (``Utilize'') the
Original Code (or portions thereof), but solely to the extent that
any such patent is reasonably necessary to enable You to Utilize
the Original Code (or portions thereof) and not to any greater
extent that may be necessary to Utilize further Modifications or
combinations.
2.2. Contributor Grant.
Each Contributor hereby grants You a world-wide, royalty-free,
non-exclusive license, subject to third party intellectual property
claims:
(a) 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 or as part of a Larger Work; and
(b) under patents now or hereafter owned or controlled by
Contributor, to Utilize the Contributor Version (or portions
thereof), but solely to the extent that any such patent is
reasonably necessary to enable You to Utilize the Contributor
Version (or portions thereof), and not to any greater extent that
may be necessary to Utilize further Modifications or combinations.
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 You have knowledge that a party claims an intellectual property
right in particular functionality or code (or its utilization
under this License), you 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 you obtain such knowledge after You
make Your Modification available as described in Section 3.2, You
shall promptly modify the LEGAL file in all copies You make
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 Your Modification is an application programming interface and
You own or control patents which are reasonably necessary to
implement that API, you must also include this information in the
LEGAL file.
3.5. Required Notices.
You must duplicate the notice in Exhibit A in each file of the Source
Code, and this License in any documentation for the Source Code, where
You describe recipients' rights relating to Covered Code. If You
created one or more Modification(s), You may add your name as a
Contributor to the notice described in Exhibit A. 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 file) where a user would be likely to look for such
a notice. 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 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
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'', ``NPL'' or
any confusingly similar phrase do not appear anywhere in your 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.
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.
9. LIMITATION OF LIABILITY.
UNDER NO CIRCUMSTANCES AND UNDER NO LEGAL THEORY, WHETHER TORT
(INCLUDING NEGLIGENCE), CONTRACT, OR OTHERWISE, SHALL THE INITIAL
DEVELOPER, ANY OTHER CONTRIBUTOR, OR ANY DISTRIBUTOR OF COVERED CODE,
OR ANY SUPPLIER OF ANY OF SUCH PARTIES, BE LIABLE TO YOU OR ANY OTHER
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 THAT
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: (a) unless otherwise agreed in writing, all disputes relating
to this License (excepting any dispute relating to intellectual
property rights) shall be subject to final and binding arbitration,
with the losing party paying all costs of arbitration; (b) any
arbitration relating to this Agreement shall be held in Santa Clara
County, California, under the auspices of JAMS/EndDispute; and (c) any
litigation relating to this Agreement 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.
Except in cases where another Contributor has failed to comply with
Section 3.4, You are responsible for damages arising, directly or
indirectly, out of Your utilization of rights under this License, based
on the number of copies of Covered Code you made available, the
revenues you received from utilizing such rights, and other relevant
factors. You agree to work with affected parties to distribute
responsibility on an equitable basis.
AMENDMENTS
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 trademark
``Netscape'', the ``Netscape N and horizon'' logo or the Netscape
lighthouse logo, even if such marks are included in the Original Code.
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
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.
VI. Arbitration and Litigation.
Notwithstanding the limitations of Section 11 above, the provisions
regarding arbitration and litigation in Section 11(a), (b) and (c) of
the License shall apply to all disputes relating to this License.
EXHIBIT A.
``The contents of this file are subject to the Netscape Public License
Version 1.0 (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 Communicator client code, released March
31, 1998.
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): ______________________________________.''
[NOTE: The text of this Exhibit A may differ slightly from the text of
the notices in the Source Code files of the Original Code. This is due
to time constraints encountered in simultaneously finalizing the
License and in preparing the Original Code for release. You should use
the text of this Exhibit A rather than the text found in the Original
Code Source Code for Your Modifications.]

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.5 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 12 KiB

View File

@@ -0,0 +1,400 @@
<HTML>
<HEAD>
<TITLE>Building Mozilla on the Macintosh PPC platform</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000EE" VLINK="#551A8B"
ALINK="#FF0000">
<HR>
<H1>
Building Mozilla on the Macintosh PPC platform</H1>
<H2>
Daniel Nunes, <TT><A HREF="mailto:leaf@netscape.com">leaf@netscape.com</A></TT>
</H2>
v 1.0, June 1998
<P>
<HR><I>How to build Mozilla on a Macintosh PPC System.</I>
<HR>
<H2>1. <A HREF="#s1">Introduction</A></H2>
<H2>2. <A HREF="#s2">Building Mozilla</A></H2>
<UL>
<LI>
<A HREF="#ss2.1">2.1 Get the Code </A></LI>
<LI>
<A HREF="#ss2.2">2.2 Requirements</A></LI>
<LI>
<A HREF="#ss2.3">2.3 Set up the Build Environment</A></LI>
<LI>
<A HREF="#ss2.4">2.4 Build the Lizard </A></LI>
</UL>
<H2>3. <A HREF="#s3"> Common Problems </A></H2>
<H2>4. <A HREF="#s4"> Credits </A></H2>
<HR>
<H2><A NAME="s1">1. Introduction</A></H2>
<P>
What this document is: A guide to building the Mozilla application.
This includes:
<OL>
<LI> A listing of the development tools you will need to build Mozilla. </LI>
<LI> A list of environment variables you will need to set before building. </LI>
</OL>
<P>
If you're looking for documentation on developing features or fixing bugs,
the Mozilla
<A HREF="http://www.mozilla.org/docs/tplist/tplist.html">Technical Documents
</A> or <A HREF="http://www.mozilla.org/library.html"> Library </A>
are probably what you're looking for.
<P>
<HR>
<H2><A NAME="s2">2. Building Mozilla </A></H2>
<P>
<UL>Each of the following subsections describes, or gives references to
descriptions of, the steps necessary to build Mozilla.
<H2><A NAME="ss2.1">2.1 Get the Code</A></H2>
<P>
<UL>
There are two principal ways of getting the code,
<A HREF="http://www.mozilla.org/download.html"> ftp</A> and
<A HREF="http://www.mozilla.org/cvs.html"> CVS</A>.
CVS will provide the most current code for building, but is
slower than ftp (takes longer to download).
</UL>
<P>
<H2><A NAME="ss2.2">2.2 Requirements</A></H2>
The following need to be installed:
<UL>
<LI>CodeWarrior (CW) 2 - obtainable from
<A HREF="http://www.metrowerks.com">Metrowerks</A>.
See <A HREF="#s3">Common Sticking Points</A> if you have a different
version.
</LI>
<LI>PowerPlant 1.8 - obtainable from the CodeWarrior CD.</LI>
<LI>MSL - the Metrowerks Standard Library, obtainable from the
CodeWarrior CD</LI>
<LI><A HREF="ftp://ftp.boingo.com//dan/WASTE/waste-13.hqx">WASTE
1.3</A></LI>
<LI><A HREF="http://www.bact.wisc.edu/CWASTEEdit/CWASTEEdit.sit.hqx">CWASTE
1.6.2</A></LI>
<LI>
<A HREF="ftp://ftp.scripting.com/userland/menuSharingToolkit4.1.sit.hqx">
Menu Sharing Toolkit</A> (from UserLand)</LI>
<LI>
<A HREF="ftp://ftp.digitalalchemy.com/pub/digitalalchemy/mercutio-SDK.sit.bin">
Mercutio 1.5 SDK</A> (only download the SDK, not the entire package, else
the access paths will be wrong)</LI>
<LI>
<A HREF="ftp://ftp.share.com/pub/internet-configuration/ICProgKit1.4.sit">
Internet Config 1.4 SDK</A></LI>
<LI><A HREF="http://www.mooseyard.com/Jens/Software/">AEGizmos
1.4.2</A></LI>
<LI><A HREF="ftp://sunsite.cnlab-switch.ch/software/platform/macos/perl/Mac_Perl_520r4_tool.bin">
MacPerl 5 MPW Tool</A></LI>
<LI>
<A HREF="ftp://sunsite.cnlab-switch.ch/software/platform/macos/perl/Mac_Perl_520r4_appl.bin">MacPerl 5 Application</A></LI>
<LI>MakeStub - MPW (installed with CodeWarrior Heaven option). If
you choose not to install MPW, it is located on the MacOS Tools CD
in "CW Pro 2 Tools:CodeWarrior MPW:MPW:Tools"</LI>
<LI>RunTSScript - in Mozilla source distribution
(mozilla:build:mac:RunTSScript), needs to be installed by hand</LI>
<LI><A HREF="ftp://dev.apple.com/devworld/Tool_Chest/Core_Mac_OS_Tools/MPW_etc./MPW-GM/MPW/ToolServer.sit.hqx">ToolServer</A>
- or in the CW distribution (CW Pro 2 Tools:Apple Development
Tools:ToolServer 3.4.1.sit). <B>We recommend pulling it off the
CD</B> because it comes with configuration files for CodeWarrior
which you would have to create manually were you to pull it off
the net.</LI>
<LI>
<A HREF="http://people.netscape.com/sfraser/software/NewAlias_tool.sit.hqx">
New Alias MPW Tool</A> An MPW tool that creates Finder aliases for files.
</LI>
<LI>StreamEdit MPW Tool - MPW (installed with CodeWarrior Heaven option). If
you choose not to install MPW, it is located on the MacOS Tools CD
in "CW Pro 2 Tools:CodeWarrior MPW:MPW:Tools"</LI>
</LI>
<LI>
<A HREF="ftp://dev.apple.com/devworld/Periodicals/develop/develop25/develop_Issue_25_code/ToolFrontEnd.sit.hqx">ToolFrontEnd</A></LI>
<LI>
<A HREF="http://sunsite.cnlab-switch.ch/ftp/software/platform/macos/src/HTML/MPW_C.html">
patch 2.1</A></LI>
</UL>
<P>
Hardware/OS
<UL>
<LI>To build Navigator, you need a fast PPC Mac. The faster the
better. You can't build with a 68K machine because we have too many
resources, and the build process will crash when trying to generate
resources out of our cross-platform strings. See the discussion below
for a way around this.
</LI>
<LI>You will need about 96 MB of physical RAM to "fast link" the app.
You can still fast link if you give your machine 96 MB of virtual
memory, but then the VM hit is large enough to counteract any
improvement. One of our beta testers had a machine with only 64MB of
physical RAM (VM was off) and it ran out of memory trying to link.
Turning VM on got it to link, but build time increased greatly.
</LI>
<LI>Reports from the net indicate that the optimized version
(MozillaPPC) take much less RAM to build than the 96MB we suggest. If
you are running out of memory, try building that instead of the debug
version (the debug symbols require a lot of RAM come link time).
</LI>
<LI>You should be ok with a 400MB disk partition, even when fully
built. This does not include tools like the IDE, just source.
</LI>
<LI>On an HFS+ volume, a full build takes about 110MB. HFS+ is good,
but utilities are sparse.
</LI>
</UL>
<P>
<H2><A NAME="ss2.3">2.3 Setup the Build Environment</A></H2>
<P>
<OL>
<LI>Install CodeWarrior from the CD. While it is large, installing
the "CodeWarrior Heaven" option will guarantee that you have
everything you need. This will give you PowerPlant, MSL, and MPW.
If you choose to install less, proceed at your own risk.</LI>
<LI>In the Finder, increase the memory partition of the IDE to
15MB (you can get by with 12, if need be).</LI>
<LI>Download ToolFrontEnd. After expanding it, in "ToolFrontEnd
Folder:Drop-Ins" there are three items:
<UL>
<LI><I>#include</I></LI>
<LI><I>ToolFrontEnd</I></LI>
<LI><I>ToolFrontEnd Panel</I></LI>
</UL>
<P>Create a folder named "Include Scanners". Place the file
"#include" into the Include Scanners folder. Move the Include
Scanners folder to the CodeWarrior Plugins folder. Create a folder
named "ToolFrontEnd". Place the files "ToolFrontEnd" and
"ToolFrontEnd Panel" into the ToolFrontEnd folder. Place this
folder in the CodeWarrior Plugins folder.</P></LI>
<LI>Open "ToolFrontEnd Panel" with ResEdit. Change the file type
from <B>'Panl'</B> to <B>'PanL'</B>. Save.</LI>
<LI>Uncompress the StuffIt Archive for ToolServer. The goal is to
let ToolServer and MPW share the same Tools directory so you don't
need to have multiple versions of tools. Do the following:
<OL>
<LI>Open ToolServer's Tools folder. There is one file called
"RMetrowerks". </LI>
<LI>Move RMetrowerks to Tools folder of MPW. MPW folder must be
at "Metrowerks:Codewarrior MPW:MPW" if you installed
Codewarrior Heaven. </LI>
<LI>Remove ToolServer's Tools folder.</LI>
<LI>Now create an alias of Tools folder in "CodeWarrior MPW"
and move it to your ToolServer folder. Rename the alias
(probably called "Tools alias") to "Tools"</LI>
<LI><FONT COLOR="#FF0000"><B>IMPORTANT</B></FONT>: Make sure
you only have one instance of ToolServer on your machine. If
the build script finds the wrong one, the correct tools will
not be found and strange things will happen.</LI>
</OL>
</LI>
<LI>After installing the MacPerl MPW Tool distribution (run the
InstallerVISE application), in the "MacPerl &#131;" folder, there
will be an MPW tool named "perl". Install this in MPW's tools
folder.</LI>
<LI>Install the MacPerl Application (run the
InstallerVISE application). You can install this anywhere, but it is
recommended that you install it inside of your CodeWarrior folder for
easy reference. After installation, you will need to set a preference
to enable double-click launch of the perl scripts. This preference is set
by going under the Edit Menu to Preferences. Click on the "Script" button
and hit the radio button "Run Scripts opened from Finder"</LI>
<LI>Install the "patch", "MakeStub", "NewAlias" and "StreamEdit" Tools in the
tools
folder. Note that "MakeStub" and "StreamEdit" are automatically installed by the
"CodeWarrior Heaven" install option.</LI>
<LI>Install RunTSScript (found in the Mozilla source distribution)
in the compilers folder in your build environment
("Metrowerks:Metrowerks Codewarrior:Codewarrior
Plugins:Compilers")</LI>
<LI>Next, after downloading all the 3rd party software components,
drag WASTE, CWASTE, Menu Sharing, Mercutio, Internet Config, and
the AEGizmo folders (just as they are) into the "MacOS Support"
folder in your build environment.</LI>
<LI>Start ToolServer from within CodeWarrior (or use MPW if you
are brave enough). We're about to patch some files. Make sure the
ToolServer menu is in the CodeWarrior menu bar by turning on the
<A HREF="IDEPrefs.gif">preference</A> under the "Extras" panel in
the IDE Preferences (not the project preferences!). The menu bar
should look like this:
<P><IMG SRC="IDEMenuBar.gif" WIDTH=359 HEIGHT=20 X-CLARIS-USEIMAGEWIDTH X-CLARIS-USEIMAGEHEIGHT ALIGN=bottom></P>
<P>Choose "Start ToolServer" from the ToolServer menu (this is the
icon menu between "Window" and "Help" in the menubar above). You
will now see a window with no close box. This is your ToolServer
Worksheet where you will type (or cut &amp; paste) the commands
for the following steps.</P>
<P>In case you have never used MPW/ToolServer before, the
following is <B>very important</B>. Pressing "return" does not
execute commands like you might think. It just inserts a newline
into the worksheet like a normal text editor. <B>To actually get
ToolServer to execute the command, you must press "Enter" (lower
right of numeric keypad).</B> This executes the line that the
cursor is on, and only that line. If you want to execute multiple
lines at once, select them all and hit Enter.</P></LI>
<LI>Set the shell variables {IDE} and {Source} to the correct
paths for your build environment. {IDE} is where your CodeWarrior
IDE is located. {Source} is the folder containing the toplevel
"ns" folder of the Mozilla source. Mine look like this (don't
forget to keep the quotes if your path includes spaces), yours
will almost certainly be different (<FONT COLOR="#FF0000">to
punctuate this, the things you need to change are in red</FONT>).
<PRE>Set IDE "<FONT COLOR="#FF0000">Develop:Source331 Build Environment:CW Pro 2:Metrowerks CodeWarrior:</FONT>"
Set Source "<FONT COLOR="#FF0000">Source:FreeSource:</FONT>"</PRE>
</LI>
<LI>If you are using CWPro2, execute the following lines to patch
LDropFlag to draw correcly over non-white backgrounds.
<PRE>directory "{IDE}MacOS Support:PowerPlant:_In Progress:_Table Classes:"
patch LDropFlag.cp "{Source}mozilla:lib:mac:patches:LDropFlag.patch"
duplicate -y "{Source}mozilla:lib:mac:patches:DropFlag Icons.rsrc" "{IDE}MacOS Support:PowerPlant:PowerPlant Resources:"</PRE></LI>
<LI>Execute the following lines to patch menusharing.c to allow it
to compile with the new Universal Headers. It references an
obsolete header file (GestaltEqu.h).
<PRE>directory "{IDE}MacOS Support:Menu Sharing Toolkit 4.1:"
patch menusharing.c "{Source}mozilla:lib:mac:patches:menusharing.patch"</PRE></LI>
<LI>If you are using CWPro2 straight off the CD, you need to patch
AppleEvents.r to fix a problem with the Universal Headers (the
definition of the 'aedt' resource was omitted). <B>You do not have
to do this if you have applied the netborne patch to Pro2e
</B> because it has been fixed.
<PRE>directory "{IDE}MacOS Support:Headers:Rez Headers:"
patch AppleEvents.r "{Source}mozilla:lib:mac:patches:AppleEvents.r.patch"</PRE></LI>
<LI>You need to patch stat.mac.h to fix a problem in MSL where
lines were omitted.
<PRE>directory "{IDE}Metrowerks Standard Library:MSL C:MSL Mac:Public Includes"
patch stat.mac.h "{Source}mozilla:lib:mac:patches:stat.mac.h.patch"</PRE></LI>
<LI>Congratulations! Now you are ready to build. Once these steps
are done, you don't have to repeat these setups the next
time!</LI>
</OL>
<P>
<H2><A NAME="ss2.4">2.4 Run the build </A></H2>
<UL>
<P>In the folder mozilla:build:mac:, there are several Perl scripts with
names of the form BuildMozillaXXX.pl, where XXX is "Optimized",
"Debug", "Tinderbox", et al. Each script builds the corresponding
version of Mozilla. If you configured the MacPerl application to
execute scripts that are opened from the finder, all you have to do is
double click on the appropriate one; otherwise, launch MacPerl, and
run the appropriate script from the "Run Script..." menu item.</P>
<P>These `configured build' scripts are simple, and you might want to
make your own to force your build to StopForErrors(), or alternatively
DontStopForErrors(), et al. You can set up certain build-script
variables and (soon) compile-time flags. Compare the supplied scripts
to figure out what you might want. Note that CodeWarriorLib, Moz.pm,
and BuildList.pm, are AppleScript libraries and Perl modules meant to
be used by a `configured build'. Use your favorite POD viewer (Shuck
comes with MacPerl) to view the documentation in the Perl scripts.</P>
<P>If there were any errors in any of the projects along the way, the
script will stop at that point and the IDE will tell you the errors.
You can fix them and make sure they current project builds, but to
continue the automation, you have to start from the beginning by
double-clicking the script again. This isn't quite as bad as it
sounds because the previous projects are already built (unless you
changed some major header file). Please note that stopping the script
once it has started is difficult. We are working to address
this issue.</P>
<P>After the build is complete, you can find aliases to the built libraries
and the final Mozilla application. Debug builds are built to
Mozilla:dist:client_debug, while optimized builds are built to Mozilla:dist:client.
</P>
<P>Don't worry too much about the numerous warnings generated during
the build. We try our best to get the XP teams to use real compilers,
but alas, they continue to write warning-laden code. There is also
some generated code (Java is one example) that has a lot of warnings
that we can't help either. If you write any new code, please help us
in our quest to get zero warnings.</P>
</UL>
</UL>
<HR>
<H2><A NAME="s3">3. Common Sticking Points</A></H2>
<UL>
<LI><B>I have CodeWarrior3, how do i build with it?</B>
<UL> Currently, the answer is, "You don't." Eventually, the distribution
will be modified to allow building using CodeWarrior3, but for now
CodeWarrior2 is the only IDE that is supported.
</UL>
</LI>
</UL>
<HR>
<H2><A NAME="s4">4. Credits</A></H2>
<UL>
The majority of this document is taken from the build document included
in the Mozilla source distribution at README:mozilla:macbuild.htm written
by Mike Pinkerton, <A HREF="mailto:pinkerton@netscape.com">
pinkerton@netscape.com</A>.
</BODY>
</HTML>

View File

@@ -0,0 +1,137 @@
<HTML>
<HEAD>
<TITLE>Building Mozilla on unix platforms</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000EE" VLINK="#551A8B"
ALINK="#FF0000">
<HR>
<H1>
Building Mozilla on Unix platforms</H1>
<H2>
Daniel Nunes, <TT><A HREF="mailto:leaf@netscape.com">leaf@netscape.com</A></TT></H2>
v 1.0, June 1998
<P>
<HR><I>How to build Mozilla on a Unix System.</I>
<HR>
<H2>1. <A HREF="#s1">Introduction</A></H2>
<H2>2. <A HREF="#s2">Building Mozilla</A></H2>
<UL>
<LI>
<A HREF="#ss2.1">2.1 Get the Code </A></LI>
<LI>
<A HREF="#ss2.2">2.2 Requirements</A></LI>
<LI>
<A HREF="#ss2.3">2.3 Set up the Build Environment</A></LI>
<LI>
<A HREF="#ss2.4">2.4 Build the Lizard </A></LI>
</UL>
<H2>3. <A HREF="#s3"> Common Problems </A></H2>
<HR>
<H2><A NAME="s1">1. Introduction</A></H2>
<P>
What this document is: A guide to building the Mozilla application.
<BR>
This includes:
<OL>
<LI> A listing of the development tools you will need to build Mozilla. </LI>
<LI> A list of environment variables you will need to set before building. </LI>
</OL>
<P>
If you're looking for documentation on developing features or fixing bugs,
the Mozilla
<A HREF="http://www.mozilla.org/docs/tplist/tplist.html">Technical Documents
</A> or <A HREF="http://www.mozilla.org/library.html"> Library </A>
are probably what you're looking for.
<P>
<HR>
<H2><A NAME="s2">2. Building Mozilla </A></H2>
<P>
<UL>Each of the following subsections describes, or gives references to
descriptions of, the steps necessary to build Mozilla.
</UL>
<H2><A NAME="ss2.1">2.1 Get the Code</A></H2>
<P>
<UL>
There are two principal ways of getting the code,
<A HREF="http://www.mozilla.org/download.html"> ftp</A> and
<A HREF="http://www.mozilla.org/cvs.html"> CVS</A>.
CVS will provide the least outdated code for building, but is
slower than ftp.
</UL>
<P>
<H2><A NAME="ss2.2">2.2 Requirements</A></H2>
<UL>
The following need to be installed:
<UL>
<LI>Motif 1.2 (2.1 recommended for RedHat Linux)
<LI>GNU C/C++ compiler 2.7.2
<LI>GNU make 3.74 or better
<LI>Perl (or, if you have no Perl, then set <CODE>PERL=/bin/echo</CODE>)
</UL>
<P>
Your hardware should be equal to, or better than:
<UL>
32 MB RAM, 128 MB swap (64 MB RAM recommended)
</UL>
</UL>
<P>
<H2><A NAME="ss2.3">2.3 Setup the Build Environment</A></H2>
<P>
<UL>
The following environment variables need to be set:
<CODE>
<PRE>
MOZILLA_CLIENT=1
MOZ_MEDIUM=1
NO_SECURITY=1
NO_MDUPDATE=1
</PRE>
</CODE>
Optionally, you can set <CODE>BUILD_OPT=1</CODE> if you don't want a debug
build.
<BR>
Environment variables are set by the shell, and each shell may or may not have
its own way of setting them. Type <CODE>man setenv</CODE> to find out how your
shell sets variables, if you don't know already.
<P>
</UL>
<H2><A NAME="ss2.4">2.4 Run the build </A></H2>
<UL>
Change to the directory you copied the source into (for example,
<CODE>cd /builds</CODE>). If this directory was empty before you
installed the source, there should be two directories here:
<CODE>README</CODE> and <CODE>mozilla</CODE>.
<CODE>
<PRE>
cd mozilla
gmake
</PRE>
</CODE>
</UL>
<HR>
<H2><A NAME="s3">3. Common Sticking Points</A></H2>
<LI>My linker dies with this error: undefined reference to `_Xsetlocale'
<UL>If this error occurs, you might have to recompile libX11.so
with the -DX_LOCALE flag (thanks to Scott Lampert,
<A HREF="mailto:fortunato@heavymetal.org">fortunato@heavymetal.org</A>).
This problem stems from use of an older version of RedHat Motif.
Moving to Motif 2.1 should resolve this. There are probably other problems
with using the older versions of Motif, but i haven't encountered them.
</UL>
<HR>
</BODY>
</HTML>

View File

@@ -0,0 +1,209 @@
<HTML>
<HEAD>
<TITLE>Building Mozilla on Microsoft Windows 32-bit platforms</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF" TEXT="#000000" LINK="#0000EE" VLINK="#551A8B"
ALINK="#FF0000">
<HR>
<H1>
Building Mozilla on Microsoft Windows 32-bit platforms</H1>
<H2>
Daniel Nunes, <TT><A HREF="mailto:leaf@netscape.com">leaf@netscape.com</A></TT>
</H2>
v 1.0, June 1998
<P>
<HR><I>How to build Mozilla on a Microsoft Windows 32-bit System.</I>
<HR>
<H2>1. <A HREF="#s1">Introduction</A></H2>
<H2>2. <A HREF="#s2">Building Mozilla</A></H2>
<UL>
<LI>
<A HREF="#ss2.1">2.1 Get the Code </A></LI>
<LI>
<A HREF="#ss2.2">2.2 Requirements</A></LI>
<LI>
<A HREF="#ss2.3">2.3 Set up the Build Environment</A></LI>
<LI>
<A HREF="#ss2.4">2.4 Build the Lizard </A></LI>
</UL>
<H2>3. <A HREF="#s3"> Common Problems </A></H2>
<HR>
<H2><A NAME="s1">1. Introduction</A></H2>
<P>
What this document is: A guide to building the Mozilla application.
<BR>
This includes:
<OL>
<LI> A listing of the development tools you will need to build Mozilla. </LI>
<LI> A list of environment variables you will need to set before building. </LI>
</OL>
<P>
If you're looking for documentation on developing features or fixing bugs,
the Mozilla
<A HREF="http://www.mozilla.org/docs/tplist/tplist.html">Technical Documents
</A> or <A HREF="http://www.mozilla.org/library.html"> Library </A>
are probably what you're looking for.
<P>
<HR>
<H2><A NAME="s2">2. Building Mozilla </A></H2>
<P>
<UL>Each of the following subsections describes, or gives references to
descriptions of, the steps necessary to build Mozilla.
<H2><A NAME="ss2.1">2.1 Get the Code</A></H2>
<P>
<UL>
There are two principal ways of getting the code,
<A HREF="http://www.mozilla.org/download.html"> ftp</A> and
<A HREF="http://www.mozilla.org/cvs.html"> CVS</A>.
CVS will provide the least outdated code for building, but is
slower than ftp.
</UL>
<P>
<H2><A NAME="ss2.2">2.2 Requirements</A></H2>
<UL>
The following need to be installed:
<UL>
<LI>Microsoft Visual C++ version 4.2 or later
<LI>GNU Tools for Microsoft Windows, located:
<UL>
<LI><A HREF="http://www.cygnus.com/misc/gnu-win32">Cygnus</A></LI>
<LI><A HREF="http://www.gnu.org/order/ftp.html">GNU home page</A></LI>
<LI><A HREF="ftp://prep.ai.mit.edu/pub/gnu">MIT</A></LI>
</UL>
Specifically, you'll need:
<UL><CODE>
cp.exe<BR>
rm.exe<BR>
uname.exe<BR>
</CODE>
</UL>
Netscape has internally modified version of gmake, shmsdos and win32gnu
that we use to get around some problems we were having keeping in sync
with the Unix version of gmake. This version of gmake can be found in the
Windows Build Tools package, which can be ftp'd from
<A HREF="http://www.mozilla.org/download-mozilla.html"> the Mozilla
Download page</A>.
The three files you will need are:
<UL><CODE>
gmake.exe<BR>
shmsdos.exe<BR>
uname.exe<BR>
</CODE>
</UL>
</UL>
<P>
Hardware/OS
<UL>
<LI>Pentium 133 MHz or better</LI>
<LI>64 MB RAM, 128 MB recommended</LI>
<LI>250 MB NTFS or 500 MB FAT disk space</LI>
<LI>NT 4.0 is preferred; NT 3.51 will also work.
</LI>
</UL>
</UL>
<P>
<H2><A NAME="ss2.3">2.3 Setup the Build Environment</A></H2>
<P>
<UL>
The following environment variables need to be set:
<UL>
<CODE>
set MOZ_BITS=32
<BR>
set MOZ_DEBUG=1 (set this only if you want to build a debug build)
<BR>
set MOZ_GOLD=1
<BR>
set MOZ_MEDIUM=1
<BR>
set MOZ_NT=351 (if running NT3.51)
<BR>
set MOZ_OUT=(optional: specifies location of resultant executable)
<BR>
set MOZ_SRC=(top of your tree, for example: set MOZ_SRC=d:\mozilla_source
if this is the directory where you checked or unzipped the source into)
<BR>
set MOZ_TOOLS=(location of the bin directory of your GNU tools. The build
looks for MOZ_TOOLS\bin\gmake.exe, so make sure that the gmake.exe from
the Windows Build Tools package resides there.)
<BR>
set NO_SECURITY=1
<BR>
set NSPR20=1
<BR>
set _MSC_VER=1100 (if you are running VC++ 5.0 or higher)
<BR>
</CODE>
</UL>
<BR>
<P>
</UL>
<H2><A NAME="ss2.4">2.4 Run the build </A></H2>
<UL>
Change to the directory you copied the source into (for example,
<CODE>cd d:\mozilla_source</CODE>). If this directory was empty before you
installed the source, there should be two directories here:
<CODE>README</CODE> and <CODE>mozilla</CODE>.
<CODE>
<PRE>
cd mozilla\config
nmake /f makefile.win
cd ..
nmake /f client.mak
</PRE>
</CODE>
</UL>
</UL>
<HR>
<H2><A NAME="s3">3. Common Sticking Points</A></H2>
<UL>
<LI><B>nmake has a 'fatal error', listing one of the GNU commands and a
hexadecimal return code.</B>
<UL>
This will happen as a result of not having the GNU tools and Windows Build
tools in your path. Add the directories with the appropriate binaries to your
path.
</UL>
</LI>
<LI>
<B>It fails with the message "'.\WIN32' unexpected": </B>
<UL>
You didn't properly
set the environment variables -- you must not include a space at the end
of the set statements (be careful if you are cut'n'pasting).
</UL>
</LI>
<LI>
<B>It fails to build, with directory-related errors: </B>
<UL>
The full path
to the source must not include any spaces. Additionally, the source must
be extracted with an intact directory structure by a utility that understands
long filenames. If in doubt, grab Info-Zip at
<A HREF="ftp://ftp.cdrom.com/pub/infozip">ftp://ftp.cdrom.com/pub/infozip</A>
</UL>
</LI>
<LI>
<B>I'm not running a 32-bit windows system, how do i build?</B>
<UL>
Currently, the build process depends on a 32-bit operating system.
Windows NT 4.0 is the recommended windows operating system.
</UL>
</UL>
<HR>
</BODY>
</HTML>

View File

@@ -0,0 +1,53 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=iso-8859-1">
<META NAME="Author" CONTENT="Chris Yeh">
<META NAME="GENERATOR" CONTENT="Mozilla/4.05 [en]C-NSCP (WinNT; U) [Netscape]">
<TITLE>Running Mozilla...</TITLE>
</HEAD>
<BODY>
<H2>
<FONT FACE="Arial,Helvetica">Running Mozilla Without Trashing Netscape
Installation</FONT></H2>
This document explains how to run <TT>mozilla.exe</TT> separately from
<TT>netscape.exe</TT> without trashing your regular installation of Netscape
Communicator. This is necessary if, for example, you want to use Communicator's
mail client while you work on Mozilla development.
<BR>
<HR WIDTH="100%">
<OL>
<LI>
Before running <TT>mozilla.exe</TT>, create a new user profile either from
a Netscape 4.0x installation using the "User Profile Manager" shortcut
in the Utilities folder (on Windows) or by using&nbsp; the <TT>-new_account</TT>
option on the command line of either <TT>netscape.exe</TT> or <TT>mozilla.exe</TT>.&nbsp;
We suggest calling the profile "<TT>mozilla</TT>."</LI>
<LI>
Always use that new account when running <TT>mozilla.exe</TT>, and never
run <TT>netscape.exe</TT> using that same account profile.</LI>
</OL>
To make things easier, you can start the application with the user account
on the command line, for example:
<UL><TT>mozilla.exe -P"mozilla"</TT></UL>
This assures that prefs and the cache will not interfere between the two
versions. This will be especially
<BR>important as new prefs are added to the Mozilla product. Note that
you must use quotes around the name and there can be no space between the
"P" and the profile name. Otherwise, the application won't catch the profile
switch, and it will try to load the profile name as the initial URL.
<P>
<HR WIDTH="100%">
<BR>You can copy your <TT>bookmark.htm</TT> file from an existing profile
to your new profile directory if you want to share bookmarks.
<P>After the initial 3/31 release, we will add some code to Mozilla to
prevent running with a profile that is already being used by <TT>netscape.exe</TT>.
<BR>&nbsp;
<HR WIDTH="100%">
<BR><FONT SIZE=-1>Copyright &copy; 1998 <A HREF="http://home.netscape.com/misc/contact_info.html">Netscape
Communications Corporation</A></FONT>
</BODY>
</HTML>

View File

@@ -0,0 +1,184 @@
<HTML>
<HEAD>
<META HTTP-EQUIV="Content-Type" CONTENT="text/html; charset=x-mac-roman">
<META NAME="GENERATOR" CONTENT="Mozilla/4.04 [en] (WinNT; I) [Netscape]">
<META NAME="KeyWords" CONTENT="client, source, documentation">
<META NAME="Author" CONTENT="Kipp E.B. Hickman">
<TITLE>NGLayout Windows Build Instructions</TITLE>
</HEAD>
<BODY BGCOLOR="#FFFFFF">
<H2>
<FONT FACE="Arial,Helvetica">NGLayout Windows Build Instructions</FONT></H2>
This document explains how to build NGLayout for the Windows platform.&nbsp;
<HR><B><FONT SIZE=+1>Required Tools:</FONT></B>
<UL>
<LI>
<B>Microsoft Visual C++ version 4.2 or later</B></LI>
<LI>
<B>The same set of tools for building <A HREF="http://www.mozilla.org/docs/tplist/catBuild/winbuild.htm">Mozilla</A></B></LI>
</UL>
<B><FONT SIZE=+1>Setting up:</FONT></B>
<UL>
<LI>
You need a Pentium with at least a 133 MHz processor and at least 250 megs
(NTFS partition) or 500 megs (FAT partition) of hard drive space. You need
to have a minimum of 64 megs of memory in order to build this tree. These
numbers are approximations.</LI>
<LI>
The preferred platform is NT 4.0. NT 3.51 will also work, and Win95 might
work if you're lucky. Maybe.</LI>
<LI>
Install MSVC. If you don't choose to have the MSVC install modify your
environment variables for PATH, INCLUDE, and LIB information, be sure to
run VCVARS32.BAT out of the MSVC bin directory prior to attempting to build.</LI>
<LI>
Download and install GNU tools. Put them in your path.</LI>
<LI>
Install NGLayout source.</LI>
<UL>
<LI>
cd &lt;your-source-area></LI>
<LI>
unzip -o -q win-19980415.zip</LI>
</UL>
<LI>
There are several environment variables you will need to set, either manually
or via a script within a command session, or by setting them in your system
environment located through the Control Panel | System icon.</LI>
<P>&nbsp;<B>Note: There is an additional variable for building NGLayout!
Use this list carefully!</B>
<P>&nbsp;The variables are:
<UL>
<LI>
set MOZ_BITS=32</LI>
<LI>
set MOZ_DEBUG=1 (don't set this if you want to build an optimized release
build)</LI>
<LI>
set MOZ_GOLD=1</LI>
<LI>
set MOZ_MEDIUM=1</LI>
<LI>
set MOZ_NT=351 (if running NT 3.51, don't set otherwise)</LI>
<LI>
set MOZ_OUT=(location of resulting executable and totally optional, see
Notes for more details)</LI>
<LI>
set MOZ_SRC=(top of your tree, drive letter and path, i.e. set MOZ_SRC=d:\mozilla_src.
The topmost directory under this should be mozilla)</LI>
<LI>
set MOZ_TOOLS=(location of the bin directory containing your GNU tools.
The build looks for MOZ_TOOLS\bin\gmake.exe, so make sure your MOZ_TOOLS
is figured appropriately)</LI>
<LI>
set NO_SECURITY=1</LI>
<LI>
set NSPR20=1</LI>
<LI>
if you are running VC++ 5.0 or higher: set _MSC_VER=1100; if you are running
VC++ 4.2 then set MOZ_VCVER=42</LI>
<LI>
<B>set STANDALONE_IMAGE_LIB=1</B></LI>
<LI>
<B>set MODULAR_NETLIB=1</B></LI>
</UL>
</UL>
<B><FONT SIZE=+1>Building:</FONT></B>
<UL>
<LI>
You need to be running a vanilla command prompt. Other shells may work,
but you might have to tweak makefiles.</LI>
<LI>
<B>Build the tools:</B> This generates several tools that handle things
like dependency generation</LI>
<UL>
<LI>
cd mozilla\config</LI>
<LI>
nmake /f makefile.win</LI>
</UL>
<LI>
<B>Build the NGLayout:</B> This will do a complete build of the source
tree. You will end up with a viewer.exe at the end. The viewer.exe will
be in your dist\win32_[OD].obj\bin directory (O will be used when you don't
set MOZ_DEBUG; D will be used when you set MOZ_DEBUG).</LI>
<UL>
<LI>
cd mozilla</LI>
<LI>
nmake /f nglayout.mak</LI>
</UL>
</UL>
<B><FONT SIZE=+1>Running:</FONT></B>
<UL>
<LI>
Once you have built the system, do this to run the viewer program (the
viewer program is a simple test program that uses the nsIWebWidget API
to embed a web widget object). The viewer program has a few basic menu
items, include "Samples" which load sample tests.</LI>
<UL>
<LI>
cd mozilla\dist\win32_[OD].obj\bin</LI>
<LI>
.\viewer.exe</LI>
</UL>
</UL>
<B><FONT SIZE=+1>Notes:</FONT></B>
<UL>
<LI>
This build process does not use Visual C++ generated project files for
several reasons having to do with (among other things) size, maintainability,
and the long term desire to start using more of tools like gmake, or plug
and play developer tools. This does not preclude you from using the Visual
C++ IDE, or it's debugger. Once you have built a viewer.exe do this to
run it under the debugger:</LI>
</UL>
<UL>
<UL>
<LI>
cd mozilla\dist\win32_[OD].obj\bin</LI>
<LI>
msdev viewer.exe</LI>
</UL>
</UL>
<HR WIDTH="100%">
<CENTER><FONT SIZE=-1>Copyright &copy; 1998 <A HREF="http://home.netscape.com/misc/contact_info.html">Netscape
Communications Corporation</A></FONT></CENTER>
&nbsp;
</BODY>
</HTML>

24
mozilla/base/Makefile Normal file
View File

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

33
mozilla/base/Makefile.in Normal file
View File

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

Binary file not shown.

23
mozilla/base/makefile.win Normal file
View File

@@ -0,0 +1,23 @@
#!nmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
DEPTH=..
IGNORE_MANIFEST=1
DIRS=public src tests
include <$(DEPTH)\config\rules.mak>

View File

@@ -0,0 +1,5 @@
#
# This is a list of local files which get copied to the mozilla:dist:base directory
#
nsISizeOfHandler.h

View File

@@ -0,0 +1,30 @@
#!gmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
DEPTH=../..
DEFINES = -D_IMPL_NS_BASE
EXPORTS = \
nsISizeOfHandler.h \
$(NULL)
MODULE = raptor
include $(DEPTH)/config/config.mk
include $(DEPTH)/config/rules.mk

View File

@@ -0,0 +1,37 @@
#!gmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
DEPTH=../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
DEFINES = -D_IMPL_NS_BASE
EXPORTS = \
nsISizeOfHandler.h \
$(NULL)
EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS))
MODULE = raptor
include $(topsrcdir)/config/config.mk
include $(topsrcdir)/config/rules.mk

View File

@@ -0,0 +1,30 @@
#!nmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
DEPTH=..\..
IGNORE_MANIFEST=1
DEFINES = -D_IMPL_NS_BASE
EXPORTS = \
nsISizeOfHandler.h \
$(NULL)
MODULE = raptor
include <$(DEPTH)\config\rules.mak>

View File

@@ -0,0 +1,66 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsISizeOfHandler_h___
#define nsISizeOfHandler_h___
#include "nscore.h"
#include "nsISupports.h"
/* c028d1f0-fc9e-11d1-89e4-006008911b81 */
#define NS_ISIZEOF_HANDLER_IID \
{ 0xc028d1f0, 0xfc9e, 0x11d1, {0x89, 0xe4, 0x00, 0x60, 0x08, 0x91, 0x1b, 0x81}}
/**
* An API to managing a sizeof computation of an arbitrary graph.
* The handler is responsible for remembering which objects have been
* seen before. Note that the handler doesn't hold references to
* nsISupport's objects; the assumption is that the objects being
* sized are stationary and will not be modified during the sizing
* computation and therefore do not need an extra reference count.
*/
class nsISizeOfHandler : public nsISupports {
public:
/**
* Add in a simple size value to the running total.
* Always returns NS_OK.
*/
NS_IMETHOD Add(size_t aSize) = 0;
/**
* Update aResult with PR_TRUE if the object has been traversed
* by the sizeof computation before. Otherwise aResult is set to
* PR_FALSE and the object is added to the internal database
* of objects that have been traversed. It's ok to pass a null
* pointer in; aResult will be set to PR_TRUE so you won't accidently
* try to traverse through null pointer.
*
* Note: This violates the COM API standard on purpose; so there!
*/
virtual PRBool HaveSeen(void* anObject) = 0;
/**
* Return the currently computed size.
* Always returns NS_OK.
*/
NS_IMETHOD GetSize(PRUint32& aResult) = 0;
};
extern NS_BASE nsresult
NS_NewSizeOfHandler(nsISizeOfHandler** aInstancePtrResult);
#endif /* nsISizeofHandler_h___ */

22
mozilla/base/src/MANIFEST Normal file
View File

@@ -0,0 +1,22 @@
#
# This is a list of local files which get copied to the mozilla:dist directory
#
nscore.h
nsIArena.h
nsIAtom.h
nsIByteBuffer.h
nsBTree.h
nsCRT.h
nsDeque.h
nsITimer.h
nsITimerCallback.h
nsIUnicharBuffer.h
nsRBTree.h
nsIUnicharInputStream.h
nsString.h
nsVoidArray.h
nsUnitConversion.h
nsIBaseStream.h
nsIInputStream.h
nsIOutputStream.h

70
mozilla/base/src/Makefile Normal file
View File

@@ -0,0 +1,70 @@
#!gmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
DEPTH=../..
DEFINES =-D_IMPL_NS_BASE
DIRS = unix
LIBRARY_NAME = raptorbase
CPPSRCS = \
nsArena.cpp \
nsAtomTable.cpp \
nsBTree.cpp \
nsByteBuffer.cpp \
nsCRT.cpp \
nsDeque.cpp \
nsRBTree.cpp \
nsSizeOfHandler.cpp \
nsString.cpp \
nsUnicharBuffer.cpp \
nsUnicharInputStream.cpp \
nsVoidArray.cpp \
$(NULL)
EXPORTS = \
nscore.h \
nsBTree.h \
nsCRT.h \
nsDeque.h \
nsIArena.h \
nsIAtom.h \
nsIByteBuffer.h \
nsIBaseStream.h \
nsIInputStream.h \
nsIOutputStream.h \
nsITimer.h \
nsITimerCallback.h \
nsIUnicharBuffer.h \
nsIUnicharInputStream.h \
nsRBTree.h \
nsString.h \
nsVoidArray.h \
nsUnitConversion.h \
$(NULL)
MODULE = raptor
REQUIRES = xpcom netlib raptor
include $(DEPTH)/config/config.mk
TARGET = $(LIBARY)
include $(DEPTH)/config/rules.mk

View File

@@ -0,0 +1,77 @@
#!gmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
DEPTH=../..
topsrcdir = @top_srcdir@
VPATH = @srcdir@
srcdir = @srcdir@
include $(DEPTH)/config/autoconf.mk
DEFINES =-D_IMPL_NS_BASE
DIRS = unix
LIBRARY_NAME = raptorbase
CPPSRCS = \
nsArena.cpp \
nsAtomTable.cpp \
nsBTree.cpp \
nsByteBuffer.cpp \
nsCRT.cpp \
nsDeque.cpp \
nsRBTree.cpp \
nsSizeOfHandler.cpp \
nsString.cpp \
nsUnicharBuffer.cpp \
nsUnicharInputStream.cpp \
nsVoidArray.cpp \
$(NULL)
EXPORTS = \
nscore.h \
nsBTree.h \
nsCRT.h \
nsDeque.h \
nsIArena.h \
nsIAtom.h \
nsIByteBuffer.h \
nsIBaseStream.h \
nsIInputStream.h \
nsIOutputStream.h \
nsITimer.h \
nsITimerCallback.h \
nsIUnicharBuffer.h \
nsIUnicharInputStream.h \
nsRBTree.h \
nsString.h \
nsVoidArray.h \
nsUnitConversion.h \
$(NULL)
EXPORTS := $(addprefix $(srcdir)/, $(EXPORTS))
MODULE = raptor
REQUIRES = xpcom netlib raptor
include $(topsrcdir)/config/config.mk
TARGET = $(LIBARY)
include $(topsrcdir)/config/rules.mk

View File

@@ -0,0 +1,292 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
//
// Mac implementation of the nsITimer interface
//
// nsMacTimerPeriodical idles,
#include "nsITimer.h"
#include "nsITimerCallback.h"
#include "prlog.h"
#include <LPeriodical.h>
#include <LArray.h>
#include <LArrayIterator.h>
#include <LComparator.h>
#pragma mark class TimerImpl
//
// TimerImpl implements nsITimer API
//
class TimerImpl : public nsITimer
{
private:
nsTimerCallbackFunc mCallbackFunc;
nsITimerCallback * mCallbackObject;
void * mClosure;
PRUint32 mDelay;
UInt32 mFireTime; // Timer should fire when TickCount >= this number
public:
// constructors
TimerImpl();
virtual ~TimerImpl(){};
NS_DECL_ISUPPORTS
UInt32 GetFireTime() { return mFireTime; }
void Fire();
// nsITimer overrides
virtual nsresult Init(nsTimerCallbackFunc aFunc,
void *aClosure,
PRUint32 aDelay);
virtual nsresult Init(nsITimerCallback *aCallback,
PRUint32 aDelay);
virtual void Cancel();
virtual PRUint32 GetDelay();
virtual void SetDelay(PRUint32 aDelay);
virtual void* GetClosure();
private:
// Calculates mFireTime too
void SetDelaySelf( PRUint32 aDelay );
};
#pragma mark class TimerPeriodical
//
// TimerPeriodical is a singleton LPeriodical subclass that fires
// off TimerImpl. The firing is done on idle
//
class TimerPeriodical : public LPeriodical
{
static TimerPeriodical * gPeriodical;
LArray mTimers; // List of TimerImpl *
public:
// Returns the singleton instance
static TimerPeriodical * GetPeriodical();
TimerPeriodical();
virtual ~TimerPeriodical();
nsresult AddTimer( TimerImpl * aTimer);
nsresult RemoveTimer( TimerImpl * aTimer);
virtual void SpendTime( const EventRecord &inMacEvent);
};
#pragma mark class TimerImplComparator
//
// TimerImplComparator compares two TimerImpl
//
class TimerImplComparator : public LComparator
{
virtual Int32 Compare(
const void* inItemOne,
const void* inItemTwo,
Uint32 inSizeOne,
Uint32 inSizeTwo) const;
};
//
// TimerImpl implementation
//
static NS_DEFINE_IID(kITimerIID, NS_ITIMER_IID);
NS_IMPL_ISUPPORTS(TimerImpl, kITimerIID)
TimerImpl::TimerImpl()
{
NS_INIT_REFCNT();
mCallbackFunc = NULL;
mCallbackObject = NULL;
mClosure = NULL;
mDelay = 0;
mFireTime = 0;
}
nsresult TimerImpl::Init(nsTimerCallbackFunc aFunc,
void *aClosure,
PRUint32 aDelay)
{
mCallbackFunc = aFunc;
mClosure = aClosure;
SetDelaySelf(aDelay);
return TimerPeriodical::GetPeriodical()->AddTimer(this);
}
nsresult TimerImpl::Init(nsITimerCallback *aCallback,
PRUint32 aDelay)
{
mCallbackObject = aCallback;
SetDelaySelf(aDelay);
return TimerPeriodical::GetPeriodical()->AddTimer(this);
}
void TimerImpl::Cancel()
{
TimerPeriodical::GetPeriodical()->RemoveTimer(this);
}
PRUint32 TimerImpl::GetDelay()
{
return mDelay;
}
void TimerImpl::SetDelay(PRUint32 aDelay)
{
SetDelaySelf(aDelay);
// Make sure that timer was sorted
NS_ADDREF(this);
TimerPeriodical::GetPeriodical()->RemoveTimer(this);
TimerPeriodical::GetPeriodical()->AddTimer(this);
NS_RELEASE(this);
}
void* TimerImpl::GetClosure()
{
return mClosure;
}
void TimerImpl::Fire()
{
if (mCallbackFunc != NULL) {
(*mCallbackFunc)(this, mClosure);
}
else if (mCallbackObject != NULL) {
mCallbackObject->Notify(this); // Fire the timer
}
}
void TimerImpl::SetDelaySelf( PRUint32 aDelay )
{
mDelay = aDelay;
mFireTime = TickCount() + (mDelay * 3) / 50; // We need mFireTime in ticks (1/60th)
// but aDelay is in 1000th (60/1000 = 3/50)
}
TimerPeriodical * TimerPeriodical::gPeriodical = NULL;
TimerPeriodical * TimerPeriodical::GetPeriodical()
{
if (gPeriodical == NULL)
gPeriodical = new TimerPeriodical();
return gPeriodical;
}
TimerPeriodical::TimerPeriodical()
{
mTimers.SetComparator( new TimerImplComparator() );
mTimers.SetKeepSorted( true );
}
TimerPeriodical::~TimerPeriodical()
{
PR_ASSERT(mTimers.GetCount() == 0);
}
nsresult TimerPeriodical::AddTimer( TimerImpl * aTimer)
{
try
{
NS_ADDREF(aTimer);
mTimers.AddItem( &aTimer );
StartRepeating();
}
catch(...)
{
return NS_ERROR_UNEXPECTED;
}
return NS_OK;
}
nsresult TimerPeriodical::RemoveTimer( TimerImpl * aTimer)
{
mTimers.SetComparator(LLongComparator::GetComparator(), false);
mTimers.Remove(&aTimer);
mTimers.SetComparator(new TimerImplComparator());
NS_RELEASE( aTimer );
if ( mTimers.GetCount() == 0 )
StopRepeating();
return NS_OK;
}
// Called through every event loop
// Loops through the list of available timers, and
// fires off the available ones
void TimerPeriodical::SpendTime( const EventRecord &inMacEvent)
{
LArrayIterator iter(mTimers);
TimerImpl * timer;
while (iter.Next(&timer))
{
if (timer->GetFireTime() <= inMacEvent.when)
{
//NS_ADDREF(timer);
RemoveTimer(timer);
timer->Fire();
//NS_RELEASE(timer);
}
else
break; // Items are sorted, so we do not need to iterate until the end
}
}
//
// class TimerImplComparator implementation
//
Int32 TimerImplComparator::Compare(
const void* inItemOne,
const void* inItemTwo,
Uint32 inSizeOne,
Uint32 inSizeTwo) const
{
return (( TimerImpl *) inItemOne)->GetFireTime() - (( TimerImpl *) inItemTwo)->GetFireTime();
}
NS_BASE nsresult NS_NewTimer(nsITimer** aInstancePtrResult)
{
NS_PRECONDITION(nsnull != aInstancePtrResult, "null ptr");
if (nsnull == aInstancePtrResult) {
return NS_ERROR_NULL_POINTER;
}
TimerImpl *timer = new TimerImpl();
if (nsnull == timer) {
return NS_ERROR_OUT_OF_MEMORY;
}
return timer->QueryInterface(kITimerIID, (void **) aInstancePtrResult);
}

View File

@@ -0,0 +1,99 @@
#!nmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
DEPTH=..\..
IGNORE_MANIFEST=1
DIRS = windows
DEFINES=-D_IMPL_NS_BASE -DWIN32_LEAN_AND_MEAN
LIBRARY_NAME=raptorbase
CPPSRCS = \
nsArena.cpp \
nsAtomTable.cpp \
nsBTree.cpp \
nsByteBuffer.cpp \
nsCRT.cpp \
nsDeque.cpp \
nsRBTree.cpp \
nsSizeOfHandler.cpp \
nsString.cpp \
nsUnicharBuffer.cpp \
nsUnicharInputStream.cpp \
nsVoidArray.cpp \
$(NULL)
CPP_OBJS = \
.\$(OBJDIR)\nsArena.obj \
.\$(OBJDIR)\nsAtomTable.obj \
.\$(OBJDIR)\nsBTree.obj \
.\$(OBJDIR)\nsByteBuffer.obj \
.\$(OBJDIR)\nsCRT.obj \
.\$(OBJDIR)\nsDeque.obj \
.\$(OBJDIR)\nsRBTree.obj \
.\$(OBJDIR)\nsSizeOfHandler.obj \
.\$(OBJDIR)\nsString.obj \
.\$(OBJDIR)\nsUnicharBuffer.obj \
.\$(OBJDIR)\nsUnicharInputStream.obj \
.\$(OBJDIR)\nsVoidArray.obj \
$(NULL)
EXPORTS=nscore.h nsIArena.h nsIAtom.h nsIByteBuffer.h \
nsBTree.h nsCRT.h nsDeque.h nsITimer.h \
nsITimerCallback.h nsIUnicharBuffer.h nsRBTree.h \
nsIUnicharInputStream.h nsString.h nsVoidArray.h \
nsUnitConversion.h \
nsIBaseStream.h nsIInputStream.h nsIOutputStream.h
MODULE=raptor
REQUIRES=xpcom netlib raptor
LINCS=-I$(PUBLIC)\xpcom -I$(PUBLIC)\netlib \
-I$(PUBLIC)\raptor
MAKE_OBJ_TYPE = DLL
DLLNAME = raptorbase
DLL=.\$(OBJDIR)\$(DLLNAME).dll
OBJS = $(OBJS) .\$(OBJDIR)\nsTimer.obj
LCFLAGS = \
$(LCFLAGS) \
$(DEFINES) \
$(NULL)
# These are the libraries we need to link with to create the dll
LLIBS= \
$(DIST)\lib\xpcom32.lib \
$(DIST)\lib\libplc21.lib \
$(LIBNSPR)
!if "$(MOZ_BITS)"=="32" && defined(MOZ_DEBUG) && defined(GLOWCODE)
LLIBS=$(LLIBS) $(GLOWDIR)\glowcode.lib
!endif
include <$(DEPTH)\config\rules.mak>
libs:: $(DLL)
$(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).dll $(DIST)\bin
$(MAKE_INSTALL) .\$(OBJDIR)\$(DLLNAME).lib $(DIST)\lib
clobber::
rm -f $(DIST)\bin\$(DLLNAME).dll
rm -f $(DIST)\lib\$(DLLNAME).lib

View File

@@ -0,0 +1,80 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#include "nsIArena.h"
#include "nsCRT.h"
#define PL_ARENA_CONST_ALIGN_MASK 7
#include "plarena.h"
static NS_DEFINE_IID(kArenaIID, NS_IARENA_IID);
// Simple arena implementation layered on plarena
class ArenaImpl : public nsIArena {
public:
ArenaImpl(PRInt32 aBlockSize);
NS_DECL_ISUPPORTS
virtual void* Alloc(PRInt32 aSize);
protected:
~ArenaImpl();
PLArenaPool mPool;
PRInt32 mBlockSize;
};
ArenaImpl::ArenaImpl(PRInt32 aBlockSize)
{
NS_INIT_REFCNT();
if (aBlockSize < NS_MIN_ARENA_BLOCK_SIZE) {
aBlockSize = NS_DEFAULT_ARENA_BLOCK_SIZE;
}
PL_INIT_ARENA_POOL(&mPool, "nsIArena", aBlockSize);
mBlockSize = aBlockSize;
}
NS_IMPL_ISUPPORTS(ArenaImpl,kArenaIID)
ArenaImpl::~ArenaImpl()
{
PL_FinishArenaPool(&mPool);
}
void* ArenaImpl::Alloc(PRInt32 size)
{
// Adjust size so that it's a multiple of sizeof(double)
PRInt32 align = size & (sizeof(double) - 1);
if (0 != align) {
size += sizeof(double) - align;
}
void* p;
PL_ARENA_ALLOCATE(p, &mPool, size);
return p;
}
NS_BASE nsresult NS_NewHeapArena(nsIArena** aInstancePtrResult,
PRInt32 aArenaBlockSize)
{
ArenaImpl* it = new ArenaImpl(aArenaBlockSize);
if (nsnull == it) {
return NS_ERROR_OUT_OF_MEMORY;
}
return it->QueryInterface(kArenaIID, (void **) aInstancePtrResult);
}

View File

@@ -0,0 +1,154 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#include "nsIAtom.h"
#include "nsString.h"
#include "nsCRT.h"
#include "plhash.h"
#include "nsISizeOfHandler.h"
/**
* The shared hash table for atom lookups.
*/
static nsrefcnt gAtoms;
static struct PLHashTable* gAtomHashTable;
class AtomImpl : public nsIAtom {
public:
AtomImpl();
~AtomImpl();
NS_DECL_ISUPPORTS
void* operator new(size_t size, const PRUnichar* us, PRInt32 uslen);
virtual void ToString(nsString& aBuf) const;
virtual const PRUnichar* GetUnicode() const;
NS_IMETHOD SizeOf(nsISizeOfHandler* aHandler) const;
// Actually more; 0 terminated. This slot is reserved for the
// terminating zero.
PRUnichar mString[1];
};
AtomImpl::AtomImpl()
{
NS_INIT_REFCNT();
// Every live atom holds a reference on the atom hashtable
gAtoms++;
}
AtomImpl::~AtomImpl()
{
NS_PRECONDITION(nsnull != gAtomHashTable, "null atom hashtable");
if (nsnull != gAtomHashTable) {
PL_HashTableRemove(gAtomHashTable, mString);
nsrefcnt cnt = --gAtoms;
if (0 == cnt) {
// When the last atom is destroyed, the atom arena is destroyed
NS_ASSERTION(0 == gAtomHashTable->nentries, "bad atom table");
PL_HashTableDestroy(gAtomHashTable);
gAtomHashTable = nsnull;
}
}
}
static NS_DEFINE_IID(kIAtomIID, NS_IATOM_IID);
NS_IMPL_ISUPPORTS(AtomImpl, kIAtomIID);
void* AtomImpl::operator new(size_t size, const PRUnichar* us, PRInt32 uslen)
{
size = size + uslen * sizeof(PRUnichar);
AtomImpl* ii = (AtomImpl*) new char[size];
nsCRT::memcpy(ii->mString, us, uslen * sizeof(PRUnichar));
ii->mString[uslen] = 0;
return ii;
}
void AtomImpl::ToString(nsString& aBuf) const
{
aBuf.SetLength(0);
aBuf.Append(mString, nsCRT::strlen(mString));
}
const PRUnichar* AtomImpl::GetUnicode() const
{
return mString;
}
NS_IMETHODIMP
AtomImpl::SizeOf(nsISizeOfHandler* aHandler) const
{
aHandler->Add(sizeof(*this) + nsCRT::strlen(mString) * sizeof(PRUnichar));
return NS_OK;
}
//----------------------------------------------------------------------
static PLHashNumber HashKey(const PRUnichar* k)
{
return (PLHashNumber) nsCRT::HashValue(k);
}
static PRIntn CompareKeys(const PRUnichar* k1, const PRUnichar* k2)
{
return nsCRT::strcmp(k1, k2) == 0;
}
NS_BASE nsIAtom* NS_NewAtom(const char* isolatin1)
{
nsAutoString tmp(isolatin1);
return NS_NewAtom(tmp.GetUnicode());
}
NS_BASE nsIAtom* NS_NewAtom(const nsString& aString)
{
return NS_NewAtom(aString.GetUnicode());
}
NS_BASE nsIAtom* NS_NewAtom(const PRUnichar* us)
{
if (nsnull == gAtomHashTable) {
gAtomHashTable = PL_NewHashTable(8, (PLHashFunction) HashKey,
(PLHashComparator) CompareKeys,
(PLHashComparator) nsnull,
nsnull, nsnull);
}
PRInt32 uslen;
PRUint32 hashCode = nsCRT::HashValue(us, &uslen);
PLHashEntry** hep = PL_HashTableRawLookup(gAtomHashTable, hashCode, us);
PLHashEntry* he = *hep;
if (nsnull != he) {
nsIAtom* id = (nsIAtom*) he->value;
NS_ADDREF(id);
return id;
}
AtomImpl* id = new(us, uslen) AtomImpl();
PL_HashTableRawAdd(gAtomHashTable, hep, hashCode, id->mString, id);
NS_ADDREF(id);
return id;
}
NS_BASE nsrefcnt NS_GetNumberOfAtoms(void)
{
if (nsnull != gAtomHashTable) {
NS_PRECONDITION(nsrefcnt(gAtomHashTable->nentries) == gAtoms, "bad atom table");
}
return gAtoms;
}

View File

@@ -0,0 +1,402 @@
/**
* This file defines the binary tree class and it
* nsNode child class.
*
* This simple version stores nodes, and the
* nodes store void* ptrs.
*
* @update gess 4/11/98
* @param
* @return
*/
#include "nsBTree.h"
/**
* default constructor
*
* @update gess 4/11/98
*/
nsNode::nsNode(){
mLeft=0;
mRight=0;
mParent=0;
mColor=eBlack;
}
/**
* Copy constructor
*
* @update gess 4/11/98
* @param
* @return
*/
nsNode::nsNode(const nsNode& aNode){
mLeft=aNode.mLeft;
mRight=aNode.mRight;
mParent=aNode.mParent;
mColor=aNode.mColor;
}
/**
* destructor
*
* @update gess 4/11/98
*/
nsNode::~nsNode(){
}
/**
* Retrive ptr to parent node
*
* @update gess 4/11/98
* @return ptr to parent node
*/
nsNode* nsNode::GetParentNode(void) const{
return mParent;
}
/**
* Retrieve ptr to left (less) node
*
* @update gess 4/11/98
* @return ptr to left (may be NULL)
*/
nsNode* nsNode::GetLeftNode(void) const{
return mLeft;
}
/**
* Retrieve ptr to right (more) node
*
* @update gess 4/11/98
* @return ptr to right node (may be NULL)
*/
nsNode* nsNode::GetRightNode(void) const{
return mRight;
}
/**
*
*
* @update gess 4/11/98
* @param
* @return
*/
nsNode& nsNode::operator=(const nsNode& aNode){
if(this!=&aNode){
mLeft=aNode.mLeft;
mRight=aNode.mRight;
mParent=aNode.mParent;
mColor=aNode.mColor;
}
return *this;
}
/********************************************************
* Here comes the BTREE class...
********************************************************/
/**
* nsBTree constructor
*
* @update gess 4/11/98
*/
nsBTree::nsBTree(){
mRoot=0;
}
/**
* destructor
*
* @update gess 4/11/98
*/
nsBTree::~nsBTree(){
if(mRoot){
//walk the tree and destroy the children.
}
}
/**
* Given a node, we're supposed to add it into
* our tree.
*
* @update gess 4/11/98
* @param aNode to be added to tree
* @return ptr to added node or NULL
*/
nsNode* nsBTree::Add(nsNode& aNode){
nsNode* node1=mRoot; //x
nsNode* node2=0; //y
while(node1) {
node2=node1;
if(aNode<*node1)
node1=node1->mLeft;
else node1=node1->mRight;
}
aNode.mParent=node2;
if(!node2){
mRoot=&aNode;
}
else{
if(aNode<*node2)
node2->mLeft=&aNode;
else node2->mRight=&aNode;
}
return &aNode;
}
/**
* Removes given node from tree if present.
*
* @update gess 4/11/98
* @param aNode to be found and removed
* @return ptr to remove node, or NULL
*/
nsNode* nsBTree::Remove(nsNode& aNode){
nsNode* result=0;
nsNode* node3=Find(aNode);
if(node3) {
nsNode* node1;
nsNode* node2;
if((!node3->mLeft) || (!node3->mRight))
node2=node3;
else node2=After(*node3);
if(node2->mLeft)
node1=node2->mLeft;
else node1=node2->mRight;
if(node1)
node1->mParent=node2->mParent;
if(node2->mParent) {
if(node2==node2->mParent->mLeft)
node2->mParent->mLeft=node1;
else node2->mParent->mRight=node1;
}
else mRoot=node1;
if(node2!=node3)
(*node3)==(*node2);
if(node2->mColor == nsNode::eBlack)
ReBalance(*node1);
delete node2;
result=&aNode;
}
return result;
}
/**
* Clears the tree of any data.
* Be careful here if your objects are heap based!
* This method doesn't free the objects, so if you
* don't have your own pointers, they will become
* orphaned.
*
* @update gess 4/11/98
* @param
* @return this
*/
nsBTree& nsBTree::Empty(nsNode* aNode) {
mRoot=0;
return *this;
}
/**
* This method destroys all the objects in the tree.
* WARNING: Never call this method on stored objects
* that are stack-based!
*
* @update gess 4/11/98
* @param
* @return this
*/
nsBTree& nsBTree::Erase(nsNode* aNode){
// nsNode* node1 =(aNode) ? aNode : mRoot;
if(aNode) {
Erase(aNode->mLeft); //begin by walking left side
Erase(aNode->mRight); //then search right side
delete aNode; //until a leaf, then delete
}
return *this;
}
/**
* Retrieve ptr to first node in tree
*
* @update gess 4/11/98
* @return
*/
nsNode* nsBTree::First(void) const{
if(mRoot)
return First(*mRoot);
return 0;
}
/**
* Retrive ptr to first node rel to given node
*
* @update gess 4/11/98
* @param node to begin scan from
* @return ptr to first node from given node or NULL
*/
nsNode* nsBTree::First(const nsNode& aNode) const{
nsNode* result=0;
if(mRoot) {
result=mRoot;
while(result->GetLeftNode()) {
result=result->GetLeftNode();
}
}
return result;
}
/**
* Retrive ptr to last node
*
* @update gess 4/11/98
* @return ptr to last node rel to root or NULL
*/
nsNode* nsBTree::Last(void) const{
if(mRoot)
return Last(*mRoot);
return 0;
}
/**
* Retrive ptr to last node rel to given node
*
* @update gess 4/11/98
* @param node to begin scan from
* @return ptr to first node from given node or NULL
*/
nsNode* nsBTree::Last(const nsNode& aNode) const{
nsNode* result=0;
if(mRoot) {
result=mRoot;
while(result->GetRightNode()) {
result=result->GetRightNode();
}
}
return result;
}
/**
* Retrive ptr to prior node rel to given node
*
* @update gess 4/11/98
* @param node to begin scan from
* @return ptr to prior node from given node or NULL
*/
nsNode* nsBTree::Before(const nsNode& aNode) const{
if(aNode.GetLeftNode())
return Last(*aNode.GetLeftNode());
//otherwise...
nsNode* node1=(nsNode*)&aNode;
nsNode* node2=aNode.GetParentNode();
while((node2) && (node1==node2->GetLeftNode())) {
node1=node2;
node2=node2->GetParentNode();
}
return node2;
}
/**
* Retrive ptr to next node rel to given node
*
* @update gess 4/11/98
* @param node to begin scan from
* @return ptr to next node from given node or NULL
*/
nsNode* nsBTree::After(const nsNode& aNode) const{
if(aNode.GetRightNode())
return First(*aNode.GetRightNode());
//otherwise...
nsNode* node1=(nsNode*)&aNode;
nsNode* node2=aNode.GetParentNode();
while((node2) && (node1==node2->GetRightNode())) {
node1=node2;
node2=node2->GetParentNode();
}
return node2;
}
/**
* Scan for given node
*
* @update gess 4/11/98
* @param node to find
* @return ptr to given node, or NULL
*/
nsNode* nsBTree::Find(const nsNode& aNode) const{
nsNode* result=mRoot;
while((result) && (!(aNode==(*result)))) {
if(aNode<*result)
result=result->mLeft;
else result=result->mRight;
}
return (nsNode*)result;
}
/**
* Rebalances tree around the given node. This only
* needs to be called after a node is deleted.
* This method does nothing for btrees, but is
* needed for RBTrees.
*
* @update gess 4/11/98
* @param aNode -- node to balance around
* @return this
*/
nsBTree& nsBTree::ReBalance(nsNode& aNode){
return *this;
}
/**
*
*
* @update gess 4/11/98
* @param
* @return
*/
const nsBTree& nsBTree::ForEach(nsNodeFunctor& aFunctor,nsNode* aNode) const{
nsNode* node1 =(aNode) ? aNode : mRoot;
if(node1) {
if(node1->mLeft)
ForEach(aFunctor,node1->mLeft); //begin by walking left side
aFunctor(*node1);
if(node1->mRight)
ForEach(aFunctor,node1->mRight); //then search right side
}
return *this;
}

283
mozilla/base/src/nsBTree.h Normal file
View File

@@ -0,0 +1,283 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/**
* This file defines the binary tree class and it
* nsNode child class. Note that like all nsBTree
* containers, this one does not automatically balance.
* (Find for random data, bad for pre-ordered data).
*
* This simple version stores nodes, and the
* nodes store void* ptrs.
*
* @update gess 4/11/98
*/
/**
* nsNode
*
* @update gess 4/11/98
* @param
* @return
*/
#ifndef _BTREE_H
#define _BTREE_H
#include "nscore.h"
struct NS_BASE nsNode {
/**
*
* @update gess4/20/98
* @param
* @return
*/
nsNode();
/**
* Copy constructor
* @update gess 4/11/98
*/
nsNode(const nsNode& aNode);
/**
* destructor
* @update gess 4/11/98
*/
virtual ~nsNode();
/**
* Retrieve parent node
*
* @update gess 4/11/98
* @return
*/
nsNode* GetParentNode(void) const;
/**
*
* @update gess 4/11/98
* @param
* @return
*/
nsNode* GetLeftNode() const;
/**
*
* @update gess 4/11/98
* @param
* @return
*/
nsNode* GetRightNode() const;
/**
*
* @update gess 4/11/98
* @param
* @return
*/
virtual nsNode& operator=(const nsNode& aNode);
/**
* This method gets called to determine which of
* two nodes is less. When you create your own
* subclass of nsNode, this is the most important
* method for you to overload.
*
* @update gess 4/11/98
* @param
* @return
*/
virtual PRBool operator<(const nsNode& aNode) const=0;
/**
* This method gets called to determine which of
* two nodes is less. When you create your own
* subclass of nsNode, this is the most important
* method for you to overload.
*
* @update gess 4/11/98
* @param
* @return
*/
virtual PRBool operator==(const nsNode& aNode) const=0;
enum eRBColor {eRed,eBlack};
nsNode* mParent;
nsNode* mLeft;
nsNode* mRight;
eRBColor mColor;
};
/**
* The Nodefunctor class is used when you want to create
* callbacks between the nsRBTree and your generic code.
*
* @update gess4/20/98
*/
class NS_BASE nsNodeFunctor {
public:
virtual nsNodeFunctor& operator()(nsNode& aNode)=0;
};
/****************************************************
* Here comes the nsBTree class...
****************************************************/
class NS_BASE nsBTree {
public:
friend class nsBTreeIterator;
nsBTree();
virtual ~nsBTree();
/**
* Add given node reference into our tree.
*
* @update gess 4/11/98
* @param aNode is a ref to a node to be added
* @return newly added node
*/
nsNode* Add(nsNode& aNode);
/**
* Remove given node reference into our tree.
*
* @update gess 4/11/98
* @param aNode is a ref to a node to be removed
* @return Ptr to node if found (and removed) or NULL
*/
nsNode* Remove(nsNode& aNode);
/**
* Clears the tree of any data.
* Be careful here if your objects are heap based!
* This method doesn't free the objects, so if you
* don't have your own pointers, they will become
* orphaned.
*
* @update gess 4/11/98
* @param
* @return this
*/
nsBTree& Empty(nsNode* aNode=0);
/**
* This method destroys all the objects in the tree.
* WARNING: Never call this method on stored objects
* that are stack-based!
*
* @update gess 4/11/98
* @param
* @return this
*/
nsBTree& Erase(nsNode* aNode=0);
/**
* Retrieve ptr to 1st node in tree (starting at root)
*
* @update gess 4/11/98
* @return ptr to 1st node, possible to be NULL
*/
nsNode* First(void) const;
/**
* Find first node in tree starting at given node
*
* @update gess 4/11/98
* @param aNode node to begin 1st search from
* @return ptr to 1st node below given node
*/
nsNode* First(const nsNode& aNode) const;
/**
* Retrieve ptr to last node in tree relative to root.
*
* @update gess 4/11/98
* @return ptr to last node or NULL
*/
nsNode* Last(void) const;
/**
* Retrieve ptr to last node in tree relative to given node.
*
* @update gess 4/11/98
* @param node to find last node from
* @return ptr to last node or NULL
*/
nsNode* Last(const nsNode& aNode) const;
/**
* Retrieve a ptr to the node that preceeds given node
*
* @update gess 4/11/98
* @param aNode used as reference to find prev.
* @return ptr to prev node or NULL
*/
nsNode* Before(const nsNode& aNode) const;
/**
* Retrieve a ptr to the node after given node
*
* @update gess 4/11/98
* @param aNode used as reference to find next.
* @return ptr to next node or NULL
*/
nsNode* After(const nsNode& aNode) const;
/**
* Find given node in tree.
* (Why would you want to find a node you already have?)
*
* @update gess 4/11/98
* @param aNode is the node you're searching for
* @return ptr to node if found, or NULL
*/
nsNode* Find(const nsNode& aNode) const;
/**
* Walks the tree, starting with root.
*
* @update gess 4/11/98
*/
virtual const nsBTree& ForEach(nsNodeFunctor& aFunctor,nsNode* aNode=0) const;
protected:
/**
* Rebalances tree around the given node. This only
* needs to be called after a node is deleted.
*
* @update gess 4/11/98
* @param aNode -- node to balance around
* @return this
*/
virtual nsBTree& ReBalance(nsNode& aNode);
nsNode* mRoot;
};
#endif

View File

@@ -0,0 +1,138 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#include "nsIByteBuffer.h"
#include "nsIInputStream.h"
#include "nsCRT.h"
#define MIN_BUFFER_SIZE 32
class ByteBufferImpl : public nsIByteBuffer {
public:
ByteBufferImpl(PRInt32 aBufferSize);
~ByteBufferImpl();
NS_DECL_ISUPPORTS
virtual PRInt32 GetLength() const;
virtual PRInt32 GetBufferSize() const;
virtual char* GetBuffer() const;
virtual PRBool Grow(PRInt32 aNewSize);
virtual PRInt32 Fill(nsresult* aErrorCode, nsIInputStream* aStream,
PRInt32 aKeep);
char* mBuffer;
PRInt32 mSpace;
PRInt32 mLength;
};
ByteBufferImpl::ByteBufferImpl(PRInt32 aBufferSize)
{
if (PRUint32(aBufferSize) < MIN_BUFFER_SIZE) {
aBufferSize = MIN_BUFFER_SIZE;
}
mSpace = aBufferSize;
mBuffer = new char[aBufferSize];
mLength = 0;
NS_INIT_REFCNT();
}
NS_DEFINE_IID(kByteBufferIID,NS_IBYTE_BUFFER_IID);
NS_IMPL_ISUPPORTS(ByteBufferImpl,kByteBufferIID)
ByteBufferImpl::~ByteBufferImpl()
{
if (nsnull != mBuffer) {
delete mBuffer;
mBuffer = nsnull;
}
mLength = 0;
}
PRInt32 ByteBufferImpl::GetLength() const
{
return mLength;
}
PRInt32 ByteBufferImpl::GetBufferSize() const
{
return mSpace;
}
char* ByteBufferImpl::GetBuffer() const
{
return mBuffer;
}
PRBool ByteBufferImpl::Grow(PRInt32 aNewSize)
{
if (PRUint32(aNewSize) < MIN_BUFFER_SIZE) {
aNewSize = MIN_BUFFER_SIZE;
}
char* newbuf = new char[aNewSize];
if (nsnull != newbuf) {
if (0 != mLength) {
nsCRT::memcpy(newbuf, mBuffer, mLength);
}
delete mBuffer;
mBuffer = newbuf;
return PR_TRUE;
}
return PR_FALSE;
}
PRInt32 ByteBufferImpl::Fill(nsresult* aErrorCode, nsIInputStream* aStream,
PRInt32 aKeep)
{
NS_PRECONDITION(nsnull != aStream, "null stream");
NS_PRECONDITION(PRUint32(aKeep) <= PRUint32(mLength), "illegal keep count");
if ((nsnull == aStream) || (PRUint32(aKeep) > PRUint32(mLength))) {
// whoops
*aErrorCode = NS_BASE_STREAM_ILLEGAL_ARGS;
return -1;
}
if (0 != aKeep) {
// Slide over kept data
nsCRT::memmove(mBuffer, mBuffer + (mLength - aKeep), aKeep);
}
// Read in some new data
mLength = aKeep;
PRInt32 amount = mSpace - aKeep;
PRInt32 nb;
*aErrorCode = aStream->Read(mBuffer, aKeep, amount, &nb);
if (NS_SUCCEEDED(*aErrorCode)) {
mLength += nb;
}
else
nb = 0;
return nb;
}
NS_BASE nsresult NS_NewByteBuffer(nsIByteBuffer** aInstancePtrResult,
nsISupports* aOuter,
PRInt32 aBufferSize)
{
if (nsnull != aOuter) {
return NS_ERROR_NO_AGGREGATION;
}
ByteBufferImpl* it = new ByteBufferImpl(aBufferSize);
if (nsnull == it) {
return NS_ERROR_OUT_OF_MEMORY;
}
return it->QueryInterface(kByteBufferIID, (void **) aInstancePtrResult);
}

400
mozilla/base/src/nsCRT.cpp Normal file
View File

@@ -0,0 +1,400 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/**
* MODULE NOTES:
* @update gess7/30/98
*
* Much as I hate to do it, we were using string compares wrong.
* Often, programmers call functions like strcmp(s1,s2), and pass
* one or more null strings. Rather than blow up on these, I've
* added quick checks to ensure that cases like this don't cause
* us to fail.
*
* In general, if you pass a null into any of these string compare
* routines, we simply return 0.
*/
#include "nsCRT.h"
// XXX Bug: These tables don't lowercase the upper 128 characters properly
// This table maps uppercase characters to lower case characters;
// characters that are neither upper nor lower case are unaffected.
static const unsigned char kUpper2Lower[256] = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64,
// upper band mapped to lower [A-Z] => [a-z]
97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
112,113,114,115,116,117,118,119,120,121,122,
91, 92, 93, 94, 95,
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
};
static const unsigned char kLower2Upper[256] = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
96,
// lower band mapped to upper [a-z] => [A-Z]
65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90,
123,124,125,126,127,
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
};
static const PRUnichar kIsoLatin1ToUCS2[256] = {
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15,
16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31,
32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47,
48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63,
64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79,
80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95,
96, 97, 98, 99,100,101,102,103,104,105,106,107,108,109,110,111,
112,113,114,115,116,117,118,119,120,121,122,123,124,125,126,127,
128,129,130,131,132,133,134,135,136,137,138,139,140,141,142,143,
144,145,146,147,148,149,150,151,152,153,154,155,156,157,158,159,
160,161,162,163,164,165,166,167,168,169,170,171,172,173,174,175,
176,177,178,179,180,181,182,183,184,185,186,187,188,189,190,191,
192,193,194,195,196,197,198,199,200,201,202,203,204,205,206,207,
208,209,210,211,212,213,214,215,216,217,218,219,220,221,222,223,
224,225,226,227,228,229,230,231,232,233,234,235,236,237,238,239,
240,241,242,243,244,245,246,247,248,249,250,251,252,253,254,255
};
//----------------------------------------------------------------------
#define TOLOWER(_ucs2) \
(((_ucs2) < 256) ? PRUnichar(kUpper2Lower[_ucs2]) : _ToLower(_ucs2))
#define TOUPPER(_ucs2) \
(((_ucs2) < 256) ? PRUnichar(kLower2Upper[_ucs2]) : _ToUpper(_ucs2))
static PRUnichar _ToLower(PRUnichar aChar)
{
// XXX need i18n code here
return aChar;
}
static PRUnichar _ToUpper(PRUnichar aChar)
{
// XXX need i18n code here
return aChar;
}
//----------------------------------------------------------------------
PRUnichar nsCRT::ToUpper(PRUnichar aChar)
{
return TOUPPER(aChar);
}
PRUnichar nsCRT::ToLower(PRUnichar aChar)
{
return TOLOWER(aChar);
}
PRInt32 nsCRT::strlen(const PRUnichar* s)
{
PRInt32 len = 0;
if(s) {
while (*s++ != 0) {
len++;
}
}
return len;
}
/**
* Compare unichar string ptrs, stopping at the 1st null
* NOTE: If both are null, we return 0.
* @update gess7/30/98
* @param s1 and s2 both point to unichar strings
* @return 0 if they match, -1 if s1<s2; 1 if s1>s2
*/
PRInt32 nsCRT::strcmp(const PRUnichar* s1, const PRUnichar* s2)
{
if(s1 && s2) {
for (;;) {
PRUnichar c1 = *s1++;
PRUnichar c2 = *s2++;
if (c1 != c2) {
if (c1 < c2) return -1;
return 1;
}
if ((0==c1) || (0==c2)) break;
}
}
return 0;
}
/**
* Compare unichar string ptrs, stopping at the 1st null or nth char.
* NOTE: If either is null, we return 0.
* @update gess7/30/98
* @param s1 and s2 both point to unichar strings
* @return 0 if they match, -1 if s1<s2; 1 if s1>s2
*/
PRInt32 nsCRT::strncmp(const PRUnichar* s1, const PRUnichar* s2, PRInt32 n)
{
if(s1 && s2) {
if(0<n) {
while (--n >= 0) {
PRUnichar c1 = *s1++;
PRUnichar c2 = *s2++;
if (c1 != c2) {
if (c1 < c2) return -1;
return 1;
}
if ((0==c1) || (0==c2)) break;
}
}
else return 1;
}
return 0;
}
/**
* Compare unichar string ptrs without regard to case
* NOTE: If both are null, we return 0.
* @update gess7/30/98
* @param s1 and s2 both point to unichar strings
* @return 0 if they match, -1 if s1<s2; 1 if s1>s2
*/
PRInt32 nsCRT::strcasecmp(const PRUnichar* s1, const PRUnichar* s2)
{
if(s1 && s2) {
for (;;) {
PRUnichar c1 = *s1++;
PRUnichar c2 = *s2++;
if (c1 != c2) {
c1 = TOLOWER(c1);
c2 = TOLOWER(c2);
if (c1 != c2) {
if (c1 < c2) return -1;
return 1;
}
}
if ((0==c1) || (0==c2)) break;
}
}
return 0;
}
/**
* Compare unichar string ptrs, stopping at the 1st null or nth char;
* also ignoring the case of characters.
* NOTE: If both are null, we return 0.
* @update gess7/30/98
* @param s1 and s2 both point to unichar strings
* @return 0 if they match, -1 if s1<s2; 1 if s1>s2
*/
PRInt32 nsCRT::strncasecmp(const PRUnichar* s1, const PRUnichar* s2, PRInt32 n)
{
if(s1 && s2) {
if(0<n){
while (--n >= 0) {
PRUnichar c1 = *s1++;
PRUnichar c2 = *s2++;
if (c1 != c2) {
c1 = TOLOWER(c1);
c2 = TOLOWER(c2);
if (c1 != c2) {
if (c1 < c2) return -1;
return 1;
}
}
if ((0==c1) || (0==c2)) break;
}
} else return 1;
}
return 0;
}
/**
* Compare a unichar string ptr to cstring.
* NOTE: If both are null, we return 0.
* @update gess7/30/98
* @param s1 points to unichar string
* @param s2 points to cstring
* @return 0 if they match, -1 if s1<s2; 1 if s1>s2
*/
PRInt32 nsCRT::strcmp(const PRUnichar* s1, const char* s2)
{
if(s1 && s2) {
for (;;) {
PRUnichar c1 = *s1++;
PRUnichar c2 = kIsoLatin1ToUCS2[*(const unsigned char*)s2++];
if (c1 != c2) {
if (c1 < c2) return -1;
return 1;
}
if ((0==c1) || (0==c2)) break;
}
}
return 0;
}
/**
* Compare a unichar string ptr to cstring, up to N chars.
* NOTE: If both are null, we return 0.
* @update gess7/30/98
* @param s1 points to unichar string
* @param s2 points to cstring
* @return 0 if they match, -1 if s1<s2; 1 if s1>s2
*/
PRInt32 nsCRT::strncmp(const PRUnichar* s1, const char* s2, PRInt32 n)
{
if(s1 && s2) {
if(0<n){
while (--n >= 0) {
PRUnichar c1 = *s1++;
PRUnichar c2 = kIsoLatin1ToUCS2[*(const unsigned char*)s2++];
if (c1 != c2) {
if (c1 < c2) return -1;
return 1;
}
if ((0==c1) || (0==c2)) break;
}
} else return 1;
}
return 0;
}
/**
* Compare a unichar string ptr to cstring without regard to case
* NOTE: If both are null, we return 0.
* @update gess7/30/98
* @param s1 points to unichar string
* @param s2 points to cstring
* @return 0 if they match, -1 if s1<s2; 1 if s1>s2
*/
PRInt32 nsCRT::strcasecmp(const PRUnichar* s1, const char* s2)
{
if(s1 && s2) {
for (;;) {
PRUnichar c1 = *s1++;
PRUnichar c2 = kIsoLatin1ToUCS2[*(const unsigned char*)s2++];
if (c1 != c2) {
c1 = TOLOWER(c1);
c2 = TOLOWER(c2);
if (c1 != c2) {
if (c1 < c2) return -1;
return 1;
}
}
if ((0==c1) || (0==c2)) break;
}
}
return 0;
}
/**
* Caseless compare up to N chars between unichar string ptr to cstring.
* NOTE: If both are null, we return 0.
* @update gess7/30/98
* @param s1 points to unichar string
* @param s2 points to cstring
* @return 0 if they match, -1 if s1<s2; 1 if s1>s2
*/
PRInt32 nsCRT::strncasecmp(const PRUnichar* s1, const char* s2, PRInt32 n)
{
if(s1 && s2){
if(0<n){
while (--n >= 0) {
PRUnichar c1 = *s1++;
PRUnichar c2 = kIsoLatin1ToUCS2[*(const unsigned char*)s2++];
if (c1 != c2) {
c1 = TOLOWER(c1);
c2 = TOLOWER(c2);
if (c1 != c2) {
if (c1 < c2) return -1;
return 1;
}
}
if (c1 == 0) break;
}
} else return 1;
}
return 0;
}
PRUint32 nsCRT::HashValue(const PRUnichar* us)
{
PRUint32 rv = 0;
if(us) {
PRUnichar ch;
while ((ch = *us++) != 0) {
// FYI: rv = rv*37 + ch
rv = ((rv << 5) + (rv << 2) + rv) + ch;
}
}
return rv;
}
PRUint32 nsCRT::HashValue(const PRUnichar* us, PRInt32* uslenp)
{
PRUint32 rv = 0;
PRInt32 len = 0;
PRUnichar ch;
while ((ch = *us++) != 0) {
// FYI: rv = rv*37 + ch
rv = ((rv << 5) + (rv << 2) + rv) + ch;
len++;
}
*uslenp = len;
return rv;
}
PRInt32 nsCRT::atoi( const PRUnichar *string )
{
return atoi(string);
}

115
mozilla/base/src/nsCRT.h Normal file
View File

@@ -0,0 +1,115 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsCRT_h___
#define nsCRT_h___
#include <stdlib.h>
#include <string.h>
#include "plstr.h"
#include "nscore.h"
/// This is a wrapper class around all the C runtime functions.
class NS_BASE nsCRT {
public:
/** Copy bytes from aSrc to aDest.
@param aDest the destination address
@param aSrc the source address
@param aCount the number of bytes to copy
*/
static void memcpy(void* aDest, const void* aSrc, PRInt32 aCount) {
::memcpy(aDest, aSrc, (size_t)aCount);
}
static void memmove(void* aDest, const void* aSrc, PRInt32 aCount) {
::memmove(aDest, aSrc, (size_t)aCount);
}
static void memset(void* aDest, PRUint8 aByte, PRInt32 aCount) {
::memset(aDest, aByte, aCount);
}
static void zero(void* aDest, PRInt32 aCount) {
::memset(aDest, 0, (size_t)aCount);
}
/** Compute the string length of s
@param s the string in question
@return the length of s
*/
static PRInt32 strlen(const char* s) {
return PRInt32(::strlen(s));
}
/// Compare s1 and s2.
static PRInt32 strcmp(const char* s1, const char* s2) {
return PRInt32(PL_strcmp(s1, s2));
}
/// Case-insensitive string comparison.
static PRInt32 strcasecmp(const char* s1, const char* s2) {
return PRInt32(PL_strcasecmp(s1, s2));
}
/// Case-insensitive string comparison with length
static PRInt32 strncasecmp(const char* s1, const char* s2, PRInt32 aMaxLen) {
return PRInt32(PL_strncasecmp(s1, s2, aMaxLen));
}
/// Like strlen except for ucs2 strings
static PRInt32 strlen(const PRUnichar* s);
/// Like strcmp except for ucs2 strings
static PRInt32 strcmp(const PRUnichar* s1, const PRUnichar* s2);
/// Like strcmp except for ucs2 strings
static PRInt32 strncmp(const PRUnichar* s1, const PRUnichar* s2,
PRInt32 aMaxLen);
/// Like strcasecmp except for ucs2 strings
static PRInt32 strcasecmp(const PRUnichar* s1, const PRUnichar* s2);
/// Like strncasecmp except for ucs2 strings
static PRInt32 strncasecmp(const PRUnichar* s1, const PRUnichar* s2,
PRInt32 aMaxLen);
/// Like strcmp with a char* and a ucs2 string
static PRInt32 strcmp(const PRUnichar* s1, const char* s2);
/// Like strncmp with a char* and a ucs2 string
static PRInt32 strncmp(const PRUnichar* s1, const char* s2,
PRInt32 aMaxLen);
/// Like strcasecmp with a char* and a ucs2 string
static PRInt32 strcasecmp(const PRUnichar* s1, const char* s2);
/// Like strncasecmp with a char* and a ucs2 string
static PRInt32 strncasecmp(const PRUnichar* s1, const char* s2,
PRInt32 aMaxLen);
/// Compute a hashcode for a ucs2 string
static PRUint32 HashValue(const PRUnichar* s1);
/// Same as above except that we return the length in s1len
static PRUint32 HashValue(const PRUnichar* s1, PRInt32* s1len);
/// String to integer.
static PRInt32 atoi( const PRUnichar *string );
static PRUnichar ToUpper(PRUnichar aChar);
static PRUnichar ToLower(PRUnichar aChar);
};
#endif /* nsCRT_h___ */

View File

@@ -0,0 +1,516 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#include "nsDeque.h"
#include "nsCRT.h"
//#define _SELFTEST_DEQUE 1
#undef _SELFTEST_DEQUE
/**
* Standard constructor
* @update gess4/18/98
* @return new deque
*/
nsDeque::nsDeque(nsDequeFunctor& aMemDestroyer) : mMemDestroyer(aMemDestroyer) {
mMemDestroyer=aMemDestroyer;
mCapacity=eGrowthDelta;
mOrigin=mSize=0;
mData=new void*[mCapacity];
}
/**
* Destructor
* @update gess4/18/98
*/
nsDeque::~nsDeque() {
Erase();
delete [] mData;
mData=0;
}
/**
* Returns the number of elements currently stored in
* this deque.
*
* @update gess4/18/98
* @param
* @return int contains element count
*/
PRInt32 nsDeque::GetSize(void) const {
return mSize;
}
/**
* Remove all items from container without destroying them.
*
* @update gess4/18/98
* @param
* @return
*/
nsDeque& nsDeque::Empty() {
nsCRT::zero(mData,mCapacity*sizeof(mData));
mSize=0;
mOrigin=0;
return *this;
}
/**
* Remove and delete all items from container
*
* @update gess4/18/98
* @return this
*/
nsDeque& nsDeque::Erase() {
ForEach(mMemDestroyer);
return Empty();
}
/**
* This method adds an item to the end of the queue.
* This operation has the potential to cause the
* underlying buffer to resize.
*
* @update gess4/18/98
* @param anItem: new item to be added to queue
* @return nada
*/
nsDeque& nsDeque::Push(void* anItem) {
if(mSize==mCapacity) {
void** temp=new void*[mCapacity+eGrowthDelta];
//Here's the interesting part: You can't just move the elements
//directy (in situ) from the old buffer to the new one.
//Since capacity has changed, the old origin doesn't make
//sense anymore. It's better to resequence the elements now.
int tempi=0;
int i=0;
int j=0;
for(i=mOrigin;i<mCapacity;i++) temp[tempi++]=mData[i]; //copy the leading elements...
for(j=0;j<mOrigin;j++) temp[tempi++]=mData[j]; //copy the trailing elements...
mCapacity+=eGrowthDelta;
mOrigin=0; //now realign the origin...
delete[]mData;
mData=temp;
}
int offset=mOrigin+mSize;
if(offset<mCapacity)
mData[offset]=anItem;
else mData[offset-mCapacity]=anItem;
mSize++;
return *this;
}
/**
* This method gets called you want to remove and return
* the first member in the container.
*
* @update gess4/18/98
* @param nada
* @return last item in container
*/
void* nsDeque::Pop() {
void* result=0;
if(mSize>0) {
result=mData[mOrigin];
mData[mOrigin++]=0; //zero it out for debugging purposes.
mSize--;
if(mCapacity==mOrigin) //you popped off the end, so cycle back around...
mOrigin=0;
if(0==mSize)
mOrigin=0;
}
NS_ASSERTION(mOrigin<mCapacity,"Error: Bad origin");
return result;
}
/**
* This method gets called you want to peek at the topmost
* member without removing it.
*
* @update gess4/18/98
* @param nada
* @return last item in container
*/
void* nsDeque::Peek() {
void* result=0;
if(mSize>0) {
result=mData[mOrigin];
}
return result;
}
/**
* Remove and return the last item in the container.
*
* @update gess4/18/98
* @param none
* @return ptr to last item in container
*/
void* nsDeque::PopBack(void) {
void* result=0;
if(mSize>0) {
int offset=mOrigin+mSize;
if(offset>=mCapacity)
offset-=mCapacity;
result=mData[offset-1];
mData[offset-1]=0;
mSize--;
if(0==mSize)
mOrigin=0;
}
return result;
}
/**
* Call this to retrieve the ith element from this container.
* Keep in mind that accessing the underlying elements is
* done in a relative fashion. Object 0 is not necessarily
* the first element (the first element is at mOrigin).
*
* @update gess4/18/98
* @param anIndex : 0 relative offset of item you want
* @return void* or null
*/
void* nsDeque::ObjectAt(PRInt32 anIndex) const {
void* result=0;
if((anIndex>=0) && (anIndex<mSize))
{
if(anIndex<(mCapacity-mOrigin)) {
result=mData[mOrigin+anIndex];
}
else {
result=mData[anIndex-(mCapacity-mOrigin)];
}
}
return result;
}
/**
* Create and return an iterator pointing to
* the beginning of the queue. Note that this
* takes the circular buffer semantics into account.
*
* @update gess4/18/98
* @return new deque iterator, init'ed to 1st item
*/
nsDequeIterator nsDeque::Begin(void) const{
return nsDequeIterator(*this,0);
}
/**
* Create and return an iterator pointing to
* the last of the queue. Note that this
* takes the circular buffer semantics into account.
*
* @update gess4/18/98
* @return new deque iterator, init'ed to last item
*/
nsDequeIterator nsDeque::End(void) const{
return nsDequeIterator(*this,mSize);
}
/**
* Call this method when you wanto to iterate all the
* members of the container, passing a functor along
* to call your code.
*
* @update gess4/20/98
* @param aFunctor object to call for each member
* @return *this
*/
void nsDeque::ForEach(nsDequeFunctor& aFunctor) const{
int i=0;
for(i=0;i<mSize;i++){
void* obj=ObjectAt(i);
obj=aFunctor(obj);
}
}
/**
* Call this method when you wanto to iterate all the
* members of the container, passing a functor along
* to call your code. Iteration continues until your
* functor returns a non-null.
*
* @update gess4/20/98
* @param aFunctor object to call for each member
* @return *this
*/
const void* nsDeque::FirstThat(nsDequeFunctor& aFunctor) const{
int i=0;
for(i=0;i<mSize;i++){
void* obj=ObjectAt(i);
obj=aFunctor(obj);
if(obj)
return obj;
}
return 0;
}
/******************************************************
* Here comes the nsDequeIterator class...
******************************************************/
/**
* DequeIterator is an object that knows how to iterate (forward and backward)
* a Deque. Normally, you don't need to do this, but there are some special
* cases where it is pretty handy, so here you go.
*
* This is a standard dequeiterator constructor
*
* @update gess4/18/98
* @param aQueue is the deque object to be iterated
* @param anIndex is the starting position for your iteration
*/
nsDequeIterator::nsDequeIterator(const nsDeque& aQueue,int anIndex): mIndex(anIndex), mDeque(aQueue) {
}
/**
* Copy construct a new iterator beginning with given
*
* @update gess4/20/98
* @param aCopy is another iterator to copy from
* @return
*/
nsDequeIterator::nsDequeIterator(const nsDequeIterator& aCopy) : mIndex(aCopy.mIndex), mDeque(aCopy.mDeque) {
}
/**
* Moves iterator to first element in deque
* @update gess4/18/98
* @return this
*/
nsDequeIterator& nsDequeIterator::First(void){
mIndex=0;
return *this;
}
/**
* Standard assignment operator for dequeiterator
*
* @update gess4/18/98
* @param aCopy is an iterator to be copied from
* @return *this
*/
nsDequeIterator& nsDequeIterator::operator=(const nsDequeIterator& aCopy) {
//queue's are already equal.
mIndex=aCopy.mIndex;
return *this;
}
/**
* preform ! operation against to iterators to test for equivalence
* (or lack thereof)!
*
* @update gess4/18/98
* @param anIter is the object to be compared to
* @return TRUE if NOT equal.
*/
PRBool nsDequeIterator::operator!=(nsDequeIterator& anIter) {
return PRBool(!this->operator==(anIter));
}
/**
* Compare 2 iterators for equivalence.
*
* @update gess4/18/98
* @param anIter is the other iterator to be compared to
* @return TRUE if EQUAL
*/
PRBool nsDequeIterator::operator<(nsDequeIterator& anIter) {
return PRBool(((mIndex<anIter.mIndex) && (&mDeque==&anIter.mDeque)));
}
/**
* Compare 2 iterators for equivalence.
*
* @update gess4/18/98
* @param anIter is the other iterator to be compared to
* @return TRUE if EQUAL
*/
PRBool nsDequeIterator::operator==(nsDequeIterator& anIter) {
return PRBool(((mIndex==anIter.mIndex) && (&mDeque==&anIter.mDeque)));
}
/**
* Compare 2 iterators for equivalence.
*
* @update gess4/18/98
* @param anIter is the other iterator to be compared to
* @return TRUE if EQUAL
*/
PRBool nsDequeIterator::operator>=(nsDequeIterator& anIter) {
return PRBool(((mIndex>=anIter.mIndex) && (&mDeque==&anIter.mDeque)));
}
/**
* Pre-increment operator
*
* @update gess4/18/98
* @return object at preincremented index
*/
void* nsDequeIterator::operator++() {
return mDeque.ObjectAt(++mIndex);
}
/**
* Post-increment operator
*
* @update gess4/18/98
* @param param is ignored
* @return object at post-incremented index
*/
void* nsDequeIterator::operator++(int) {
return mDeque.ObjectAt(mIndex++);
}
/**
* Pre-decrement operator
*
* @update gess4/18/98
* @return object at pre-decremented index
*/
void* nsDequeIterator::operator--() {
return mDeque.ObjectAt(--mIndex);
}
/**
* Post-decrement operator
*
* @update gess4/18/98
* @param param is ignored
* @return object at post-decremented index
*/
void* nsDequeIterator::operator--(int) {
return mDeque.ObjectAt(mIndex--);
}
/**
* Dereference operator
*
* @update gess4/18/98
* @return object at ith index
*/
void* nsDequeIterator::GetCurrent(void) {
return mDeque.ObjectAt(mIndex);
}
/**
* Call this method when you wanto to iterate all the
* members of the container, passing a functor along
* to call your code.
*
* @update gess4/20/98
* @param aFunctor object to call for each member
* @return *this
*/
void nsDequeIterator::ForEach(nsDequeFunctor& aFunctor) const{
mDeque.ForEach(aFunctor);
}
/**
* Call this method when you wanto to iterate all the
* members of the container, passing a functor along
* to call your code.
*
* @update gess4/20/98
* @param aFunctor object to call for each member
* @return *this
*/
const void* nsDequeIterator::FirstThat(nsDequeFunctor& aFunctor) const{
return mDeque.FirstThat(aFunctor);
}
#ifdef _SELFTEST_DEQUE
/**************************************************************
Now define the token deallocator class...
**************************************************************/
class _SelfTestDeallocator: public nsDequeFunctor{
public:
_SelfTestDeallocator::_SelfTestDeallocator() {
nsDeque::SelfTest();
}
virtual void* operator()(void* anObject) {
return 0;
}
};
static _SelfTestDeallocator gDeallocator;
#endif
/**
* conduct automated self test for this class
*
* @update gess4/18/98
* @param
* @return
*/
void nsDeque::SelfTest(void) {
#ifdef _SELFTEST_DEQUE
{
nsDeque theDeque(gDeallocator); //construct a simple one...
int ints[200];
int count=sizeof(ints)/sizeof(int);
int i=0;
for(i=0;i<count;i++){ //initialize'em
ints[i]=10*(1+i);
}
for(i=0;i<70;i++){
theDeque.Push(&ints[i]);
}
for(i=0;i<56;i++){
int* temp=(int*)theDeque.Pop();
}
for(i=0;i<55;i++){
theDeque.Push(&ints[i]);
}
for(i=0;i<35;i++){
int* temp=(int*)theDeque.Pop();
}
for(i=0;i<35;i++){
theDeque.Push(&ints[i]);
}
for(i=0;i<38;i++){
int* temp=(int*)theDeque.Pop();
}
}
int x;
x=10;
#endif
}

396
mozilla/base/src/nsDeque.h Normal file
View File

@@ -0,0 +1,396 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/**
* MODULE NOTES:
* @update gess 4/15/98 (tax day)
*
* The Deque is a very small, very efficient container object
* than can hold elements of type void*, offering the following features:
* It's interface supports pushing and poping of children.
* It can iterate (via an interator class) it's children.
* When full, it can efficently resize dynamically.
*
*
* NOTE: The only bit of trickery here is that this deque is
* built upon a ring-buffer. Like all ring buffers, the first
* element may not be at index[0]. The mOrigin member determines
* where the first child is. This point is quietly hidden from
* customers of this class.
*
*/
#ifndef _NSDEQUE
#define _NSDEQUE
#include "nscore.h"
/**
* The nsDequefunctor class is used when you want to create
* callbacks between the deque and your generic code.
* Use these objects in a call to ForEach();
*
* @update gess4/20/98
*/
class NS_BASE nsDequeFunctor{
public:
virtual void* operator()(void* anObject)=0;
};
/******************************************************
* Here comes the nsDeque class itself...
******************************************************/
/**
* The deque (double-ended queue) class is a common container type,
* whose behavior mimics a line in your favorite checkout stand.
* Classic CS describes the common behavior of a queue as FIFO.
* A Deque allows items to be added and removed from either end of
* the queue.
*
* @update gess4/20/98
*/
class NS_BASE nsDeque {
friend class nsDequeIterator;
public:
nsDeque(nsDequeFunctor& aMemDestroyer);
~nsDeque();
/**
* Returns the number of elements currently stored in
* this deque.
*
* @update gess4/18/98
* @param
* @return int contains element count
*/
PRInt32 GetSize() const;
/**
* Pushes new member onto the end of the deque
*
* @update gess4/18/98
* @param ptr to object to store
* @return *this
*/
nsDeque& Push(void* anItem);
/**
* Remove and return the first item in the container.
*
* @update gess4/18/98
* @param none
* @return ptr to first item in container
*/
void* Pop(void);
/**
* Return topmost item without removing it.
*
* @update gess4/18/98
* @param none
* @return ptr to first item in container
*/
void* Peek(void);
/**
* Remove and return the last item in the container.
*
* @update gess4/18/98
* @param none
* @return ptr to first item in container
*/
void* PopBack(void);
/**
* Remove all items from container without destroying them
*
* @update gess4/18/98
* @param
* @return
*/
nsDeque& Empty();
/**
* Remove and delete all items from container
*
* @update gess4/18/98
* @param
* @return
*/
nsDeque& Erase();
/**
* Creates a new iterator, init'ed to start of container
*
* @update gess4/18/98
* @return new dequeIterator
*/
nsDequeIterator Begin() const;
/**
* Creates a new iterator, init'ed to end of container
*
* @update gess4/18/98
* @return new dequeIterator
*/
nsDequeIterator End() const;
/**
* Call this method when you wanto to iterate all the
* members of the container, passing a functor along
* to call your code.
*
* @update gess4/20/98
* @param aFunctor object to call for each member
* @return *this
*/
void ForEach(nsDequeFunctor& aFunctor) const;
/**
* Call this method when you wanto to iterate all the
* members of the container, passing a functor along
* to call your code. This process will interupt if
* your function returns a null to this iterator.
*
* @update gess4/20/98
* @param aFunctor object to call for each member
* @return *this
*/
const void* FirstThat(nsDequeFunctor& aFunctor) const;
/**
* Perform automated selftest on the deque
*
* @update gess4/18/98
* @param
* @return
*/
static void SelfTest();
protected:
PRInt32 mSize;
PRInt32 mCapacity;
PRInt32 mOrigin;
nsDequeFunctor& mMemDestroyer;
void** mData;
private:
enum {eGrowthDelta=64};
/**
* Simple default constructor (PRIVATE)
*
* @update gess4/18/98
* @param
* @return
*/
nsDeque();
/**
* Copy constructor (PRIVATE)
*
* @update gess4/18/98
* @param
* @return
*/
nsDeque(const nsDeque& other);
/**
* Deque assignment operator (PRIVATE)
*
* @update gess4/18/98
* @param another deque
* @return *this
*/
nsDeque& operator=(const nsDeque& anOther);
/**
* PRIVATE method used to retrieve ptr to
* ith member in container. DOesn't remove
* that item.
*
* @update gess4/18/98
* @param index of desired item
* @return ptr to ith element in list
*/
void* ObjectAt(int anIndex) const;
};
/******************************************************
* Here comes the nsDequeIterator class...
******************************************************/
class NS_BASE nsDequeIterator {
public:
/**
* DequeIterator is an object that knows how to iterate (forward and backward)
* a Deque. Normally, you don't need to do this, but there are some special
* cases where it is pretty handy, so here you go.
*
* @update gess4/18/98
* @param aQueue is the deque object to be iterated
* @param anIndex is the starting position for your iteration
*/
nsDequeIterator(const nsDeque& aQueue,int anIndex=0);
/**
* DequeIterator is an object that knows how to iterate (forward and backward)
* a Deque. Normally, you don't need to do this, but there are some special
* cases where it is pretty handy, so here you go.
*
* @update gess4/18/98
* @param aQueue is the deque object to be iterated
* @param anIndex is the starting position for your iteration
*/
nsDequeIterator(const nsDequeIterator& aCopy);
/**
* Moves iterator to first element in deque
* @update gess4/18/98
* @return this
*/
nsDequeIterator& First(void);
/**
* Standard assignment operator for deque
* @update gess4/18/98
* @param
* @return
*/
nsDequeIterator& operator=(const nsDequeIterator& aCopy);
/**
* preform ! operation against to iterators to test for equivalence
* (or lack thereof)!
*
* @update gess4/18/98
* @param anIter is the object to be compared to
* @return TRUE if NOT equal.
*/
PRBool operator!=(nsDequeIterator& anIter);
/**
* Compare 2 iterators for equivalence.
*
* @update gess4/18/98
* @param anIter is the other iterator to be compared to
* @return TRUE if EQUAL
*/
PRBool operator<(nsDequeIterator& anIter);
/**
* Compare 2 iterators for equivalence.
*
* @update gess4/18/98
* @param anIter is the other iterator to be compared to
* @return TRUE if EQUAL
*/
PRBool operator==(nsDequeIterator& anIter);
/**
* Compare 2 iterators for equivalence.
*
* @update gess4/18/98
* @param anIter is the other iterator to be compared to
* @return TRUE if EQUAL
*/
PRBool operator>=(nsDequeIterator& anIter);
/**
* Pre-increment operator
*
* @update gess4/18/98
* @return object at preincremented index
*/
void* operator++();
/**
* Post-increment operator
*
* @update gess4/18/98
* @param param is ignored
* @return object at post-incremented index
*/
void* operator++(int);
/**
* Pre-decrement operator
*
* @update gess4/18/98
* @return object at pre-decremented index
*/
void* operator--();
/**
* Post-decrement operator
*
* @update gess4/18/98
* @param param is ignored
* @return object at post-decremented index
*/
void* operator--(int);
/**
* Retrieve the ptr to the iterators notion of current node
*
* @update gess4/18/98
* @return object at ith index
*/
void* GetCurrent(void);
/**
* Call this method when you wanto to iterate all the
* members of the container, passing a functor along
* to call your code.
*
* @update gess4/20/98
* @param aFunctor object to call for each member
* @return *this
*/
void ForEach(nsDequeFunctor& aFunctor) const;
/**
* Call this method when you wanto to iterate all the
* members of the container, passing a functor along
* to call your code.
*
* @update gess4/20/98
* @param aFunctor object to call for each member
* @return *this
*/
const void* FirstThat(nsDequeFunctor& aFunctor) const;
protected:
PRInt32 mIndex;
const nsDeque& mDeque;
};
#endif

View File

@@ -0,0 +1,51 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsIArena_h___
#define nsIArena_h___
#include "nscore.h"
#include "nsISupports.h"
#define NS_MIN_ARENA_BLOCK_SIZE 64
#define NS_DEFAULT_ARENA_BLOCK_SIZE 4096
/// Interface IID for nsIArena
#define NS_IARENA_IID \
{ 0xa24fdad0, 0x93b4, 0x11d1, \
{0x89, 0x5b, 0x00, 0x60, 0x08, 0x91, 0x1b, 0x81} }
/** Interface to a memory arena abstraction. Arena's use large blocks
* of memory to allocate smaller objects. Arena's provide no free
* operator; instead, all of the objects in the arena are deallocated
* by deallocating the arena (e.g. when it's reference count goes to
* zero)
*/
class nsIArena : public nsISupports {
public:
virtual void* Alloc(PRInt32 size) = 0;
};
/**
* Create a new arena using the desired block size for allocating the
* underlying memory blocks. The underlying memory blocks are allocated
* using the PR heap.
*/
extern NS_BASE nsresult NS_NewHeapArena(nsIArena** aInstancePtrResult,
PRInt32 aArenaBlockSize = 0);
#endif /* nsIArena_h___ */

View File

@@ -0,0 +1,77 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsIAtom_h___
#define nsIAtom_h___
#include "nscore.h"
#include "nsISupports.h"
class nsString;
class nsISizeOfHandler;
#define NS_IATOM_IID \
{ 0x3d1b15b0, 0x93b4, 0x11d1, \
{0x89, 0x5b, 0x00, 0x60, 0x08, 0x91, 0x1b, 0x81} }
/**
* A globally unique identfier. nsIAtom's can be compared for
* equality by using operator '=='. These objects are reference
* counted like other nsISupports objects. When you are done with
* the atom, NS_RELEASE it.
*/
class nsIAtom : public nsISupports {
public:
/**
* Translate the unicode string into the stringbuf.
*/
virtual void ToString(nsString& aString) const = 0;
/**
* Return a pointer to a zero terminated unicode string.
*/
virtual const PRUnichar* GetUnicode() const = 0;
/**
* Add the size, in bytes, of the atom to the handler.
*/
NS_IMETHOD SizeOf(nsISizeOfHandler* aHandler) const = 0;
};
/**
* Find an atom that matches the given iso-latin1 C string. The
* C string is translated into it's unicode equivalent.
*/
extern NS_BASE nsIAtom* NS_NewAtom(const char* isolatin1);
/**
* Find an atom that matches the given unicode string. The string is assumed
* to be zero terminated.
*/
extern NS_BASE nsIAtom* NS_NewAtom(const PRUnichar* unicode);
/**
* Find an atom that matches the given string.
*/
extern NS_BASE nsIAtom* NS_NewAtom(const nsString& aString);
/**
* Return a count of the total number of atoms currently
* alive in the system.
*/
extern NS_BASE nsrefcnt NS_GetNumberOfAtoms(void);
#endif /* nsIAtom_h___ */

View File

@@ -0,0 +1,57 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsIBaseStream_h___
#define nsIBaseStream_h___
#include "nscore.h"
#include "nsISupports.h"
/* 6ccb17a0-e95e-11d1-beae-00805f8a66dc */
#define NS_IBASESTREAM_IID \
{ 0x6ccb17a0, 0xe95e, 0x11d1, \
{0xbe, 0xae, 0x00, 0x80, 0x5f, 0x8a, 0x66, 0xdc} }
/** Abstract stream */
class nsIBaseStream : public nsISupports {
public:
/** Close the stream. */
NS_IMETHOD
Close(void) = 0;
};
/** Error codes */
//@{
// XXX fix up the values so they are not total hacks... MMP
/// End of file
#define NS_BASE_STREAM_EOF 0x80001001
/// Stream closed
#define NS_BASE_STREAM_CLOSED 0x80001002
/// Error from the operating system
#define NS_BASE_STREAM_OSERROR 0x80001003
/// Illegal arguments
#define NS_BASE_STREAM_ILLEGAL_ARGS 0x80001004
/// For unichar streams
#define NS_BASE_STREAM_NO_CONVERTER 0x80001005
/// For unichar streams
#define NS_BASE_STREAM_BAD_CONVERSION 0x80001006
//@}
#endif /* nsInputStream_h___ */

View File

@@ -0,0 +1,56 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsIByteBuffer_h___
#define nsIByteBuffer_h___
#include "nscore.h"
#include "nsISupports.h"
class nsIInputStream;
#define NS_IBYTE_BUFFER_IID \
{ 0xe4a6e4b0, 0x93b4, 0x11d1, \
{0x89, 0x5b, 0x00, 0x60, 0x08, 0x91, 0x1b, 0x81} }
/** Interface to a buffer that holds bytes */
class nsIByteBuffer : public nsISupports {
public:
/** @return length of buffer, i.e. how many bytes are currently in it. */
virtual PRInt32 GetLength() const = 0;
/** @return number of bytes allocated in the buffer */
virtual PRInt32 GetBufferSize() const = 0;
/** @return the buffer */
virtual char* GetBuffer() const = 0;
/** Grow buffer to aNewSize bytes. */
virtual PRBool Grow(PRInt32 aNewSize) = 0;
/** Fill the buffer with data from aStream. Don't grow the buffer, only
* read until length of buffer equals buffer size. */
virtual PRInt32 Fill(nsresult* aErrorCode, nsIInputStream* aStream,
PRInt32 aKeep) = 0;
};
/** Create a new byte buffer using the given buffer size. */
extern NS_BASE nsresult NS_NewByteBuffer(nsIByteBuffer** aInstancePtrResult,
nsISupports* aOuter,
PRInt32 aBufferSize = 0);
#endif /* nsIByteBuffer_h___ */

View File

@@ -0,0 +1,54 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsIInputStream_h___
#define nsIInputStream_h___
#include "nsIBaseStream.h"
#define NS_IINPUTSTREAM_IID \
{ 0x022396f0, 0x93b5, 0x11d1, \
{0x89, 0x5b, 0x00, 0x60, 0x08, 0x91, 0x1b, 0x81} }
/** Abstract byte input stream */
class nsIInputStream : public nsIBaseStream {
public:
/** Return the number of bytes in the stream
* @param aLength out parameter to hold the length
* of the stream. if an error occurs, the length
* will be undefined
* @return error status
*/
NS_IMETHOD
GetLength(PRInt32 *aLength) = 0;
/** Read data from the stream.
* @param aErrorCode the error code if an error occurs
* @param aBuf the buffer into which the data is read
* @param aOffset the start offset of the data
* @param aCount the maximum number of bytes to read
* @param aReadCount out parameter to hold the number of
* bytes read, eof if 0. if an error occurs, the
* read count will be undefined
* @return error status
*/
NS_IMETHOD
Read(char* aBuf, PRInt32 aOffset, PRInt32 aCount, PRInt32 *aReadCount) = 0;
};
#endif /* nsInputStream_h___ */

View File

@@ -0,0 +1,46 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsIOutputStream_h___
#define nsIOutputStream_h___
#include "nsIBaseStream.h"
/* 7f13b870-e95f-11d1-beae-00805f8a66dc */
#define NS_IOUTPUTSTREAM_IID \
{ 0x7f13b870, 0xe95f, 0x11d1, \
{0xbe, 0xae, 0x00, 0x80, 0x5f, 0x8a, 0x66, 0xdc} }
/** Abstract byte output stream */
class nsIOutputStream : public nsIBaseStream {
public:
/** Write data into the stream.
* @param aBuf the buffer into which the data is read
* @param aOffset the start offset of the data
* @param aCount the maximum number of bytes to read
* @param aWriteCount out parameter to hold the number of
* bytes written. if an error occurs, the writecount
* is undefined
* @return error status
*/
NS_IMETHOD
Write(const char* aBuf, PRInt32 aOffset, PRInt32 aCount, PRInt32 *aWriteCount) = 0;
};
#endif /* nsOutputStream_h___ */

View File

@@ -0,0 +1,94 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsITimer_h___
#define nsITimer_h___
#include "nscore.h"
#include "nsISupports.h"
class nsITimer;
class nsITimerCallback;
// Implementations of nsITimer should be written such that there are no limitations
// on what can be called by the TimerCallbackFunc. On platforms like the Macintosh this
// means that callback functions must be called from the main event loop NOT from
// an interrupt.
/// Signature of timer callback function
typedef void
(*nsTimerCallbackFunc) (nsITimer *aTimer, void *aClosure);
/// Interface IID for nsITimer
#define NS_ITIMER_IID \
{ 0x497eed20, 0xb740, 0x11d1, \
{ 0x9b, 0xc3, 0x00, 0x60, 0x08, 0x8c, 0xa6, 0xb3 } }
/**
* Timer class, used to invoke a function or method after a fixed
* millisecond interval. <B>Note that this interface is subject to
* change!</B>
*/
class nsITimer : public nsISupports {
public:
/**
* Initialize a timer to fire after the given millisecond interval.
* This version takes a function to call and a closure to pass to
* that function.
*
* @param aFunc - The function to invoke
* @param aClosure - an opaque pointer to pass to that function
* @param aRepeat - (Not yet implemented) One-shot or repeating
* @param aDelay - The millisecond interval
* @result - NS_OK if this operation was successful
*/
virtual nsresult Init(nsTimerCallbackFunc aFunc,
void *aClosure,
// PRBool aRepeat,
PRUint32 aDelay)=0;
/**
* Initialize a timer to fire after the given millisecond interval.
* This version takes an interface of type <code>nsITimerCallback</code>.
* The <code>Notify</code> method of this method is invoked.
*
* @param aCallback - The interface to notify
* @param aRepeat - (Not yet implemented) One-shot or repeating
* @param aDelay - The millisecond interval
* @result - NS_OK if this operation was successful
*/
virtual nsresult Init(nsITimerCallback *aCallback,
// PRBool aRepeat,
PRUint32 aDelay)=0;
/// Cancels the timeout
virtual void Cancel()=0;
/// @return the millisecond delay of the timeout
virtual PRUint32 GetDelay()=0;
/// Change the millisecond interval for the timeout
virtual void SetDelay(PRUint32 aDelay)=0;
/// @return the opaque pointer
virtual void* GetClosure()=0;
};
/** Factory method for creating an nsITimer */
extern NS_BASE nsresult NS_NewTimer(nsITimer** aInstancePtrResult);
#endif

View File

@@ -0,0 +1,41 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsITimerCallback_h___
#define nsITimerCallback_h___
#include "nscore.h"
#include "nsISupports.h"
class nsITimer;
/// Interface IID for nsITimerCallback
#define NS_ITIMERCALLBACK_IID \
{ 0x5079b3a0, 0xb743, 0x11d1, \
{ 0x9b, 0xc3, 0x00, 0x60, 0x08, 0x8c, 0xa6, 0xb3 } }
/**
* Interface implemented by users of the nsITimer class. An instance
* of this interface is passed in when creating a timer. The Notify()
* method of that instance is invoked after the specified delay.
*/
class nsITimerCallback : public nsISupports {
public:
virtual void Notify(nsITimer *timer)=0;
};
#endif

View File

@@ -0,0 +1,46 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsIUnicharBuffer_h___
#define nsIUnicharBuffer_h___
#include "nscore.h"
#include "nsISupports.h"
class nsIUnicharInputStream;
#define NS_IUNICHAR_BUFFER_IID \
{ 0x14cf6970, 0x93b5, 0x11d1, \
{0x89, 0x5b, 0x00, 0x60, 0x08, 0x91, 0x1b, 0x81} }
/// Interface to a buffer that holds unicode characters
class nsIUnicharBuffer : public nsISupports {
public:
virtual PRInt32 GetLength() const = 0;
virtual PRInt32 GetBufferSize() const = 0;
virtual PRUnichar* GetBuffer() const = 0;
virtual PRBool Grow(PRInt32 aNewSize) = 0;
virtual PRInt32 Fill(nsresult* aErrorCode, nsIUnicharInputStream* aStream,
PRInt32 aKeep) = 0;
};
/// Factory method for nsIUnicharBuffer.
extern NS_BASE nsresult
NS_NewUnicharBuffer(nsIUnicharBuffer** aInstancePtrResult,
nsISupports* aOuter,
PRInt32 aBufferSize = 0);
#endif /* nsIUnicharBuffer_h___ */

View File

@@ -0,0 +1,98 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsIUnicharInputStream_h___
#define nsIUnicharInputStream_h___
#include "nsIInputStream.h"
class nsString;
#define NS_IUNICHAR_INPUT_STREAM_IID \
{ 0x2d97fbf0, 0x93b5, 0x11d1, \
{0x89, 0x5b, 0x00, 0x60, 0x08, 0x91, 0x1b, 0x81} }
#define NS_IB2UCONVERTER_IID \
{ 0x35e40290, 0x93b5, 0x11d1, \
{0x89, 0x5b, 0x00, 0x60, 0x08, 0x91, 0x1b, 0x81} }
/// Enumeration of character set ids.
enum nsCharSetID {
eCharSetID_IsoLatin1 = 0,
eCharSetID_UTF8,
eCharSetID_ShiftJis
// XXX more i'm sure...
};
/** Abstract unicode character input stream
* @see nsIInputStream
*/
class nsIUnicharInputStream : public nsISupports {
public:
NS_IMETHOD Read(PRUnichar* aBuf,
PRInt32 aOffset,
PRInt32 aCount,
PRInt32 *aReadCount) = 0;
NS_IMETHOD Close() = 0;
};
/**
* Create a nsIUnicharInputStream that wraps up a string. Data is fed
* from the string out until the done. When this object is destroyed
* it destroyes the string (so make a copy if you don't want it doing
* that)
*/
extern NS_BASE nsresult
NS_NewStringUnicharInputStream(nsIUnicharInputStream** aInstancePtrResult,
nsString* aString);
/// Abstract interface for converting from bytes to unicode characters
class nsIB2UConverter : public nsISupports {
public:
/** aDstLen is updated to indicate how much data was translated into
* aDst; aSrcLen is updated to indicate how much data was used in
* the source buffer.
*/
virtual PRInt32 Convert(PRUnichar* aDst,
PRInt32 aDstOffset,
PRInt32& aDstLen,
const char* aSrc,
PRInt32 aSrcOffset,
PRInt32& aSrcLen) = 0;
};
/** Create a new nsUnicharInputStream that provides a converter for the
* byte input stream aStreamToWrap. If no converter can be found then
* nsnull is returned and the error code is set to
* NS_INPUTSTREAM_NO_CONVERTER.
*/
extern NS_BASE nsresult
NS_NewConverterStream(nsIUnicharInputStream** aInstancePtrResult,
nsISupports* aOuter,
nsIInputStream* aStreamToWrap,
PRInt32 aBufferSize = 0,
nsCharSetID aCharSet = eCharSetID_IsoLatin1);
/** Create a new nsB2UConverter for the given character set. When given
* nsnull, the converter for iso-latin1 to unicode is provided. If no
* converter can be found, nsnull is returned.
*/
extern NS_BASE nsresult
NS_NewB2UConverter(nsIB2UConverter** aInstancePtrResult,
nsISupports* aOuter,
nsCharSetID aCharSet = eCharSetID_IsoLatin1);
#endif /* nsUnicharInputStream_h___ */

View File

@@ -0,0 +1,423 @@
/**
* This file defines the binary tree class and it
* nsNode child class.
*
* This simple version stores nodes, and the
* nodes store void* ptrs.
*
* @update gess 4/11/98
* @param
* @return
*/
#include "nsRBTree.h"
/**************************************************
Here comes the nsRBTree class...
*************************************************/
/**
* nsRBTree constructor
*
* @update gess 4/11/98
*/
nsRBTree::nsRBTree() : nsBTree() {
mRoot=0;
}
/**
* nsRBTree constructor
*
* @update gess 4/11/98
*/
nsRBTree::nsRBTree(const nsRBTree& aCopy) : nsBTree(aCopy) {
mRoot=aCopy.mRoot;
}
/**
* nsRBTree destructor
*
* @update gess 4/11/98
* @param
* @return
*/
nsRBTree::~nsRBTree(){
if(mRoot){
//walk the tree and destroy the children.
}
}
/**
* Given a node, we're supposed to add it into
* our tree.
*
* @update gess 4/11/98
* @param
* @return
*/
nsNode* nsRBTree::Add(nsNode& aNode){
nsBTree::Add(aNode);
nsNode* node1=&aNode;
nsNode* node2=0;
node1->mColor=nsNode::eRed;
while((node1!=mRoot) && (node1->mParent->mColor==nsNode::eRed)) {
if(node1->mParent==node1->mParent->mParent->mLeft) {
node2=node1->mParent->mParent->mLeft;
if(node2->mColor==nsNode::eRed) {
node1->mParent->mColor=nsNode::eBlack;
node2->mColor=nsNode::eBlack;
node1->mParent->mParent->mColor=nsNode::eRed;
node1=node1->mParent->mParent;
}
else {
if(node1==node1->mParent->mRight) {
node1=node1->mParent;
ShiftLeft(*node1);
}
node1->mParent->mColor=nsNode::eBlack;
node1->mParent->mParent->mColor=nsNode::eRed;
ShiftRight(*node1->mParent->mParent);
}
}
else {
node2=node1->mParent->mParent->mRight;
if (node2->mColor==nsNode::eRed){
node1->mParent->mColor=nsNode::eBlack;
node2->mColor=nsNode::eBlack;
node1->mParent->mParent->mColor=nsNode::eRed;
node1=node1->mParent->mParent;
}
else {
if (node1==node1->mParent->mLeft) {
node1=node1->mParent;
ShiftRight(*node1);
}
node1->mParent->mColor=nsNode::eBlack;
node1->mParent->mParent->mColor=nsNode::eRed;
ShiftLeft(*node1->mParent->mParent);
}
}
}
mRoot->mColor=nsNode::eBlack;
return &aNode;
}
/**
* Retrive the first node in the tree
*
* @update gess 4/11/98
* @param
* @return
*/
nsNode* nsRBTree::First(){
nsNode* result=First(*mRoot);
return result;
}
/**
* Retrieve the first node given a starting node
*
* @update gess 4/11/98
* @param aNode --
* @return node ptr or null
*/
nsNode* nsRBTree::First(nsNode& aNode){
nsNode* result=0;
if(mRoot) {
result=mRoot;
while(result->GetLeftNode()) {
result=result->GetLeftNode();
}
}
return result;
}
/**
* Find the last node in the tree
*
* @update gess 4/11/98
* @param
* @return node ptr or null
*/
nsNode* nsRBTree::Last(){
nsNode* result=Last(*mRoot);
return result;
}
/**
* Find the last node from a given node
*
* @update gess 4/11/98
* @param aNode -- node ptr to start from
* @return node ptr or null
*/
nsNode* nsRBTree::Last(nsNode& aNode){
nsNode* result=0;
if(mRoot) {
result=mRoot;
while(result->GetRightNode()) {
result=result->GetRightNode();
}
}
return result;
}
/**
* Retrieve the node that preceeds the given node
*
* @update gess 4/11/98
* @param aNode -- node to find precedent of
* @return preceeding node ptr, or null
*/
nsNode* nsRBTree::Before(nsNode& aNode){
if(aNode.GetLeftNode())
return Last(*aNode.GetLeftNode());
//otherwise...
nsNode* node1=&aNode;
nsNode* node2=aNode.GetParentNode();
while((node2) && (node1==node2->GetLeftNode())) {
node1=node2;
node2=node2->GetParentNode();
}
return node2;
}
/**
* Retrieve a ptr to the node following the given node
*
* @update gess 4/11/98
* @param aNode -- node to find successor node from
* @return node ptr or null
*/
nsNode* nsRBTree::After(nsNode& aNode){
if(aNode.GetRightNode())
return First(*aNode.GetRightNode());
//otherwise...
nsNode* node1=&aNode;
nsNode* node2=aNode.GetParentNode();
while((node2) && (node1==node2->GetRightNode())) {
node1=node2;
node2=node2->GetParentNode();
}
return node2;
}
/**
* Find a (given) node in the tree
*
* @update gess 4/11/98
* @param node to find in the tree
* @return node ptr (if found) or null
*/
nsNode* nsRBTree::Find(nsNode& aNode){
nsNode* result=mRoot;
while((result) && (!((*result)==aNode))) {
if(aNode<*result)
result=result->mLeft;
else result=result->mRight;
}
return result;
}
/**
* Causes a shift to the left, to keep the
* underlying RB data in balance
*
* @update gess 4/11/98
* @param
* @return this
*/
nsRBTree& nsRBTree::ShiftLeft(nsNode& aNode){
nsNode* temp= aNode.mRight;
aNode.mRight=temp->mLeft;
if(temp->mLeft)
temp->mRight->mParent=&aNode;
temp->mParent= aNode.mParent;
if (aNode.mParent) {
if (&aNode==aNode.mParent->mLeft)
aNode.mParent->mLeft=temp;
else aNode.mParent->mRight=temp;
}
else mRoot=temp;
temp->mLeft=&aNode;;
aNode.mParent=temp;
return *this;
}
/**
* Causes a shift right to occur, to keep the
* underlying RB data in balance
*
* @update gess 4/11/98
* @param aNode -- node at which to perform shift
* @return this
*/
nsRBTree& nsRBTree::ShiftRight(nsNode& aNode){
nsNode* temp=aNode.mLeft;
aNode.mLeft=temp->mRight;
if(temp->mRight)
temp->mRight->mParent=&aNode;
temp->mParent=aNode.mParent;
if(aNode.mParent){
if(&aNode==aNode.mParent->mRight)
aNode.mParent->mRight=temp;
else aNode.mParent->mLeft=temp;
}
else mRoot=temp;
temp->mRight=&aNode;
aNode.mParent=temp;
return *this;
}
/**
* Rebalances tree around the given node. This only
* needs to be called after a node is deleted.
*
* @update gess 4/11/98
* @param aNode -- node to balance around
* @return this
*/
nsBTree& nsRBTree::ReBalance(nsNode& aNode){
nsNode* node1=&aNode;
nsNode* node2=0;
while ((node1!=mRoot) && (node1->mColor==nsNode::eBlack)) {
if(node1==node1->mParent->mLeft) {
node2=node1->mParent->mRight;
if(node2->mColor==nsNode::eRed) {
node2->mColor=nsNode::eBlack;
node1->mParent->mColor=nsNode::eRed;
ShiftLeft(*node1->mParent);
node2=node1->mParent->mRight;
}
if((node2->mLeft->mColor == nsNode::eBlack) &&
(node2->mRight->mColor == nsNode::eBlack)) {
node2->mColor=nsNode::eRed;
node1=node1->mParent;
}
else {
if(node2->mRight->mColor == nsNode::eBlack) {
node2->mLeft->mColor=nsNode::eBlack;
node2->mColor=nsNode::eRed;
ShiftRight(*node2);
node2=node1->mParent->mRight;
}
node2->mColor=node1->mParent->mColor;
node1->mParent->mColor=nsNode::eBlack;
node2->mRight->mColor=nsNode::eBlack;
ShiftLeft(*node1->mParent);
node1=mRoot;
} //else
}
else {
node2=node1->mParent->mLeft;
if(node2->mColor==nsNode::eRed) {
node2->mColor=nsNode::eBlack;
node1->mParent->mColor=nsNode::eRed;
ShiftRight(*node1->mParent);
node2=node1->mParent->mLeft;
}
if((node2->mRight->mColor == nsNode::eBlack) &&
(node2->mLeft->mColor == nsNode::eBlack)) {
node2->mColor=nsNode::eRed;
node1=node1->mParent;
}
else {
if(node2->mLeft->mColor == nsNode::eBlack){
node2->mRight->mColor=nsNode::eBlack;
node2->mColor=nsNode::eRed;
ShiftLeft(*node2);
node2=node1->mParent->mLeft;
}
node2->mColor=node1->mParent->mColor;
node1->mParent->mColor=nsNode::eBlack;
node2->mLeft->mColor=nsNode::eBlack;
ShiftRight(*node1->mParent);
node1=mRoot;
} //else
} //if
} //while
node1->mColor=nsNode::eBlack;
return *this;
}
/**************************************************
Here comes the nsRBTreeIterator class...
*************************************************/
/**
*
*
* @update gess 4/11/98
* @param
* @return
*/
nsRBTreeIterator::nsRBTreeIterator(const nsRBTree& aTree) : mTree(aTree) {
}
/**
* copy constructor
*
* @update gess 4/11/98
* @param aCopy is the object you want to copy from
* @return newly constructed object
*/
nsRBTreeIterator::nsRBTreeIterator(const nsRBTreeIterator& aCopy) : mTree(aCopy.mTree) {
}
/**
* Destructor method
*
* @update gess 4/11/98
*/
nsRBTreeIterator::~nsRBTreeIterator(){
}
/**
* This method iterates over the tree, calling
* aFunctor for each node.
*
* @update gess 4/11/98
* @param aFunctor -- object to call for each node
* @param aNode -- node at which to start iteration
* @return this
*/
const nsRBTreeIterator& nsRBTreeIterator::ForEach(nsNodeFunctor& aFunctor) const{
mTree.ForEach(aFunctor);
return *this;
}

223
mozilla/base/src/nsRBTree.h Normal file
View File

@@ -0,0 +1,223 @@
/**
* This file defines the binary tree class and its
* nsNode child class.
*
* This simple version stores nodes, and the
* nodes store void* ptrs.
*
* @update gess 4/11/98
* @param
* @return
*/
/**
* MODULE NOTES
* @update gess 4/11/98
*
* This file declares the nsRBTree (red/black tree).
* Red/black trees are auto-balancing binary trees.
*
* To use this class, define a subclass of nsNode
* which stores your data type. It's important that
* you overload the following methods:
*
* virtual PRBool operator<()
* virtual PRBool operator==()
*
*/
#ifndef _nsRBTree
#define _nsRBTree
#include "nsBTree.h"
/**
* Here comes the main event: our nsRBTree (red/black tree).
* Red/Black trees are autobalancing binary trees.
*
* @update gess4/20/98
*/
class NS_BASE nsRBTree : public nsBTree {
public:
friend class NS_BASE nsRBTreeIterator;
/**
* nsRBTree constructor
*
* @update gess 4/11/98
*/
nsRBTree();
/**
* nsRBTree constructor
*
* @update gess 4/11/98
*/
nsRBTree(const nsRBTree& aCopy);
/**
* nsRBTree destructor
*
* @update gess 4/11/98
*/
virtual ~nsRBTree();
/**
* Given a node, we're supposed to add it into
* our tree.
*
* @update gess 4/11/98
* @param
* @return
*/
nsNode* Add(nsNode& aNode);
/**
* Retrive the first node in the tree
*
* @update gess 4/11/98
* @param
* @return
*/
nsNode* First(void);
/**
* Retrieve the first node given a starting node
*
* @update gess 4/11/98
* @param aNode --
* @return node ptr or null
*/
nsNode* First(nsNode& aNode);
/**
* Find the last node in the tree
*
* @update gess 4/11/98
* @param
* @return node ptr or null
*/
nsNode* Last(void);
/**
* Find the last node from a given node
*
* @update gess 4/11/98
* @param aNode -- node ptr to start from
* @return node ptr or null
*/
nsNode* Last(nsNode& aNode);
/**
* Retrieve the node that preceeds the given node
*
* @update gess 4/11/98
* @param aNode -- node to find precedent of
* @return preceeding node ptr, or null
*/
nsNode* Before(nsNode& aNode);
/**
* Retrieve a ptr to the node following the given node
*
* @update gess 4/11/98
* @param aNode -- node to find successor node from
* @return node ptr or null
*/
nsNode* After(nsNode& aNode);
/**
* Find a (given) node in the tree
*
* @update gess 4/11/98
* @param node to find in the tree
* @return node ptr (if found) or null
*/
nsNode* Find(nsNode& aNode);
private:
/**
* Causes a shift to the left, to keep the
* underlying RB data in balance
*
* @update gess 4/11/98
* @param
* @return this
*/
nsRBTree& ShiftLeft(nsNode& aNode);
/**
* Causes a shift right to occur, to keep the
* underlying RB data in balance
*
* @update gess 4/11/98
* @param aNode -- node at which to perform shift
* @return this
*/
nsRBTree& ShiftRight(nsNode& aNode);
/**
* Rebalances tree around the given node. This only
* needs to be called after a node is deleted.
*
* @update gess 4/11/98
* @param aNode -- node to balance around
* @return this
*/
virtual nsBTree& ReBalance(nsNode& aNode);
};
class NS_BASE nsRBTreeIterator {
public:
/**
* TreeIterator constructor
*
* @update gess 4/11/98
* @param
* @return
*/
nsRBTreeIterator(const nsRBTree& aTree);
/**
* TreeIterator constructor
*
* @update gess 4/11/98
* @param
* @return
*/
nsRBTreeIterator(const nsRBTreeIterator& aCopy);
/**
* tree iterator destructor
*
* @update gess 4/11/98
* @param
* @return
*/
~nsRBTreeIterator();
/**
* This method iterates over the tree, calling
* aFunctor for each node.
*
* @update gess 4/11/98
* @param aFunctor -- object to call for each node
* @param aNode -- node at which to start iteration
* @return this
*/
const nsRBTreeIterator& ForEach(nsNodeFunctor& aFunctor) const;
protected:
const nsRBTree& mTree;
};
#endif

View File

@@ -0,0 +1,121 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#include "nsISizeOfHandler.h"
#include "plhash.h"
static NS_DEFINE_IID(kISizeOfHandlerIID, NS_ISIZEOF_HANDLER_IID);
class nsSizeOfHandler : public nsISizeOfHandler {
public:
nsSizeOfHandler();
~nsSizeOfHandler();
// nsISupports
NS_DECL_ISUPPORTS
// nsISizeOfHandler
NS_IMETHOD Add(size_t aSize);
virtual PRBool HaveSeen(void* anObject);
NS_IMETHOD GetSize(PRUint32& aResult);
protected:
PRUint32 mTotalSize;
PLHashTable* mTable;
};
static PLHashNumber
HashKey(void* key)
{
return (PLHashNumber) key;
}
static PRIntn
CompareKeys(void* key1, void* key2)
{
return key1 == key2;
}
nsSizeOfHandler::nsSizeOfHandler()
{
NS_INIT_REFCNT();
mTotalSize = 0;
mTable = PL_NewHashTable(8, (PLHashFunction) HashKey,
(PLHashComparator) CompareKeys,
(PLHashComparator) nsnull,
nsnull, nsnull);
}
nsSizeOfHandler::~nsSizeOfHandler()
{
if (nsnull != mTable) {
PL_HashTableDestroy(mTable);
}
}
NS_IMPL_ISUPPORTS(nsSizeOfHandler, kISizeOfHandlerIID)
NS_IMETHODIMP
nsSizeOfHandler::Add(size_t aSize)
{
mTotalSize += aSize;
return NS_OK;
}
PRBool
nsSizeOfHandler::HaveSeen(void* anObject)
{
if (nsnull == mTable) {
// When we run out of memory, HaveSeen returns PR_TRUE to stop
// wasting time.
return PR_TRUE;
}
if (nsnull != anObject) {
PRInt32 hashCode = (PRInt32) anObject;
PLHashEntry** hep = PL_HashTableRawLookup(mTable, hashCode, anObject);
PLHashEntry* he = *hep;
if (nsnull != he) {
return PR_TRUE;
}
he = PL_HashTableRawAdd(mTable, hep, hashCode, anObject, anObject);
if (nsnull == he) {
// When we run out of memory, HaveSeen returns PR_TRUE to stop
// wasting time.
return PR_TRUE;
}
return PR_FALSE;
}
return PR_TRUE;
}
NS_IMETHODIMP
nsSizeOfHandler::GetSize(PRUint32& aResult)
{
aResult = mTotalSize;
return NS_OK;
}
NS_BASE nsresult
NS_NewSizeOfHandler(nsISizeOfHandler** aInstancePtrResult)
{
nsISizeOfHandler *it = new nsSizeOfHandler();
if (it == nsnull) {
return NS_ERROR_OUT_OF_MEMORY;
}
return it->QueryInterface(kISizeOfHandlerIID, (void **) aInstancePtrResult);
}

File diff suppressed because it is too large Load Diff

790
mozilla/base/src/nsString.h Normal file
View File

@@ -0,0 +1,790 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
/*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/***********************************************************************
MODULE NOTES:
A. There are two philosophies to building string classes:
1. Hide the underlying buffer & offer API's allow indirect iteration
2. Reveal underlying buffer, risk corruption, but gain performance
We chose the second option for performance reasons.
B Our internal buffer always holds capacity+1 bytes.
***********************************************************************/
#ifndef _NSSTRING
#define _NSSTRING
#include "prtypes.h"
#include "nscore.h"
#include "nsIAtom.h"
#include <iostream.h>
#include <stdio.h>
class nsISizeOfHandler;
class NS_BASE nsString {
public:
/**
* Default constructor. Note that we actually allocate a small buffer
* to begin with. This is because the "philosophy" of the string class
* was to allow developers direct access to the underlying buffer for
* performance reasons.
*/
nsString();
/**
* This constructor accepts an isolatin string
* @param anISOLatin1 is a ptr to a 1-byte cstr
*/
nsString(const char* anISOLatin1);
/**
* This is our copy constructor
* @param reference to another nsString
*/
nsString(const nsString&);
/**
* Constructor from a unicode string
* @param anicodestr pts to a unicode string
*/
nsString(const PRUnichar* aUnicode);
/**
* Virtual Destructor
*/
virtual ~nsString();
/**
* Retrieve the length of this string
* @return string length
*/
PRInt32 Length() const { return mLength; }
/**
* Sets the new length of the string.
* @param aLength is new string length.
* @return nada
*/
void SetLength(PRInt32 aLength);
/**
* This method truncates this string to given length.
*
* @param anIndex -- new length of string
* @return nada
*/
void Truncate(PRInt32 anIndex=0);
/**
* This method gets called when the internal buffer needs
* to grow to a given size.
* @param aNewLength -- new capacity of string
* @return void
*/
virtual void EnsureCapacityFor(PRInt32 aNewLength);
/**
*
* @param
*/
virtual void SizeOf(nsISizeOfHandler* aHandler) const;
/**
* Determine whether or not the characters in this
* string are in sorted order.
*
* @return TRUE if ordered.
*/
PRBool IsOrdered(void) const;
/**********************************************************************
Accessor methods...
*********************************************************************/
/**
* Retrieve pointer to internal string value
* @return PRUnichar* to internal string
*/
const PRUnichar* GetUnicode(void) const;
/**
*
* @param
* @return
*/
operator PRUnichar*() const;
/**
* Retrieve unicode char at given index
* @param offset into string
* @return PRUnichar* to internal string
*/
PRUnichar operator()(PRInt32 anIndex) const;
/**
* Retrieve reference to unicode char at given index
* @param offset into string
* @return PRUnichar& from internal string
*/
PRUnichar& operator[](PRInt32 anIndex) const;
/**
* Retrieve reference to unicode char at given index
* @param offset into string
* @return PRUnichar& from internal string
*/
PRUnichar& CharAt(PRInt32 anIndex) const;
/**
* Retrieve reference to first unicode char in string
* @return PRUnichar from internal string
*/
PRUnichar& First() const;
/**
* Retrieve reference to last unicode char in string
* @return PRUnichar from internal string
*/
PRUnichar& Last() const;
/**********************************************************************
String creation methods...
*********************************************************************/
/**
* Create a new string by appending given string to this
* @param aString -- 2nd string to be appended
* @return new string
*/
nsString operator+(const nsString& aString);
/**
* create a new string by adding this to the given buffer.
* @param anISOLatin1 is a ptr to cstring to be added to this
* @return newly created string
*/
nsString operator+(const char* anISOLatin1);
/**
* create a new string by adding this to the given char.
* @param aChar is a char to be added to this
* @return newly created string
*/
nsString operator+(char aChar);
/**
* create a new string by adding this to the given buffer.
* @param aStr unichar buffer to be added to this
* @return newly created string
*/
nsString operator+(const PRUnichar* aBuffer);
/**
* create a new string by adding this to the given char.
* @param aChar is a unichar to be added to this
* @return newly created string
*/
nsString operator+(PRUnichar aChar);
/**
* Converts all chars in internal string to lower
*/
void ToLowerCase();
/**
* Converts all chars in given string to lower
*/
void ToLowerCase(nsString& aString) const;
/**
* Converts all chars in given string to upper
*/
void ToUpperCase();
/**
* Converts all chars in internal string to upper
*/
void ToUpperCase(nsString& aString) const;
/**
* Creates a duplicate clone (ptr) of this string.
* @return ptr to clone of this string
*/
nsString* ToNewString() const;
/**
* Creates an ISOLatin1 clone of this string
* @return ptr to new isolatin1 string
*/
char* ToNewCString() const;
/**
* Copies data from internal buffer onto given char* buffer
* @param aBuf is the buffer where data is stored
* @param aBuflength is the max # of chars to move to buffer
* @return ptr to given buffer
*/
char* ToCString(char* aBuf,PRInt32 aBufLength) const;
/**
* Copies contents of this onto given string.
* @param aString to hold copy of this
* @return nada.
*/
void Copy(nsString& aString) const;
/**
* Creates an unichar clone of this string
* @return ptr to new unichar string
*/
PRUnichar* ToNewUnicode() const;
/**
* Perform string to float conversion.
* @param aErrorCode will contain error if one occurs
* @return float rep of string value
*/
float ToFloat(PRInt32* aErrorCode) const;
/**
* Perform string to int conversion.
* @param aErrorCode will contain error if one occurs
* @return int rep of string value
*/
PRInt32 ToInteger(PRInt32* aErrorCode) const;
/**********************************************************************
String manipulation methods...
*********************************************************************/
/**
* assign given PRUnichar* to this string
* @param anISOLatin1: buffer to be assigned to this
* @param alength is the length of the given str (or -1)
if you want me to determine its length
* @return this
*/
nsString& SetString(const PRUnichar* aStr,PRInt32 aLength=-1);
/**
* assign given char* to this string
* @param anISOLatin1: buffer to be assigned to this
* @param alength is the length of the given str (or -1)
if you want me to determine its length
* @return this
*/
nsString& SetString(const char* anISOLatin1,PRInt32 aLength=-1);
/**
* assign given string to this one
* @param aString: string to be added to this
* @return this
*/
nsString& operator=(const nsString& aString);
/**
* assign given char* to this string
* @param anISOLatin1: buffer to be assigned to this
* @return this
*/
nsString& operator=(const char* anISOLatin1);
/**
* assign given char to this string
* @param aChar: char to be assignd to this
* @return this
*/
nsString& operator=(char aChar);
/**
* assign given unichar* to this string
* @param aBuffer: unichar buffer to be assigned to this
* @return this
*/
nsString& operator=(const PRUnichar* aBuffer);
/**
* assign given char to this string
* @param aChar: char to be assignd to this
* @return this
*/
nsString& operator=(PRUnichar aChar);
/**
* append given string to this string
* @param aString : string to be appended to this
* @return this
*/
nsString& operator+=(const nsString& aString);
/**
* append given buffer to this string
* @param anISOLatin1: buffer to be appended to this
* @return this
*/
nsString& operator+=(const char* anISOLatin1);
/**
* append given buffer to this string
* @param aBuffer: buffer to be appended to this
* @return this
*/
nsString& operator+=(const PRUnichar* aBuffer);
/**
* append given char to this string
* @param aChar: char to be appended to this
* @return this
*/
nsString& operator+=(PRUnichar aChar);
/**
* append given string to this string
* @param aString : string to be appended to this
* @param alength is the length of the given str (or -1)
if you want me to determine its length
* @return this
*/
nsString& Append(const nsString& aString,PRInt32 aLength=-1);
/**
* append given string to this string
* @param aString : string to be appended to this
* @param alength is the length of the given str (or -1)
if you want me to determine its length
* @return this
*/
nsString& Append(const char* anISOLatin1,PRInt32 aLength=-1);
/**
* append given string to this string
* @param aString : string to be appended to this
* @return this
*/
nsString& Append(char aChar);
/**
* append given unichar buffer to this string
* @param aString : string to be appended to this
* @param alength is the length of the given str (or -1)
if you want me to determine its length
* @return this
*/
nsString& Append(const PRUnichar* aBuffer,PRInt32 aLength=-1);
/**
* append given unichar character to this string
* @param aChar is the char to be appended to this
* @return this
*/
nsString& Append(PRUnichar aChar);
/**
* Append an integer onto this string
* @param aInteger is the int to be appended
* @param aRadix specifies 8,10,16
* @return this
*/
nsString& Append(PRInt32 aInteger,PRInt32 aRadix); //radix=8,10 or 16
/**
* Append a float value onto this string
* @param aFloat is the float to be appended
* @return this
*/
nsString& Append(float aFloat);
/*
* Copies n characters from this string to given string,
* starting at the leftmost offset.
*
*
* @param aCopy -- Receiving string
* @param aCount -- number of chars to copy
* @return number of chars copied
*/
PRInt32 Left(nsString& aCopy,PRInt32 aCount);
/*
* Copies n characters from this string to given string,
* starting at the given offset.
*
*
* @param aCopy -- Receiving string
* @param aCount -- number of chars to copy
* @param anOffset -- position where copying begins
* @return number of chars copied
*/
PRInt32 Mid(nsString& aCopy,PRInt32 anOffset,PRInt32 aCount);
/*
* Copies n characters from this string to given string,
* starting at rightmost char.
*
*
* @param aCopy -- Receiving string
* @param aCount -- number of chars to copy
* @return number of chars copied
*/
PRInt32 Right(nsString& aCopy,PRInt32 aCount);
/*
* This method inserts n chars from given string into this
* string at str[anOffset].
*
* @param aCopy -- String to be inserted into this
* @param anOffset -- insertion position within this str
* @param aCount -- number of chars to be copied from aCopy
* @return number of chars inserted into this.
*/
PRInt32 Insert(nsString& aCopy,PRInt32 anOffset,PRInt32 aCount=-1);
/**
* Insert a single unicode char into this string at
* a specified offset.
*
* @param aChar char to be inserted into this string
* @param anOffset is insert pos in str
* @return the number of chars inserted into this string
*/
PRInt32 Insert(PRUnichar aChar,PRInt32 anOffset);
/*
* This method is used to cut characters in this string
* starting at anOffset, continuing for aCount chars.
*
* @param anOffset -- start pos for cut operation
* @param aCount -- number of chars to be cut
* @return *this
*/
nsString& Cut(PRInt32 anOffset,PRInt32 aCount);
/**
* This method is used to remove all occurances of the
* characters found in aSet from this string.
*
* @param aSet -- characters to be cut from this
* @return *this
*/
nsString& StripChars(const char* aSet);
/**
* This method strips whitespace throughout the string
*
* @return this
*/
nsString& StripWhitespace();
/**
* This method trims characters found in aTrimSet from
* either end of the underlying string.
*
* @param aTrimSet -- contains chars to be trimmed from
* both ends
* @return this
*/
nsString& Trim(const char* aSet,
PRBool aEliminateLeading=PR_TRUE,
PRBool aEliminateTrailing=PR_TRUE);
/**
* This method strips whitespace from string.
* You can control whether whitespace is yanked from
* start and end of string as well.
*
* @param aEliminateLeading controls stripping of leading ws
* @param aEliminateTrailing controls stripping of trailing ws
* @return this
*/
nsString& CompressWhitespace( PRBool aEliminateLeading=PR_TRUE,
PRBool aEliminateTrailing=PR_TRUE);
/**
* Determine if given char is a valid space character
*
* @param aChar is character to be tested
* @return TRUE if is valid space char
*/
static PRBool IsSpace(PRUnichar ch);
/**
* Determine if given char in valid alpha range
*
* @param aChar is character to be tested
* @return TRUE if in alpha range
*/
static PRBool IsAlpha(PRUnichar ch);
/**
* Determine if given char is valid digit
*
* @param aChar is character to be tested
* @return TRUE if char is a valid digit
*/
static PRBool IsDigit(PRUnichar ch);
/**********************************************************************
Searching methods...
*********************************************************************/
/**
* Search for given character within this string.
* This method does so by using a binary search,
* so your string HAD BETTER BE ORDERED!
*
* @param aChar is the unicode char to be found
* @return offset in string, or -1 (kNotFound)
*/
PRInt32 BinarySearch(PRUnichar aChar) const;
/**
* Search for given substring within this string
*
* @param aString is substring to be sought in this
* @return offset in string, or -1 (kNotFound)
*/
PRInt32 Find(const char* aString) const;
PRInt32 Find(const PRUnichar* aString) const;
PRInt32 Find(const nsString& aString) const;
/**
* Search for given char within this string
*
* @param aChar - char to be found
* @return offset in string, or -1 (kNotFound)
*/
PRInt32 Find(PRUnichar aChar,PRInt32 offset=0) const;
/**
* This method searches this string for the first character
* found in the given string
* @param aString contains set of chars to be found
* @param anOffset tells us where to start searching in this
* @return -1 if not found, else the offset in this
*/
PRInt32 FindCharInSet(const char* aString,PRInt32 anOffset=0) const;
PRInt32 FindCharInSet(nsString& aString,PRInt32 anOffset=0) const;
/**
* This method searches this string for the last character
* found in the given string
* @param aString contains set of chars to be found
* @param anOffset tells us where to start searching in this
* @return -1 if not found, else the offset in this
*/
PRInt32 RFindCharInSet(const char* aString,PRInt32 anOffset=0) const;
PRInt32 RFindCharInSet(nsString& aString,PRInt32 anOffset=0) const;
/**
* This methods scans the string backwards, looking for the given string
* @param aString is substring to be sought in this
* @param aIgnoreCase tells us whether or not to do caseless compare
* @return offset in string, or -1 (kNotFound)
*/
PRInt32 RFind(const char* anISOLatin1,PRBool aIgnoreCase=PR_FALSE) const;
PRInt32 RFind(const PRUnichar* aString,PRBool aIgnoreCase=PR_FALSE) const;
PRInt32 RFind(const nsString& aString,PRBool aIgnoreCase=PR_FALSE) const;
/**
* This methods scans the string backwards, looking for the given char
* @param char is the char to be sought in this
* @param aIgnoreCase tells us whether or not to do caseless compare
* @return offset in string, or -1 (kNotFound)
*/
PRInt32 RFind(PRUnichar aChar,PRBool aIgnoreCase=PR_FALSE) const;
/**********************************************************************
Comparison methods...
*********************************************************************/
/**
* Compares a given string type to this string.
* @update gess 7/27/98
* @param S is the string to be compared
* @param aIgnoreCase tells us how to treat case
* @return -1,0,1
*/
virtual PRInt32 Compare(const nsString &aString,PRBool aIgnoreCase=PR_FALSE) const;
virtual PRInt32 Compare(const char *aString,PRBool aIgnoreCase=PR_FALSE,PRInt32 aLength=-1) const;
virtual PRInt32 Compare(const PRUnichar *aString,PRBool aIgnoreCase=PR_FALSE,PRInt32 aLength=-1) const;
/**
* These methods compare a given string type to this one
* @param aString is the string to be compared to this
* @return TRUE or FALSE
*/
PRBool operator==(const nsString &aString) const;
PRBool operator==(const char *aString) const;
PRBool operator==(const PRUnichar* aString) const;
/**
* These methods perform a !compare of a given string type to this
* @param aString is the string to be compared to this
* @return TRUE
*/
PRBool operator!=(const nsString &aString) const;
PRBool operator!=(const char *aString) const;
PRBool operator!=(const PRUnichar* aString) const;
/**
* These methods test if a given string is < than this
* @param aString is the string to be compared to this
* @return TRUE or FALSE
*/
PRBool operator<(const nsString &aString) const;
PRBool operator<(const char *aString) const;
PRBool operator<(const PRUnichar* aString) const;
/**
* These methods test if a given string is > than this
* @param aString is the string to be compared to this
* @return TRUE or FALSE
*/
PRBool operator>(const nsString &S) const;
PRBool operator>(const char *anISOLatin1) const;
PRBool operator>(const PRUnichar* aString) const;
/**
* These methods test if a given string is <= than this
* @param aString is the string to be compared to this
* @return TRUE or FALSE
*/
PRBool operator<=(const nsString &S) const;
PRBool operator<=(const char *anISOLatin1) const;
PRBool operator<=(const PRUnichar* aString) const;
/**
* These methods test if a given string is >= than this
* @param aString is the string to be compared to this
* @return TRUE or FALSE
*/
PRBool operator>=(const nsString &S) const;
PRBool operator>=(const char *anISOLatin1) const;
PRBool operator>=(const PRUnichar* aString) const;
/**
* Compare this to given string; note that we compare full strings here.
* The optional length argument just lets us know how long the given string is.
* If you provide a length, it is compared to length of this string as an
* optimization.
*
* @param aString -- the string to compare to this
* @param aLength -- optional length of given string.
* @return TRUE if equal
*/
PRBool Equals(const nsString& aString) const;
PRBool Equals(const char* aString,PRInt32 aLength=-1) const;
PRBool Equals(const nsIAtom *aAtom) const;
/**
* Compares to unichar string ptrs to each other
* @param s1 is a ptr to a unichar buffer
* @param s2 is a ptr to a unichar buffer
* @return TRUE if they match
*/
PRBool Equals(const PRUnichar* s1, const PRUnichar* s2) const;
/**
* Compare this to given string; note that we compare full strings here.
* The optional length argument just lets us know how long the given string is.
* If you provide a length, it is compared to length of this string as an
* optimization.
*
* @param aString -- the string to compare to this
* @param aLength -- optional length of given string.
* @return TRUE if equal
*/
PRBool EqualsIgnoreCase(const nsString& aString) const;
PRBool EqualsIgnoreCase(const char* aString,PRInt32 aLength=-1) const;
PRBool EqualsIgnoreCase(const nsIAtom *aAtom) const;
/**
* Compares to unichar string ptrs to each other without respect to case
* @param s1 is a ptr to a unichar buffer
* @param s2 is a ptr to a unichar buffer
* @return TRUE if they match
*/
PRBool EqualsIgnoreCase(const PRUnichar* s1, const PRUnichar* s2) const;
static void SelfTest();
virtual void DebugDump(ostream& aStream) const;
protected:
typedef PRUnichar chartype;
chartype* mStr;
PRInt32 mLength;
PRInt32 mCapacity;
static PRBool mSelfTested;
};
ostream& operator<<(ostream& os,nsString& aString);
extern NS_BASE int fputs(const nsString& aString, FILE* out);
//----------------------------------------------------------------------
/**
* A version of nsString which is designed to be used as an automatic
* variable. It attempts to operate out of a fixed size internal
* buffer until too much data is added; then a dynamic buffer is
* allocated and grown as necessary.
*/
// XXX template this with a parameter for the size of the buffer?
class NS_BASE nsAutoString : public nsString {
public:
nsAutoString();
nsAutoString(const nsString& other);
nsAutoString(const nsAutoString& other);
nsAutoString(PRUnichar aChar);
nsAutoString(const char* isolatin1);
nsAutoString(const PRUnichar* us, PRInt32 uslen = -1);
virtual ~nsAutoString();
nsAutoString& operator=(const nsString& aString) {nsString::operator=(aString); return *this;}
nsAutoString& operator=(const char* anISOLatin1) {nsString::operator=(anISOLatin1); return *this;}
nsAutoString& operator=(char aChar) {nsString::operator=(aChar); return *this;}
nsAutoString& operator=(const PRUnichar* aBuffer) {nsString::operator=(aBuffer); return *this;}
nsAutoString& operator=(PRUnichar aChar) {nsString::operator=(aChar); return *this;}
virtual void SizeOf(nsISizeOfHandler* aHandler) const;
static void SelfTest();
protected:
virtual void EnsureCapacityFor(PRInt32 aNewLength);
chartype mBuf[32];
};
ostream& operator<<(ostream& os,nsAutoString& aString);
#endif

View File

@@ -0,0 +1,140 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#include "nsIUnicharBuffer.h"
#include "nsIUnicharInputStream.h"
#include "nsCRT.h"
#define MIN_BUFFER_SIZE 32
class UnicharBufferImpl : public nsIUnicharBuffer {
public:
UnicharBufferImpl(PRInt32 aBufferSize);
~UnicharBufferImpl();
NS_DECL_ISUPPORTS
virtual PRInt32 GetLength() const;
virtual PRInt32 GetBufferSize() const;
virtual PRUnichar* GetBuffer() const;
virtual PRBool Grow(PRInt32 aNewSize);
virtual PRInt32 Fill(nsresult* aErrorCode, nsIUnicharInputStream* aStream,
PRInt32 aKeep);
PRUnichar* mBuffer;
PRInt32 mSpace;
PRInt32 mLength;
};
UnicharBufferImpl::UnicharBufferImpl(PRInt32 aBufferSize)
{
if (PRUint32(aBufferSize) < MIN_BUFFER_SIZE) {
aBufferSize = MIN_BUFFER_SIZE;
}
mSpace = aBufferSize;
mBuffer = new PRUnichar[aBufferSize];
mLength = 0;
NS_INIT_REFCNT();
}
NS_DEFINE_IID(kUnicharBufferIID, NS_IUNICHAR_BUFFER_IID);
NS_IMPL_ISUPPORTS(UnicharBufferImpl,kUnicharBufferIID)
UnicharBufferImpl::~UnicharBufferImpl()
{
if (nsnull != mBuffer) {
delete mBuffer;
mBuffer = nsnull;
}
mLength = 0;
}
PRInt32 UnicharBufferImpl::GetLength() const
{
return mLength;
}
PRInt32 UnicharBufferImpl::GetBufferSize() const
{
return mSpace;
}
PRUnichar* UnicharBufferImpl::GetBuffer() const
{
return mBuffer;
}
PRBool UnicharBufferImpl::Grow(PRInt32 aNewSize)
{
if (PRUint32(aNewSize) < MIN_BUFFER_SIZE) {
aNewSize = MIN_BUFFER_SIZE;
}
PRUnichar* newbuf = new PRUnichar[aNewSize];
if (nsnull != newbuf) {
if (0 != mLength) {
nsCRT::memcpy(newbuf, mBuffer, mLength * sizeof(PRUnichar));
}
delete mBuffer;
mBuffer = newbuf;
return PR_TRUE;
}
return PR_FALSE;
}
PRInt32 UnicharBufferImpl::Fill(nsresult* aErrorCode,
nsIUnicharInputStream* aStream,
PRInt32 aKeep)
{
NS_PRECONDITION(nsnull != aStream, "null stream");
NS_PRECONDITION(PRUint32(aKeep) < PRUint32(mLength), "illegal keep count");
if ((nsnull == aStream) || (PRUint32(aKeep) >= PRUint32(mLength))) {
// whoops
*aErrorCode = NS_BASE_STREAM_ILLEGAL_ARGS;
return -1;
}
if (0 != aKeep) {
// Slide over kept data
nsCRT::memmove(mBuffer, mBuffer + (mLength - aKeep),
aKeep * sizeof(PRUnichar));
}
// Read in some new data
mLength = aKeep;
PRInt32 amount = mSpace - aKeep;
PRInt32 nb;
*aErrorCode = aStream->Read(mBuffer, aKeep, amount, &nb);
if (NS_SUCCEEDED(*aErrorCode)) {
mLength += nb;
}
else
nb = 0;
return nb;
}
NS_BASE nsresult NS_NewUnicharBuffer(nsIUnicharBuffer** aInstancePtrResult,
nsISupports* aOuter,
PRInt32 aBufferSize)
{
if (nsnull != aOuter) {
return NS_ERROR_NO_AGGREGATION;
}
UnicharBufferImpl* it = new UnicharBufferImpl(aBufferSize);
if (nsnull == it) {
return NS_ERROR_OUT_OF_MEMORY;
}
return it->QueryInterface(kUnicharBufferIID, (void **) aInstancePtrResult);
}

View File

@@ -0,0 +1,337 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#include "nsIUnicharInputStream.h"
#include "nsIByteBuffer.h"
#include "nsIUnicharBuffer.h"
#include "nsString.h"
#include "nsCRT.h"
#include <fcntl.h>
#ifdef NS_WIN32
#include <io.h>
#else
#include <unistd.h>
#endif
static NS_DEFINE_IID(kIUnicharInputStreamIID, NS_IUNICHAR_INPUT_STREAM_IID);
class StringUnicharInputStream : public nsIUnicharInputStream {
public:
StringUnicharInputStream(nsString* aString);
~StringUnicharInputStream();
NS_DECL_ISUPPORTS
NS_IMETHOD Read(PRUnichar* aBuf,
PRInt32 aOffset,
PRInt32 aCount,
PRInt32 *aReadCount);
NS_IMETHOD Close();
nsString* mString;
PRInt32 mPos;
PRInt32 mLen;
};
StringUnicharInputStream::StringUnicharInputStream(nsString* aString)
{
NS_INIT_REFCNT();
mString = aString;
mPos = 0;
mLen = aString->Length();
}
StringUnicharInputStream::~StringUnicharInputStream()
{
if (nsnull != mString) {
delete mString;
}
}
nsresult StringUnicharInputStream::Read(PRUnichar* aBuf,
PRInt32 aOffset,
PRInt32 aCount,
PRInt32 *aReadCount)
{
if (mPos >= mLen) {
*aReadCount = 0;
return (nsresult)-1;
}
const PRUnichar* us = mString->GetUnicode();
PRInt32 amount = mLen - mPos;
if (amount > aCount) {
amount = aCount;
}
nsCRT::memcpy(aBuf + aOffset, us + mPos, sizeof(PRUnichar) * amount);
mPos += amount;
*aReadCount = amount;
return NS_OK;
}
nsresult StringUnicharInputStream::Close()
{
mPos = mLen;
if (nsnull != mString) {
delete mString;
}
return NS_OK;
}
NS_IMPL_ISUPPORTS(StringUnicharInputStream, kIUnicharInputStreamIID);
NS_BASE nsresult
NS_NewStringUnicharInputStream(nsIUnicharInputStream** aInstancePtrResult,
nsString* aString)
{
NS_PRECONDITION(nsnull != aString, "null ptr");
NS_PRECONDITION(nsnull != aInstancePtrResult, "null ptr");
if ((nsnull == aString) || (nsnull == aInstancePtrResult)) {
return NS_ERROR_NULL_POINTER;
}
StringUnicharInputStream* it = new StringUnicharInputStream(aString);
if (nsnull == it) {
return NS_ERROR_OUT_OF_MEMORY;
}
return it->QueryInterface(kIUnicharInputStreamIID,
(void**) aInstancePtrResult);
}
//----------------------------------------------------------------------
class IsoLatin1Converter : public nsIB2UConverter {
public:
IsoLatin1Converter();
NS_DECL_ISUPPORTS
virtual PRInt32 Convert(PRUnichar* aDst,
PRInt32 aDstOffset,
PRInt32& aDstLen,
const char* aSrc,
PRInt32 aSrcOffset,
PRInt32& aSrcLen);
};
IsoLatin1Converter::IsoLatin1Converter()
{
NS_INIT_REFCNT();
}
NS_DEFINE_IID(kIB2UConverterIID, NS_IB2UCONVERTER_IID);
NS_IMPL_ISUPPORTS(IsoLatin1Converter,kIB2UConverterIID);
PRInt32 IsoLatin1Converter::Convert(PRUnichar* aDst,
PRInt32 aDstOffset,
PRInt32& aDstLen,
const char* aSrc,
PRInt32 aSrcOffset,
PRInt32& aSrcLen)
{
PRInt32 amount = aSrcLen;
if (aSrcLen > aDstLen) {
amount = aDstLen;
}
const char* end = aSrc + amount;
while (aSrc < end) {
PRUint8 isoLatin1 = PRUint8(*aSrc++);
/* XXX insert table based lookup converter here */
*aDst++ = isoLatin1;
}
aDstLen = amount;
aSrcLen = amount;
return NS_OK;
}
NS_BASE nsresult
NS_NewB2UConverter(nsIB2UConverter** aInstancePtrResult,
nsISupports* aOuter,
nsCharSetID aCharSet)
{
if (nsnull != aOuter) {
return NS_ERROR_NO_AGGREGATION;
}
if (eCharSetID_IsoLatin1 != aCharSet) {
return NS_BASE_STREAM_NO_CONVERTER;
}
IsoLatin1Converter* it = new IsoLatin1Converter();
if (nsnull == it) {
return NS_ERROR_OUT_OF_MEMORY;
}
return it->QueryInterface(kIB2UConverterIID, (void**)aInstancePtrResult);
}
//----------------------------------------------------------------------
class ConverterInputStream : public nsIUnicharInputStream {
public:
ConverterInputStream(nsIInputStream* aStream,
nsIB2UConverter* aConverter,
PRInt32 aBufSize);
~ConverterInputStream();
NS_DECL_ISUPPORTS
NS_IMETHOD Read(PRUnichar* aBuf,
PRInt32 aOffset,
PRInt32 aCount,
PRInt32 *aReadCount);
NS_IMETHOD Close();
protected:
PRInt32 Fill(nsresult * aErrorCode);
nsIInputStream* mInput;
nsIB2UConverter* mConverter;
nsIByteBuffer* mByteData;
PRInt32 mByteDataOffset;
nsIUnicharBuffer* mUnicharData;
PRInt32 mUnicharDataOffset;
PRInt32 mUnicharDataLength;
};
ConverterInputStream::ConverterInputStream(nsIInputStream* aStream,
nsIB2UConverter* aConverter,
PRInt32 aBufferSize)
{
NS_INIT_REFCNT();
mInput = aStream; aStream->AddRef();
mConverter = aConverter; aConverter->AddRef();
if (aBufferSize == 0) {
aBufferSize = 8192;
}
nsresult rv1 = NS_NewByteBuffer(&mByteData, nsnull, aBufferSize);
nsresult rv2 = NS_NewUnicharBuffer(&mUnicharData, nsnull, aBufferSize);
mByteDataOffset = 0;
mUnicharDataOffset = 0;
mUnicharDataLength = 0;
}
NS_IMPL_ISUPPORTS(ConverterInputStream,kIUnicharInputStreamIID);
ConverterInputStream::~ConverterInputStream()
{
Close();
}
nsresult ConverterInputStream::Close()
{
if (nsnull != mInput) {
mInput->Release();
mInput = nsnull;
}
if (nsnull != mConverter) {
mConverter->Release();
mConverter = nsnull;
}
if (nsnull != mByteData) {
mByteData->Release();
mByteData = nsnull;
}
if (nsnull != mUnicharData) {
mUnicharData->Release();
mUnicharData = nsnull;
}
return NS_OK;
}
nsresult ConverterInputStream::Read(PRUnichar* aBuf,
PRInt32 aOffset,
PRInt32 aCount,
PRInt32 *aReadCount)
{
PRInt32 rv = mUnicharDataLength - mUnicharDataOffset;
nsresult errorCode;
if (0 == rv) {
// Fill the unichar buffer
rv = Fill(&errorCode);
if (rv <= 0) {
*aReadCount = 0;
return errorCode;
}
}
if (rv > aCount) {
rv = aCount;
}
nsCRT::memcpy(aBuf + aOffset, mUnicharData->GetBuffer() + mUnicharDataOffset,
rv * sizeof(PRUnichar));
mUnicharDataOffset += rv;
*aReadCount = rv;
return NS_OK;
}
PRInt32 ConverterInputStream::Fill(nsresult * aErrorCode)
{
if (nsnull == mInput) {
// We already closed the stream!
*aErrorCode = NS_BASE_STREAM_CLOSED;
return -1;
}
PRInt32 remainder = mByteData->GetLength() - mByteDataOffset;
mByteDataOffset = remainder;
PRInt32 nb = mByteData->Fill(aErrorCode, mInput, remainder);
if (nb <= 0) {
// Because we assume a many to one conversion, the lingering data
// in the byte buffer must be a partial conversion
// fragment. Because we know that we have recieved no more new
// data to add to it, we can't convert it. Therefore, we discard
// it.
return nb;
}
NS_ASSERTION(remainder + nb == mByteData->GetLength(), "bad nb");
// Now convert as much of the byte buffer to unicode as possible
PRInt32 dstLen = mUnicharData->GetBufferSize();
PRInt32 srcLen = remainder + nb;
*aErrorCode = mConverter->Convert(mUnicharData->GetBuffer(), 0, dstLen,
mByteData->GetBuffer(), 0, srcLen);
mUnicharDataOffset = 0;
mUnicharDataLength = dstLen;
mByteDataOffset += srcLen;
return dstLen;
}
// XXX hook up auto-detect here (do we need more info, like the url?)
NS_BASE nsresult
NS_NewConverterStream(nsIUnicharInputStream** aInstancePtrResult,
nsISupports* aOuter,
nsIInputStream* aStreamToWrap,
PRInt32 aBufferSize,
nsCharSetID aCharSet)
{
if (nsnull != aOuter) {
return NS_ERROR_NO_AGGREGATION;
}
// Create converter
nsIB2UConverter* converter;
nsresult rv = NS_NewB2UConverter(&converter, nsnull, aCharSet);
if (NS_OK != rv) {
return rv;
}
// Create converter input stream
ConverterInputStream* it =
new ConverterInputStream(aStreamToWrap, converter, aBufferSize);
converter->Release();
if (nsnull == it) {
return NS_ERROR_OUT_OF_MEMORY;
}
return it->QueryInterface(kIUnicharInputStreamIID,
(void **) aInstancePtrResult);
}

View File

@@ -0,0 +1,182 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsUnitConversion_h__
#define nsUnitConversion_h__
#include "nscore.h"
#include <math.h>
/// handy constants
#define TWIPS_PER_POINT_INT 20
#define TWIPS_PER_POINT_FLOAT 20.0f
#define ROUND_EXCLUSIVE_CONST_FLOAT 0.4999999999999999f // XXX this should be derived from platform FLOAT_MIN
#define ROUND_CONST_FLOAT 0.5f
#define CEIL_CONST_FLOAT 0.9999999999999999f // XXX this should be derived from platform FLOAT_MIN
/*
* Coord Rounding Functions
*/
inline nscoord NSToCoordFloor(float aValue)
{
return ((0.0f <= aValue) ? nscoord(aValue) : nscoord(aValue - CEIL_CONST_FLOAT));
}
inline nscoord NSToCoordCeil(float aValue)
{
return ((0.0f <= aValue) ? nscoord(aValue + CEIL_CONST_FLOAT) : nscoord(aValue));
}
inline nscoord NSToCoordRound(float aValue)
{
return ((0.0f <= aValue) ? nscoord(aValue + ROUND_CONST_FLOAT) : nscoord(aValue - ROUND_CONST_FLOAT));
}
inline nscoord NSToCoordRoundExclusive(float aValue)
{
return ((0.0f <= aValue) ? nscoord(aValue + ROUND_EXCLUSIVE_CONST_FLOAT) :
nscoord(aValue - ROUND_EXCLUSIVE_CONST_FLOAT));
}
/*
* Int Rounding Functions
*/
inline PRInt32 NSToIntFloor(float aValue)
{
return ((0.0f <= aValue) ? PRInt32(aValue) : PRInt32(aValue - CEIL_CONST_FLOAT));
}
inline PRInt32 NSToIntCeil(float aValue)
{
return ((0.0f <= aValue) ? PRInt32(aValue + CEIL_CONST_FLOAT) : PRInt32(aValue));
}
inline PRInt32 NSToIntRound(float aValue)
{
return ((0.0f <= aValue) ? PRInt32(aValue + ROUND_CONST_FLOAT) : PRInt32(aValue - ROUND_CONST_FLOAT));
}
inline PRInt32 NSToIntRoundExclusive(float aValue)
{
return ((0.0f <= aValue) ? PRInt32(aValue + ROUND_EXCLUSIVE_CONST_FLOAT) :
PRInt32(aValue - ROUND_EXCLUSIVE_CONST_FLOAT));
}
/*
* Twips/Points conversions
*/
inline nscoord NSFloatPointsToTwips(float aPoints)
{
return NSToCoordRound(aPoints * TWIPS_PER_POINT_FLOAT);
}
inline nscoord NSIntPointsToTwips(PRInt32 aPoints)
{
return nscoord(aPoints * TWIPS_PER_POINT_INT);
}
inline PRInt32 NSTwipsToIntPoints(nscoord aTwips)
{
return NSToIntRound(aTwips / TWIPS_PER_POINT_FLOAT);
}
inline PRInt32 NSTwipsToFloorIntPoints(nscoord aTwips)
{
return NSToIntFloor(aTwips / TWIPS_PER_POINT_FLOAT);
}
inline PRInt32 NSTwipsToCeilIntPoints(nscoord aTwips)
{
return NSToIntCeil(aTwips / TWIPS_PER_POINT_FLOAT);
}
inline float NSTwipsToFloatPoints(nscoord aTwips)
{
return (float(aTwips) / TWIPS_PER_POINT_FLOAT);
}
/*
* Twips/Pixel conversions
*/
inline nscoord NSFloatPixelsToTwips(float aPixels, float aTwipsPerPixel)
{
return NSToCoordRound(aPixels * aTwipsPerPixel);
}
inline nscoord NSIntPixelsToTwips(PRInt32 aPixels, float aTwipsPerPixel)
{
return NSToCoordRound(float(aPixels) * aTwipsPerPixel);
}
inline float NSTwipsToFloatPixels(nscoord aTwips, float aPixelsPerTwip)
{
return (float(aTwips) * aPixelsPerTwip);
}
inline PRInt32 NSTwipsToIntPixels(nscoord aTwips, float aPixelsPerTwip)
{
return NSToIntRound(float(aTwips) * aPixelsPerTwip);
}
/*
* Twips/unit conversions
*/
inline nscoord NSUnitsToTwips(float aValue, float aPointsPerUnit)
{
return NSToCoordRound(aValue * aPointsPerUnit * TWIPS_PER_POINT_FLOAT);
}
inline float NSTwipsToUnits(nscoord aTwips, float aUnitsPerPoint)
{
return (aTwips * (aUnitsPerPoint / TWIPS_PER_POINT_FLOAT));
}
/// Unit conversion macros
//@{
#define NS_INCHES_TO_TWIPS(x) NSUnitsToTwips((x), 72.0f) // 72 points per inch
#define NS_FEET_TO_TWIPS(x) NSUnitsToTwips((x), (72.0f * 12.0f)) // 12 inches per foot
#define NS_MILES_TO_TWIPS(x) NSUnitsToTwips((x), (72.0f * 12.0f * 5280.0f)) // 5280 feet per mile
#define NS_MILLIMETERS_TO_TWIPS(x) NSUnitsToTwips((x), (72.0f * 0.03937f))
#define NS_CENTIMETERS_TO_TWIPS(x) NSUnitsToTwips((x), (72.0f * 0.3937f))
#define NS_METERS_TO_TWIPS(x) NSUnitsToTwips((x), (72.0f * 39.37f))
#define NS_KILOMETERS_TO_TWIPS(x) NSUnitsToTwips((x), (72.0f * 39370.0f))
#define NS_PICAS_TO_TWIPS(x) NSUnitsToTwips((x), 12.0f) // 12 points per pica
#define NS_DIDOTS_TO_TWIPS(x) NSUnitsToTwips((x), (16.0f / 15.0f)) // 15 didots per 16 points
#define NS_CICEROS_TO_TWIPS(x) NSUnitsToTwips((x), (12.0f * (16.0f / 15.0f))) // 12 didots per cicero
#define NS_TWIPS_TO_INCHES(x) NSTwipsToUnits((x), 1.0f / 72.0f)
#define NS_TWIPS_TO_FEET(x) NSTwipsToUnits((x), 1.0f / (72.0f * 12.0f))
#define NS_TWIPS_TO_MILES(x) NSTwipsToUnits((x), 1.0f / (72.0f * 12.0f * 5280.0f))
#define NS_TWIPS_TO_MILLIMETERS(x) NSTwipsToUnits((x), 1.0f / (72.0f * 0.03937f))
#define NS_TWIPS_TO_CENTIMETERS(x) NSTwipsToUnits((x), 1.0f / (72.0f * 0.3937f))
#define NS_TWIPS_TO_METERS(x) NSTwipsToUnits((x), 1.0f / (72.0f * 39.37f))
#define NS_TWIPS_TO_KILOMETERS(x) NSTwipsToUnits((x), 1.0f / (72.0f * 39370.0f))
#define NS_TWIPS_TO_PICAS(x) NSTwipsToUnits((x), 1.0f / 12.0f)
#define NS_TWIPS_TO_DIDOTS(x) NSTwipsToUnits((x), 1.0f / (16.0f / 15.0f))
#define NS_TWIPS_TO_CICEROS(x) NSTwipsToUnits((x), 1.0f / (12.0f * (16.0f / 15.0f)))
//@}
#endif

View File

@@ -0,0 +1,227 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#include "nsVoidArray.h"
#include "nsCRT.h"
#include "nsISizeOfHandler.h"
static PRInt32 kGrowArrayBy = 8;
nsVoidArray::nsVoidArray()
{
mArray = nsnull;
mArraySize = 0;
mCount = 0;
}
nsVoidArray::nsVoidArray(PRInt32 aCount)
{
NS_PRECONDITION(aCount > 0, "bad count");
mCount = mArraySize = aCount;
mArray = new void*[mCount];
nsCRT::memset(mArray, 0, mCount * sizeof(void*));
}
nsVoidArray& nsVoidArray::operator=(const nsVoidArray& other)
{
if (nsnull != mArray) {
delete mArray;
}
PRInt32 otherCount = other.mCount;
mArraySize = otherCount;
mCount = otherCount;
if (otherCount != 0) {
mArray = new void*[otherCount];
nsCRT::memcpy(mArray, other.mArray, otherCount * sizeof(void*));
} else {
mArray = nsnull;
}
return *this;
}
nsVoidArray::~nsVoidArray()
{
if (nsnull != mArray) {
delete [] mArray;
}
}
void
nsVoidArray::SizeOf(nsISizeOfHandler* aHandler) const
{
aHandler->Add(sizeof(*this));
aHandler->Add(sizeof(void*) * mArraySize);
}
void* nsVoidArray::ElementAt(PRInt32 aIndex) const
{
if (PRUint32(aIndex) >= PRUint32(mCount)) {
return nsnull;
}
return mArray[aIndex];
}
PRInt32 nsVoidArray::IndexOf(void* aPossibleElement) const
{
void** ap = mArray;
void** end = ap + mCount;
while (ap < end) {
if (*ap == aPossibleElement) {
return ap - mArray;
}
ap++;
}
return -1;
}
PRBool nsVoidArray::InsertElementAt(void* aElement, PRInt32 aIndex)
{
PRInt32 oldCount = mCount;
if (PRUint32(aIndex) > PRUint32(oldCount)) {
// An invalid index causes the insertion to fail
return PR_FALSE;
}
if (oldCount + 1 > mArraySize) {
// We have to grow the array
PRInt32 newCount = oldCount + kGrowArrayBy;
void** newArray = new void*[newCount];
if (mArray != nsnull && aIndex != 0)
nsCRT::memcpy(newArray, mArray, aIndex * sizeof(void*));
PRInt32 slide = oldCount - aIndex;
if (0 != slide) {
// Slide data over to make room for the insertion
nsCRT::memcpy(newArray + aIndex + 1, mArray + aIndex,
slide * sizeof(void*));
}
if (mArray != nsnull)
delete [] mArray;
mArray = newArray;
mArraySize = newCount;
} else {
// The array is already large enough
PRInt32 slide = oldCount - aIndex;
if (0 != slide) {
// Slide data over to make room for the insertion
nsCRT::memmove(mArray + aIndex + 1, mArray + aIndex,
slide * sizeof(void*));
}
}
mArray[aIndex] = aElement;
mCount++;
return PR_TRUE;
}
PRBool nsVoidArray::ReplaceElementAt(void* aElement, PRInt32 aIndex)
{
if (PRUint32(aIndex) >= PRUint32(mArraySize)) {
PRInt32 requestedCount = aIndex + 1;
PRInt32 growDelta = requestedCount - mCount;
PRInt32 newCount = mCount + (growDelta > kGrowArrayBy ? growDelta : kGrowArrayBy);
void** newArray = new void*[newCount];
nsCRT::memset(newArray, 0, newCount * sizeof(void*));
if (newArray==nsnull)
return PR_FALSE;
if (mArray != nsnull && aIndex != 0) {
nsCRT::memcpy(newArray, mArray, mCount * sizeof(void*));
if (mArray != nsnull)
delete [] mArray;
}
mArray = newArray;
mArraySize = newCount;
}
mArray[aIndex] = aElement;
if (aIndex >= mCount)
mCount = aIndex+1;
return PR_TRUE;
}
PRBool nsVoidArray::RemoveElementAt(PRInt32 aIndex)
{
PRInt32 oldCount = mCount;
if (PRUint32(aIndex) >= PRUint32(oldCount)) {
// An invalid index causes the replace to fail
return PR_FALSE;
}
// We don't need to move any elements if we're removing the
// last element in the array
if (aIndex < (oldCount - 1)) {
nsCRT::memmove(mArray + aIndex, mArray + aIndex + 1,
(oldCount - 1 - aIndex) * sizeof(void*));
}
mCount--;
return PR_TRUE;
}
PRBool nsVoidArray::RemoveElement(void* aElement)
{
void** ep = mArray;
void** end = ep + mCount;
while (ep < end) {
void* e = *ep++;
if (e == aElement) {
ep--;
return RemoveElementAt(PRInt32(ep - mArray));
}
}
return PR_FALSE;
}
void nsVoidArray::Clear()
{
mCount = 0;
}
void nsVoidArray::Compact()
{
PRInt32 count = mCount;
if (mArraySize != count) {
void** newArray = new void*[count];
if (nsnull != newArray) {
nsCRT::memcpy(newArray, mArray, count * sizeof(void*));
delete [] mArray;
mArray = newArray;
mArraySize = count;
}
}
}
PRBool nsVoidArray::EnumerateForwards(nsVoidArrayEnumFunc aFunc, void* aData)
{
PRInt32 index = -1;
PRBool running = PR_TRUE;
while (running && (++index < mCount)) {
running = (*aFunc)(mArray[index], aData);
}
return running;
}
PRBool nsVoidArray::EnumerateBackwards(nsVoidArrayEnumFunc aFunc, void* aData)
{
PRInt32 index = mCount;
PRBool running = PR_TRUE;
while (running && (0 <= --index)) {
running = (*aFunc)(mArray[index], aData);
}
return running;
}

View File

@@ -0,0 +1,74 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nsVoidArray_h___
#define nsVoidArray_h___
#include "nscore.h"
class nsISizeOfHandler;
// Enumerator callback function. Return PR_FALSE to stop
typedef PRBool (*nsVoidArrayEnumFunc)(void* aElement, void *aData);
/// A basic zero-based array of void*'s that manages its own memory
class NS_BASE nsVoidArray {
public:
nsVoidArray();
nsVoidArray(PRInt32 aCount); // initial count of aCount elements set to nsnull
~nsVoidArray();
nsVoidArray& operator=(const nsVoidArray& other);
void SizeOf(nsISizeOfHandler* aHandler) const;
PRInt32 Count() const {
return mCount;
}
void* ElementAt(PRInt32 aIndex) const;
void* operator[](PRInt32 aIndex) const { return ElementAt(aIndex); }
PRInt32 IndexOf(void* aPossibleElement) const;
PRBool InsertElementAt(void* aElement, PRInt32 aIndex);
PRBool ReplaceElementAt(void* aElement, PRInt32 aIndex);
PRBool AppendElement(void* aElement) {
return InsertElementAt(aElement, mCount);
}
PRBool RemoveElement(void* aElement);
PRBool RemoveElementAt(PRInt32 aIndex);
void Clear();
void Compact();
PRBool EnumerateForwards(nsVoidArrayEnumFunc aFunc, void* aData);
PRBool EnumerateBackwards(nsVoidArrayEnumFunc aFunc, void* aData);
protected:
void** mArray;
PRInt32 mArraySize;
PRInt32 mCount;
private:
/// Copy constructors are not allowed
nsVoidArray(const nsVoidArray& other);
};
#endif /* nsVoidArray_h___ */

127
mozilla/base/src/nscore.h Normal file
View File

@@ -0,0 +1,127 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef nscore_h___
#define nscore_h___
#ifdef _WIN32
#define NS_WIN32 1
#endif
#if defined(__unix)
#define NS_UNIX 1
#endif
#include "prtypes.h"
#include "nsDebug.h"
/** ucs2 datatype for 2 byte unicode characters */
typedef PRUint16 PRUcs2;
/** ucs4 datatype for 4 byte unicode characters */
typedef PRUint32 PRUcs4;
#ifdef NS_UCS4
typedef PRUcs4 PRUnichar;
#else
typedef PRUcs2 PRUnichar;
#endif
/// The preferred symbol for null.
#define nsnull 0
/* Define brackets for protecting C code from C++ */
#ifdef __cplusplus
#define NS_BEGIN_EXTERN_C extern "C" {
#define NS_END_EXTERN_C }
#else
#define NS_BEGIN_EXTERN_C
#define NS_END_EXTERN_C
#endif
/*----------------------------------------------------------------------*/
/* Import/export defines */
#ifdef NS_WIN32
#define NS_IMPORT _declspec(dllimport)
#define NS_IMPORT_(type) type _declspec(dllimport) __stdcall
#define NS_EXPORT _declspec(dllexport)
// XXX NS_EXPORT_ defined in nsCOm.h (xpcom) differs in where the __declspec
// is placed. It needs to be done this way to make the 4.x compiler happy...
#undef NS_EXPORT_
#define NS_EXPORT_(type) type _declspec(dllexport) __stdcall
#else
/* XXX do something useful? */
#define NS_IMPORT
#define NS_IMPORT_(type) type
#define NS_EXPORT
#define NS_EXPORT_(type) type
#endif
#ifdef _IMPL_NS_BASE
#define NS_BASE NS_EXPORT
#else
#define NS_BASE NS_IMPORT
#endif
#ifdef _IMPL_NS_NET
#define NS_NET NS_EXPORT
#else
#define NS_NET NS_IMPORT
#endif
#ifdef _IMPL_NS_DOM
#define NS_DOM NS_EXPORT
#else
#define NS_DOM NS_IMPORT
#endif
#ifdef _IMPL_NS_WIDGET
#define NS_WIDGET NS_EXPORT
#else
#define NS_WIDGET NS_IMPORT
#endif
#ifdef _IMPL_NS_VIEW
#define NS_VIEW NS_EXPORT
#else
#define NS_VIEW NS_IMPORT
#endif
#ifdef _IMPL_NS_GFXNONXP
#define NS_GFXNONXP NS_EXPORT
#define NS_GFXNONXP_(type) NS_EXPORT_(type)
#else
#define NS_GFXNONXP NS_IMPORT
#define NS_GFXNONXP_(type) NS_IMPORT_(type)
#endif
#ifdef _IMPL_NS_GFX
#define NS_GFX NS_EXPORT
#define NS_GFX_(type) NS_EXPORT_(type)
#else
#define NS_GFX NS_IMPORT
#define NS_GFX_(type) NS_IMPORT_(type)
#endif
#ifdef _IMPL_NS_PLUGIN
#define NS_PLUGIN NS_EXPORT
#else
#define NS_PLUGIN NS_IMPORT
#endif
#endif /* nscore_h___ */

View File

@@ -0,0 +1,43 @@
#!gmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
DEPTH = ../../..
LIBRARY_NAME = gmbaseunix
MODULE=raptor
REQUIRES=xpcom raptor
DEFINES = -D_IMPL_NS_WIDGET
CPPSRCS= \
nsTimer.cpp
CPP_OBJS= \
./$(OBJDIR)/nsTimer.o \
$(NULL)
include $(DEPTH)/config/config.mk
TARGETS = $(LIBRARY)
include $(DEPTH)/config/rules.mk

View File

@@ -0,0 +1,47 @@
#!gmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
DEPTH = ../../..
topsrcdir = @top_srcdir@
srcdir = @srcdir@
VPATH = @srcdir@
include $(DEPTH)/config/autoconf.mk
LIBRARY_NAME = gmbaseunix
MODULE=raptor
REQUIRES=xpcom raptor
DEFINES = -D_IMPL_NS_WIDGET
CPPSRCS= \
nsTimer.cpp
CPP_OBJS= \
./$(OBJDIR)/nsTimer.o \
$(NULL)
include $(topsrcdir)/config/config.mk
TARGETS = $(LIBRARY)
include $(topsrcdir)/config/rules.mk

View File

@@ -0,0 +1,173 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#include "nsITimer.h"
#include "nsITimerCallback.h"
#include "nsCRT.h"
#include "prlog.h"
#include <stdio.h>
#include <limits.h>
#include "Xm/Xm.h"
static NS_DEFINE_IID(kITimerIID, NS_ITIMER_IID);
// Hack for now. This is Bad because it creates a dependency between the widget
// library and this library. This needs to be replaced with having code
// to pass an interface which can be queried for the app context.
extern XtAppContext gAppContext;
extern void nsTimerExpired(XtPointer aCallData);
/*
* Implementation of timers using Xt timer facility
*/
class TimerImpl : public nsITimer {
public:
public:
TimerImpl();
virtual ~TimerImpl();
virtual nsresult Init(nsTimerCallbackFunc aFunc,
void *aClosure,
// PRBool aRepeat,
PRUint32 aDelay);
virtual nsresult Init(nsITimerCallback *aCallback,
// PRBool aRepeat,
PRUint32 aDelay);
NS_DECL_ISUPPORTS
virtual void Cancel();
virtual PRUint32 GetDelay() { return mDelay; }
virtual void SetDelay(PRUint32 aDelay) { mDelay=aDelay; };
virtual void* GetClosure() { return mClosure; }
void FireTimeout();
private:
nsresult Init(PRUint32 aDelay);
PRUint32 mDelay;
nsTimerCallbackFunc mFunc;
void *mClosure;
nsITimerCallback *mCallback;
// PRBool mRepeat;
TimerImpl *mNext;
XtIntervalId mTimerId;
};
void TimerImpl::FireTimeout()
{
if (mFunc != NULL) {
(*mFunc)(this, mClosure);
}
else if (mCallback != NULL) {
mCallback->Notify(this); // Fire the timer
}
// Always repeating here
// if (mRepeat)
// mTimerId = XtAppAddTimeOut(gAppContext, GetDelay(),(XtTimerCallbackProc)nsTimerExpired, this);
}
TimerImpl::TimerImpl()
{
NS_INIT_REFCNT();
mFunc = NULL;
mCallback = NULL;
mNext = NULL;
mTimerId = 0;
mDelay = 0;
mClosure = NULL;
}
TimerImpl::~TimerImpl()
{
}
nsresult
TimerImpl::Init(nsTimerCallbackFunc aFunc,
void *aClosure,
// PRBool aRepeat,
PRUint32 aDelay)
{
mFunc = aFunc;
mClosure = aClosure;
// mRepeat = aRepeat;
mTimerId = XtAppAddTimeOut(gAppContext, aDelay,(XtTimerCallbackProc)nsTimerExpired, this);
return Init(aDelay);
}
nsresult
TimerImpl::Init(nsITimerCallback *aCallback,
// PRBool aRepeat,
PRUint32 aDelay)
{
mCallback = aCallback;
// mRepeat = aRepeat;
mTimerId = XtAppAddTimeOut(gAppContext, aDelay, (XtTimerCallbackProc)nsTimerExpired, this);
return Init(aDelay);
}
nsresult
TimerImpl::Init(PRUint32 aDelay)
{
mDelay = aDelay;
NS_ADDREF(this);
return NS_OK;
}
NS_IMPL_ISUPPORTS(TimerImpl, kITimerIID)
void
TimerImpl::Cancel()
{
XtRemoveTimeOut(mTimerId);
}
NS_BASE nsresult NS_NewTimer(nsITimer** aInstancePtrResult)
{
NS_PRECONDITION(nsnull != aInstancePtrResult, "null ptr");
if (nsnull == aInstancePtrResult) {
return NS_ERROR_NULL_POINTER;
}
TimerImpl *timer = new TimerImpl();
if (nsnull == timer) {
return NS_ERROR_OUT_OF_MEMORY;
}
return timer->QueryInterface(kITimerIID, (void **) aInstancePtrResult);
}
void nsTimerExpired(XtPointer aCallData)
{
TimerImpl* timer = (TimerImpl *)aCallData;
timer->FireTimeout();
}

View File

@@ -0,0 +1,40 @@
#!nmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
DEPTH=..\..\..
IGNORE_MANIFEST=1
DEFINES=-D_IMPL_NS_BASE
LIBRARY_NAME=gmbase
MODULE=raptor
REQUIRES=xpcom raptor
CPPSRCS=nsTimer.cpp
CPP_OBJS=.\$(OBJDIR)\nsTimer.obj
LINCS=-I$(XPDIST)\public\xpcom -I$(XPDIST)\public\raptor
LCFLAGS = \
$(LCFLAGS) \
-D_IMPL_NS_BASE \
$(NULL)
include <$(DEPTH)\config\rules.mak>
libs:: $(OBJS)
$(MAKE_INSTALL) $(OBJDIR)\nsTimer.obj ..\$(OBJDIR)

View File

@@ -0,0 +1,362 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#include "nsITimer.h"
#include "nsITimerCallback.h"
#include "nsCRT.h"
#include "prlog.h"
#include <stdio.h>
#include <windows.h>
#include <limits.h>
static NS_DEFINE_IID(kITimerIID, NS_ITIMER_IID);
/*
* Implementation of timers lifted from Windows front-end file timer.cpp
*/
class TimerImpl : public nsITimer {
public:
static TimerImpl *gTimerList;
static UINT gWindowsTimer;
static DWORD gNextFire;
static void ProcessTimeouts(DWORD aNow);
static void SyncTimeoutPeriod(DWORD aTickCount);
public:
TimerImpl();
virtual ~TimerImpl();
virtual nsresult Init(nsTimerCallbackFunc aFunc,
void *aClosure,
// PRBool aRepeat,
PRUint32 aDelay);
virtual nsresult Init(nsITimerCallback *aCallback,
// PRBool aRepeat,
PRUint32 aDelay);
NS_DECL_ISUPPORTS
virtual void Cancel();
void Fire(DWORD aNow);
virtual PRUint32 GetDelay() { return mDelay; }
virtual void SetDelay(PRUint32 aDelay) {};
virtual void* GetClosure() { return mClosure; }
private:
nsresult Init(PRUint32 aDelay);
PRUint32 mDelay;
nsTimerCallbackFunc mFunc;
void *mClosure;
nsITimerCallback *mCallback;
DWORD mFireTime;
// PRBool mRepeat;
TimerImpl *mNext;
};
TimerImpl *TimerImpl::gTimerList = NULL;
UINT TimerImpl::gWindowsTimer = 0;
DWORD TimerImpl::gNextFire = (DWORD)-1;
void CALLBACK FireTimeout(HWND aWindow,
UINT aMessage,
UINT aTimerID,
DWORD aTime)
{
static BOOL bCanEnter = TRUE;
// Don't allow old timer messages in here.
if(aMessage != WM_TIMER) {
PR_ASSERT(0);
return;
}
if(aTimerID != TimerImpl::gWindowsTimer) {
return;
}
// Block only one entry into this function, or else.
if(bCanEnter) {
bCanEnter = FALSE;
// see if we need to fork off any timeout functions
if(TimerImpl::gTimerList) {
TimerImpl::ProcessTimeouts(aTime);
}
bCanEnter = TRUE;
}
}
// Function to correctly have the timer be set.
void
TimerImpl::SyncTimeoutPeriod(DWORD aTickCount)
{
// May want us to set tick count ourselves.
if(aTickCount == 0) {
aTickCount = ::GetTickCount();
}
// If there's no list, we should clear the timer.
if(!gTimerList) {
if(gWindowsTimer) {
::KillTimer(NULL, gWindowsTimer);
gWindowsTimer = 0;
gNextFire = (DWORD)-1;
}
}
else {
// See if we need to clear the current timer.
// Curcumstances are that if the timer will not
// fire on time for the next timeout.
BOOL bSetTimer = FALSE;
TimerImpl *pTimeout = gTimerList;
if(gWindowsTimer) {
if(pTimeout->mFireTime != gNextFire) {
::KillTimer(NULL, gWindowsTimer);
gWindowsTimer = 0;
gNextFire = (DWORD)-1;
// Set the timer.
bSetTimer = TRUE;
}
}
else {
// No timer set, attempt.
bSetTimer = TRUE;
}
if(bSetTimer) {
DWORD dwFireWhen = pTimeout->mFireTime > aTickCount ?
pTimeout->mFireTime - aTickCount : 0;
if(dwFireWhen > UINT_MAX) {
dwFireWhen = UINT_MAX;
}
UINT uFireWhen = (UINT)dwFireWhen;
PR_ASSERT(gWindowsTimer == 0);
gWindowsTimer = ::SetTimer(NULL, 0, uFireWhen, (TIMERPROC)FireTimeout);
if(gWindowsTimer) {
// Set the fire time.
gNextFire = pTimeout->mFireTime;
}
}
}
}
// Walk down the timeout list and launch anyone appropriate
void
TimerImpl::ProcessTimeouts(DWORD aNow)
{
TimerImpl *p = gTimerList;
if(aNow == 0) {
aNow = ::GetTickCount();
}
BOOL bCalledSync = FALSE;
// loop over all entries
while(p) {
// send it
if(p->mFireTime < aNow) {
// Make sure that the timer cannot be deleted during the
// Fire(...) call which may release *all* other references
// to p...
NS_ADDREF(p);
p->Fire(aNow);
// Clear the timer.
// Period synced.
p->Cancel();
bCalledSync = TRUE;
NS_RELEASE(p);
// Reset the loop (can't look at p->pNext now, and called
// code may have added/cleared timers).
// (could do this by going recursive and returning).
p = gTimerList;
} else {
// Make sure we fire an timer.
// Also, we need to check to see if things are backing up (they
// may be asking to be fired long before we ever get to them,
// and we don't want to pass in negative values to the real
// timer code, or it takes days to fire....
if(bCalledSync == FALSE) {
SyncTimeoutPeriod(aNow);
bCalledSync = TRUE;
}
// Get next timer.
p = p->mNext;
}
}
}
TimerImpl::TimerImpl()
{
NS_INIT_REFCNT();
mFunc = NULL;
mCallback = NULL;
mNext = NULL;
mClosure = nsnull;
}
TimerImpl::~TimerImpl()
{
Cancel();
NS_IF_RELEASE(mCallback);
}
nsresult
TimerImpl::Init(nsTimerCallbackFunc aFunc,
void *aClosure,
// PRBool aRepeat,
PRUint32 aDelay)
{
mFunc = aFunc;
mClosure = aClosure;
// mRepeat = aRepeat;
return Init(aDelay);
}
nsresult
TimerImpl::Init(nsITimerCallback *aCallback,
// PRBool aRepeat,
PRUint32 aDelay)
{
mCallback = aCallback;
NS_ADDREF(mCallback);
// mRepeat = aRepeat;
return Init(aDelay);
}
nsresult
TimerImpl::Init(PRUint32 aDelay)
{
DWORD dwNow = ::GetTickCount();
mDelay = aDelay;
mFireTime = (DWORD) aDelay + dwNow;
mNext = NULL;
// add it to the list
if(!gTimerList) {
// no list add it
gTimerList = this;
}
else {
// is it before everything else on the list?
if(mFireTime < gTimerList->mFireTime) {
mNext = gTimerList;
gTimerList = this;
} else {
TimerImpl * pPrev = gTimerList;
TimerImpl * pCurrent = gTimerList;
while(pCurrent && (pCurrent->mFireTime <= mFireTime)) {
pPrev = pCurrent;
pCurrent = pCurrent->mNext;
}
PR_ASSERT(pPrev);
// insert it after pPrev (this could be at the end of the list)
mNext = pPrev->mNext;
pPrev->mNext = this;
}
}
NS_ADDREF(this);
// Sync the timer fire period.
SyncTimeoutPeriod(dwNow);
return NS_OK;
}
NS_IMPL_ISUPPORTS(TimerImpl, kITimerIID)
void
TimerImpl::Fire(DWORD aNow)
{
if (mFunc != NULL) {
(*mFunc)(this, mClosure);
}
else if (mCallback != NULL) {
mCallback->Notify(this);
}
}
void
TimerImpl::Cancel()
{
TimerImpl *me = this;
if(gTimerList == this) {
// first element in the list lossage
gTimerList = mNext;
} else {
// walk until no next pointer
for(TimerImpl * p = gTimerList; p && p->mNext && (p->mNext != this); p = p->mNext)
;
// if we found something valid pull it out of the list
if(p && p->mNext && p->mNext == this) {
p->mNext = mNext;
} else {
// get out before we delete something that looks bogus
return;
}
}
// if we got here it must have been a valid element so trash it
NS_RELEASE(me);
// If there's now no be sure to clear the timer.
SyncTimeoutPeriod(0);
}
NS_BASE nsresult NS_NewTimer(nsITimer** aInstancePtrResult)
{
NS_PRECONDITION(nsnull != aInstancePtrResult, "null ptr");
if (nsnull == aInstancePtrResult) {
return NS_ERROR_NULL_POINTER;
}
TimerImpl *timer = new TimerImpl();
if (nsnull == timer) {
return NS_ERROR_OUT_OF_MEMORY;
}
return timer->QueryInterface(kITimerIID, (void **) aInstancePtrResult);
}

View File

@@ -0,0 +1,105 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#include <stdio.h>
#include "nsIUnicharInputStream.h"
#include "nsIURL.h"
#include "nsCRT.h"
#include "nsString.h"
#include "prprf.h"
#include "prtime.h"
static nsCharSetID ConvertCharacterSetName(const char* aName)
{
if (nsCRT::strcasecmp(aName, "iso-latin-1") == 0) {
return eCharSetID_IsoLatin1;
}
return (nsCharSetID) -1;
}
int main(int argc, char** argv)
{
if (3 != argc) {
printf("usage: CvtURL url character-set-name\n");
return -1;
}
char* characterSetName = argv[2];
nsCharSetID cset = ConvertCharacterSetName(characterSetName);
if (PRInt32(cset) < 0) {
printf("illegal character set name: '%s'\n", characterSetName);
return -1;
}
// Create url object
char* urlName = argv[1];
nsIURL* url;
nsresult rv = NS_NewURL(&url, urlName);
if (NS_OK != rv) {
printf("invalid URL: '%s'\n", urlName);
return -1;
}
// Get an input stream from the url
PRInt32 ec;
nsIInputStream* in = url->Open(&ec);
if (nsnull == in) {
printf("open of url('%s') failed: error=%x\n", urlName, ec);
return -1;
}
// Translate the input using the argument character set id into unicode
nsIUnicharInputStream* uin;
rv = NS_NewConverterStream(&uin, nsnull, in, 0, cset);
if (NS_OK != rv) {
printf("can't create converter input stream: %d\n", rv);
return -1;
}
// Read the input and write some output
PRTime start = PR_Now();
PRInt32 count = 0;
for (;;) {
PRUnichar buf[1000];
PRInt32 nb;
ec = uin->Read(buf, 0, 1000, &nb);
if (ec < 0) {
if (ec != NS_BASE_STREAM_EOF) {
printf("i/o error: %d\n", ec);
}
break;
}
count += nb;
}
PRTime end = PR_Now();
PRTime conversion, ustoms;
LL_I2L(ustoms, 1000);
LL_SUB(conversion, end, start);
LL_DIV(conversion, conversion, ustoms);
char buf[500];
PR_snprintf(buf, sizeof(buf),
"converting and discarding %d bytes took %lldms",
count, conversion);
puts(buf);
// Release the objects
in->Release();
uin->Release();
url->Release();
return 0;
}

View File

@@ -0,0 +1,62 @@
#!gmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
DEPTH=../..
REQUIRES=xpcom netlib
include $(DEPTH)/config/config.mk
CPPSRCS = \
TestAtoms.cpp \
TestCRT.cpp \
$(NULL)
INCLUDES+=-I../src
OBJS = $(CPPSRCS:.cpp=.o)
EX_LIBS = \
$(DIST)/lib/libraptorbase.a \
$(DIST)/lib/libxpcom.a \
$(DIST)/lib/libplc21.a \
$(DIST)/lib/libplds21.a \
$(DIST)/lib/libnspr21.a \
$(NULL)
PROGS = $(addprefix $(OBJDIR)/, $(CPPSRCS:.cpp=))
TARGETS = $(PROGS)
include $(DEPTH)/config/rules.mk
# needed for mac linux
ifeq (linux,$(ARCH))
OS_LIBS += /usr/lib/libdl.so
endif
$(OBJDIR)/%.o: %.cpp
@$(MAKE_OBJDIR)
$(CCC) -o $@ $(CFLAGS) -c $*.cpp
$(PROGS):$(OBJDIR)/%: $(OBJDIR)/%.o $(EX_LIBS)
@$(MAKE_OBJDIR)
$(CCC) -o $@ $@.o $(LDFLAGS) $(EX_LIBS) $(OS_LIBS)
install:: $(TARGETS)
$(INSTALL) $(PROGS) $(DIST)/bin

View File

@@ -0,0 +1,67 @@
#!gmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
DEPTH=../..
topsrcdir = @top_srcdir@
VPATH = @srcdir@
srcdir = @srcdir@
include $(DEPTH)/config/autoconf.mk
REQUIRES=xpcom netlib
include $(topsrcdir)/config/config.mk
CPPSRCS = \
TestAtoms.cpp \
TestCRT.cpp \
$(NULL)
INCLUDES+=-I$(srcdir)/../src
OBJS = $(CPPSRCS:.cpp=.o)
EX_LIBS = \
$(DIST)/lib/libraptorbase.a \
$(DIST)/lib/libxpcom.a \
$(DIST)/lib/libplc21.a \
$(DIST)/lib/libplds21.a \
$(DIST)/lib/libnspr21.a \
$(NULL)
PROGS = $(addprefix $(OBJDIR)/, $(CPPSRCS:.cpp=))
TARGETS = $(PROGS)
include $(topsrcdir)/config/rules.mk
# needed for mac linux
ifeq (linux,$(ARCH))
OS_LIBS += /usr/lib/libdl.so
endif
$(OBJDIR)/%.o: %.cpp
@$(MAKE_OBJDIR)
$(CCC) -o $@ $(CFLAGS) -c $<
$(PROGS):$(OBJDIR)/%: $(OBJDIR)/%.o $(EX_LIBS)
@$(MAKE_OBJDIR)
$(CCC) -o $@ $@.o $(LDFLAGS) $(EX_LIBS) $(OS_LIBS)
install:: $(TARGETS)
$(INSTALL) $(PROGS) $(DIST)/bin

View File

@@ -0,0 +1,109 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#include "nsIAtom.h"
#include "nsString.h"
#include "prprf.h"
#include "prtime.h"
#include <stdio.h>
extern "C" int _CrtSetDbgFlag(int);
int main(int argc, char** argv)
{
FILE* fp = fopen("words.txt", "r");
if (nsnull == fp) {
printf("can't open words.txt\n");
return -1;
}
PRInt32 count = 0;
PRUnichar** strings = new PRUnichar*[60000];
nsIAtom** ids = new nsIAtom*[60000];
nsAutoString s1, s2;
PRTime start = PR_Now();
PRInt32 i;
for (i = 0; i < 60000; i++) {
char buf[1000];
char* s = fgets(buf, sizeof(buf), fp);
if (nsnull == s) {
break;
}
nsAutoString sb(buf);
strings[count++] = sb.ToNewUnicode();
sb.ToUpperCase();
strings[count++] = sb.ToNewUnicode();
}
PRTime end0 = PR_Now();
// Find and create idents
for (i = 0; i < count; i++) {
ids[i] = NS_NewAtom(strings[i]);
}
PRUnichar qqs[1]; qqs[0] = 0;
nsIAtom* qq = NS_NewAtom(qqs);
PRTime end1 = PR_Now();
// Now make sure we can find all the idents we just made
for (i = 0; i < count; i++) {
nsIAtom* id = NS_NewAtom(ids[i]->GetUnicode());
if (id != ids[i]) {
id->ToString(s1);
ids[i]->ToString(s2);
printf("find failed: id='%s' ids[%d]='%s'\n",
s1.ToNewCString(), i, s2.ToNewCString());
return -1;
}
NS_RELEASE(id);
}
PRTime end2 = PR_Now();
// Destroy all the atoms we just made
NS_RELEASE(qq);
for (i = 0; i < count; i++) {
NS_RELEASE(ids[i]);
}
// Print out timings
PRTime end3 = PR_Now();
PRTime creates, finds, lookups, dtor, ustoms;
LL_I2L(ustoms, 1000);
LL_SUB(creates, end0, start);
LL_DIV(creates, creates, ustoms);
LL_SUB(finds, end1, end0);
LL_DIV(finds, finds, ustoms);
LL_SUB(lookups, end2, end1);
LL_DIV(lookups, lookups, ustoms);
LL_SUB(dtor, end3, end2);
char buf[500];
PR_snprintf(buf, sizeof(buf), "making %d ident strings took %lldms",
count, creates);
puts(buf);
PR_snprintf(buf, sizeof(buf), "%d new idents took %lldms",
count, finds);
puts(buf);
PR_snprintf(buf, sizeof(buf), "%d ident lookups took %lldms",
count, lookups);
puts(buf);
PR_snprintf(buf, sizeof(buf), "dtor took %lldusec", dtor);
puts(buf);
printf("%d live atoms\n", NS_GetNumberOfAtoms());
NS_POSTCONDITION(0 == NS_GetNumberOfAtoms(), "dangling atoms");
return 0;
}

View File

@@ -0,0 +1,89 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#include "nsCRT.h"
#include "nsString.h"
#include "plstr.h"
#include <stdlib.h>
// Verify that nsCRT versions of string comparison routines get the
// same answers as the native non-unicode versions. We only pass in
// iso-latin-1 strings, so the comparision must be valid.
static void Check(const char* s1, const char* s2, PRIntn n)
{
PRIntn clib = PL_strcmp(s1, s2);
PRIntn clib_n = PL_strncmp(s1, s2, n);
PRIntn clib_case = PL_strcasecmp(s1, s2);
PRIntn clib_case_n = PL_strncasecmp(s1, s2, n);
nsAutoString t1(s1), t2(s2);
const PRUnichar* us1 = t1.GetUnicode();
const PRUnichar* us2 = t2.GetUnicode();
PRIntn u = nsCRT::strcmp(us1, s2);
PRIntn u_n = nsCRT::strncmp(us1, s2, n);
PRIntn u_case = nsCRT::strcasecmp(us1, s2);
PRIntn u_case_n = nsCRT::strncasecmp(us1, s2, n);
PRIntn u2 = nsCRT::strcmp(us1, us2);
PRIntn u2_n = nsCRT::strncmp(us1, us2, n);
PRIntn u2_case = nsCRT::strcasecmp(us1, us2);
PRIntn u2_case_n = nsCRT::strncasecmp(us1, us2, n);
NS_ASSERTION(clib == u, "strcmp");
NS_ASSERTION(clib_n == u_n, "strncmp");
NS_ASSERTION(clib_case == u_case, "strcasecmp");
NS_ASSERTION(clib_case_n == u_case_n, "strncasecmp");
NS_ASSERTION(clib == u2, "strcmp");
NS_ASSERTION(clib_n == u2_n, "strncmp");
NS_ASSERTION(clib_case == u2_case, "strcasecmp");
NS_ASSERTION(clib_case_n == u2_case_n, "strncasecmp");
}
struct Test {
const char* s1;
const char* s2;
PRIntn n;
};
static Test tests[] = {
{ "foo", "foo", 3 },
{ "foo", "fo", 3 },
{ "foo", "bar", 3 },
{ "foo", "ba", 3 },
{ "foo", "zap", 3 },
{ "foo", "za", 3 },
{ "bar", "foo", 3 },
{ "bar", "fo", 3 },
{ "bar", "foo", 3 },
{ "bar", "fo", 3 },
};
#define NUM_TESTS (sizeof(tests) / sizeof(tests[0]))
void main()
{
Test* tp = tests;
for (PRIntn i = 0; i < NUM_TESTS; i++, tp++) {
Check(tp->s1, tp->s2, tp->n);
}
}

View File

@@ -0,0 +1,202 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#include "prtypes.h"
#include "nsVoidArray.h"
#include "nsITimer.h"
#include "nsITimerCallback.h"
#include <stdio.h>
#include <stdlib.h>
#include "resources.h"
#include <windows.h>
static char* class1Name = "TimerTest";
static HINSTANCE gInstance, gPrevInstance;
static nsVoidArray *gTimeouts = NULL;
static void CreateRepeat(PRUint32 aDelay);
void
MyCallback (nsITimer *aTimer, void *aClosure)
{
printf("Timer executed with delay %d\n", (int)aClosure);
if (gTimeouts->RemoveElement(aTimer) == PR_TRUE) {
NS_RELEASE(aTimer);
}
}
void
MyRepeatCallback (nsITimer *aTimer, void *aClosure)
{
printf("Timer executed with delay %d\n", (int)aClosure);
if (gTimeouts->RemoveElement(aTimer) == PR_TRUE) {
NS_RELEASE(aTimer);
}
CreateRepeat((PRUint32)aClosure);
}
static void
CreateOneShot(PRUint32 aDelay)
{
nsITimer *timer;
NS_NewTimer(&timer);
timer->Init(MyCallback, (void *)aDelay, aDelay);
gTimeouts->AppendElement(timer);
}
static void
CreateRepeat(PRUint32 aDelay)
{
nsITimer *timer;
NS_NewTimer(&timer);
timer->Init(MyRepeatCallback, (void *)aDelay, aDelay);
gTimeouts->AppendElement(timer);
}
static void
CancelAll()
{
int i, count = gTimeouts->Count();
for (i=0; i < count; i++) {
nsITimer *timer = (nsITimer *)gTimeouts->ElementAt(i);
if (timer != NULL) {
timer->Cancel();
NS_RELEASE(timer);
}
}
gTimeouts->Clear();
}
long PASCAL
WndProc(HWND hWnd, UINT msg, WPARAM param, LPARAM lparam)
{
HMENU hMenu;
switch (msg) {
case WM_COMMAND:
hMenu = GetMenu(hWnd);
switch (LOWORD(param)) {
case TIMER_EXIT:
::DestroyWindow(hWnd);
exit(0);
case TIMER_1SECOND:
CreateOneShot(1000);
break;
case TIMER_5SECOND:
CreateOneShot(5000);
break;
case TIMER_10SECOND:
CreateOneShot(10000);
break;
case TIMER_1REPEAT:
CreateRepeat(1000);
break;
case TIMER_5REPEAT:
CreateRepeat(5000);
break;
case TIMER_10REPEAT:
CreateRepeat(10000);
break;
case TIMER_CANCEL:
CancelAll();
break;
default:
break;
}
default:
break;
}
return DefWindowProc(hWnd, msg, param, lparam);
}
static HWND CreateTopLevel(const char* clazz, const char* title,
int aWidth, int aHeight)
{
// Create a simple top level window
HWND window = ::CreateWindowEx(WS_EX_CLIENTEDGE,
clazz, title,
WS_OVERLAPPEDWINDOW|WS_CLIPCHILDREN,
CW_USEDEFAULT, CW_USEDEFAULT,
aWidth, aHeight,
HWND_DESKTOP,
NULL,
gInstance,
NULL);
::ShowWindow(window, SW_SHOW);
::UpdateWindow(window);
return window;
}
int PASCAL
WinMain(HINSTANCE instance, HINSTANCE prevInstance, LPSTR cmdParam, int nCmdShow)
{
gInstance = instance;
if (!prevInstance) {
WNDCLASS wndClass;
wndClass.style = 0;
wndClass.lpfnWndProc = WndProc;
wndClass.cbClsExtra = 0;
wndClass.cbWndExtra = 0;
wndClass.hInstance = gInstance;
wndClass.hIcon = LoadIcon(NULL, IDI_APPLICATION);
wndClass.hCursor = LoadCursor(NULL, IDC_ARROW);
wndClass.hbrBackground = (HBRUSH) GetStockObject(LTGRAY_BRUSH);
wndClass.lpszMenuName = class1Name;
wndClass.lpszClassName = class1Name;
RegisterClass(&wndClass);
}
// Create our first top level window
HWND window = CreateTopLevel(class1Name, "Raptor HTML Viewer", 620, 400);
gTimeouts = new nsVoidArray();
// Process messages
MSG msg;
while (GetMessage(&msg, NULL, 0, 0)) {
TranslateMessage(&msg);
DispatchMessage(&msg);
}
return msg.wParam;
}
void main(int argc, char **argv)
{
WinMain(GetModuleHandle(NULL), NULL, 0, SW_SHOW);
}

View File

@@ -0,0 +1,90 @@
#!nmake
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
DEPTH=..\..
MAKE_OBJ_TYPE = EXE
PROG0 = .\$(OBJDIR)\TimerTest.exe
PROG1 = .\$(OBJDIR)\TestAtoms.exe
PROG2 = .\$(OBJDIR)\CvtURL.exe
PROG3 = .\$(OBJDIR)\TestCRT.exe
RESFILE = timer.res
PROGRAMS = $(PROG0) $(PROG1) \
!ifdef MODULAR_NETLIB
$(PROG2) \
$(PROG3) \
!endif
$(NULL)
LINCS=-I..\src -I$(PUBLIC)\xpcom -I$(PUBLIC)\netlib
LLIBS= \
$(DIST)\lib\xpcom32.lib \
$(DIST)\lib\raptorbase.lib \
!ifdef MODULAR_NETLIB
$(DIST)\lib\netlib.lib \
!endif
$(LIBNSPR) \
$(DIST)\lib\libplc21.lib \
!if "$(MOZ_BITS)"=="32" && defined(MOZ_DEBUG) && defined(GLOWCODE)
$(GLOWDIR)\glowcode.lib \
!endif
$(RESFILE)
include <$(DEPTH)\config\rules.mak>
install:: $(PROGRAMS)
$(MAKE_INSTALL) $(PROG0) $(DIST)\bin
$(MAKE_INSTALL) $(PROG1) $(DIST)\bin
!ifdef MODULAR_NETLIB
$(MAKE_INSTALL) $(PROG2) $(DIST)\bin
$(MAKE_INSTALL) $(PROG3) $(DIST)\bin
!endif
clobber::
rm -f $(DIST)\bin\TimerTest.exe
rm -f $(DIST)\bin\TestAtoms.exe
!ifdef MODULAR_NETLIB
rm -f $(DIST)\bin\CvtURL.exe
rm -f $(DIST)\bin\TestCRT.exe
!endif
# Move this into config/obj.inc when it's allowed
.cpp{.\$(OBJDIR)\}.exe:
$(CC) @<<$(CFGFILE)
$(CFLAGS)
$(LCFLAGS)
$(LINCS)
$(LINCS_1)
$(INCS)
$(LLIBS)
$(OS_LIBS)
-Fd$(PBDFILE)
-Fe.\$(OBJDIR)\
-Fo.\$(OBJDIR)\
$(CURDIR)$(*B).cpp
<<KEEP
$(PROG0): $(OBJDIR) TimerTest.cpp $(RESFILE)
$(PROG1): $(OBJDIR) TestAtoms.cpp
!ifdef MODULAR_NETLIB
$(PROG2): $(OBJDIR) CvtURL.cpp
$(PROG3): $(OBJDIR) TestCRT.cpp
!endif

View File

@@ -0,0 +1,32 @@
/* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#ifndef resources_h___
#define resources_h___
#define TIMER_1SECOND 40000
#define TIMER_5SECOND 40001
#define TIMER_10SECOND 40002
#define TIMER_1REPEAT 40003
#define TIMER_5REPEAT 40004
#define TIMER_10REPEAT 40005
#define TIMER_CANCEL 40006
#define TIMER_EXIT 40010
#endif /* resources_h___ */

View File

@@ -0,0 +1,38 @@
/*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#include "resources.h"
TIMERTEST MENU DISCARDABLE
{
POPUP "Debug"
{
POPUP "One Shot"
{
MENUITEM "1 second", TIMER_1SECOND
MENUITEM "5 second", TIMER_5SECOND
MENUITEM "10 second", TIMER_10SECOND
}
POPUP "Repeated"
{
MENUITEM "1 second", TIMER_1REPEAT
MENUITEM "5 second", TIMER_5REPEAT
MENUITEM "10 second", TIMER_10REPEAT
}
MENUITEM "Cancel All", TIMER_CANCEL
MENUITEM "Exit", TIMER_EXIT
}
}

696
mozilla/build/autoconf/config.guess vendored Executable file
View File

@@ -0,0 +1,696 @@
#! /bin/sh
# Attempt to guess a canonical system name.
# Copyright (C) 1992, 93, 94, 95, 1996 Free Software Foundation, Inc.
#
# This file is free software; you can redistribute it and/or modify it
# under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
#
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Written by Per Bothner <bothner@cygnus.com>.
# The master version of this file is at the FSF in /home/gd/gnu/lib.
#
# This script attempts to guess a canonical system name similar to
# config.sub. If it succeeds, it prints the system name on stdout, and
# exits with 0. Otherwise, it exits with 1.
#
# The plan is that this can be called by configure scripts if you
# don't specify an explicit system type (host/target name).
#
# Only a few systems have been added to this list; please add others
# (but try to keep the structure clean).
#
# This is needed to find uname on a Pyramid OSx when run in the BSD universe.
# (ghazi@noc.rutgers.edu 8/24/94.)
if (test -f /.attbin/uname) >/dev/null 2>&1 ; then
PATH=$PATH:/.attbin ; export PATH
fi
UNAME_MACHINE=`(uname -m) 2>/dev/null` || UNAME_MACHINE=unknown
UNAME_RELEASE=`(uname -r) 2>/dev/null` || UNAME_RELEASE=unknown
UNAME_SYSTEM=`(uname -s) 2>/dev/null` || UNAME_SYSTEM=unknown
UNAME_VERSION=`(uname -v) 2>/dev/null` || UNAME_VERSION=unknown
trap 'rm -f dummy.c dummy.o dummy; exit 1' 1 2 15
# Note: order is significant - the case branches are not exclusive.
case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
alpha:OSF1:*:*)
# A Vn.n version is a released version.
# A Tn.n version is a released field test version.
# A Xn.n version is an unreleased experimental baselevel.
# 1.2 uses "1.2" for uname -r.
echo alpha-dec-osf`echo ${UNAME_RELEASE} | sed -e 's/^[VTX]//'`
exit 0 ;;
21064:Windows_NT:50:3)
echo alpha-dec-winnt3.5
exit 0 ;;
Amiga*:UNIX_System_V:4.0:*)
echo m68k-cbm-sysv4
exit 0;;
amiga:NetBSD:*:*)
echo m68k-cbm-netbsd${UNAME_RELEASE}
exit 0 ;;
amiga:OpenBSD:*:*)
echo m68k-cbm-openbsd${UNAME_RELEASE}
exit 0 ;;
arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
echo arm-acorn-riscix${UNAME_RELEASE}
exit 0;;
Pyramid*:OSx*:*:*|MIS*:OSx*:*:*)
# akee@wpdis03.wpafb.af.mil (Earle F. Ake) contributed MIS and NILE.
if test "`(/bin/universe) 2>/dev/null`" = att ; then
echo pyramid-pyramid-sysv3
else
echo pyramid-pyramid-bsd
fi
exit 0 ;;
NILE:*:*:dcosx)
echo pyramid-pyramid-svr4
exit 0 ;;
sun4*:SunOS:5.*:* | tadpole*:SunOS:5.*:*)
echo sparc-sun-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
i86pc:SunOS:5.*:*)
echo i386-pc-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
sun4*:SunOS:6*:*)
# According to config.sub, this is the proper way to canonicalize
# SunOS6. Hard to guess exactly what SunOS6 will be like, but
# it's likely to be more like Solaris than SunOS4.
echo sparc-sun-solaris3`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
sun4*:SunOS:*:*)
case "`/usr/bin/arch -k`" in
Series*|S4*)
UNAME_RELEASE=`uname -v`
;;
esac
# Japanese Language versions have a version number like `4.1.3-JL'.
echo sparc-sun-sunos`echo ${UNAME_RELEASE}|sed -e 's/-/_/'`
exit 0 ;;
sun3*:SunOS:*:*)
echo m68k-sun-sunos${UNAME_RELEASE}
exit 0 ;;
aushp:SunOS:*:*)
echo sparc-auspex-sunos${UNAME_RELEASE}
exit 0 ;;
atari*:NetBSD:*:*)
echo m68k-atari-netbsd${UNAME_RELEASE}
exit 0 ;;
atari*:OpenBSD:*:*)
echo m68k-atari-openbsd${UNAME_RELEASE}
exit 0 ;;
sun3*:NetBSD:*:*)
echo m68k-sun-netbsd${UNAME_RELEASE}
exit 0 ;;
sun3*:OpenBSD:*:*)
echo m68k-sun-openbsd${UNAME_RELEASE}
exit 0 ;;
mac68k:NetBSD:*:*)
echo m68k-apple-netbsd${UNAME_RELEASE}
exit 0 ;;
mac68k:OpenBSD:*:*)
echo m68k-apple-openbsd${UNAME_RELEASE}
exit 0 ;;
powerpc:machten:*:*)
echo powerpc-apple-machten${UNAME_RELEASE}
exit 0 ;;
RISC*:Mach:*:*)
echo mips-dec-mach_bsd4.3
exit 0 ;;
RISC*:ULTRIX:*:*)
echo mips-dec-ultrix${UNAME_RELEASE}
exit 0 ;;
VAX*:ULTRIX*:*:*)
echo vax-dec-ultrix${UNAME_RELEASE}
exit 0 ;;
2020:CLIX:*:*)
echo clipper-intergraph-clix${UNAME_RELEASE}
exit 0 ;;
mips:*:*:UMIPS | mips:*:*:RISCos)
sed 's/^ //' << EOF >dummy.c
int main (argc, argv) int argc; char **argv; {
#if defined (host_mips) && defined (MIPSEB)
#if defined (SYSTYPE_SYSV)
printf ("mips-mips-riscos%ssysv\n", argv[1]); exit (0);
#endif
#if defined (SYSTYPE_SVR4)
printf ("mips-mips-riscos%ssvr4\n", argv[1]); exit (0);
#endif
#if defined (SYSTYPE_BSD43) || defined(SYSTYPE_BSD)
printf ("mips-mips-riscos%sbsd\n", argv[1]); exit (0);
#endif
#endif
exit (-1);
}
EOF
${CC-cc} dummy.c -o dummy \
&& ./dummy `echo "${UNAME_RELEASE}" | sed -n 's/\([0-9]*\).*/\1/p'` \
&& rm dummy.c dummy && exit 0
rm -f dummy.c dummy
echo mips-mips-riscos${UNAME_RELEASE}
exit 0 ;;
Night_Hawk:Power_UNIX:*:*)
echo powerpc-harris-powerunix
exit 0 ;;
m88k:CX/UX:7*:*)
echo m88k-harris-cxux7
exit 0 ;;
m88k:*:4*:R4*)
echo m88k-motorola-sysv4
exit 0 ;;
m88k:*:3*:R3*)
echo m88k-motorola-sysv3
exit 0 ;;
AViiON:dgux:*:*)
# DG/UX returns AViiON for all architectures
UNAME_PROCESSOR=`/usr/bin/uname -p`
if [ $UNAME_PROCESSOR = mc88100 -o $UNAME_PROCESSOR = mc88110 ] ; then
if [ ${TARGET_BINARY_INTERFACE}x = m88kdguxelfx \
-o ${TARGET_BINARY_INTERFACE}x = x ] ; then
echo m88k-dg-dgux${UNAME_RELEASE}
else
echo m88k-dg-dguxbcs${UNAME_RELEASE}
fi
else echo i586-dg-dgux${UNAME_RELEASE}
fi
exit 0 ;;
M88*:DolphinOS:*:*) # DolphinOS (SVR3)
echo m88k-dolphin-sysv3
exit 0 ;;
M88*:*:R3*:*)
# Delta 88k system running SVR3
echo m88k-motorola-sysv3
exit 0 ;;
XD88*:*:*:*) # Tektronix XD88 system running UTekV (SVR3)
echo m88k-tektronix-sysv3
exit 0 ;;
Tek43[0-9][0-9]:UTek:*:*) # Tektronix 4300 system running UTek (BSD)
echo m68k-tektronix-bsd
exit 0 ;;
*:IRIX*:*:*)
echo mips-sgi-irix`echo ${UNAME_RELEASE}|sed -e 's/-/_/g'`
exit 0 ;;
????????:AIX?:[12].1:2) # AIX 2.2.1 or AIX 2.1.1 is RT/PC AIX.
echo romp-ibm-aix # uname -m gives an 8 hex-code CPU id
exit 0 ;; # Note that: echo "'`uname -s`'" gives 'AIX '
i?86:AIX:*:*)
echo i386-ibm-aix
exit 0 ;;
*:AIX:2:3)
if grep bos325 /usr/include/stdio.h >/dev/null 2>&1; then
sed 's/^ //' << EOF >dummy.c
#include <sys/systemcfg.h>
main()
{
if (!__power_pc())
exit(1);
puts("powerpc-ibm-aix3.2.5");
exit(0);
}
EOF
${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
rm -f dummy.c dummy
echo rs6000-ibm-aix3.2.5
elif grep bos324 /usr/include/stdio.h >/dev/null 2>&1; then
echo rs6000-ibm-aix3.2.4
else
echo rs6000-ibm-aix3.2
fi
exit 0 ;;
*:AIX:*:4)
if /usr/sbin/lsattr -EHl proc0 | grep POWER >/dev/null 2>&1; then
IBM_ARCH=rs6000
else
IBM_ARCH=powerpc
fi
if [ -x /usr/bin/oslevel ] ; then
IBM_REV=`/usr/bin/oslevel`
else
IBM_REV=4.${UNAME_RELEASE}
fi
echo ${IBM_ARCH}-ibm-aix${IBM_REV}
exit 0 ;;
*:AIX:*:*)
echo rs6000-ibm-aix
exit 0 ;;
ibmrt:4.4BSD:*|romp-ibm:BSD:*)
echo romp-ibm-bsd4.4
exit 0 ;;
ibmrt:*BSD:*|romp-ibm:BSD:*) # covers RT/PC NetBSD and
echo romp-ibm-bsd${UNAME_RELEASE} # 4.3 with uname added to
exit 0 ;; # report: romp-ibm BSD 4.3
*:BOSX:*:*)
echo rs6000-bull-bosx
exit 0 ;;
DPX/2?00:B.O.S.:*:*)
echo m68k-bull-sysv3
exit 0 ;;
9000/[34]??:4.3bsd:1.*:*)
echo m68k-hp-bsd
exit 0 ;;
hp300:4.4BSD:*:* | 9000/[34]??:4.3bsd:2.*:*)
echo m68k-hp-bsd4.4
exit 0 ;;
9000/[3478]??:HP-UX:*:*)
case "${UNAME_MACHINE}" in
9000/31? ) HP_ARCH=m68000 ;;
9000/[34]?? ) HP_ARCH=m68k ;;
9000/7?? | 9000/8?[1679] ) HP_ARCH=hppa1.1 ;;
9000/8?? ) HP_ARCH=hppa1.0 ;;
esac
HPUX_REV=`echo ${UNAME_RELEASE}|sed -e 's/[^.]*.[0B]*//'`
echo ${HP_ARCH}-hp-hpux${HPUX_REV}
exit 0 ;;
3050*:HI-UX:*:*)
sed 's/^ //' << EOF >dummy.c
#include <unistd.h>
int
main ()
{
long cpu = sysconf (_SC_CPU_VERSION);
/* The order matters, because CPU_IS_HP_MC68K erroneously returns
true for CPU_PA_RISC1_0. CPU_IS_PA_RISC returns correct
results, however. */
if (CPU_IS_PA_RISC (cpu))
{
switch (cpu)
{
case CPU_PA_RISC1_0: puts ("hppa1.0-hitachi-hiuxwe2"); break;
case CPU_PA_RISC1_1: puts ("hppa1.1-hitachi-hiuxwe2"); break;
case CPU_PA_RISC2_0: puts ("hppa2.0-hitachi-hiuxwe2"); break;
default: puts ("hppa-hitachi-hiuxwe2"); break;
}
}
else if (CPU_IS_HP_MC68K (cpu))
puts ("m68k-hitachi-hiuxwe2");
else puts ("unknown-hitachi-hiuxwe2");
exit (0);
}
EOF
${CC-cc} dummy.c -o dummy && ./dummy && rm dummy.c dummy && exit 0
rm -f dummy.c dummy
echo unknown-hitachi-hiuxwe2
exit 0 ;;
9000/7??:4.3bsd:*:* | 9000/8?[79]:4.3bsd:*:* )
echo hppa1.1-hp-bsd
exit 0 ;;
9000/8??:4.3bsd:*:*)
echo hppa1.0-hp-bsd
exit 0 ;;
hp7??:OSF1:*:* | hp8?[79]:OSF1:*:* )
echo hppa1.1-hp-osf
exit 0 ;;
hp8??:OSF1:*:*)
echo hppa1.0-hp-osf
exit 0 ;;
i?86:OSF1:*:*)
if [ -x /usr/sbin/sysversion ] ; then
echo ${UNAME_MACHINE}-unknown-osf1mk
else
echo ${UNAME_MACHINE}-unknown-osf1
fi
exit 0 ;;
parisc*:Lites*:*:*)
echo hppa1.1-hp-lites
exit 0 ;;
C1*:ConvexOS:*:* | convex:ConvexOS:C1*:*)
echo c1-convex-bsd
exit 0 ;;
C2*:ConvexOS:*:* | convex:ConvexOS:C2*:*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
exit 0 ;;
C34*:ConvexOS:*:* | convex:ConvexOS:C34*:*)
echo c34-convex-bsd
exit 0 ;;
C38*:ConvexOS:*:* | convex:ConvexOS:C38*:*)
echo c38-convex-bsd
exit 0 ;;
C4*:ConvexOS:*:* | convex:ConvexOS:C4*:*)
echo c4-convex-bsd
exit 0 ;;
CRAY*X-MP:*:*:*)
echo xmp-cray-unicos
exit 0 ;;
CRAY*Y-MP:*:*:*)
echo ymp-cray-unicos${UNAME_RELEASE}
exit 0 ;;
CRAY*[A-Z]90:*:*:*)
echo ${UNAME_MACHINE}-cray-unicos${UNAME_RELEASE} \
| sed -e 's/CRAY.*\([A-Z]90\)/\1/' \
-e y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/
exit 0 ;;
CRAY*TS:*:*:*)
echo t90-cray-unicos${UNAME_RELEASE}
exit 0 ;;
CRAY-2:*:*:*)
echo cray2-cray-unicos
exit 0 ;;
F300:UNIX_System_V:*:*)
FUJITSU_SYS=`uname -p | tr [A-Z] [a-z] | sed -e 's/\///'`
FUJITSU_REL=`echo ${UNAME_RELEASE} | sed -e 's/ /_/'`
echo "f300-fujitsu-${FUJITSU_SYS}${FUJITSU_REL}"
exit 0 ;;
F301:UNIX_System_V:*:*)
echo f301-fujitsu-uxpv`echo $UNAME_RELEASE | sed 's/ .*//'`
exit 0 ;;
hp3[0-9][05]:NetBSD:*:*)
echo m68k-hp-netbsd${UNAME_RELEASE}
exit 0 ;;
hp3[0-9][05]:OpenBSD:*:*)
echo m68k-hp-openbsd${UNAME_RELEASE}
exit 0 ;;
i?86:BSD/386:*:* | *:BSD/OS:*:*)
echo ${UNAME_MACHINE}-pc-bsdi${UNAME_RELEASE}
exit 0 ;;
*:FreeBSD:*:*)
echo ${UNAME_MACHINE}-unknown-freebsd`echo ${UNAME_RELEASE}|sed -e 's/[-(].*//'`
exit 0 ;;
*:NetBSD:*:*)
echo ${UNAME_MACHINE}-unknown-netbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
exit 0 ;;
*:OpenBSD:*:*)
echo ${UNAME_MACHINE}-unknown-openbsd`echo ${UNAME_RELEASE}|sed -e 's/[-_].*/\./'`
exit 0 ;;
i*:CYGWIN*:*)
echo i386-pc-cygwin32
exit 0 ;;
p*:CYGWIN*:*)
echo powerpcle-unknown-cygwin32
exit 0 ;;
prep*:SunOS:5.*:*)
echo powerpcle-unknown-solaris2`echo ${UNAME_RELEASE}|sed -e 's/[^.]*//'`
exit 0 ;;
*:GNU:*:*)
echo `echo ${UNAME_MACHINE}|sed -e 's,/.*$,,'`-unknown-gnu`echo ${UNAME_RELEASE}|sed -e 's,/.*$,,'`
exit 0 ;;
*:Linux:*:*)
# The BFD linker knows what the default object file format is, so
# first see if it will tell us.
ld_help_string=`ld --help 2>&1`
if echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf_i.86"; then
echo "${UNAME_MACHINE}-pc-linux" ; exit 0
elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86linux"; then
echo "${UNAME_MACHINE}-pc-linuxaout" ; exit 0
elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: i.86coff"; then
echo "${UNAME_MACHINE}-pc-linuxcoff" ; exit 0
elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68kelf"; then
echo "${UNAME_MACHINE}-unknown-linux" ; exit 0
elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: m68klinux"; then
echo "${UNAME_MACHINE}-unknown-linuxaout" ; exit 0
elif echo "$ld_help_string" | grep >/dev/null 2>&1 "supported emulations: elf32ppc"; then
echo "powerpc-unknown-linux" ; exit 0
elif test "${UNAME_MACHINE}" = "alpha" ; then
echo alpha-unknown-linux ; exit 0
elif test "${UNAME_MACHINE}" = "sparc" ; then
echo sparc-unknown-linux ; exit 0
else
# Either a pre-BFD a.out linker (linuxoldld) or one that does not give us
# useful --help. Gcc wants to distinguish between linuxoldld and linuxaout.
test ! -d /usr/lib/ldscripts/. \
&& echo "${UNAME_MACHINE}-pc-linuxoldld" && exit 0
# Determine whether the default compiler is a.out or elf
cat >dummy.c <<EOF
main(argc, argv)
int argc;
char *argv[];
{
#ifdef __ELF__
printf ("%s-pc-linux\n", argv[1]);
#else
printf ("%s-pc-linuxaout\n", argv[1]);
#endif
return 0;
}
EOF
${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy "${UNAME_MACHINE}" && rm dummy.c dummy && exit 0
rm -f dummy.c dummy
fi ;;
# ptx 4.0 does uname -s correctly, with DYNIX/ptx in there. earlier versions
# are messed up and put the nodename in both sysname and nodename.
i?86:DYNIX/ptx:4*:*)
echo i386-sequent-sysv4
exit 0 ;;
i?86:*:4.*:* | i?86:SYSTEM_V:4.*:*)
if grep Novell /usr/include/link.h >/dev/null 2>/dev/null; then
echo ${UNAME_MACHINE}-univel-sysv${UNAME_RELEASE}
else
echo ${UNAME_MACHINE}-pc-sysv${UNAME_RELEASE}
fi
exit 0 ;;
i?86:*:3.2:*)
if test -f /usr/options/cb.name; then
UNAME_REL=`sed -n 's/.*Version //p' </usr/options/cb.name`
echo ${UNAME_MACHINE}-pc-isc$UNAME_REL
elif /bin/uname -X 2>/dev/null >/dev/null ; then
UNAME_REL=`(/bin/uname -X|egrep Release|sed -e 's/.*= //')`
(/bin/uname -X|egrep i80486 >/dev/null) && UNAME_MACHINE=i486
(/bin/uname -X|egrep '^Machine.*Pentium' >/dev/null) \
&& UNAME_MACHINE=i586
echo ${UNAME_MACHINE}-pc-sco$UNAME_REL
else
echo ${UNAME_MACHINE}-pc-sysv32
fi
exit 0 ;;
Intel:Mach:3*:*)
echo i386-pc-mach3
exit 0 ;;
paragon:*:*:*)
echo i860-intel-osf1
exit 0 ;;
i860:*:4.*:*) # i860-SVR4
if grep Stardent /usr/include/sys/uadmin.h >/dev/null 2>&1 ; then
echo i860-stardent-sysv${UNAME_RELEASE} # Stardent Vistra i860-SVR4
else # Add other i860-SVR4 vendors below as they are discovered.
echo i860-unknown-sysv${UNAME_RELEASE} # Unknown i860-SVR4
fi
exit 0 ;;
mini*:CTIX:SYS*5:*)
# "miniframe"
echo m68010-convergent-sysv
exit 0 ;;
M68*:*:R3V[567]*:*)
test -r /sysV68 && echo 'm68k-motorola-sysv' && exit 0 ;;
3[34]??:*:4.0:3.0 | 3[34]??,*:*:4.0:3.0 | 4850:*:4.0:3.0)
OS_REL=''
test -r /etc/.relid \
&& OS_REL=.`sed -n 's/[^ ]* [^ ]* \([0-9][0-9]\).*/\1/p' < /etc/.relid`
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& echo i486-ncr-sysv4.3${OS_REL} && exit 0
/bin/uname -p 2>/dev/null | /bin/grep entium >/dev/null \
&& echo i586-ncr-sysv4.3${OS_REL} && exit 0 ;;
3[34]??:*:4.0:* | 3[34]??,*:*:4.0:*)
/bin/uname -p 2>/dev/null | grep 86 >/dev/null \
&& echo i486-ncr-sysv4 && exit 0 ;;
m68*:LynxOS:2.*:*)
echo m68k-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
mc68030:UNIX_System_V:4.*:*)
echo m68k-atari-sysv4
exit 0 ;;
i?86:LynxOS:2.*:*)
echo i386-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
TSUNAMI:LynxOS:2.*:*)
echo sparc-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
rs6000:LynxOS:2.*:* | PowerPC:LynxOS:2.*:*)
echo rs6000-unknown-lynxos${UNAME_RELEASE}
exit 0 ;;
SM[BE]S:UNIX_SV:*:*)
echo mips-dde-sysv${UNAME_RELEASE}
exit 0 ;;
RM*:SINIX-*:*:*)
echo mips-sni-sysv4
exit 0 ;;
*:SINIX-*:*:*)
if uname -p 2>/dev/null >/dev/null ; then
UNAME_MACHINE=`(uname -p) 2>/dev/null`
echo ${UNAME_MACHINE}-sni-sysv4
else
echo ns32k-sni-sysv
fi
exit 0 ;;
*:UNIX_System_V:4*:FTX*)
# From Gerald Hewes <hewes@openmarket.com>.
# How about differentiating between stratus architectures? -djm
echo hppa1.1-stratus-sysv4
exit 0 ;;
*:*:*:FTX*)
# From seanf@swdc.stratus.com.
echo i860-stratus-sysv4
exit 0 ;;
mc68*:A/UX:*:*)
echo m68k-apple-aux${UNAME_RELEASE}
exit 0 ;;
R3000:*System_V*:*:* | R4000:UNIX_SYSV:*:*)
if [ -d /usr/nec ]; then
echo mips-nec-sysv${UNAME_RELEASE}
else
echo mips-unknown-sysv${UNAME_RELEASE}
fi
exit 0 ;;
PENTIUM:CPunix:4.0*:*) # Unisys `ClearPath HMP IX 4000' SVR4/MP effort
# says <Richard.M.Bartel@ccMail.Census.GOV>
echo i586-unisys-sysv4
exit 0 ;;
esac
#echo '(No uname command or uname output not recognized.)' 1>&2
#echo "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" 1>&2
cat >dummy.c <<EOF
#ifdef _SEQUENT_
# include <sys/types.h>
# include <sys/utsname.h>
#endif
main ()
{
#if defined (sony)
#if defined (MIPSEB)
/* BFD wants "bsd" instead of "newsos". Perhaps BFD should be changed,
I don't know.... */
printf ("mips-sony-bsd\n"); exit (0);
#else
#include <sys/param.h>
printf ("m68k-sony-newsos%s\n",
#ifdef NEWSOS4
"4"
#else
""
#endif
); exit (0);
#endif
#endif
#if defined (__arm) && defined (__acorn) && defined (__unix)
printf ("arm-acorn-riscix"); exit (0);
#endif
#if defined (hp300) && !defined (hpux)
printf ("m68k-hp-bsd\n"); exit (0);
#endif
#if defined (NeXT)
#if !defined (__ARCHITECTURE__)
#define __ARCHITECTURE__ "m68k"
#endif
int version;
version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
exit (0);
#endif
#if defined (MULTIMAX) || defined (n16)
#if defined (UMAXV)
printf ("ns32k-encore-sysv\n"); exit (0);
#else
#if defined (CMU)
printf ("ns32k-encore-mach\n"); exit (0);
#else
printf ("ns32k-encore-bsd\n"); exit (0);
#endif
#endif
#endif
#if defined (__386BSD__)
printf ("i386-pc-bsd\n"); exit (0);
#endif
#if defined (sequent)
#if defined (i386)
printf ("i386-sequent-dynix\n"); exit (0);
#endif
#if defined (ns32000)
printf ("ns32k-sequent-dynix\n"); exit (0);
#endif
#endif
#if defined (_SEQUENT_)
struct utsname un;
uname(&un);
if (strncmp(un.version, "V2", 2) == 0) {
printf ("i386-sequent-ptx2\n"); exit (0);
}
if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
printf ("i386-sequent-ptx1\n"); exit (0);
}
printf ("i386-sequent-ptx\n"); exit (0);
#endif
#if defined (vax)
#if !defined (ultrix)
printf ("vax-dec-bsd\n"); exit (0);
#else
printf ("vax-dec-ultrix\n"); exit (0);
#endif
#endif
#if defined (alliant) && defined (i860)
printf ("i860-alliant-bsd\n"); exit (0);
#endif
exit (1);
}
EOF
${CC-cc} dummy.c -o dummy 2>/dev/null && ./dummy && rm dummy.c dummy && exit 0
rm -f dummy.c dummy
# Apollos put the system type in the environment.
test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit 0; }
# Convex versions that predate uname can use getsysinfo(1)
if [ -x /usr/convex/getsysinfo ]
then
case `getsysinfo -f cpu_type` in
c1*)
echo c1-convex-bsd
exit 0 ;;
c2*)
if getsysinfo -f scalar_acc
then echo c32-convex-bsd
else echo c2-convex-bsd
fi
exit 0 ;;
c34*)
echo c34-convex-bsd
exit 0 ;;
c38*)
echo c38-convex-bsd
exit 0 ;;
c4*)
echo c4-convex-bsd
exit 0 ;;
esac
fi
#echo '(Unable to guess system type)' 1>&2
exit 1

936
mozilla/build/autoconf/config.sub vendored Executable file
View File

@@ -0,0 +1,936 @@
#! /bin/sh
# Configuration validation subroutine script, version 1.1.
# Copyright (C) 1991, 92, 93, 94, 95, 1996 Free Software Foundation, Inc.
# This file is (in principle) common to ALL GNU software.
# The presence of a machine in this file suggests that SOME GNU software
# can handle that machine. It does not imply ALL GNU software can.
#
# This file is free software; you can redistribute it and/or modify
# it under the terms of the GNU General Public License as published by
# the Free Software Foundation; either version 2 of the License, or
# (at your option) any later version.
#
# This program is distributed in the hope that it will be useful,
# but WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
# GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 59 Temple Place - Suite 330,
# Boston, MA 02111-1307, USA.
# As a special exception to the GNU General Public License, if you
# distribute this file as part of a program that contains a
# configuration script generated by Autoconf, you may include it under
# the same distribution terms that you use for the rest of that program.
# Configuration subroutine to validate and canonicalize a configuration type.
# Supply the specified configuration type as an argument.
# If it is invalid, we print an error message on stderr and exit with code 1.
# Otherwise, we print the canonical config type on stdout and succeed.
# This file is supposed to be the same for all GNU packages
# and recognize all the CPU types, system types and aliases
# that are meaningful with *any* GNU software.
# Each package is responsible for reporting which valid configurations
# it does not support. The user should be able to distinguish
# a failure to support a valid configuration from a meaningless
# configuration.
# The goal of this file is to map all the various variations of a given
# machine specification into a single specification in the form:
# CPU_TYPE-MANUFACTURER-OPERATING_SYSTEM
# or in some cases, the newer four-part form:
# CPU_TYPE-MANUFACTURER-KERNEL-OPERATING_SYSTEM
# It is wrong to echo any other type of specification.
if [ x$1 = x ]
then
echo Configuration name missing. 1>&2
echo "Usage: $0 CPU-MFR-OPSYS" 1>&2
echo "or $0 ALIAS" 1>&2
echo where ALIAS is a recognized configuration type. 1>&2
exit 1
fi
# First pass through any local machine types.
case $1 in
*local*)
echo $1
exit 0
;;
*)
;;
esac
# Separate what the user gave into CPU-COMPANY and OS or KERNEL-OS (if any).
# Here we must recognize all the valid KERNEL-OS combinations.
maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
case $maybe_os in
linux-gnu*)
os=`echo $maybe_os | sed -e 's|linux-gnu|linux|'`
basic_machine=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\1/'`
;;
*)
basic_machine=`echo $1 | sed 's/-[^-]*$//'`
if [ $basic_machine != $1 ]
then os=`echo $1 | sed 's/.*-/-/'`
else os=; fi
;;
esac
### Let's recognize common machines as not being operating systems so
### that things like config.sub decstation-3100 work. We also
### recognize some manufacturers as not being operating systems, so we
### can provide default operating systems below.
case $os in
-sun*os*)
# Prevent following clause from handling this invalid input.
;;
-dec* | -mips* | -sequent* | -encore* | -pc532* | -sgi* | -sony* | \
-att* | -7300* | -3300* | -delta* | -motorola* | -sun[234]* | \
-unicom* | -ibm* | -next | -hp | -isi* | -apollo | -altos* | \
-convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
-c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
-harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-apple)
os=
basic_machine=$1
;;
-hiux*)
os=-hiuxwe2
;;
-sco5)
os=sco3.2v5
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco4)
os=-sco3.2v4
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco3.2.[4-9]*)
os=`echo $os | sed -e 's/sco3.2./sco3.2v/'`
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco3.2v[4-9]*)
# Don't forget version if it is 3.2v4 or newer.
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-sco*)
os=-sco3.2v2
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-isc)
os=-isc2.2
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-clix*)
basic_machine=clipper-intergraph
;;
-isc*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-pc/'`
;;
-lynx*)
os=-lynxos
;;
-ptx*)
basic_machine=`echo $1 | sed -e 's/86-.*/86-sequent/'`
;;
-windowsnt*)
os=`echo $os | sed -e 's/windowsnt/winnt/'`
;;
-psos*)
os=-psos
;;
esac
# Decode aliases for certain CPU-COMPANY combinations.
case $basic_machine in
# Recognize the basic CPU types without company name.
# Some are omitted here because they have special meanings below.
tahoe | i860 | m32r | m68k | m68000 | m88k | ns32k | arm \
| arme[lb] | pyramid | mn10300 \
| tron | a29k | 580 | i960 | h8300 | hppa | hppa1.0 | hppa1.1 \
| alpha | we32k | ns16k | clipper | i370 | sh \
| powerpc | powerpcle | 1750a | dsp16xx | mips64 | mipsel \
| pdp11 | mips64el | mips64orion | mips64orionel \
| sparc | sparclet | sparclite | sparc64)
basic_machine=$basic_machine-unknown
;;
# We use `pc' rather than `unknown'
# because (1) that's what they normally are, and
# (2) the word "unknown" tends to confuse beginning users.
i[3456]86)
basic_machine=$basic_machine-pc
;;
# Object if more than one company name word.
*-*-*)
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
exit 1
;;
# Recognize the basic CPU types with company name.
vax-* | tahoe-* | i[3456]86-* | i860-* | m32r-* | m68k-* | m68000-* \
| m88k-* | sparc-* | ns32k-* | fx80-* | arm-* | c[123]* \
| mips-* | pyramid-* | tron-* | a29k-* | romp-* | rs6000-* | power-* \
| none-* | 580-* | cray2-* | h8300-* | i960-* | xmp-* | ymp-* \
| hppa-* | hppa1.0-* | hppa1.1-* | alpha-* | we32k-* | cydra-* | ns16k-* \
| pn-* | np1-* | xps100-* | clipper-* | orion-* | sparclite-* \
| pdp11-* | sh-* | powerpc-* | powerpcle-* | sparc64-* | mips64-* | mipsel-* \
| mips64el-* | mips64orion-* | mips64orionel-* | f301-*)
;;
# Recognize the various machine names and aliases which stand
# for a CPU type and a company and sometimes even an OS.
3b1 | 7300 | 7300-att | att-7300 | pc7300 | safari | unixpc)
basic_machine=m68000-att
;;
3b*)
basic_machine=we32k-att
;;
alliant | fx80)
basic_machine=fx80-alliant
;;
altos | altos3068)
basic_machine=m68k-altos
;;
am29k)
basic_machine=a29k-none
os=-bsd
;;
amdahl)
basic_machine=580-amdahl
os=-sysv
;;
amiga | amiga-*)
basic_machine=m68k-cbm
;;
amigados)
basic_machine=m68k-cbm
os=-amigados
;;
amigaunix | amix)
basic_machine=m68k-cbm
os=-sysv4
;;
apollo68)
basic_machine=m68k-apollo
os=-sysv
;;
aux)
basic_machine=m68k-apple
os=-aux
;;
balance)
basic_machine=ns32k-sequent
os=-dynix
;;
convex-c1)
basic_machine=c1-convex
os=-bsd
;;
convex-c2)
basic_machine=c2-convex
os=-bsd
;;
convex-c32)
basic_machine=c32-convex
os=-bsd
;;
convex-c34)
basic_machine=c34-convex
os=-bsd
;;
convex-c38)
basic_machine=c38-convex
os=-bsd
;;
cray | ymp)
basic_machine=ymp-cray
os=-unicos
;;
cray2)
basic_machine=cray2-cray
os=-unicos
;;
[ctj]90-cray)
basic_machine=c90-cray
os=-unicos
;;
crds | unos)
basic_machine=m68k-crds
;;
da30 | da30-*)
basic_machine=m68k-da30
;;
decstation | decstation-3100 | pmax | pmax-* | pmin | dec3100 | decstatn)
basic_machine=mips-dec
;;
delta | 3300 | motorola-3300 | motorola-delta \
| 3300-motorola | delta-motorola)
basic_machine=m68k-motorola
;;
delta88)
basic_machine=m88k-motorola
os=-sysv3
;;
dpx20 | dpx20-*)
basic_machine=rs6000-bull
os=-bosx
;;
dpx2* | dpx2*-bull)
basic_machine=m68k-bull
os=-sysv3
;;
ebmon29k)
basic_machine=a29k-amd
os=-ebmon
;;
elxsi)
basic_machine=elxsi-elxsi
os=-bsd
;;
encore | umax | mmax)
basic_machine=ns32k-encore
;;
fx2800)
basic_machine=i860-alliant
;;
genix)
basic_machine=ns32k-ns
;;
gmicro)
basic_machine=tron-gmicro
os=-sysv
;;
h3050r* | hiux*)
basic_machine=hppa1.1-hitachi
os=-hiuxwe2
;;
h8300hms)
basic_machine=h8300-hitachi
os=-hms
;;
harris)
basic_machine=m88k-harris
os=-sysv3
;;
hp300-*)
basic_machine=m68k-hp
;;
hp300bsd)
basic_machine=m68k-hp
os=-bsd
;;
hp300hpux)
basic_machine=m68k-hp
os=-hpux
;;
hp9k2[0-9][0-9] | hp9k31[0-9])
basic_machine=m68000-hp
;;
hp9k3[2-9][0-9])
basic_machine=m68k-hp
;;
hp9k7[0-9][0-9] | hp7[0-9][0-9] | hp9k8[0-9]7 | hp8[0-9]7)
basic_machine=hppa1.1-hp
;;
hp9k8[0-9][0-9] | hp8[0-9][0-9])
basic_machine=hppa1.0-hp
;;
hppa-next)
os=-nextstep3
;;
i370-ibm* | ibm*)
basic_machine=i370-ibm
os=-mvs
;;
# I'm not sure what "Sysv32" means. Should this be sysv3.2?
i[3456]86v32)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv32
;;
i[3456]86v4*)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv4
;;
i[3456]86v)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-sysv
;;
i[3456]86sol2)
basic_machine=`echo $1 | sed -e 's/86.*/86-pc/'`
os=-solaris2
;;
iris | iris4d)
basic_machine=mips-sgi
case $os in
-irix*)
;;
*)
os=-irix4
;;
esac
;;
isi68 | isi)
basic_machine=m68k-isi
os=-sysv
;;
m88k-omron*)
basic_machine=m88k-omron
;;
magnum | m3230)
basic_machine=mips-mips
os=-sysv
;;
merlin)
basic_machine=ns32k-utek
os=-sysv
;;
miniframe)
basic_machine=m68000-convergent
;;
mipsel*-linux*)
basic_machine=mipsel-unknown
os=-linux
;;
mips*-linux*)
basic_machine=mips-unknown
os=-linux
;;
mips3*-*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`
;;
mips3*)
basic_machine=`echo $basic_machine | sed -e 's/mips3/mips64/'`-unknown
;;
ncr3000)
basic_machine=i486-ncr
os=-sysv4
;;
news | news700 | news800 | news900)
basic_machine=m68k-sony
os=-newsos
;;
news1000)
basic_machine=m68030-sony
os=-newsos
;;
news-3600 | risc-news)
basic_machine=mips-sony
os=-newsos
;;
next | m*-next )
basic_machine=m68k-next
case $os in
-nextstep* )
;;
-ns2*)
os=-nextstep2
;;
*)
os=-nextstep3
;;
esac
;;
nh3000)
basic_machine=m68k-harris
os=-cxux
;;
nh[45]000)
basic_machine=m88k-harris
os=-cxux
;;
nindy960)
basic_machine=i960-intel
os=-nindy
;;
np1)
basic_machine=np1-gould
;;
pa-hitachi)
basic_machine=hppa1.1-hitachi
os=-hiuxwe2
;;
paragon)
basic_machine=i860-intel
os=-osf
;;
pbd)
basic_machine=sparc-tti
;;
pbb)
basic_machine=m68k-tti
;;
pc532 | pc532-*)
basic_machine=ns32k-pc532
;;
pentium | p5)
basic_machine=i586-intel
;;
pentiumpro | p6)
basic_machine=i686-intel
;;
pentium-* | p5-*)
basic_machine=i586-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
pentiumpro-* | p6-*)
basic_machine=i686-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
k5)
# We don't have specific support for AMD's K5 yet, so just call it a Pentium
basic_machine=i586-amd
;;
nexen)
# We don't have specific support for Nexgen yet, so just call it a Pentium
basic_machine=i586-nexgen
;;
pn)
basic_machine=pn-gould
;;
power) basic_machine=rs6000-ibm
;;
ppc) basic_machine=powerpc-unknown
;;
ppc-*) basic_machine=powerpc-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ppcle | powerpclittle | ppc-le | powerpc-little)
basic_machine=powerpcle-unknown
;;
ppcle-* | powerpclittle-*)
basic_machine=powerpcle-`echo $basic_machine | sed 's/^[^-]*-//'`
;;
ps2)
basic_machine=i386-ibm
;;
rm[46]00)
basic_machine=mips-siemens
;;
rtpc | rtpc-*)
basic_machine=romp-ibm
;;
sequent)
basic_machine=i386-sequent
;;
sh)
basic_machine=sh-hitachi
os=-hms
;;
sps7)
basic_machine=m68k-bull
os=-sysv2
;;
spur)
basic_machine=spur-unknown
;;
sun2)
basic_machine=m68000-sun
;;
sun2os3)
basic_machine=m68000-sun
os=-sunos3
;;
sun2os4)
basic_machine=m68000-sun
os=-sunos4
;;
sun3os3)
basic_machine=m68k-sun
os=-sunos3
;;
sun3os4)
basic_machine=m68k-sun
os=-sunos4
;;
sun4os3)
basic_machine=sparc-sun
os=-sunos3
;;
sun4os4)
basic_machine=sparc-sun
os=-sunos4
;;
sun4sol2)
basic_machine=sparc-sun
os=-solaris2
;;
sun3 | sun3-*)
basic_machine=m68k-sun
;;
sun4)
basic_machine=sparc-sun
;;
sun386 | sun386i | roadrunner)
basic_machine=i386-sun
;;
symmetry)
basic_machine=i386-sequent
os=-dynix
;;
tower | tower-32)
basic_machine=m68k-ncr
;;
udi29k)
basic_machine=a29k-amd
os=-udi
;;
ultra3)
basic_machine=a29k-nyu
os=-sym1
;;
vaxv)
basic_machine=vax-dec
os=-sysv
;;
vms)
basic_machine=vax-dec
os=-vms
;;
vpp*|vx|vx-*)
basic_machine=f301-fujitsu
;;
vxworks960)
basic_machine=i960-wrs
os=-vxworks
;;
vxworks68)
basic_machine=m68k-wrs
os=-vxworks
;;
vxworks29k)
basic_machine=a29k-wrs
os=-vxworks
;;
xmp)
basic_machine=xmp-cray
os=-unicos
;;
xps | xps100)
basic_machine=xps100-honeywell
;;
none)
basic_machine=none-none
os=-none
;;
# Here we handle the default manufacturer of certain CPU types. It is in
# some cases the only manufacturer, in others, it is the most popular.
mips)
if [ x$os = x-linux ]; then
basic_machine=mips-unknown
else
basic_machine=mips-mips
fi
;;
romp)
basic_machine=romp-ibm
;;
rs6000)
basic_machine=rs6000-ibm
;;
vax)
basic_machine=vax-dec
;;
pdp11)
basic_machine=pdp11-dec
;;
we32k)
basic_machine=we32k-att
;;
sparc)
basic_machine=sparc-sun
;;
cydra)
basic_machine=cydra-cydrome
;;
orion)
basic_machine=orion-highlevel
;;
orion105)
basic_machine=clipper-highlevel
;;
*)
echo Invalid configuration \`$1\': machine \`$basic_machine\' not recognized 1>&2
exit 1
;;
esac
# Here we canonicalize certain aliases for manufacturers.
case $basic_machine in
*-digital*)
basic_machine=`echo $basic_machine | sed 's/digital.*/dec/'`
;;
*-commodore*)
basic_machine=`echo $basic_machine | sed 's/commodore.*/cbm/'`
;;
*)
;;
esac
# Decode manufacturer-specific aliases for certain operating systems.
if [ x"$os" != x"" ]
then
case $os in
# First match some system type aliases
# that might get confused with valid system types.
# -solaris* is a basic system type, with this one exception.
-solaris1 | -solaris1.*)
os=`echo $os | sed -e 's|solaris1|sunos4|'`
;;
-solaris)
os=-solaris2
;;
-unixware* | svr4*)
os=-sysv4
;;
-gnu/linux*)
os=`echo $os | sed -e 's|gnu/linux|linux|'`
;;
# First accept the basic system types.
# The portable systems comes first.
# Each alternative MUST END IN A *, to match a version number.
# -sysv* is not here because it comes later, after sysvr4.
-gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
| -*vms* | -sco* | -esix* | -isc* | -aix* | -sunos | -sunos[34]*\
| -hpux* | -unos* | -osf* | -luna* | -dgux* | -solaris* | -sym* \
| -amigados* | -msdos* | -newsos* | -unicos* | -aof* | -aos* \
| -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
| -clix* | -riscos* | -uniplus* | -iris* | -rtu* | -xenix* \
| -hiux* | -386bsd* | -netbsd* | -openbsd* | -freebsd* | -riscix* \
| -lynxos* | -bosx* | -nextstep* | -cxux* | -aout* | -elf* \
| -ptx* | -coff* | -ecoff* | -winnt* | -domain* | -vsta* \
| -udi* | -eabi* | -lites* | -ieee* | -go32* | -aux* \
| -cygwin32* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
| -linux* | -uxpv*)
# Remember, each alternative MUST END IN *, to match a version number.
;;
-sunos5*)
os=`echo $os | sed -e 's|sunos5|solaris2|'`
;;
-sunos6*)
os=`echo $os | sed -e 's|sunos6|solaris3|'`
;;
-osfrose*)
os=-osfrose
;;
-osf*)
os=-osf
;;
-utek*)
os=-bsd
;;
-dynix*)
os=-bsd
;;
-acis*)
os=-aos
;;
-ctix* | -uts*)
os=-sysv
;;
-ns2 )
os=-nextstep2
;;
# Preserve the version number of sinix5.
-sinix5.*)
os=`echo $os | sed -e 's|sinix|sysv|'`
;;
-sinix*)
os=-sysv4
;;
-triton*)
os=-sysv3
;;
-oss*)
os=-sysv3
;;
-svr4)
os=-sysv4
;;
-svr3)
os=-sysv3
;;
-sysvr4)
os=-sysv4
;;
# This must come after -sysvr4.
-sysv*)
;;
-xenix)
os=-xenix
;;
-none)
;;
*)
# Get rid of the `-' at the beginning of $os.
os=`echo $os | sed 's/[^-]*-//'`
echo Invalid configuration \`$1\': system \`$os\' not recognized 1>&2
exit 1
;;
esac
else
# Here we handle the default operating systems that come with various machines.
# The value should be what the vendor currently ships out the door with their
# machine or put another way, the most popular os provided with the machine.
# Note that if you're going to try to match "-MANUFACTURER" here (say,
# "-sun"), then you have to tell the case statement up towards the top
# that MANUFACTURER isn't an operating system. Otherwise, code above
# will signal an error saying that MANUFACTURER isn't an operating
# system, and we'll never get to this point.
case $basic_machine in
*-acorn)
os=-riscix1.2
;;
arm*-semi)
os=-aout
;;
pdp11-*)
os=-none
;;
*-dec | vax-*)
os=-ultrix4.2
;;
m68*-apollo)
os=-domain
;;
i386-sun)
os=-sunos4.0.2
;;
m68000-sun)
os=-sunos3
# This also exists in the configure program, but was not the
# default.
# os=-sunos4
;;
*-tti) # must be before sparc entry or we get the wrong os.
os=-sysv3
;;
sparc-* | *-sun)
os=-sunos4.1.1
;;
*-ibm)
os=-aix
;;
*-hp)
os=-hpux
;;
*-hitachi)
os=-hiux
;;
i860-* | *-att | *-ncr | *-altos | *-motorola | *-convergent)
os=-sysv
;;
*-cbm)
os=-amigados
;;
*-dg)
os=-dgux
;;
*-dolphin)
os=-sysv3
;;
m68k-ccur)
os=-rtu
;;
m88k-omron*)
os=-luna
;;
*-next )
os=-nextstep
;;
*-sequent)
os=-ptx
;;
*-crds)
os=-unos
;;
*-ns)
os=-genix
;;
i370-*)
os=-mvs
;;
*-next)
os=-nextstep3
;;
*-gould)
os=-sysv
;;
*-highlevel)
os=-bsd
;;
*-encore)
os=-bsd
;;
*-sgi)
os=-irix
;;
*-siemens)
os=-sysv4
;;
*-masscomp)
os=-rtu
;;
f301-fujitsu)
os=-uxpv
;;
*)
os=-none
;;
esac
fi
# Here we handle the case where we know the os, and the CPU type, but not the
# manufacturer. We pick the logical manufacturer.
vendor=unknown
case $basic_machine in
*-unknown)
case $os in
-riscix*)
vendor=acorn
;;
-sunos*)
vendor=sun
;;
-aix*)
vendor=ibm
;;
-hpux*)
vendor=hp
;;
-hiux*)
vendor=hitachi
;;
-unos*)
vendor=crds
;;
-dgux*)
vendor=dg
;;
-luna*)
vendor=omron
;;
-genix*)
vendor=ns
;;
-mvs*)
vendor=ibm
;;
-ptx*)
vendor=sequent
;;
-vxsim* | -vxworks*)
vendor=wrs
;;
-aux*)
vendor=apple
;;
esac
basic_machine=`echo $basic_machine | sed "s/unknown/$vendor/"`
;;
esac
echo $basic_machine$os

119
mozilla/build/autoconf/install-sh Executable file
View File

@@ -0,0 +1,119 @@
#!/bin/sh
#
# install - install a program, script, or datafile
# This comes from X11R5; it is not part of GNU.
#
# $XConsortium: install.sh,v 1.2 89/12/18 14:47:22 jim Exp $
#
# This script is compatible with the BSD install script, but was written
# from scratch.
#
# set DOITPROG to echo to test this script
# Don't use :- since 4.3BSD and earlier shells don't like it.
doit="${DOITPROG-}"
# put in absolute paths if you don't have them in your path; or use env. vars.
mvprog="${MVPROG-mv}"
cpprog="${CPPROG-cp}"
chmodprog="${CHMODPROG-chmod}"
chownprog="${CHOWNPROG-chown}"
chgrpprog="${CHGRPPROG-chgrp}"
stripprog="${STRIPPROG-strip}"
rmprog="${RMPROG-rm}"
instcmd="$mvprog"
chmodcmd=""
chowncmd=""
chgrpcmd=""
stripcmd=""
rmcmd="$rmprog -f"
mvcmd="$mvprog"
src=""
dst=""
while [ x"$1" != x ]; do
case $1 in
-c) instcmd="$cpprog"
shift
continue;;
-m) chmodcmd="$chmodprog $2"
shift
shift
continue;;
-o) chowncmd="$chownprog $2"
shift
shift
continue;;
-g) chgrpcmd="$chgrpprog $2"
shift
shift
continue;;
-s) stripcmd="$stripprog"
shift
continue;;
*) if [ x"$src" = x ]
then
src=$1
else
dst=$1
fi
shift
continue;;
esac
done
if [ x"$src" = x ]
then
echo "install: no input file specified"
exit 1
fi
if [ x"$dst" = x ]
then
echo "install: no destination specified"
exit 1
fi
# If destination is a directory, append the input filename; if your system
# does not like double slashes in filenames, you may need to add some logic
if [ -d $dst ]
then
dst="$dst"/`basename $src`
fi
# Make a temp file name in the proper directory.
dstdir=`dirname $dst`
dsttmp=$dstdir/#inst.$$#
# Move or copy the file name to the temp name
$doit $instcmd $src $dsttmp
# and set any options; do chmod last to preserve setuid bits
if [ x"$chowncmd" != x ]; then $doit $chowncmd $dsttmp; fi
if [ x"$chgrpcmd" != x ]; then $doit $chgrpcmd $dsttmp; fi
if [ x"$stripcmd" != x ]; then $doit $stripcmd $dsttmp; fi
if [ x"$chmodcmd" != x ]; then $doit $chmodcmd $dsttmp; fi
# Now rename the file to the real destination.
$doit $rmcmd $dst
$doit $mvcmd $dsttmp $dst
exit 0

View File

@@ -0,0 +1 @@
5009821211

25
mozilla/build/genrc.sh Executable file
View File

@@ -0,0 +1,25 @@
#!/bin/sh
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
DATATYPE="$1"
INFILE="$2"
echo "${DATATYPE} RCDATA"
sed 's/"/""/g' ${INFILE} | awk 'BEGIN { printf("BEGIN\n") } { printf("\"%s\\r\\n\",\n", $0) } END { printf("\"\\0\"\nEND\n") }'
exit 0

45
mozilla/build/hcc Executable file
View File

@@ -0,0 +1,45 @@
#!/bin/sh
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
#
# Fix brain-damaged compilers that don't understand -o and -c together
#
DASH_C=0
DASH_O=0
for i in $*
do
case $i in
-c) DASH_C=1;;
-o) DASH_O=1;;
*.c) C_SRC=$i;;
*.s) S_SRC=$i;;
*.o) OBJECT=$i;;
esac
done
cc $* || exit $?
# if there was no -c and -o we're done
[ $DASH_C = 1 -a $DASH_O = 1 ] || exit 0
# cc always creates the .o from the .c name
[ $C_SRC ] && OBJ=`basename $C_SRC .c`.o
# or the .o from the .s name
[ $S_SRC ] && OBJ=`basename $S_SRC .s`.o
[ -f $OBJECT ] || [ -f $OBJ ] && mv -f $OBJ $OBJECT

86
mozilla/build/hcpp Executable file
View File

@@ -0,0 +1,86 @@
#!/bin/sh
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
#
# Wrapper for brain-damaged compilers that don't understand -o and -c together.
#
DUMMY="XxxXxxX"
DASH_C=0
DASH_O=0
GET_OBJECT=0
C_SRC="${DUMMY}"
CC_SRC="${DUMMY}"
CPP_SRC="${DUMMY}"
S_SRC="${DUMMY}"
OBJECT="${DUMMY}"
for i in $*
do
if [ ${GET_OBJECT} -eq 1 ]; then
OBJECT="$i"
GET_OBJECT=0
fi
case $i in
-c)
DASH_C=1
;;
-o)
DASH_O=1
GET_OBJECT=1
;;
*.c)
C_SRC="$i"
;;
+.*)
;;
*.cpp)
CPP_SRC="$i"
;;
*.cc)
CC_SRC="$i"
;;
*.s)
S_SRC="$i"
;;
esac
done
CC $* || exit $?
# LAME!!!
if [ -f -O ]; then
mv -f -- -O ${OBJECT}
fi
# if there was no -c and -o we're done
[ ${DASH_C} -eq 1 -a ${DASH_O} -eq 1 ] || exit 0
# cc always creates the .o from the .c name
if [ "${C_SRC}" != "${DUMMY}" ]; then
OBJ=`basename ${C_SRC} .c`.o
elif [ "${CPP_SRC}" != "${DUMMY}" ]; then
OBJ=`basename ${CPP_SRC} .cpp`.o
elif [ "${CC_SRC}" != "${DUMMY}" ]; then
OBJ=`basename ${CC_SRC} .cc`.o
# or the .o from the .s name
elif [ "${S_SRC}" != "${DUMMY}" ]; then
OBJ=`basename ${S_SRC} .s`.o
fi
[ -f ${OBJECT} ] || [ -f ${OBJ} ] && mv -f ${OBJ} ${OBJECT}

View File

@@ -0,0 +1,343 @@
#!perl
package BuildList;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(BuildMozilla DistMozilla);
=head1 NAME
BuildList - build the [ordered] set of projects needed to construct Mozilla
=head1 SYNOPSIS
...
=head1 COPYRIGHT
The contents of this file are subject to the Netscape Public License
Version 1.0 (the "NPL"); you may not use this file except in
compliance with the NPL. You may obtain a copy of the NPL at
http://www.mozilla.org/NPL/
Software distributed under the NPL is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
for the specific language governing rights and limitations under the
NPL.
The Initial Developer of this code under the NPL is Netscape
Communications Corporation. Portions created by Netscape are
Copyright (C) 1998 Netscape Communications Corporation. All Rights
Reserved.
=cut
use Moz;
use File::Path;
sub BuildMozilla()
{
if ( $main::DEBUG )
{
$D = "Debug";
$dist_dir = ":mozilla:dist:client_debug:";
}
else
{
$D = "";
$dist_dir = ":mozilla:dist:client:";
}
#
# Build the appropriate target of each project
#
BuildProjectClean(":mozilla:lib:mac:NSStdLib:NSStdLib.mcp", "Stubs");
BuildProjectClean(":mozilla:lib:mac:NSRuntime:NSRuntime.mcp", "Stubs");
BuildProjectClean(":mozilla:lib:mac:MacMemoryAllocator:MemAllocator.mcp", "Stubs");
BuildProjectClean(":mozilla:cmd:macfe:projects:client:NavigatorStubs.mcp", "Stubs");
BuildProject(":mozilla:lib:mac:NSRuntime:NSRuntime.mcp", "NSRuntime$D.shlb");
MakeAlias(":mozilla:lib:mac:NSRuntime:NSRuntime$D.shlb", "$dist_dir");
BuildProject(":mozilla:cmd:macfe:restext:StringLib.mcp", "Strings$D.shlb");
MakeAlias(":mozilla:cmd:macfe:restext:Strings$D.shlb", "$dist_dir");
BuildProject(":mozilla:lib:mac:MoreFiles:build:MoreFilesPPC.mcp", "MoreFiles$D.shlb");
MakeAlias(":mozilla:lib:mac:MoreFiles:build:MoreFiles$D.shlb", "$dist_dir");
BuildProject(":mozilla:nsprpub:macbuild:NSPR20PPC.mcp", "NSPR20$D.shlb");
MakeAlias(":mozilla:nsprpub:macbuild:NSPR20$D.shlb", "$dist_dir");
BuildProject(":mozilla:dbm:macbuild:DBMPPC.mcp", "DBM$D.shlb");
MakeAlias(":mozilla:dbm:macbuild:DBM$D.shlb", "$dist_dir");
BuildProject(":mozilla:lib:mac:MacMemoryAllocator:MemAllocator.mcp", "MemAllocator$D.shlb");
MakeAlias(":mozilla:lib:mac:MacMemoryAllocator:MemAllocator$D.shlb", "$dist_dir");
BuildProject(":mozilla:lib:mac:NSStdLib:NSStdLib.mcp", "NSStdLib$D.shlb");
MakeAlias(":mozilla:lib:mac:NSStdLib:NSStdLib$D.shlb", "$dist_dir");
BuildProject(":mozilla:xpcom:macbuild:xpcomPPC.mcp", "xpcom$D.shlb");
MakeAlias(":mozilla:xpcom:macbuild:xpcom$D.shlb", "$dist_dir");
BuildProject(":mozilla:lib:mac:PowerPlant:PowerPlant.mcp", "PowerPlant$D.shlb");
MakeAlias(":mozilla:lib:mac:PowerPlant:PowerPlant$D.shlb", "$dist_dir");
BuildProject(":mozilla:modules:progress:macbuild:ProgressPPC.mcp", "Progress$D.shlb");
MakeAlias(":mozilla:modules:progress:macbuild:Progress$D.shlb", "$dist_dir");
BuildProject(":mozilla:modules:zlib:macbuild:zlib.mcp", "zlib$D.shlb");
MakeAlias(":mozilla:modules:zlib:macbuild:zlib$D.shlb", "$dist_dir");
BuildProject(":mozilla:jpeg:macbuild:JPEG.mcp", "JPEG$D.shlb");
MakeAlias(":mozilla:jpeg:macbuild:JPEG$D.shlb", "$dist_dir");
BuildProject(":mozilla:sun-java:stubs:macbuild:JavaStubs.mcp", "JavaRuntime$D.shlb");
MakeAlias(":mozilla:sun-java:stubs:macbuild:JavaRuntime$D.shlb", "$dist_dir");
BuildProject(":mozilla:js:macbuild:JavaScriptPPC.mcp", "JavaScript$D.shlb");
MakeAlias(":mozilla:js:macbuild:JavaScript$D.shlb", "$dist_dir");
BuildProject(":mozilla:js:macbuild:LiveConnect.mcp", "LiveConnect$D.shlb");
MakeAlias(":mozilla:js:macbuild:LiveConnect$D.shlb", "$dist_dir");
BuildProject(":mozilla:nav-java:stubs:macbuild:NavJavaStubs.mcp", "NavJava$D.shlb");
MakeAlias(":mozilla:nav-java:stubs:macbuild:NavJava$D.shlb", "$dist_dir");
BuildProject(":mozilla:modules:rdf:macbuild:RDF.mcp", "RDF$D.shlb");
MakeAlias(":mozilla:modules:rdf:macbuild:RDF$D.shlb", "$dist_dir");
BuildProject(":mozilla:modules:xml:macbuild:XML.mcp", "XML$D.shlb");
MakeAlias(":mozilla:modules:xml:macbuild:XML$D.shlb", "$dist_dir");
BuildProject(":mozilla:modules:schedulr:macbuild:Schedulr.mcp", "Scheduler$D.shlb");
MakeAlias(":mozilla:modules:schedulr:macbuild:Scheduler$D.shlb", "$dist_dir");
BuildProject(":mozilla:build:mac:CustomLib:CustomLib.mcp", "CustomLib$D.shlb");
MakeAlias(":mozilla:build:mac:CustomLib:CustomLib$D.shlb", "$dist_dir");
BuildProject(":mozilla:modules:security:freenav:macbuild:NoSecurity.mcp", "Security.o");
BuildProject(":mozilla:modules:libfont:macbuild:FontBroker.mcp", "FontBroker$D.o");
BuildProject(":mozilla:modules:oji:macbuild:oji.mcp", "oji$D.o");
BuildProject(":mozilla:lib:libmocha:macbuild:LibMocha.mcp", "LibMocha$D.o");
if ( $main::MOZ_DARK == 1 )
{
BuildProject(":mozilla:network:macbuild:network.mcp", "Network$D.o (mailnews)");
}
else
{
BuildProject(":mozilla:network:macbuild:network.mcp", "Network$D.o");
}
BuildProject(":mozilla:caps:macbuild:Caps.mcp", "Caps$D.o");
BuildProject(":mozilla:modules:libimg:macbuild:png.mcp", "png$D.o");
BuildProject(":mozilla:modules:libimg:macbuild:libimg.mcp", "libimg$D.o");
BuildProject(":mozilla:build:mac:CustomLib:CustomLib.mcp", "CustomStaticLib$D.o");
if ( $main::MOZ_LITE == 1 )
{
BuildProject(":mozilla:cmd:macfe:projects:dummies:MakeDummies.mcp", "MailNews$D.o");
BuildProject(":mozilla:cmd:macfe:projects:dummies:MakeDummies.mcp", "Composer$D.o");
BuildProject(":mozilla:cmd:macfe:projects:client:Client.mcp", "Nav_Resources");
}
else
{
if ( $main::MOZ_MEDIUM == 1 )
{
BuildProject(":mozilla:cmd:macfe:projects:dummies:MakeDummies.mcp", "MailNews$D.o");
BuildProject(":mozilla:cmd:macfe:Composer:build:Composer.mcp", "Composer$D.o");
BuildProject(":mozilla:cmd:macfe:projects:client:Client.mcp", "Moz_Resources");
}
else
{
if ( $main::MOZ_DARK == 1 )
{
BuildProject(":ns:lib:libneo:mac:macbuild:NeoLib.mcp", "NeoLib$D.o");
MakeAlias( ":ns:lib:libneo:mac:macbuild:NeoLib$D.o", "$dist_dir");
BuildProject(":mozilla:lib:libmsg:macbuild:MsgLib.mcp", "MsgLib$D.o (secure)");
MakeAlias( ":mozilla:lib:libmsg:macbuild:MsgLib$D.o", "$dist_dir");
BuildProject(":mozilla:directory:c-sdk:ldap:libraries:macintosh:LDAPClient.mcp","LDAPClient$D.o");
MakeAlias( ":mozilla:directory:c-sdk:ldap:libraries:macintosh:LDAPClient$D.o", "$dist_dir");
BuildProject(":mozilla:cmd:macfe:MailNews:build:MailNews.mcp", "MailNews$D.o");
BuildProject(":mozilla:cmd:macfe:Composer:build:Composer.mcp", "Composer$D.o");
BuildProject(":mozilla:cmd:macfe:projects:client:Client.mcp", "MozDark_Resources");
}
}
}
BuildProject(":mozilla:cmd:macfe:projects:client:Client.mcp", "Client$D");
}
sub DistMozilla()
{
mkpath([ ":mozilla:dist:", ":mozilla:dist:client:", ":mozilla:dist:client_debug:", ":mozilla:dist:client_stubs:" ]);
#CONFIG
InstallFromManifest(":mozilla:config:mac:MANIFEST", ":mozilla:dist:config:");
InstallFromManifest(":mozilla:config:mac:MANIFEST_config", ":mozilla:dist:config:");
#INCLUDE
InstallFromManifest(":mozilla:include:MANIFEST", ":mozilla:dist:include:");
InstallFromManifest(":mozilla:cmd:macfe:pch:MANIFEST", ":mozilla:dist:include:");
#MAC_COMMON
InstallFromManifest(":mozilla:build:mac:MANIFEST", ":mozilla:dist:mac:common:");
InstallFromManifest(":mozilla:lib:mac:NSStdLib:include:MANIFEST", ":mozilla:dist:mac:common:");
InstallFromManifest(":mozilla:lib:mac:MacMemoryAllocator:include:MANIFEST", ":mozilla:dist:mac:common:");
InstallFromManifest(":mozilla:lib:mac:Misc:MANIFEST", ":mozilla:dist:mac:common:");
InstallFromManifest(":mozilla:lib:mac:MoreFiles:MANIFEST", ":mozilla:dist:mac:common:morefiles:");
InstallFromManifest(":mozilla:cmd:macfe:MANIFEST", ":mozilla:dist:mac:macfe:");
#NSPR
InstallFromManifest(":mozilla:nsprpub:pr:include:MANIFEST", ":mozilla:dist:nspr:");
InstallFromManifest(":mozilla:nsprpub:pr:src:md:mac:MANIFEST", ":mozilla:dist:nspr:mac:");
InstallFromManifest(":mozilla:nsprpub:lib:ds:MANIFEST", ":mozilla:dist:nspr:");
InstallFromManifest(":mozilla:nsprpub:lib:libc:include:MANIFEST", ":mozilla:dist:nspr:");
InstallFromManifest(":mozilla:nsprpub:lib:msgc:include:MANIFEST", ":mozilla:dist:nspr:");
#DBM
InstallFromManifest(":mozilla:dbm:include:MANIFEST", ":mozilla:dist:dbm:");
#LIBIMAGE
InstallFromManifest(":mozilla:modules:libimg:png:MANIFEST", ":mozilla:dist:libimg:");
InstallFromManifest(":mozilla:modules:libimg:src:MANIFEST", ":mozilla:dist:libimg:");
InstallFromManifest(":mozilla:modules:libimg:public:MANIFEST", ":mozilla:dist:libimg:");
#SECURITY_freenav
InstallFromManifest(":mozilla:modules:security:freenav:MANIFEST", ":mozilla:dist:security:");
#XPCOM
InstallFromManifest(":mozilla:xpcom:src:MANIFEST", ":mozilla:dist:xpcom:");
#ZLIB
InstallFromManifest(":mozilla:modules:zlib:src:MANIFEST", ":mozilla:dist:zlib:");
#JPEG
InstallFromManifest(":mozilla:jpeg:MANIFEST", ":mozilla:dist:jpeg:");
#JSJ
# beard: this conflicts with LiveConnect's jsjava.h.
#InstallFromManifest(":mozilla:js:jsj:MANIFEST", ":mozilla:dist:jsj:");
#JSDEBUG
InstallFromManifest(":mozilla:js:jsd:MANIFEST", ":mozilla:dist:jsdebug:");
#JS
InstallFromManifest(":mozilla:js:src:MANIFEST", ":mozilla:dist:js:");
#LIVECONNECT
InstallFromManifest(":mozilla:js:src:liveconnect:MANIFEST", ":mozilla:dist:liveconnect:");
#RDF
InstallFromManifest(":mozilla:modules:rdf:include:MANIFEST", ":mozilla:dist:rdf:");
#XML
InstallFromManifest(":mozilla:modules:xml:glue:MANIFEST", ":mozilla:dist:xml:");
InstallFromManifest(":mozilla:modules:xml:expat:xmlparse:MANIFEST", ":mozilla:dist:xml:");
#LIBFONT
InstallFromManifest(":mozilla:modules:libfont:MANIFEST", ":mozilla:dist:libfont:");
InstallFromManifest(":mozilla:modules:libfont:src:MANIFEST", ":mozilla:dist:libfont:");
#LDAP
if ( $main::MOZ_LDAP || $main::MOZ_DARK )
{
InstallFromManifest(":mozilla:directory:c-sdk:ldap:include:MANIFEST", ":mozilla:dist:ldap:");
}
#PRIVACY
InstallFromManifest(":mozilla:privacy:public:MANIFEST", ":mozilla:dist:privacy:");
#SCHEDULER
InstallFromManifest(":mozilla:modules:schedulr:public:MANIFEST", ":mozilla:dist:schedulr:");
#NETWORK
InstallFromManifest(":mozilla:network:cache:MANIFEST", ":mozilla:dist:network:");
InstallFromManifest(":mozilla:network:client:MANIFEST", ":mozilla:dist:network:");
InstallFromManifest(":mozilla:network:cnvts:MANIFEST", ":mozilla:dist:network:");
InstallFromManifest(":mozilla:network:cstream:MANIFEST", ":mozilla:dist:network:");
InstallFromManifest(":mozilla:network:main:MANIFEST", ":mozilla:dist:network:");
InstallFromManifest(":mozilla:network:mimetype:MANIFEST", ":mozilla:dist:network:");
InstallFromManifest(":mozilla:network:util:MANIFEST", ":mozilla:dist:network:");
InstallFromManifest(":mozilla:network:protocol:about:MANIFEST", ":mozilla:dist:network:");
InstallFromManifest(":mozilla:network:protocol:certld:MANIFEST", ":mozilla:dist:network:");
InstallFromManifest(":mozilla:network:protocol:dataurl:MANIFEST", ":mozilla:dist:network:");
InstallFromManifest(":mozilla:network:protocol:file:MANIFEST", ":mozilla:dist:network:");
InstallFromManifest(":mozilla:network:protocol:ftp:MANIFEST", ":mozilla:dist:network:");
InstallFromManifest(":mozilla:network:protocol:gopher:MANIFEST", ":mozilla:dist:network:");
InstallFromManifest(":mozilla:network:protocol:http:MANIFEST", ":mozilla:dist:network:");
InstallFromManifest(":mozilla:network:protocol:imap4:MANIFEST", ":mozilla:dist:network:");
InstallFromManifest(":mozilla:network:protocol:js:MANIFEST", ":mozilla:dist:network:");
InstallFromManifest(":mozilla:network:protocol:ldap:MANIFEST", ":mozilla:dist:network:");
InstallFromManifest(":mozilla:network:protocol:mailbox:MANIFEST", ":mozilla:dist:network:");
InstallFromManifest(":mozilla:network:protocol:marimba:MANIFEST", ":mozilla:dist:network:");
InstallFromManifest(":mozilla:network:protocol:nntp:MANIFEST", ":mozilla:dist:network:");
InstallFromManifest(":mozilla:network:protocol:pop3:MANIFEST", ":mozilla:dist:network:");
InstallFromManifest(":mozilla:network:protocol:remote:MANIFEST", ":mozilla:dist:network:");
InstallFromManifest(":mozilla:network:protocol:smtp:MANIFEST", ":mozilla:dist:network:");
#HTML_DIALOGS
InstallFromManifest(":mozilla:lib:htmldlgs:MANIFEST", ":mozilla:dist:htmldlgs:");
#LAYOUT
InstallFromManifest(":mozilla:lib:layout:MANIFEST", ":mozilla:dist:layout:");
#LAYERS
InstallFromManifest(":mozilla:lib:liblayer:include:MANIFEST", ":mozilla:dist:layers:");
#PARSE
InstallFromManifest(":mozilla:lib:libparse:MANIFEST", ":mozilla:dist:libparse:");
#STYLE
InstallFromManifest(":mozilla:lib:libstyle:MANIFEST", ":mozilla:dist:libstyle:");
#PLUGIN
InstallFromManifest(":mozilla:modules:plugin:public:MANIFEST", ":mozilla:dist:plugin:");
InstallFromManifest(":mozilla:modules:plugin:src:MANIFEST", ":mozilla:dist:plugin:");
#LIBHOOK
InstallFromManifest(":mozilla:modules:libhook:public:MANIFEST", ":mozilla:dist:libhook:");
#LIBPREF
InstallFromManifest(":mozilla:modules:libpref:public:MANIFEST", ":mozilla:dist:libpref:");
#LIBREG
InstallFromManifest(":mozilla:modules:libreg:include:MANIFEST", ":mozilla:dist:libreg:");
#LIBUTIL
InstallFromManifest(":mozilla:modules:libutil:public:MANIFEST", ":mozilla:dist:libutil:");
#PROGRESS
InstallFromManifest(":mozilla:modules:progress:public:MANIFEST", ":mozilla:dist:progress:");
#EDTPLUG
InstallFromManifest(":mozilla:modules:edtplug:include:MANIFEST", ":mozilla:dist:edtplug:");
#NAV_JAVA
InstallFromManifest(":mozilla:nav-java:stubs:include:MANIFEST", ":mozilla:dist:nav-java:");
InstallFromManifest(":mozilla:nav-java:stubs:macjri:MANIFEST", ":mozilla:dist:nav-java:");
#SUN_JAVA
InstallFromManifest(":mozilla:sun-java:stubs:include:MANIFEST", ":mozilla:dist:sun-java:");
InstallFromManifest(":mozilla:sun-java:stubs:macjri:MANIFEST", ":mozilla:dist:sun-java:");
#OJI
InstallFromManifest(":mozilla:modules:oji:public:MANIFEST", ":mozilla:dist:oji:");
InstallFromManifest(":mozilla:modules:oji:src:MANIFEST", ":mozilla:dist:oji:");
#CAPS
InstallFromManifest(":mozilla:caps:include:MANIFEST", ":mozilla:dist:caps:");
#BASE
InstallFromManifest(":mozilla:base:public:MANIFEST", ":mozilla:dist:base:");
InstallFromManifest(":mozilla:base:src:MANIFEST", ":mozilla:dist:base:");
}
1;

View File

@@ -0,0 +1,143 @@
#!perl
package BuildListObsolete;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(BuildMozilla);
=head1 NAME
BuildList - build the [ordered] set of projects needed to construct Mozilla
=head1 SYNOPSIS
...
=head1 COPYRIGHT
The contents of this file are subject to the Netscape Public License
Version 1.0 (the "NPL"); you may not use this file except in
compliance with the NPL. You may obtain a copy of the NPL at
http://www.mozilla.org/NPL/
Software distributed under the NPL is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
for the specific language governing rights and limitations under the
NPL.
The Initial Developer of this code under the NPL is Netscape
Communications Corporation. Portions created by Netscape are
Copyright (C) 1998 Netscape Communications Corporation. All Rights
Reserved.
=cut
sub BuildMozilla()
{
use Moz;
chdir(":::"); # assuming this script is in "...:mozilla:build:mac:", change dir to just inside "mozilla"
if ( $main::DEBUG )
{
$D = " (Debug)";
$LibD = "Debug";
$dist_dir = ":dist:client_debug:";
}
else
{
$D = "";
$LibD = "";
$dist_dir = ":dist:client:";
}
#
# Build the appropriate target of each project
#
BuildProjectClean(":lib:mac:NSStdLib:NSStdLib.mcp", "Stub Library");
BuildProjectClean(":lib:mac:MacMemoryAllocator:MemAllocator.mcp", "Stub Library");
BuildProjectClean(":cmd:macfe:projects:client:Navigator.mcp", "Stub Library");
BuildProject(":lib:mac:NSRuntime:NSRuntime.mcp");
MakeAlias(":lib:mac:NSRuntime:NSRuntimePPCLib", "$dist_dir");
BuildProject(":cmd:macfe:restext:NavStringLibPPC.mcp");
MakeAlias(":cmd:macfe:restext:StringsPPCLib", "$dist_dir");
BuildProject(":lib:mac:MoreFiles:build:MoreFilesPPC.prj");
MakeAlias(":lib:mac:MoreFiles:build:MoreFilesPPC.lib", "$dist_dir");
BuildProject(":nsprpub:macbuild:NSPR20PPC".$LibD.".mcp");
MakeAlias(":nsprpub:macbuild:NSPR20PPC".$LibD."Lib", "$dist_dir");
BuildProject(":dbm:macbuild:DBMPPC".$LibD.".mcp");
MakeAlias(":dbm:macbuild:DBMPPC".$LibD."Lib", "${dist_dir}");
BuildProject(":lib:mac:MacMemoryAllocator:MemAllocator.mcp", "PPC Shared Library$D");
MakeAlias(":lib:mac:MacMemoryAllocator:MemAllocatorPPC".$LibD."Lib", "$dist_dir");
BuildProject(":lib:mac:NSStdLib:NSStdLib.mcp", "PPC Shared Library");
MakeAlias(":lib:mac:NSStdLib:NSStdLibPPCLib", "$dist_dir");
BuildProject(":modules:security:freenav:macbuild:NoSecurity.mcp", "PPC Shared Library$D");
MakeAlias(":modules:security:freenav:macbuild:NoSecurity".$LibD."Lib", "$dist_dir");
BuildProject(":xpcom:macbuild:xpcomPPC".$LibD.".mcp");
MakeAlias(":xpcom:macbuild:xpcomPPC".$LibD."Lib", "$dist_dir");
BuildProject(":lib:mac:PowerPlant:PowerPlant.mcp");
MakeAlias(":lib:mac:PowerPlant:PowerPlantPPC".$LibD."Lib", "$dist_dir");
BuildProject(":modules:zlib:macbuild:zlib.mcp", "PPC Shared Library$D");
MakeAlias(":modules:zlib:macbuild:zlibPPC".$LibD."Lib", "$dist_dir");
BuildProject(":jpeg:macbuild:JPEG.mcp", "PPC Shared Library$D");
MakeAlias(":jpeg:macbuild:JPEGPPC".$LibD."Lib", "$dist_dir");
BuildProject(":sun-java:stubs:macbuild:JavaStubs.mcp", "PPC Shared Library$D");
MakeAlias(":sun-java:stubs:macbuild:JavaRuntimePPC".$LibD."Lib", "$dist_dir");
BuildProject(":js:jsj:macbuild:JSJ_PPC".$LibD.".mcp");
BuildProject(":js:macbuild:JavaScriptPPC".$LibD.".mcp");
MakeAlias(":js:macbuild:JavaScriptPPC".$LibD."Lib", "$dist_dir");
BuildProject(":nav-java:stubs:macbuild:NavJavaStubs.mcp", "PPC Shared Library$D");
MakeAlias(":nav-java:stubs:macbuild:NavJavaPPC".$LibD."Lib", "$dist_dir");
if ( $main::DEBUG )
{
BuildProject(":modules:rdf:macbuild:RDF.mcp", "PPC Shared Library +D -LDAP");
MakeAlias(":modules:rdf:macbuild:RDFPPCDebugLib", "${dist_dir}");
}
else
{
Moz::BuildProject(":modules:rdf:macbuild:RDF.mcp", "PPC Shared Library -LDAP");
MakeAlias(":modules:rdf:macbuild:RDFPPCLib", "${dist_dir}");
}
BuildProject(":modules:xml:macbuild:XML.mcp", "PPC Shared Library$D");
MakeAlias(":modules:xml:macbuild:XMLPPC".$LibD."Lib", "$dist_dir");
BuildProject(":modules:libfont:macbuild:FontBroker.mcp", "PPC Library$D");
BuildProject(":modules:schedulr:macbuild:Schedulr.mcp", "PPC Shared Library$D");
MakeAlias(":modules:schedulr:macbuild:Schedulr".$LibD."PPCLib", "$dist_dir");
BuildProject(":network:macbuild:network.mcp", "PPC Library (Debug Moz)");
if ( $main::MOZ_LITE == 0 )
{
BuildProject(":cmd:macfe:Composer:build:Composer.mcp", "PPC Library$D");
}
BuildProject(":cmd:macfe:projects:client:Navigator.mcp", "Moz PPC App$D");
}
1;

View File

@@ -0,0 +1,40 @@
#!perl
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
use Moz;
use BuildList;
$DEBUG = 0;
# One of them should be 1. This will come from a config file at some stage.
# In the meanwhile, it should match mozilla/config/mac/MacConfig.h
$MOZ_LITE = 0;
$MOZ_MEDIUM = 1;
$MOZ_DARK = 0;
Moz::OpenErrorLog(":::Mozilla.BuildLog");
Moz::StopForErrors();
chdir("::::");
# Make and popuplate the dist directory
DistMozilla();
# Now build the projects
BuildMozilla();

View File

@@ -0,0 +1,124 @@
#!perl
package BuildMozilla;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(BuildMozilla);
=head1 NAME
BuildMozilla - build the [ordered] set of projects needed to construct Mozilla
=head1 COPYRIGHT
The contents of this file are subject to the Netscape Public License
Version 1.0 (the "NPL"); you may not use this file except in
compliance with the NPL. You may obtain a copy of the NPL at
http://www.mozilla.org/NPL/
Software distributed under the NPL is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
for the specific language governing rights and limitations under the
NPL.
The Initial Developer of this code under the NPL is Netscape
Communications Corporation. Portions created by Netscape are
Copyright (C) 1998 Netscape Communications Corporation. All Rights
Reserved.
=cut
sub BuildMozilla()
{
use Moz;
chdir("::::"); # assuming this script is in "...:mozilla:build:mac:", change dir to just above "mozilla"
# Ideally, we would set the target name like so:
# $target = $main::DEBUG ? "debug" : "optimized";
# ...and all projects would have corresponding targets
$D = $main::DEBUG ? " (Debug)" : ""; # $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
#
# Build the appropriate target of each project
#
Moz::BuildProject(":mozilla:lib:mac:NSStdLib:NSStdLib.mcp", "Stub Library");
Moz::BuildProject(":mozilla:lib:mac:MacMemoryAllocator:MemAllocator.mcp", "Stub Library");
Moz::BuildProject(":mozilla:cmd:macfe:projects:client:Navigator.mcp", "Stub Library");
Moz::BuildProject(":mozilla:lib:mac:NSRuntime:NSRuntime.mcp");
Moz::BuildProject(":mozilla:cmd:macfe:restext:NavStringLibPPC.mcp");
Moz::BuildProject(":mozilla:lib:mac:MoreFiles:build:MoreFilesPPC.prj");
if ( $main::DEBUG )
{
Moz::BuildProject(":mozilla:nsprpub:macbuild:NSPR20PPCDebug.mcp");
Moz::BuildProject(":mozilla:dbm:macbuild:DBMPPCDebug.mcp");
}
else
{
Moz::BuildProject(":mozilla:nsprpub:macbuild:NSPR20PPC.mcp");
Moz::BuildProject(":mozilla:dbm:macbuild:DBMPPC.mcp");
}
Moz::BuildProject(":mozilla:lib:mac:MacMemoryAllocator:MemAllocator.mcp", "PPC Shared Library$D");
Moz::BuildProject(":mozilla:lib:mac:NSStdLib:NSStdLib.mcp", "PPC Shared Library");
Moz::BuildProject(":mozilla:modules:security:freenav:macbuild:NoSecurity.mcp", "PPC Shared Library$D");
if ( $main::DEBUG )
{
Moz::BuildProject(":mozilla:xpcom:macbuild:xpcomPPCDebug.mcp");
}
else
{
Moz::BuildProject(":mozilla:xpcom:macbuild:xpcomPPC.mcp");
}
Moz::BuildProject(":mozilla:lib:mac:PowerPlant:PowerPlant.mcp");
Moz::BuildProject(":mozilla:modules:zlib:macbuild:zlib.mcp", "PPC Shared Library$D");
Moz::BuildProject(":mozilla:jpeg:macbuild:JPEG.mcp", "PPC Shared Library$D");
Moz::BuildProject(":mozilla:sun-java:stubs:macbuild:JavaStubs.mcp", "PPC Shared Library$D");
if ( $main::DEBUG )
{
Moz::BuildProject(":mozilla:js:jsj:macbuild:JSJ_PPCDebug.mcp");
Moz::BuildProject(":mozilla:js:macbuild:JavaScriptPPCDebug.mcp");
}
else
{
Moz::BuildProject(":mozilla:js:jsj:macbuild:JSJ_PPC.mcp");
Moz::BuildProject(":mozilla:js:macbuild:JavaScriptPPC.mcp");
}
Moz::BuildProject(":mozilla:nav-java:stubs:macbuild:NavJavaStubs.mcp", "PPC Shared Library$D");
# the following `if' can be fixed when we either rename the debug target of the RDF project, or of all the other projects
if ( $main::DEBUG )
{
Moz::BuildProject(":mozilla:modules:rdf:macbuild:RDF.mcp", "PPC Shared Library +D -LDAP");
}
else
{
Moz::BuildProject(":mozilla:modules:rdf:macbuild:RDF.mcp", "PPC Shared Library -LDAP");
}
Moz::BuildProject(":mozilla:modules:xml:macbuild:XML.mcp", "PPC Shared Library$D");
Moz::BuildProject(":mozilla:modules:libfont:macbuild:FontBroker.mcp", "PPC Library$D");
Moz::BuildProject(":mozilla:modules:schedulr:macbuild:Schedulr.mcp", "PPC Shared Library$D");
Moz::BuildProject(":mozilla:network:macbuild:network.mcp", "PPC Library (Debug Moz)");
Moz::BuildProject(":mozilla:cmd:macfe:Composer:build:Composer.mcp", "PPC Library$D");
Moz::BuildProject(":mozilla:cmd:macfe:projects:client:Navigator.mcp", "Moz PPC App$D");
}
1;

View File

@@ -0,0 +1,44 @@
#!perl
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
use Moz;
use BuildList;
$DEBUG = 1;
# One of them should be 1. This will come from a config file at some stage.
# In the meanwhile, it should match mozilla/config/mac/MacConfig.h
$MOZ_LITE = 0;
$MOZ_MEDIUM = 1;
$MOZ_DARK = 0;
Moz::OpenErrorLog(":::Mozilla.BuildLog");
Moz::StopForErrors();
chdir("::::");
# Make and popuplate the dist directory
DistMozilla();
# Set the build number in about-all.html. Commented out for now
# until ckid/mcvs resource problem is resolved.
# SetBuildNumber();
# Now build the projects
BuildMozilla();

View File

@@ -0,0 +1,48 @@
#!perl
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
use Moz;
use BuildList;
$DEBUG = 1;
# One of them should be 1. This will come from a config file at some stage.
# In the meanwhile, it should match mozilla/config/mac/MacConfig.h
$MOZ_LITE = 0;
$MOZ_MEDIUM = 1;
$MOZ_DARK = 0;
Moz::OpenErrorLog(":::Mozilla.BuildLog");
Moz::StopForErrors();
chdir("::::");
# Make and popuplate the dist directory
DistMozilla();
# Set the build number in about-all.html. Commented out for now
# until ckid/mcvs resource problem is resolved.
SetBuildNumber();
# SetAgentString();
SetTimeBomb(0, 30);
# Now build the projects
BuildMozilla();

View File

@@ -0,0 +1,134 @@
#!perl
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
#
# nglayout build script (debug)
#
use NGLayoutBuildList;
use Cwd;
use Moz;
# configuration variables
$DEBUG = 1;
$pull{all} = 0;
$pull{lizard} = 0;
$pull{xpcom} = 0;
$pull{imglib} = 0;
$pull{netlib} = 0;
$pull{nglayout} = 0;
$pull{mac} = 0;
$build{all} = 0;
$build{dist} = 0;
$build{common}= 0;
$build{nglayout}= 0;
#
# UI
#
@choices = ("pull_and_build_all",
"pull_all",
"build_all",
"pull_nglayout",
"build_dist",
"build_projects");
#damn, this does not work on
if (0)
{
while (GetFrontProcess () != GetCurrentProcess())
{
SetFrontProcess( GetCurrentProcess() );
}
@pick = MacPerl::Pick("What would you like to do?", @choices);
$pull{all} = 0;
$build{all} = 1;
foreach $i (@pick)
{
if ($i eq "pull_and_build_all")
{
$pull{all} = 1;
$build{all} = 1;
}
elsif ($i eq "pull_all")
{
$pull{all} = 1;
}
elsif ($i eq "build_all")
{
$build{all} = 1;
}
elsif ($i eq "build_dist")
{
$build{dist} = 1;
}
elsif ($i eq "build_projects")
{
$build{projects} = 1;
}
}
}
else
{
$pull{all} = 1;
$build{all} = 1;
# $pull{netlib} = 1;
# $pull{nglayout} = 1;
# $build{common} = 1;
# $build{nglayout} = 1;
# $build{dist} = 1;
# $pull{nglayout} = 1;
}
if ($pull{all})
{
foreach $k (keys(%pull))
{
$pull{$k} = 1;
}
}
if ($build{all})
{
foreach $k (keys(%build))
{
$build{$k} = 1;
}
}
# do the work
# you should not have to edit anything bellow
chdir("::::");
$MOZ_SRC = cwd();
Moz::StopForErrors();
#Moz::DontStopForErrors();
#OpenErrorLog("::NGLayoutBuildLog");
OpenErrorLog(":::Mozilla.BuildLog"); # Tinderbox requires that name
Checkout();
chdir($MOZ_SRC);
BuildDist();
chdir($MOZ_SRC);
BuildProjects();
print "Build layout complete\n";

Binary file not shown.

View File

@@ -0,0 +1,374 @@
#!perl
package CodeWarriorLib;
=pod
=head1 NAME
CodeWarriorLib - supply interface to CodeWarrior
=head1 SYNOPSIS
#!perl
use CodeWarriorLib;
CodeWarriorLib::activate();
$had_errors = CodeWarriorLib::build_project(
$project_path, $target_name, $recent_errors_file, $clean_build
);
=head1 DESCRIPTION
Replaces the AppleScript library I<CodeWarriorLib>.
=over 4
=cut
use strict;
use Mac::AppleEvents::Simple;
use Mac::AppleEvents;
use Mac::Processes;
use Mac::MoreFiles;
use Mac::Types;
use File::Basename;
use vars qw($VERSION);
$VERSION = '1.01';
my($app) = 'CWIE';
# 0 == don't switch CWIE to front app in do_event(), 1 == do switch
# note: activate() still switches when called
$Mac::AppleEvents::Simple::SWITCH = 0;
# supply your own path to the source here
#_test('PowerPudgeIV:mozilla:mozilla:');
=pod
=item _get_project($full_path)
A private routine returning a reference to the open project with the given name,
or else the empty string (when that project is not open)
full_path is a string identifying the project to be built and is of the form,
e.g., "HD:ProjectFolder:MyProject.mcp". It must be supplied.
=cut
sub _get_project ($) {
my(
$full_path, $candidate_projects
) = @_;
$candidate_projects = _doc_named(basename($full_path, '*'));
if ($candidate_projects) {
my($cps) = _get_dobj($candidate_projects);
my($num) = AECountItems($cps);
if ($num) { # is a list
foreach (1 .. AECountItems($cps)) {
my($cp) = AEGetNthDesc($cps, $_);
if ($full_path eq _full_path($cp)) {
return($cp);
}
}
} else { # is only one, not a list
if ($full_path eq _full_path($cps)) {
return($cps);
}
}
}
return;
}
=pod
=item build_project
Build a selected target of a project, saving any errors to a file, if supplied.
full_path is a string identifying the project to be built and is of the form,
e.g., "HD:ProjectFolder:MyProject.mcp". It must be supplied.
If target_name is the empty string, the current target of the selected project
will be built, else, target_name should be a string matching a target name in
the selected project.
If error_path is the empty string, errors will not be saved to a file,
else, error_path should be the full path of a file to save error messages into.
=cut
sub build_project ($;$$$) {
my(
$full_path, $target_name, $error_path,
$remove_object, $p, $project_was_closed, $had_errors
) = @_;
_close_errors_window();
while (1) {
$p = _get_project($full_path);
if (!$p) {
return if ($project_was_closed);
$project_was_closed = 1;
_open_file($full_path);
} else {
last;
}
}
$had_errors = 0;
if ($target_name eq '') {
if ($remove_object) {_remove_object($p)}
_build($p);
} else {
if ($remove_object) {_remove_object($p, $target_name)}
_build($p, $target_name);
}
if ($error_path ne '') {
_save_errors_window($error_path);
}
$had_errors = _close_errors_window();
if ($project_was_closed) {
$p = _get_project($full_path);
_close($p);
}
return($had_errors);
}
=pod
=item activate()
Launches CodeWarrior and brings it to the front.
Once found, path will be saved in ':idepath.txt' for future reference.
Edit or delete this file to change the location of the IDE. If app is
moved, C<activate()> will prompt for a new location.
First looks for an open CodeWarrior app. Second, tries to open previously
saved location in ':idepath.txt'. Third, tries to find it and allow user
to choose it with Navigation Services (if present). Fourth, uses good old
GUSI routines built-in to MacPerl for a Choose Directory dialog box.
=cut
sub activate () {
local(*F);
my($filepath, $appath, $psi) = (':idepath.txt');
foreach $psi (values(%Process)) {
if ($psi->processSignature() eq $app) {
$appath = $psi->processAppSpec(), "\n";
}
_save_appath($filepath, $appath);
}
if ((!$appath || ! -x $appath) && open(F, $filepath)) {
$appath = <F>;
close(F);
}
if (!$appath || ! -x $appath) {
if (eval {require Mac::Navigation}) {
my($options, $nav);
Mac::Navigation->import();
$options = NavGetDefaultDialogOptions();
$options->message('Where is CodeWarrior IDE?');
$options->windowTitle('Find CodeWarrior IDE');
$nav = NavChooseObject($Application{$app}, $options);
die "CodeWarrior IDE not found.\n" if (!$nav || !$nav->file(1));
$appath = $nav->file(1);
} else {
local(*D);
my $cwd = `pwd`;
$appath = _get_folder(
'Where is the folder containing CodeWarrior IDE?',
dirname($Application{$app})
) . ':';
die "CodeWarrior IDE not found.\n" if !$appath;
opendir(D, $appath) or die $!;
chdir($appath);
foreach my $file (sort readdir (D)) {
my(@app) = MacPerl::GetFileInfo($file);
if ($app[0] && $app[1] &&
$app[1] eq 'APPL' && $app[0] eq $app
) {
$appath .= $file;
last;
}
}
chomp($cwd);
chdir($cwd);
}
_save_appath($filepath, $appath);
}
my($lp) = LaunchParam->new(
launchAppSpec => $appath,
launchControlFlags => launchContinue() + launchNoFileFlags()
);
LaunchApplication($lp) or die $^E;
}
sub _build ($;$) {
my($evt);
if ($_[1]) {
my($prm) =
q"'----':obj {form:name, want:type(TRGT), seld:TEXT(@), from:" .
AEPrint($_[0]) . '}';
$evt = do_event(qw/CWIE MAKE/, $app, $prm, $_[1]);
} else {
my($prm) = q"'----':" . AEPrint($_[0]);
$evt = do_event(qw/CWIE MAKE/, $app, $prm);
}
}
sub _remove_object ($;$) {
my($evt);
if ($_[1]) {
my($prm) =
q"'----':obj {form:name, want:type(TRGT), seld:TEXT(@), from:" .
AEPrint($_[0]) . '}';
$evt = do_event(qw/CWIE RMOB/, $app, $prm, $_[1]);
} else {
my($prm) = q"'----':" . AEPrint($_[0]);
$evt = do_event(qw/CWIE RMOB/, $app, $prm);
}
}
sub _open_file ($) {
my($prm) =
q"'----':obj {form:name, want:type(alis), " .
q"seld:TEXT(@), from:'null'()}";
do_event(qw/aevt odoc/, $app, $prm, $_[0]);
}
sub _doc_named ($) {
my($prm) =
q"'----':obj {form:test, want:type(docu), from:'null'(), " .
q"seld:cmpd{relo:'= ', 'obj1':obj {form:prop, want:type" .
q"(prop), seld:type(pnam), from:'exmn'()}, 'obj2':TEXT(@)}}";
my($evt) = do_event(qw/core getd/, $app, $prm, $_[0]);
return($evt->{REPLY} eq 'aevt\ansr{}' ? undef : $evt);
}
sub _full_path ($) {
my($obj) = $_[0];
my($prm) =
q"'----':obj {form:prop, want:type(prop), seld:type(FILE), " .
q"from:" . AEPrint($_[0]) . q"}, rtyp:type(TEXT)";
my($evt) = do_event(qw/core getd/, $app, $prm);
return MacPerl::MakePath(
MacUnpack('fss ', (
AEGetParamDesc($evt->{REP}, keyDirectObject()))->data()->get()
)
);
}
sub _save_errors_window ($) {
my($prm) =
q"'----':obj {form:name, want:type(alis), seld:TEXT(@), from:'null'()}";
do_event(qw/MMPR SvMs/, $app, $prm, $_[0]);
}
sub _close_errors_window () {
my($prm) =
q"'----':obj {form:name, want:type(cwin), " .
q"seld:TEXT(@), from:'null'()}";
my($evt) = do_event(qw/core clos/, $app, $prm, 'Errors & Warnings');
return($evt->{REPLY} eq 'aevt\ansr{}' ? 1 : 0);
}
sub _close () {
my($prm) = q"'----':" . AEPrint($_[0]);
do_event(qw/core clos/, $app, $prm);
}
sub _get_dobj ($) {
return(AEGetParamDesc($_[0]->{REP}, keyDirectObject()));
}
sub _get_folder ($$) {
require 'GUSI.ph';
my($prompt, $default) = @_;
MacPerl::Choose(
GUSI::AF_FILE(), 0, $prompt, '',
GUSI::CHOOSE_DIR() + ($default ? &GUSI::CHOOSE_DEFAULT : 0),
$default
);
}
sub _save_appath ($$) {
open(F, '>' . $_[0]) or die $!;
print F $_[1];
close(F);
}
sub _test ($) {
activate();
my($path) = $_[0];
build_project(
"${path}modules:xml:macbuild:XML.mcp", '',
"${path}build:mac:Mozilla.BuildLog.part"
);
}
1;
=pod
=back
=head1 HISTORY
=over 4
=item v1.01, June 1, 1998
Made fixes to C<chdir()> in C<activate()>, made C<activate()> more robust
in finding CodeWarrior IDE, added global variable to NOT switch to IDE
for each sent event, a few other fixes.
=item v1.00, May 30, 1998
First shot
=back
=head1 AUTHORS
Chris Nandor F<E<lt>pudge@pobox.comE<gt>>, and the author of the
original I<CodeWarriorLib>, Scott Collins F<E<lt>scc@netscape.comE<gt>>.
=head1 SEE ALSO
BuildProject L<Moz>.
=head1 COPYRIGHT
The contents of this file are subject to the Netscape Public License
Version 1.0 (the "NPL"); you may not use this file except in
compliance with the NPL. You may obtain a copy of the NPL at
http://www.mozilla.org/NPL/
Software distributed under the NPL is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
for the specific language governing rights and limitations under the
NPL.
The Initial Developer of this code under the NPL is Netscape
Communications Corporation. Portions created by Netscape are
Copyright (C) 1998 Netscape Communications Corporation. All Rights
Reserved.
=cut

View File

@@ -0,0 +1,78 @@
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
if {#} != 1
echo "CopyExports requires 1 parameters:"
echo "Parameter 1: path relative to {SourceRootDir} of the file which contains"
echo " the list of files to be copied, one per line. This path"
echo " may not begin with a colon"
echo
Exit 1
end if
Set SourceList "{SourceRootDir}{1}"
Set ScriptsDir "{SourceRootDir}mozilla:build:mac:"
#set sourceList "{SourceRootDir}mozilla:{1}"
if {verbose}
echo "Source list is in file ¶"{SourceList}¶""
echo "Scripts directory is ¶"{ScriptsDir}¶""
end if
# for each line in the source file, remove it if it starts with #, otherwise quote it
for curLine in `streamedit "{sourceList}" -e '/¥#Å/ Delete; /¥/ Replace /(Å)¨1/ "¶""¨1"¶""'`
echo "{curLine}"
# ignore empty lines
if `evaluate "{{curLine}}" != ""`
echo "{curLine}"
# strip out trailing comments
if `evaluate "{curLine}" =~ /(Å)¨1[ ¶t]+(#Å)¨2/`
set sourceLine "{¨1}"
# echo "Discarding comment {¨2}"
else
set sourceLine "{curLine}"
end if
if `evaluate "{sourceLine}" =~ /([Â ¶t]+)¨1[ ¶t]+[:]*(Å)¨2/`
if {verbose}
echo "Cur line is {sourceLine}"
end if
set exportFile "{¨1}"
set theTarget "{¨2}"
if {verbose}
echo "Export file name is {exportFile}"
echo "Target directory is {theTarget}"
end if
"{ScriptsDir}CopyList.script" "{exportFile}" "{theTarget}"
end if
end if
end for

View File

@@ -0,0 +1,81 @@
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
# This is the controlling script for a set of scripts that copy public
# header files in one or more source trees into a single, "dist" directory.
#
# It relies on the two accompanying scripts, ÒCopyList.scriptÓ and
# ÒCopyExports.scriptÓ, which must be in the same directory.
#
# To execute this script, select everything from "# Get the..." to
# " the end" and hit the Enter key.
#
# Known bugs:
# Header files are always copied if the export.mac file contains
# non-local paths.
# Spurious output is produced even when verbose is off.
#
# Uncomment this to get some progress information
# set -e verbose 1
# Get the root of everything
set magicfilepath "{systempfolder}filepath" # Temporary items folder, "filepath"
if !`Exists "{{magicFilePath}}"`
Echo "No file path file seems to have been created in the temporary items folder."
Echo "Was this script executed from the perl script? That's the way it was designed."
Exit 1
end if
set myDirectory "`catenate "{{magicFilePath}}"`"
delete -i "{{magicFilePath}}"
Set SourceList "{myDirectory}{1}"
(Evaluate "{myDirectory}" =~ /(Å:)¨1[Â:]+:[Â:]+:[Â:]+/) #·· dev:null
Set -e mozillaDir "{¨1}"
if !`Exists "{{mozillaDir}}"`
Echo "A file path was passed, but it doesn't seem to be the mozilla directory."
Exit 1
end if
echo "Mozilla directory found at {mozillaDir}"
#Calculate the root directory by stripping off the leaf name.
(Evaluate "{mozillaDir}" =~ /(Å:)¨1([Â:]+)¨2/) #·· dev:null
Set -e SourceRootDir "{¨1}"
Set -e DestRootDir "{mozillaDir}dist:"
# Ensure the build and stubs folders exist
if !`exists -d "{mozillaDir}dist"`
newfolder "{mozillaDir}dist"
end if
if !`exists -d "{mozillaDir}dist:client"`
newfolder "{mozillaDir}dist:client"
end if
if !`exists -d "{mozillaDir}dist:client_debug"`
newfolder "{mozillaDir}dist:client_debug"
end if
if !`exists -d "{mozillaDir}dist:client_stubs"`
newfolder "{mozillaDir}dist:client_stubs"
end if
"{SourceRootDir}mozilla:build:mac:CopyExports.script" "mozilla:build:mac:MacExportListPublic"
# the end

View File

@@ -0,0 +1,97 @@
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
if {#} != 2
echo "CopyList requires 2 parameters:"
echo "Parameter 1: path relative to {SourceRootDir} of the file which contains"
echo " the list of files to be copied, one per line. This path"
echo " may not begin with a colon"
echo
echo "Parameter 2: path relative to {DestRootDir} of the directory where all the"
echo " files are to be copied. No initial colons!"
echo
Exit 1
end if
set debugEcho "" # This setting will actually duplicate the files
#set debugEcho "echo" # This setting will merely print the "duplicate" commands.
set sourceList "{SourceRootDir}{1}"
set targetDir "{DestRootDir}{2}"
# targetDir may not end in a colon for this script to work.
if `Evaluate "{targetDir}" =~ /(Å)¨1:/`
#echo "Removed a colon"
set targetDir "{¨1}"
end if
#Ensure the target hierarchy exists
# Volume name
(Evaluate "{TargetDir}" =~ /([Â:]+)¨1:Å/) ·· dev:null
Set PartialPath "{¨1}"
Loop
(Evaluate "{TargetDir}" =~ /("{PartialPath}":[Â:]+)¨1([:]*)¨2Å/) ·· dev:null
Set PartialPath "{¨1}"
Set Exit 0
(NewFolder "{PartialPath}") ·· dev:null
Set Exit 1
break if "{¨2}" == ""
End Loop
#Calculate the source directory by stripping off the leaf name.
(Evaluate "{SourceList}" =~ /(Å:)¨1([Â:]+)¨2/) #·· dev:null
Set SourceDir "{¨1}"
if {verbose}
echo "Source list is in file ¶"{sourceList}¶""
echo "Source directory is ¶"{SourceDir}¶""
echo "Target directory is ¶"{targetDir}¶""
end if
# Strip all comment lines, pipe the stripped lines into the "for" loop.
# We quote each whole line here so that we deal with a line at a time in the
# for loop. Don't ya just love MPW quoting rulesÉ
for f in `streamedit "{sourceList}" -e '/¥#Å/ Delete; /¥/ Replace /(Å)¨1/ "¶""¨1"¶""'`
if `evaluate "{{f}}" != ""`
# strip out trailing comments (in fact, anything following whitespace)
if `evaluate "{f}" =~ /([Â ¶t]+)¨1[ ¶t]+([#]*Å)¨2/`
set sourceFile "{¨1}"
# echo "Discarding comment {¨2}"
else
set sourceFile "{f}"
end if
# sourceFile can be a relative path, so need to get the file name for date comparisons
if `evaluate "{sourceFile}" =~ /Å:([Â:]+)¨1/`
set filename "{¨1}"
else
set filename "{sourceFile}"
end if
# now copy the file if newer
if "`Newer "{sourceDir}{sourceFile}" "{targetDir}:{filename}"`" #|| !`Exists "{targetDir}:{filename}"`
if {verbose} ; echo "{sourceDir}{sourceFile} is newer than {targetDir}:{filename}" ; end if
#{debugEcho} duplicate -y "{sourceDir}{sourceFile}" "{targetDir}"
{debugEcho} newalias "{sourceDir}{sourceFile}" "{targetDir}:{filename}"
end if
end if
end for

View File

@@ -0,0 +1,4 @@
/* This library only exists to provide a dummy library for the final project */
/* There is nothing to do here. */

Binary file not shown.

View File

@@ -0,0 +1,69 @@
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
# This is the controlling script for a set of scripts that copy public
# header files in one or more source trees into a single, "dist" directory.
#
# It relies on the two accompanying scripts, ÒCopyList.scriptÓ and
# ÒCopyExports.scriptÓ, which must be in the same directory.
#
# To execute this script, select everything from "# Get the..." to
# " the end" and hit the Enter key.
#
# Known bugs:
# Spurious output is produced even when verbose is off.
#
# Uncomment this to get some progress information
# set -e verbose 1
# Get the root of everything
set moz ""
loop
set mozillaDir `GetFileName -d -m "Please select the ÒmozillaÓ directory"`
#set SourceRootDir
(Evaluate "{mozillaDir}" =~ /(Å:)¨1([Â:]+)¨2:/) #·· dev:null
set moz "{¨2}"
break if "{moz}" == "mozilla"
Alert "Sorry, this only works if you select the folder called ÒmozillaÓ."
end loop
#Calculate the root directory by stripping off the leaf name.
(Evaluate "{mozillaDir}" =~ /(Å:)¨1([Â:]+)¨2/) #·· dev:null
Set -e SourceRootDir "{¨1}"
Set -e DestRootDir "{mozillaDir}dist:"
# Ensure the build and stubs folders exist
if !`exists -d "{mozillaDir}dist"`
newfolder "{mozillaDir}dist"
end if
if !`exists -d "{mozillaDir}dist:client"`
newfolder "{mozillaDir}dist:client"
end if
if !`exists -d "{mozillaDir}dist:client_debug"`
newfolder "{mozillaDir}dist:client_debug"
end if
if !`exists -d "{mozillaDir}dist:client_stubs"`
newfolder "{mozillaDir}dist:client_stubs"
end if
"{SourceRootDir}mozilla:build:mac:CopyExports.script" "mozilla:build:mac:MacExportListPublic"
# the end

View File

@@ -0,0 +1,94 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
/*
This file overrides all option settings in the IDE. It is an attempt to allow all builds
to have the same options.
Note: We can't use ConditionalMacros.h in this file because it will conflict with
the PowerPlant precompiled headers.
*/
/* warning pragmas */
#pragma warn_hidevirtual on
#pragma warn_emptydecl on
#pragma warn_unusedvar on
#pragma warn_extracomma on
#pragma warn_illpragma on
#pragma warn_possunwant on
#pragma warn_unusedarg off /* turned off to reduce warnings */
#pragma check_header_flags on
/* Language features that must be the same across libraries... */
#pragma enumsalwaysint on
#pragma unsigned_char off
#pragma exceptions on
#pragma bool on
/* Save as much space as possible with strings... */
#pragma pool_strings on
#pragma dont_reuse_strings off
#pragma options align=native
#pragma sym on /* Takes no memory. OK in non-debug. */
#ifdef powerc /* ...generating PowerPC */
#pragma toc_data on
#pragma fp_contract on
#pragma readonly_strings on
#ifdef DEBUG
#pragma traceback on
#pragma global_optimizer off
#pragma scheduling off
#pragma peephole off
#pragma optimize_for_size off
#else
#pragma traceback off
#pragma global_optimizer on
#pragma optimization_level 4
#pragma scheduling 604
#pragma peephole on
#pragma optimize_for_size on
#endif
#else /* ...generating 68k */
#pragma code68020 on
#pragma code68881 off
/* Far everything... */
#pragma far_code
#pragma far_data on
#pragma far_strings on
#pragma far_vtables on
#pragma fourbyteints on /* 4-byte ints */
#pragma IEEEdoubles on /* 8-byte doubles (as required by Java and NSPR) */
#ifdef DEBUG
#pragma macsbug on
#pragma oldstyle_symbols off
#else
#pragma macsbug off
#endif
#endif

View File

@@ -0,0 +1,5 @@
#
# This is a list of local files which get copied to the mozilla:dist directory
#
IDE_Options.h

198
mozilla/build/mac/MacCVS.pm Normal file
View File

@@ -0,0 +1,198 @@
#!perl -w
package MacCVS;
# package Mac::Apps::MacCVS; this should really be the name of the package
# but due to our directory hierarchy in mozilla, I am not doing it
require 5.004;
require Exporter;
use strict;
use vars qw($VERSION @ISA @EXPORT $MacCVSLib);
use Mac::StandardFile;
use Moz;
use Cwd;
use Exporter;
use File::Basename;
@ISA = qw(Exporter);
@EXPORT = qw( new print checkout);
$VERSION = "1.00";
# Architecture:
# cvs session object:
# name - session name
# session_file - session file
#
# globals
# $MacCVSLib - location of MacCVS applescript library
#
#
#
# utility routines
#
# just like Mac::DoAppleScript, 1 is success, 0 is failure
sub _myDoAppleScript($)
{
my($script) = @_;
my $asresult = MacPerl::DoAppleScript($script);
if ($asresult eq "0")
{
return 1;
}
else
{
print STDERR "AppleScript error: $asresult\n";
print STDERR "AppleScript was: \n $script \n";
return 0;
}
}
# _useMacCVSLib
# returns 1 on success
# Search the include path for the file called MacCVSLib
sub _useMacCVSLib()
{
unless ( defined($MacCVSLib) )
{
my($libname) = "MacCVSLib";
# try the directory we were run from
my($c) = dirname($0) . ":" . $libname;
if ( -e $c)
{
$MacCVSLib = $c;
}
else
{
# now search the include directories
foreach (@INC)
{
unless ( m/^Dev:Pseudo/ ) # This is some bizarre MacPerl special-case directory
{
$c = $_ . $libname;
if (-e $c)
{
$MacCVSLib = $c;
last;
}
}
}
}
if (! (-e $MacCVSLib))
{
print STDERR "MacCVS lib could not be found! $MacCVSLib";
return 0;
}
}
return 1;
}
#
# Session object methods
#
sub new {
my ( $proto, $session_file) = @_;
my $class = ref($proto) || $proto;
my $self = {};
if ( defined($session_file) && ( -e $session_file) )
{
$self->{"name"} = basename( $session_file );
$self->{"session_file"} = $session_file;
bless $self, $class;
return $self;
}
else
{
print STDERR "MacCVS->new cvs file < $session_file > does not exist\n";
return;
}
}
# makes sure that the session is open
# assertSessionOpen()
# returns 1 on failure
sub assertSessionOpen() {
my ($self) = shift;
_useMacCVSLib() || die "Could not load MacCVSLib\n";
my $script = <<END_OF_APPLESCRIPT;
tell (load script file "$MacCVSLib") to OpenSession("$self->{session_file}")
END_OF_APPLESCRIPT
return _myDoAppleScript($script);
}
# prints the cvs object, used mostly for debugging
sub print {
my($self) = shift;
print "MacCVS:: name: ", $self->{name}, " session file: ", $self->{session_file}, "\n";
}
# checkout( self, module, revision, date)
# MacCVS checkout command
# returns 1 on failure
sub checkout {
my($self, $module, $revision, $date ) = @_;
unless( defined ($module) ) { $module = ""; } # get rid of the pesky undefined warnings
unless( defined ($revision) ) { $revision = ""; }
unless( defined ($date) ) { $date = ""; }
$self->assertSessionOpen() || return 1;
my $script = <<END_OF_APPLESCRIPT;
tell (load script file "$MacCVSLib") to Checkout given sessionName:"$self->{name}", module:"$module", revision:"$revision", date:"$date"
END_OF_APPLESCRIPT
return _myDoAppleScript($script);
}
1;
=pod
=head1 NAME
MacCVS - Interface to MacCVS
=head1 SYNOPSIS
use MacCVS;
$session = MacCVS->new( <session_file_path>) || die "cannot create session";
$session->checkout([module] [revision] [date]) || die "Could not check out";
=head1 DESCRIPTION
This is a MacCVS interface for talking to MacCVS Pro client.
MacCVSSession is the class used to manipulate the session
=item new
MacCVS->new( <cvs session file path>);
Creates a new session. Returns undef on failure.
=item checkout( <module> [revision] [date] )
cvs checkout command. Revision and date are optional
returns 0 on failure
=cut
=head1 SEE ALSO
=over
=item MacCVS Home Page
http://www.maccvs.org/
=back
=head1 AUTHORS
Aleks Totic atotic@netscape.com
=cut
__END__

BIN
mozilla/build/mac/MacCVSLib Normal file

Binary file not shown.

View File

@@ -0,0 +1,159 @@
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
# This is a list of paths to export.mac files, and destination
# directories for the copied headers. Destinations are relative
# to "mozilla:dist".
###################
# PUBLIC TREE
###################
# LDAP
mozilla:directory:c-sdk:ldap:include:MANIFEST :ldap
#INCLUDE
mozilla:config:mac:export.mac :config
mozilla:include:export.mac :include
mozilla:cmd:macfe:pch:export.mac :include
#MAC_COMMON
mozilla:build:mac:export.mac :mac:common
mozilla:lib:mac:NSStdLib:include:export.mac :mac:common
mozilla:lib:mac:MacMemoryAllocator:include:export.mac :mac:common
mozilla:lib:mac:Misc:export.mac :mac:common
mozilla:lib:mac:MoreFiles:export.mac :mac:common:morefiles
mozilla:cmd:macfe:export.mac :mac:macfe
#NSPR
mozilla:nsprpub:pr:include:export.mac :nspr
mozilla:nsprpub:pr:src:md:mac:export.mac :nspr:mac
mozilla:nsprpub:lib:ds:export.mac :nspr
mozilla:nsprpub:lib:libc:include:export.mac :nspr
mozilla:nsprpub:lib:msgc:include:export.mac :nspr
#DBM
mozilla:dbm:include:export.mac :dbm
#LIBIMAGE
mozilla:modules:libimg:png:export.mac :libimg
mozilla:modules:libimg:src:export.mac :libimg
mozilla:modules:libimg:public:export.mac :libimg
#SECURITY_freenav
mozilla:modules:security:freenav:export.mac :security
#XPCOM
mozilla:xpcom:src:export.mac :xpcom
#ZLIB
mozilla:modules:zlib:src:export.mac :zlib
#JPEG
mozilla:jpeg:export.mac :jpeg
#JSJ
mozilla:js:jsj:export.mac :jsj
#JSDEBUG
mozilla:js:jsd:export.mac :jsdebug
#JS
mozilla:js:src:export.mac :js
#RDF
mozilla:modules:rdf:include:export.mac :rdf
#XML
mozilla:modules:xml:glue:export.mac :xml
mozilla:modules:xml:expat:xmlparse:export.mac :xml
#LIBFONT
mozilla:modules:libfont:public:export.mac :libfont
mozilla:modules:libfont:src:export.mac :libfont
#SCHEDULER
mozilla:modules:schedulr:public:export.mac :schedulr
#NETWORK
#This stuff is all in libnet on the branch.
#mozilla:network:cache:export.mac :network
#mozilla:network:client:export.mac :network
#mozilla:network:cnvts:export.mac :network
#mozilla:network:cstream:export.mac :network
#mozilla:network:main:export.mac :network
#ozilla:network:protocol:about:export.mac :network
#mozilla:network:protocol:certld:export.mac :network
#mozilla:network:protocol:dataurl:export.mac :network
#mozilla:network:protocol:file:export.mac :network
#mozilla:network:protocol:ftp:export.mac :network
#mozilla:network:protocol:gopher:export.mac :network
#mozilla:network:protocol:http:export.mac :network
#mozilla:network:protocol:js:export.mac :network
#mozilla:network:protocol:mailbox:export.mac :network
#mozilla:network:protocol:marimba:export.mac :network
#mozilla:network:protocol:nntp:export.mac :network
#mozilla:network:protocol:pop3:export.mac :network
#mozilla:network:protocol:remote:export.mac :network
#mozilla:network:protocol:smtp:export.mac :network
#NORMANDY_BRANCH only
mozilla:lib:libnet:export.mac :libnet
#HTML_DIALOGS
mozilla:lib:htmldlgs:export.mac :htmldlgs
#LAYOUT
mozilla:lib:layout:export.mac :layout
#LAYERS
mozilla:lib:liblayer:include:export.mac :layers
#PARSE
mozilla:lib:libparse:export.mac :libparse
#STYLE
mozilla:lib:libstyle:export.mac :libstyle
#LIBHOOK
mozilla:modules:libhook:public:export.mac :libhook
#LIBPREF
mozilla:modules:libpref:public:export.mac :libpref
#LIBREG
mozilla:modules:libreg:include:export.mac :libreg
#LIBUTIL
mozilla:modules:libutil:public:export.mac :libutil
#OJI
mozilla:modules:oji:src:export.mac :oji
#PROGRESS
mozilla:modules:progress:public:export.mac :progress
#SOFTUPDATE
mozilla:modules:softupdt:include:export.mac :softupdate
#NAV_JAVA
mozilla:nav-java:stubs:macjri:export.mac :nav-java:macjri
mozilla:nav-java:stubs:include:export.mac :nav-java
#SUN_JAVA
mozilla:sun-java:stubs:include:export.mac :sun-java:include
mozilla:sun-java:stubs:macjri:export.mac :sun-java:macjri

Binary file not shown.

446
mozilla/build/mac/Moz.pm Normal file
View File

@@ -0,0 +1,446 @@
=head1 NAME
B<Moz> - routines for automating CodeWarrior builds, and some extra-curricular activities related to building Mozilla
=head1 SYNOPSIS
use Moz;
OpenErrorLog(":::BuildLog");
StopForErrors();
$Moz::QUIET = 1;
InstallFromManifest(":projects:MANIFEST", $dist_dir);
BuildProjectClean(":projects:SomeProject.mcp", "SomeTarget");
MakeAlias(":projects:SomeProject.shlb", $dist_dir);
DontStopForErrors();
BuildProject(":projects:SomeOtherProject.mcp", "SomeTarget");
=head1 DESCRIPTION
B<Moz> comprises the routines needed to slap CodeWarrior around, force it to build a sequence of projects, report the results, and a few other things.
=cut
package Moz;
require Exporter;
@ISA = qw(Exporter);
@EXPORT = qw(BuildProject BuildProjectClean OpenErrorLog MakeAlias StopForErrors DontStopForErrors InstallFromManifest SetBuildNumber SetAgentString SetTimeBomb);
@EXPORT_OK = qw(CloseErrorLog UseCodeWarriorLib QUIET);
use Cwd;
use File::Path;
use ExtUtils::Manifest 'maniread';
use CodeWarriorLib;
sub current_directory()
{
my $current_directory = cwd();
chop($current_directory) if ( $current_directory =~ m/:$/ );
return $current_directory;
}
sub full_path_to($)
{
my ($path) = @_;
if ( $path =~ m/^[^:]+$/ )
{
$path = ":" . $path;
}
if ( $path =~ m/^:/ )
{
$path = current_directory() . $path;
}
return $path;
}
=head2 Setup
Pretty much, everything is taken care of for you.
However, B<Moz> does use a little compiled AppleScript library (the file CodeWarriorLib) for some of its communcication with CodeWarrior.
If this library isn't in the same directory as "Moz.pm", then you need to tell B<Moz> where to find it.
Call C<UseCodeWarriorLib($path_to_CodeWarriorLib)>.
This routine is not exported by default, nor are you likely to need it.
=cut
sub UseCodeWarriorLib($)
{
# ($CodeWarriorLib) = @_;
# $CodeWarriorLib = full_path_to($CodeWarriorLib);
}
sub activate_CodeWarrior()
{
#MacPerl::DoAppleScript(<<END_OF_APPLESCRIPT);
# tell (load script file "$CodeWarriorLib") to ActivateCodeWarrior()
#END_OF_APPLESCRIPT
}
BEGIN
{
# UseCodeWarriorLib(":CodeWarriorLib");
# activate_CodeWarrior();
CodeWarriorLib::activate();
}
$logging = 0;
$recent_errors_file = "";
$stop_on_1st_error = 1;
$QUIET = 0;
=head2 Logging all the errors and warnings - C<OpenErrorLog($log_file)>, C<CloseErrorLog()>
The warnings and errors generated in the course of building projects can be logged to a file.
Tinderbox uses this facility to show why a remote build failed.
Logging is off by default.
Start logging at any point in your build process with C<OpenErrorLog($log_file)>.
Stop with C<CloseErrorLog()>.
You never need to close the log explicitly, unless you want to just log a couple of projects in the middle of a big list.
C<CloseErrorLog()> is not exported by default.
=cut
sub CloseErrorLog()
{
if ( $logging )
{
close(ERROR_LOG);
$logging = 0;
StopForErrors() if $stop_on_1st_error;
}
}
sub OpenErrorLog($)
{
my ($log_file) = @_;
CloseErrorLog();
if ( $log_file )
{
$log_file = full_path_to($log_file);
open(ERROR_LOG, ">$log_file");
$log_file =~ m/.+:(.+)/;
$recent_errors_file = full_path_to("$1.part");
$logging = 1;
}
}
=head2 Stopping before it's too late - C<StopForErrors()>, C<DontStopForErrors()>
When building a long list of projects, you decide whether to continue building subsequent projects when one fails.
By default, your build script will C<die> after the first project that generates an error while building.
Change this behavior with C<DontStopForErrors()>.
Re-enable it with C<StopForErrors()>.
=cut
sub StopForErrors()
{
$stop_on_1st_error = 1;
# Can't stop for errors unless we notice them.
# Can't notice them unless we are logging.
# If the user didn't explicitly request logging, log to a temporary file.
if ( ! $recent_errors_file )
{
OpenErrorLog("${TMPDIR}BuildResults");
}
}
sub DontStopForErrors()
{
$stop_on_1st_error = 0;
}
sub log_message($)
{
if ( $logging )
{
my ($message) = @_;
print ERROR_LOG $message;
}
}
sub log_message_with_time($)
{
if ( $logging )
{
my ($message) = @_;
my $time_stamp = localtime();
log_message("$message ($time_stamp)\n");
}
}
sub log_recent_errors($)
{
my ($project_name) = @_;
my $found_errors = 0;
if ( $logging )
{
open(RECENT_ERRORS, "<$recent_errors_file");
while( <RECENT_ERRORS> )
{
if ( /^Error/ || /^CouldnÕt find project file/ )
{
$found_errors = 1;
}
print ERROR_LOG $_;
}
close(RECENT_ERRORS);
unlink("$recent_errors_file");
}
if ( $stop_on_1st_error && $found_errors )
{
print ERROR_LOG "### Build failed.\n";
die "### Errors encountered building \"$project_name\".\n";
}
}
sub build_project($$$)
{
my ($project_path, $target_name, $clean_build) = @_;
$project_path = full_path_to($project_path);
# $project_path =~ m/.+:(.+)/;
# my $project_name = $1;
log_message_with_time("### Building \"$project_path\"");
# Check that the given project exists
if (! -e $project_path)
{
print ERROR_LOG "### Build failed.\n";
die "### Can't find project file \"$project_path\".\n";
}
print "Building \"$project_path\"\n";
$had_errors = CodeWarriorLib::build_project(
$project_path, $target_name, $recent_errors_file, $clean_build
);
# $had_errors =
#MacPerl::DoAppleScript(<<END_OF_APPLESCRIPT);
# tell (load script file "$CodeWarriorLib") to BuildProject("$project_path", "$project_name", "$target_name", "$recent_errors_file", $clean_build)
#END_OF_APPLESCRIPT
# Append any errors to the globally accumulated log file
if ( $had_errors )
{
log_recent_errors($project_path);
}
}
=head2 Getting CodeWarrior to build projects - C<BuildProject($project, $opt_target)>, C<BuildProjectClean($project, $opt_target)>
C<BuildProject()> and C<BuildProjectClean()> are identical, except that the latter first removes object code.
In both, CodeWarrior opens the project if it wasn't already open; builds the given (or else current) target; and finally closes
the project, if it wasn't already open.
=cut
sub BuildProject($;$)
{
my ($project_path, $target_name) = @_;
build_project($project_path, $target_name, 0);
}
sub BuildProjectClean($;$)
{
my ($project_path, $target_name) = @_;
build_project($project_path, $target_name, 1);
}
=head2 Miscellaneous
C<MakeAlias($old_file, $new_file)> functions like C<symlink()>, except with better argument defaulting and more explicit error messages.
=cut
sub MakeAlias($$)
{
my ($old_file, $new_file) = @_;
# if the directory to hold $new_file doesn't exist, create it
if ( ($new_file =~ m/(.+:)/) && !-d $1 )
{
mkpath($1);
}
# if a leaf name wasn't specified for $new_file, use the leaf from $old_file
if ( ($new_file =~ m/:$/) && ($old_file =~ m/.+:(.+)/) )
{
$new_file .= $1;
}
my $message = "Can't create a Finder alias (at \"$new_file\")\n for \"$old_file\"; because ";
die "$message \"$old_file\" doesn't exist.\n" unless -e $old_file;
die "$message I won't replace an existing (non-alias) file with an alias.\n" if ( -e $new_file && ! -l $new_file );
# now: $old_file exists; $new_file doesn't (or else, is an alias already)
if ( -l $new_file )
{
# ...then see if it already points to $old_file
my $current_target = full_path_to(readlink($new_file));
my $new_target = full_path_to($old_file);
return if ( $current_target eq $new_target );
# if the desired alias already exists and points to the right thing, then we're done
unlink $new_file;
}
symlink($old_file, $new_file) || die "$message symlink returned an unexpected error.\n";
}
=pod
C<InstallFromManifest()>
=cut
sub InstallFromManifest($;$)
{
my ($manifest_file, $dest_dir) = @_;
$dest_dir ||= ":";
$manifest_file =~ m/(.+):/;
my $source_dir = $1;
chop($dest_dir) if $dest_dir =~ m/:$/;
print "Doing manifest on \"$manifest_file\"\n" unless $QUIET;
my $read = maniread(full_path_to($manifest_file));
foreach $file (keys %$read)
{
next unless $file;
$subdir = ":";
if ( $file =~ /:.+:/ )
{
$subdir = $&;
}
$file = ":$file" unless $file =~ m/^:/;
MakeAlias("$source_dir$file", "$dest_dir$subdir");
}
}
sub SetBuildNumber
{
open (OUTPUT, ">:mozilla:config:build_number") || die "could not open buildnumber";
open (BDATE, "perl :mozilla:config:bdate.pl|");
while (<BDATE>) {
print OUTPUT $_;
}
close (BDATE);
close (OUTPUT);
system ("perl :mozilla:config:aboutime.pl :mozilla:l10n:us:xp:about-all.html :mozilla:config:build_number");
}
sub SetAgentString
{
open (BDATE, ":mozilla:config:build_number") || die "could not open buildnumber";
while (<BDATE>) {
$build_number = $_;
}
close (BDATE);
open (ORIGFILE, ":mozilla:cmd:macfe:restext:custom.r") || die "no original file";
open (OUTPUT, ">:mozilla:cmd:macfe:restext:agent.r") || die "no output file";
chop($build_number);
while (<ORIGFILE>) {
$tempstring = $_;
if ($tempstring =~ "\#define VERSION_MAJOR_STR") {
$tempstring = "\#define VERSION_MAJOR_STR \"5.0a1-" . $build_number . " Development\"\n";
}
print OUTPUT $tempstring;
}
close (ORIGFILE);
close (OUTPUT);
unlink (":mozilla:cmd:macfe:restext:custom.r");
rename (":mozilla:cmd:macfe:restext:agent.r", ":mozilla:cmd:macfe:restext:custom.r");
}
sub SetTimeBomb($$)
{
my ($warn_days, $bomb_days) = @_;
system("perl :mozilla:config:mac-set-timebomb.pl $warn_days $bomb_days");
}
1;
=head1 AUTHORS
Scott Collins <scc@netscape.com>, Simon Fraser <sfraser@netscape.com>, Chris Yeh <cyeh@netscape.com>
=head1 SEE ALSO
BuildMozillaDebug.pl (et al), BuildList.pm, CodeWarriorLib (an AppleScript library)
=head1 COPYRIGHT
The contents of this file are subject to the Netscape Public License
Version 1.0 (the "NPL"); you may not use this file except in
compliance with the NPL. You may obtain a copy of the NPL at
http://www.mozilla.org/NPL/
Software distributed under the NPL is distributed on an "AS IS" basis,
WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
for the specific language governing rights and limitations under the
NPL.
The Initial Developer of this code under the NPL is Netscape
Communications Corporation. Portions created by Netscape are
Copyright (C) 1998 Netscape Communications Corporation. All Rights
Reserved.
=cut

View File

@@ -0,0 +1,425 @@
#!perl -w
package NGLayoutBuildList;
require 5.004;
require Exporter;
use strict;
use vars qw( @ISA @EXPORT );
# perl includes
use Mac::StandardFile;
use Mac::Processes;
use Cwd;
use File::Path;
# homegrown
use Moz;
use MacCVS;
@ISA = qw(Exporter);
@EXPORT = qw( Checkout BuildDist BuildProjects BuildCommonProjects BuildLayoutProjects);
# NGLayoutBuildList builds the nglayout project
# it is configured by setting the following variables in the caller:
# Usage:
# caller variables that affect behaviour:
# DEBUG : 1 if we are building a debug version
# 3-part build process: checkout, dist, and build_projects
# Hack alert:
# NGLayout defines are located in :mozilla:config:mac:NGLayoutConfigInclude.h
# An alias "MacConfigInclude.h" to this file is created inside dist:config
# Note that the name of alias is different than the name of the file. This
# is to trick CW into including NGLayout defines
#
# Utility routines
#
# pickWithMemoryFile stores the information about the user pick inside
# the file $session_storage
sub _pickWithMemoryFile($)
{
my ($sessionStorage) = @_;
my $cvsfile;
if (( -e $sessionStorage) &&
open( SESSIONFILE, $sessionStorage ))
{
# Read in the path if available
$cvsfile = <SESSIONFILE>;
chomp $cvsfile;
close SESSIONFILE;
if ( ! -e $cvsfile )
{
print STDERR "$cvsfile has disappeared\n";
undef $cvsfile;
}
}
unless (defined ($cvsfile))
{
print "Choose a CVS session file in file dialog box:\n"; # no way to display a prompt?
# make sure that MacPerl is a front process
while (GetFrontProcess () != GetCurrentProcess())
{
SetFrontProcess( GetCurrentProcess() );
}
# prompt user for the file name, and store it
my $macFile = StandardGetFile( 0, "McvD");
if ( $macFile->sfGood() )
{
$cvsfile = $macFile->sfFile();
# save the choice if we can
if ( open (SESSIONFILE, ">" . $sessionStorage))
{
printf SESSIONFILE $cvsfile, "\n";
close SESSIONFILE;
}
else
{
print STDERR "Could not open storage file\n";
}
}
}
return $cvsfile;
}
# assert that we are in the correct directory for the build
sub _assertRightDirectory()
{
unless (-e ":mozilla")
{
my($dir) = cwd();
print STDERR "NGLayoutBuildList called from incorrect directory: $dir";
}
}
sub _getDistDirectory()
{
return $main::DEBUG ? ":mozilla:dist:viewer_debug:" : ":mozilla:dist:viewer:";
}
#
# MAIN ROUTINES
#
sub Checkout()
{
_assertRightDirectory();
my($cvsfile) = _pickWithMemoryFile("::nglayout.cvsloc");
my($session) = MacCVS->new( $cvsfile );
unless (defined($session)) { die "Checkout aborted. Cannot create session file: $session" }
my($LIBPREF_BRANCH) = "XPCOM_BRANCH";
my($IMGLIB_BRANCH) = "MODULAR_IMGLIB_BRANCH"; #// compile the "(standalone)" targets when pulling the tips
my($PLUGIN_BRANCH) = "OJI_19980618_BRANCH";
if ($main::pull{lizard})
{
$session->checkout("mozilla/LICENSE") || die "checkout failure";
$session->checkout("mozilla/LEGAL") || die "checkout failure";
$session->checkout("mozilla/config") || die "checkout failure";
$session->checkout("mozilla/dbm") || die "checkout failure";
$session->checkout("mozilla/lib/liblayer") || die "checkout failure";
$session->checkout("mozilla/modules/zlib") || die "checkout failure";
$session->checkout("mozilla/modules/libutil") || die "checkout failure";
$session->checkout("mozilla/nsprpub") || die "checkout failure";
$session->checkout("mozilla/sun-java") || die "checkout failure";
$session->checkout("mozilla/nav-java") || die "checkout failure";
$session->checkout("mozilla/js") || die "checkout failure";
$session->checkout("mozilla/modules/security/freenav") || die "checkout failure";
#//$session->checkout("mozilla/lib/libparse") || die "checkout failure";
#//$session->checkout("mozilla/lib/layout") || die "checkout failure";
#//$session->checkout("mozilla/lib/libstyle") || die "checkout failure";
#//$session->checkout("mozilla/lib/libpwcac") || die "checkout failure";
$session->checkout("mozilla/modules/libpref",$LIBPREF_BRANCH) || die "checkout failure";
#//$session->checkout("mozilla/modules/plugin",$PLUGIN_BRANCH) || die "checkout failure";
$session->checkout("mozilla/modules/plugin") || die "checkout failure";
}
if ($main::pull{xpcom})
{
$session->checkout("mozilla/modules/libreg") || die "checkout failure";
$session->checkout("mozilla/xpcom") || die "checkout failure";
}
if ($main::pull{imglib})
{
$session->checkout("mozilla/jpeg", $IMGLIB_BRANCH) || die "checkout failure";
$session->checkout("mozilla/modules/libutil", $IMGLIB_BRANCH) || die "checkout failure";
$session->checkout("mozilla/modules/libimg", $IMGLIB_BRANCH) || die "checkout failure";
}
if ($main::pull{netlib})
{
$session->checkout("mozilla/lib/xp") || die "checkout failure";
$session->checkout("mozilla/lib/libpwcac") || die "checkout failure";
$session->checkout("mozilla/network") || die "checkout failure";
$session->checkout("mozilla/include") || die "checkout failure";
}
if ($main::pull{nglayout})
{
$session->checkout("mozilla/base") || die "checkout failure";
$session->checkout("mozilla/dom") || die "checkout failure";
$session->checkout("mozilla/gfx") || die "checkout failure";
$session->checkout("mozilla/htmlparser") || die "checkout failure";
$session->checkout("mozilla/layout") || die "checkout failure";
$session->checkout("mozilla/view") || die "checkout failure";
$session->checkout("mozilla/webshell") || die "checkout failure";
$session->checkout("mozilla/widget") || die "checkout failure";
}
if ($main::pull{mac})
{
$session->checkout("mozilla/build/mac") || die "checkout failure";
$session->checkout("mozilla/cmd/macfe") || die "checkout failure";
$session->checkout("mozilla/lib/mac/MacMemoryAllocator") || die "checkout failure";
$session->checkout("mozilla/lib/mac/NSStdLib") || die "checkout failure";
$session->checkout("mozilla/lib/mac/MoreFiles") || die "checkout failure";
$session->checkout("mozilla/lib/mac/NSRuntime") || die "checkout failure";
$session->checkout("mozilla/lib/mac/Misc") || die "checkout failure";
}
}
# builds the dist directory
sub BuildDist()
{
unless ( $main::build{dist} ) { return;}
_assertRightDirectory();
# we really do not need all these paths, but many client projects include them
mkpath([ ":mozilla:dist:", ":mozilla:dist:client:", ":mozilla:dist:client_debug:", ":mozilla:dist:client_stubs:" ]);
mkpath([ ":mozilla:dist:viewer:", ":mozilla:dist:viewer_debug:" ]);
my($distdirectory) = ":mozilla:dist";
my($distlist) = [
#MAC_COMMON
[":mozilla:build:mac:MANIFEST", "$distdirectory:mac:common:"],
[":mozilla:lib:mac:NSStdLib:include:MANIFEST", "$distdirectory:mac:common:"],
[":mozilla:lib:mac:MacMemoryAllocator:include:MANIFEST", "$distdirectory:mac:common:"],
[":mozilla:lib:mac:Misc:MANIFEST", "$distdirectory:mac:common:"],
[":mozilla:lib:mac:MoreFiles:MANIFEST", "$distdirectory:mac:common:morefiles:"],
#INCLUDE
[":mozilla:config:mac:MANIFEST", "$distdirectory:config:"],
[":mozilla:config:mac:MANIFEST_config", "$distdirectory:config:"],
[":mozilla:include:MANIFEST", "$distdirectory:include:"],
[":mozilla:cmd:macfe:pch:MANIFEST", "$distdirectory:include:"],
[":mozilla:cmd:macfe:utility:MANIFEST", "$distdirectory:include:"],
#NSPR
[":mozilla:nsprpub:pr:include:MANIFEST", "$distdirectory:nspr:"],
[":mozilla:nsprpub:pr:src:md:mac:MANIFEST", "$distdirectory:nspr:mac:"],
[":mozilla:nsprpub:lib:ds:MANIFEST", "$distdirectory:nspr:"],
[":mozilla:nsprpub:lib:libc:include:MANIFEST", "$distdirectory:nspr:"],
[":mozilla:nsprpub:lib:msgc:include:MANIFEST", "$distdirectory:nspr:"],
#JPEG
[":mozilla:jpeg:MANIFEST", "$distdirectory:jpeg:"],
#LIBREG
[":mozilla:modules:libreg:include:MANIFEST", "$distdirectory:libreg:"],
#XPCOM
[":mozilla:xpcom:src:MANIFEST", "$distdirectory:xpcom:"],
#ZLIB
[":mozilla:modules:zlib:src:MANIFEST", "$distdirectory:zlib:"],
#LIBUTIL
[":mozilla:modules:libutil:public:MANIFEST", "$distdirectory:libutil:"],
#SUN_JAVA
[":mozilla:sun-java:stubs:include:MANIFEST", "$distdirectory:sun-java:"],
[":mozilla:sun-java:stubs:macjri:MANIFEST", "$distdirectory:sun-java:"],
#PRIVACY
[":mozilla:privacy:public:MANIFEST", "$distdirectory:libimg:"],
#NAV_JAVA
[":mozilla:nav-java:stubs:include:MANIFEST", "$distdirectory:nav-java:"],
[":mozilla:nav-java:stubs:macjri:MANIFEST", "$distdirectory:nav-java:"],
#JS
[":mozilla:js:src:MANIFEST", "$distdirectory:js:"],
#SECURITY_freenav
[":mozilla:modules:security:freenav:MANIFEST", "$distdirectory:security:"],
#LIBPREF
[":mozilla:modules:libpref:public:MANIFEST", "$distdirectory:libpref:"],
#LIBIMAGE
[":mozilla:modules:libimg:png:MANIFEST", "$distdirectory:libimg:"],
[":mozilla:modules:libimg:src:MANIFEST", "$distdirectory:libimg:"],
[":mozilla:modules:libimg:public:MANIFEST", "$distdirectory:libimg:"],
[":mozilla:modules:rdf:include:MANIFEST", "$distdirectory:libimg:"],
#PLUGIN
[":mozilla:modules:plugin:nglsrc:MANIFEST", "$distdirectory:plugin:"],
[":mozilla:modules:plugin:public:MANIFEST", "$distdirectory:plugin:"],
[":mozilla:modules:plugin:src:MANIFEST", "$distdirectory:plugin:"],
# IS THIS STILL NEEDED
#PARSE
[":mozilla:lib:libparse:MANIFEST", "$distdirectory:libparse:"],
#//OLD LAYOUT
[":mozilla:lib:layout:MANIFEST", "$distdirectory:layout:"],
#STYLE
[":mozilla:lib:libstyle:MANIFEST", "$distdirectory:libstyle:"],
#LAYERS
[":mozilla:lib:liblayer:include:MANIFEST", "$distdirectory:layers:"],
#NETWORK
[":mozilla:network:cache:MANIFEST", "$distdirectory:network:"],
[":mozilla:network:client:MANIFEST", "$distdirectory:network:"],
[":mozilla:network:cnvts:MANIFEST", "$distdirectory:network:"],
[":mozilla:network:cstream:MANIFEST", "$distdirectory:network:"],
[":mozilla:network:main:MANIFEST", "$distdirectory:network:"],
[":mozilla:network:mimetype:MANIFEST", "$distdirectory:network:"],
[":mozilla:network:util:MANIFEST", "$distdirectory:network:"],
[":mozilla:network:protocol:about:MANIFEST", "$distdirectory:network:"],
[":mozilla:network:protocol:certld:MANIFEST", "$distdirectory:network:"],
[":mozilla:network:protocol:dataurl:MANIFEST", "$distdirectory:network:"],
[":mozilla:network:protocol:file:MANIFEST", "$distdirectory:network:"],
[":mozilla:network:protocol:ftp:MANIFEST", "$distdirectory:network:"],
[":mozilla:network:protocol:gopher:MANIFEST", "$distdirectory:network:"],
[":mozilla:network:protocol:http:MANIFEST", "$distdirectory:network:"],
[":mozilla:network:protocol:js:MANIFEST", "$distdirectory:network:"],
[":mozilla:network:protocol:mailbox:MANIFEST", "$distdirectory:network:"],
[":mozilla:network:protocol:marimba:MANIFEST", "$distdirectory:network:"],
[":mozilla:network:protocol:nntp:MANIFEST", "$distdirectory:network:"],
[":mozilla:network:protocol:pop3:MANIFEST", "$distdirectory:network:"],
[":mozilla:network:protocol:remote:MANIFEST", "$distdirectory:network:"],
[":mozilla:network:protocol:smtp:MANIFEST", "$distdirectory:network:"],
[":mozilla:network:module:MANIFEST","$distdirectory:network:module"],
[":mozilla:modules:progress:public:MANIFEST","$distdirectory:network:module"],
#BASE
[":mozilla:base:src:MANIFEST", "$distdirectory:base:"],
[":mozilla:base:public:MANIFEST", "$distdirectory:base:"],
#WEBSHELL
[":mozilla:webshell:public:MANIFEST", "$distdirectory:webshell:"],
#LAYOUT
[":mozilla:layout:base:public:MANIFEST", "$distdirectory:layout:"],
[":mozilla:layout:html:style:public:MANIFEST", "$distdirectory:layout:"],
[":mozilla:layout:html:base:src:MANIFEST", "$distdirectory:layout:"],
# //[":mozilla:layout:html:document:public:MANIFEST", "$distdirectory:layout:"],
[":mozilla:layout:base:src:MANIFEST", "$distdirectory:layout:"],
[":mozilla:layout:events:public:MANIFEST", "$distdirectory:layout:"],
[":mozilla:layout:events:src:MANIFEST", "$distdirectory:layout:"],
#WIDGET
[":mozilla:widget:public:MANIFEST", "$distdirectory:widget:"],
#GFX
[":mozilla:gfx:src:MANIFEST", "$distdirectory:gfx:"],
#VIEW
[":mozilla:view:public:MANIFEST", "$distdirectory:view:"],
#DOM
[":mozilla:dom:public:MANIFEST", "$distdirectory:dom:"],
[":mozilla:dom:public:coreDom:MANIFEST", "$distdirectory:dom:"],
[":mozilla:dom:public:coreEvents:MANIFEST", "$distdirectory:dom:"],
[":mozilla:dom:public:events:MANIFEST", "$distdirectory:dom:"],
[":mozilla:dom:public:html:MANIFEST", "$distdirectory:dom:"],
[":mozilla:dom:src:jsurl:MANIFEST", "$distdirectory:dom:"],
#HTMLPARSER
[":mozilla:htmlparser:src:MANIFEST", "$distdirectory:htmlparser:"],
];
foreach $a (@$distlist)
{
InstallFromManifest( $a->[0], $a->[1]);
}
# To get out defines in all the project, dummy alias NGLayoutConfigInclude.h into MacConfigInclude.h
MakeAlias(":mozilla:config:mac:NGLayoutConfigInclude.h", ":mozilla:dist:config:MacConfigInclude.h");
}
# builds all projects
# different targets controlled by $main::build
sub BuildCommonProjects()
{
unless( $main::build{common} ) { return; }
_assertRightDirectory();
# $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
my($D) = $main::DEBUG ? "Debug" : "";
my($dist_dir) = _getDistDirectory();
# clean projects
Moz::BuildProjectClean(":mozilla:lib:mac:MacMemoryAllocator:MemAllocator.mcp", "Stubs");
Moz::BuildProjectClean(":mozilla:lib:mac:NSStdLib:NSStdLib.mcp", "Stubs");
Moz::BuildProjectClean(":mozilla:lib:mac:NSRuntime:NSRuntime.mcp", "Stubs");
Moz::BuildProjectClean(":mozilla:cmd:macfe:projects:client:Navigator.mcp", "Stub Library");
# shared
Moz::BuildProject(":mozilla:lib:mac:NSRuntime:NSRuntime.mcp");
MakeAlias(":mozilla:lib:mac:NSRuntime:NSRuntime$D.shlb", "$dist_dir");
$main::DEBUG ? MakeAlias(":mozilla:lib:mac:NSRuntime:NSRuntime$D.shlb.xSYM", "$dist_dir") : 0;
Moz::BuildProject(":mozilla:lib:mac:MoreFiles:build:MoreFilesPPC.mcp", "MoreFiles$D.shlb");
MakeAlias(":mozilla:lib:mac:MoreFiles:build:MoreFiles$D.shlb", "$dist_dir");
$main::DEBUG ? MakeAlias(":mozilla:lib:mac:MoreFiles:build:MoreFiles$D.shlb.xSYM", "$dist_dir") : 0;
BuildProject(":mozilla:nsprpub:macbuild:NSPR20PPC.mcp", "NSPR20$D.shlb");
MakeAlias(":mozilla:nsprpub:macbuild:NSPR20$D.shlb", "$dist_dir");
$main::DEBUG ? MakeAlias(":mozilla:nsprpub:macbuild:NSPR20$D.shlb.xSYM", "$dist_dir") : 0;
BuildProject(":mozilla:lib:mac:MacMemoryAllocator:MemAllocator.mcp", "MemAllocator$D.shlb");
MakeAlias(":mozilla:lib:mac:MacMemoryAllocator:MemAllocator$D.shlb", "$dist_dir");
$main::DEBUG ? MakeAlias(":mozilla:lib:mac:MacMemoryAllocator:MemAllocator$D.shlb.xSYM", "$dist_dir") : 0;
BuildProject(":mozilla:lib:mac:NSStdLib:NSStdLib.mcp", "NSStdLib$D.shlb");
MakeAlias(":mozilla:lib:mac:NSStdLib:NSStdLib$D.shlb", "$dist_dir");
$main::DEBUG ? MakeAlias(":mozilla:lib:mac:NSStdLib:NSStdLib$D.shlb.xSYM", "$dist_dir") : 0;
BuildProject(":mozilla:jpeg:macbuild:JPEG.mcp", "JPEG$D.shlb");
MakeAlias(":mozilla:jpeg:macbuild:JPEG$D.shlb", "$dist_dir");
$main::DEBUG ? MakeAlias(":mozilla:jpeg:macbuild:JPEG$D.shlb.xSYM", "$dist_dir") : 0;
BuildProject(":mozilla:js:macbuild:JavaScriptPPC.mcp", "JavaScriptNoJSJ$D.shlb");
MakeAlias(":mozilla:js:macbuild:JavaScript$D.shlb", "$dist_dir");
$main::DEBUG ? MakeAlias(":mozilla:js:macbuild:JavaScript$D.shlb.xSYM", "$dist_dir") : 0;
BuildProject(":mozilla:modules:zlib:macbuild:zlib.mcp", "zlib$D.shlb");
MakeAlias(":mozilla:modules:zlib:macbuild:zlib$D.shlb", "$dist_dir");
$main::DEBUG ? MakeAlias(":mozilla:modules:zlib:macbuild:zlib$D.shlb.xSYM", "$dist_dir") : 0;
# static
BuildProject(":mozilla:xpcom:macbuild:xpcomPPC.mcp", "xpcom$D.o");
BuildProject(":mozilla:modules:security:freenav:macbuild:NoSecurity.mcp", "Security.o");
BuildProject(":mozilla:modules:libimg:macbuild:png.mcp", "png$D.o");
BuildProject(":mozilla:modules:libimg:macbuild:libimg.mcp", "libimg$D.o");
#//BuildProject(":mozilla:modules:libimg:macbuild:libimg.mcp", "libimg$D.o (standalone)");
BuildProject(":mozilla:network:macbuild:network.mcp", "NetworkModular$D.o");
}
sub BuildLayoutProjects()
{
unless( $main::build{nglayout} ) { return; }
_assertRightDirectory();
# $D becomes a suffix to target names for selecting either the debug or non-debug target of a project
my($D) = $main::DEBUG ? "Debug" : "";
my($dist_dir) = _getDistDirectory();
BuildProject(":mozilla:base:macbuild:base.mcp", "base$D.o");
BuildProject(":mozilla:htmlparser:macbuild:htmlparser.mcp", "htmlparser$D.o");
BuildProject(":mozilla:dom:macbuild:dom.mcp", "dom$D.o");
BuildProject(":mozilla:gfx:macbuild:gfx.mcp", "gfx$D.o");
BuildProject(":mozilla:layout:macbuild:layout.mcp", "layout$D.o");
BuildProject(":mozilla:widget:macbuild:widget.mcp", "widget$D.o");
BuildProject(":mozilla:webshell:macbuild:webshell.mcp", "webshell$D.o");
BuildProject(":mozilla:webshell:tests:viewer:mac:viewer.mcp", "viewer$D");
my($samples_dir) = "$dist_dir" . "res:samples:";
MakeAlias(":mozilla:webshell:tests:viewer:samples:test0.html", "$samples_dir");
MakeAlias(":mozilla:webshell:tests:viewer:samples:test1.html", "$samples_dir");
MakeAlias(":mozilla:webshell:tests:viewer:samples:test2.html", "$samples_dir");
MakeAlias(":mozilla:webshell:tests:viewer:samples:test3.html", "$samples_dir");
MakeAlias(":mozilla:webshell:tests:viewer:samples:test4.html", "$samples_dir");
MakeAlias(":mozilla:webshell:tests:viewer:samples:test5.html", "$samples_dir");
MakeAlias(":mozilla:webshell:tests:viewer:samples:test6.html", "$samples_dir");
MakeAlias(":mozilla:webshell:tests:viewer:samples:test7.html", "$samples_dir");
MakeAlias(":mozilla:webshell:tests:viewer:samples:test8.html", "$samples_dir");
MakeAlias(":mozilla:webshell:tests:viewer:samples:test9.html", "$samples_dir");
}
sub BuildProjects()
{
BuildCommonProjects();
BuildLayoutProjects();
}

View File

@@ -0,0 +1,43 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
#error "DonÕt use me!"
#define OLDROUTINELOCATIONS 0
#define XP_MAC 1
#ifndef NSPR20
#define NSPR20 1
#endif
#define _NSPR 1
#define _NO_FAST_STRING_INLINES_ 1
#define HAVE_BOOLEAN 1
#define NETSCAPE 1
#define OTUNIXERRORS 1 /* We want OpenTransport error codes */
#define OJI 1
#define MOCHA 1
/*
This compiles in heap dumping utilities and other good stuff
for developers -- maybe we only want it in for a special SDK
nspr/java runtime(?):
*/
#define DEVELOPER_DEBUG 1
#define MAX(_a,_b) ((_a) < (_b) ? (_b) : (_a))
#define MIN(_a,_b) ((_a) < (_b) ? (_a) : (_b))

Binary file not shown.

View File

@@ -0,0 +1,40 @@
#!perl
#
# The contents of this file are subject to the Netscape Public License
# Version 1.0 (the "NPL"); you may not use this file except in
# compliance with the NPL. You may obtain a copy of the NPL at
# http://www.mozilla.org/NPL/
#
# Software distributed under the NPL is distributed on an "AS IS" basis,
# WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
# for the specific language governing rights and limitations under the
# NPL.
#
# The Initial Developer of this code under the NPL is Netscape
# Communications Corporation. Portions created by Netscape are
# Copyright (C) 1998 Netscape Communications Corporation. All Rights
# Reserved.
#
use Moz;
use BuildList;
$DEBUG = 1;
# One of them should be 1. This will come from a config file at some stage.
# In the meanwhile, it should match mozilla/config/mac/MacConfig.h
$MOZ_LITE = 0;
$MOZ_MEDIUM = 1;
$MOZ_DARK = 0;
Moz::OpenErrorLog("::::Mozilla.BuildLog");
#Moz::StopForErrors();
chdir("::::");
# Make and popuplate the dist directory
DistMozilla();
# Now build the projects
BuildMozilla();

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