Compare commits

..

2 Commits

Author SHA1 Message Date
montulli
271a26b658 merge montulli1 branch with tip
git-svn-id: svn://10.0.0.236/branches/montulli@4889 18797224-902f-48f8-a5cc-f745e15eee43
1998-07-02 02:41:04 +00:00
(no author)
f318652e4c This commit was manufactured by cvs2svn to create branch 'montulli'.
git-svn-id: svn://10.0.0.236/branches/montulli@4880 18797224-902f-48f8-a5cc-f745e15eee43
1998-07-02 01:20:40 +00:00
7983 changed files with 1913181 additions and 418563 deletions

36279
mozilla/CHANGES.html Normal file

File diff suppressed because it is too large Load Diff

83
mozilla/Makefile Normal file
View File

@@ -0,0 +1,83 @@
#
# 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 = .
NSPRDIR = nsprpub
NSPR20 = 1
MOZILLA_CLIENT = 1
ifndef NO_MOCHA
DIRS_JS = js
endif
DIRS = config coreconf $(NSPRDIR) jpeg dbm xpcom network
ifdef MOZ_NETCAST
DIRS += netcast
endif
ifdef MOZ_JAVA
DIRS += sun-java ldap ifc $(DIRS_JS) nav-java ifc/tools js/jsd
else
DIRS += sun-java nav-java $(DIRS_JS)
endif
ifndef NO_SECURITY
DIRS += security
endif
DIRS += modules lib l10n cmd
ifeq ($(STAND_ALONE_JAVA),1)
DIRS = config lib/xp $(NSPRDIR) jpeg modules/zlib sun-java ifc js ifc/tools sun-java/java
endif
include $(DEPTH)/config/rules.mk
export:: $(OBJS)
# Running this rule assembles all the SDK source pieces into dist/sdk.
# You'll need to run this rule on every platform to get all the
# binaries (e.g. javah) copied there. You'll also have to do special
# magic on a Mac.
sdk-src::
$(SDKINSTALL) include/npapi.h $(SDK)/include/
$(SDKINSTALL) include/jri_md.h $(SDK)/include/
$(SDKINSTALL) include/jritypes.h $(SDK)/include/
$(SDKINSTALL) include/jri.h $(SDK)/include/
$(SDKINSTALL) lib/plugin/npupp.h $(SDK)/include/
$(SDKINSTALL) sdk/common/*.c* $(SDK)/common/
$(SDKINSTALL) sun-java/classsrc/$(ZIP_NAME).x $(SDK)/classes/$(ZIP_NAME)
$(SDKINSTALL) sdk/examples/simple/Source/*.c $(SDK)/examples/simple/Source/
$(SDKINSTALL) sdk/examples/simple/Source/*.java $(SDK)/examples/simple/Source/
$(SDKINSTALL) sdk/examples/simple/Source/*.class $(SDK)/examples/simple/Source/
$(SDKINSTALL) sdk/examples/simple/Source/_gen/*.h $(SDK)/examples/simple/Source/_gen/
$(SDKINSTALL) sdk/examples/simple/Source/_stubs/*.c $(SDK)/examples/simple/Source/_stubs/
$(SDKINSTALL) sdk/examples/simple/Unix/makefile.* $(SDK)/examples/simple/Unix/
$(SDKINSTALL) sdk/examples/simple/Testing/SimpleExample.html $(SDK)/examples/simple/Testing/
$(SDKINSTALL) sdk/examples/simple/readme.html $(SDK)/examples/simple/
$(SDKINSTALL) sdk/examples/UnixTemplate/Source/*.c $(SDK)/examples/UnixTemplate/Source/
$(SDKINSTALL) sdk/examples/UnixTemplate/Testing/Test.html $(SDK)/examples/UnixTemplate/Testing/
$(SDKINSTALL) sdk/examples/UnixTemplate/Unix/makefile.* $(SDK)/examples/UnixTemplate/Unix/
$(SDKINSTALL) sdk/examples/UnixTemplate/readme.html $(SDK)/examples/UnixTemplate/
sdk-bin::
cd sdk; $(MAKE); cd ..
$(SDKINSTALL) $(DIST)/bin/javah$(BIN_SUFFIX) $(SDK)/bin/$(OS_CONFIG)/
$(SDKINSTALL) sdk/examples/simple/Source/$(OBJDIR)/npsimple.$(DLL_SUFFIX) $(SDK)/bin/$(OS_CONFIG)/
$(SDKINSTALL) sdk/examples/UnixTemplate/Source/$(OBJDIR)/nptemplate.$(DLL_SUFFIX) $(SDK)/bin/$(OS_CONFIG)/

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>

View File

@@ -1,24 +0,0 @@
#!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

Binary file not shown.

View File

@@ -1,23 +0,0 @@
#!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

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

View File

@@ -1,30 +0,0 @@
#!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

@@ -1,30 +0,0 @@
#!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

@@ -1,66 +0,0 @@
/* -*- 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___ */

View File

@@ -1,22 +0,0 @@
#
# 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

View File

@@ -1,70 +0,0 @@
#!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

@@ -1,283 +0,0 @@
/* -*- 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);
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::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 / 100 * 6; // We need mFireTime in ticks, 1/60th of a second
}
TimerPeriodical * TimerPeriodical::gPeriodical = NULL;
TimerPeriodical * TimerPeriodical::GetPeriodical()
{
if (gPeriodical == NULL)
gPeriodical = new TimerPeriodical();
return gPeriodical;
}
TimerPeriodical::TimerPeriodical()
{
mTimers = new LArray( sizeof(TimerImpl*));
mTimers->SetComparator( new TimerImplComparator());
mTimers->SetKeepSorted( true );
}
TimerPeriodical::~TimerPeriodical()
{
PR_ASSERT(mTimers->GetCount() == 0);
delete mTimers;
}
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->Remove( aTimer );
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, LArrayIterator::from_Start);
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

@@ -1,99 +0,0 @@
#!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

@@ -1,80 +0,0 @@
/* -*- 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

@@ -1,154 +0,0 @@
/* -*- 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::HashCode(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;
PRInt32 hashCode = nsCRT::HashCode(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

@@ -1,402 +0,0 @@
/**
* 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;
}

View File

@@ -1,283 +0,0 @@
/* -*- 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

@@ -1,138 +0,0 @@
/* -*- 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);
}

View File

@@ -1,400 +0,0 @@
/* -*- 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;
}
PRInt32 nsCRT::HashCode(const PRUnichar* us)
{
PRInt32 rv = 0;
if(us) {
PRUnichar ch;
while ((ch = *us++) != 0) {
// FYI: rv = rv*37 + ch
rv = ((rv << 5) + (rv << 2) + rv) + ch;
}
}
return rv;
}
PRInt32 nsCRT::HashCode(const PRUnichar* us, PRInt32* uslenp)
{
PRInt32 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);
}

View File

@@ -1,115 +0,0 @@
/* -*- 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 PRInt32 HashCode(const PRUnichar* s1);
/// Same as above except that we return the length in s1len
static PRInt32 HashCode(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

@@ -1,477 +0,0 @@
/* -*- 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"
/**
* 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(0==mSize)
mOrigin=0;
}
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<(mSize-mOrigin)) {
result=mData[mOrigin+anIndex];
}
else {
result=mData[anIndex-(mSize-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
*/
const 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) {
}
/**
* 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
*/
const 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);
}
/**
* conduct automated self test for this class
*
* @update gess4/18/98
* @param
* @return
*/
void nsDeque::SelfTest(void) {
#undef _SELFTEST_DEQUE
#ifdef _SELFTEST_DEQUE
#include <iostream.h>
{
nsDeque theDeque(PR_FALSE); //construct a simple one...
int ints[10]={100,200,300,400,500,600,700,800,900,1000};
int count=sizeof(ints)/sizeof(int);
int i=0;
for(i=0;i<count;i++){
theDeque.Push(&ints[i]);
}
int* temp1=(int*)theDeque.Pop(); //should have popped 100
int* temp2=(int*)theDeque.Pop(); //should have popped 200
theDeque.Push(temp1); //these should now become
theDeque.Push(temp2); //the last 2 items in deque.
nsDequeIterator iter1=theDeque.Begin();
nsDequeIterator iter2=theDeque.End();
while(iter1!=iter2) {
temp1=(int*)(iter1++);
cout << *temp1 << endl;
}
//now, afll thru and watch the deque dtor run...
cout << "done" << endl;
}
int x;
x=10;
#endif
}

View File

@@ -1,389 +0,0 @@
/* -*- 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
*/
const 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);
/**
* 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
*/
const 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

@@ -1,51 +0,0 @@
/* -*- 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

@@ -1,77 +0,0 @@
/* -*- 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

@@ -1,57 +0,0 @@
/* -*- 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

@@ -1,56 +0,0 @@
/* -*- 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

@@ -1,54 +0,0 @@
/* -*- 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

@@ -1,46 +0,0 @@
/* -*- 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

@@ -1,86 +0,0 @@
/* -*- 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;
/// 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;
};
/** Factory method for creating an nsITimer */
extern NS_BASE nsresult NS_NewTimer(nsITimer** aInstancePtrResult);
#endif

View File

@@ -1,41 +0,0 @@
/* -*- 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

@@ -1,46 +0,0 @@
/* -*- 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

@@ -1,98 +0,0 @@
/* -*- 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

@@ -1,423 +0,0 @@
/**
* 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;
}

View File

@@ -1,223 +0,0 @@
/**
* 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

@@ -1,121 +0,0 @@
/* -*- 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

View File

@@ -1,240 +0,0 @@
/* -*- 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:
* LAST MODS: gess 28Feb98
*
* This very simple string class that knows how to do
* efficient (dynamic) resizing. It offers almost no
* i18n support, and will undoubtedly have to be replaced.
*
*/
#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:
nsString();
nsString(const char* anISOLatin1);
nsString(const nsString&);
nsString(const PRUnichar* aUnicode);
public:
virtual ~nsString();
PRInt32 Length() const { return mLength; }
void SetLength(PRInt32 aLength);
void Truncate(PRInt32 anIndex=0);
virtual void EnsureCapacityFor(PRInt32 aNewLength);
virtual void SizeOf(nsISizeOfHandler* aHandler) const;
///accessor methods
//@{
const PRUnichar* GetUnicode(void) const;
operator PRUnichar*() const;
PRUnichar operator()(PRInt32 i) const;
PRUnichar& operator[](PRInt32 i) const;
PRUnichar& CharAt(PRInt32 anIndex) const;
PRUnichar& First() const;
PRUnichar& Last() const;
//string creation methods...
nsString operator+(const nsString& aString);
nsString operator+(const char* anISOLatin1);
nsString operator+(char aChar);
nsString operator+(const PRUnichar* aBuffer);
nsString operator+(PRUnichar aChar);
void ToLowerCase();
void ToLowerCase(nsString& aString) const;
void ToUpperCase();
void ToUpperCase(nsString& aString) const;
nsString* ToNewString() const;
char* ToNewCString() const;
char* ToCString(char* aBuf,PRInt32 aBufLength) const;
void Copy(nsString& aString) const;
PRUnichar* ToNewUnicode() const;
float ToFloat(PRInt32* aErrorCode) const;
PRInt32 ToInteger(PRInt32* aErrorCode) const;
//@}
///string manipulation methods...
//@{
nsString& SetString(const PRUnichar* aStr,PRInt32 aLength=-1);
nsString& SetString(const char* anISOLatin1,PRInt32 aLength=-1);
nsString& operator=(const nsString& aString);
nsString& operator=(const char* anISOLatin1);
nsString& operator=(char aChar);
nsString& operator=(const PRUnichar* aBuffer);
nsString& operator=(PRUnichar aChar);
nsString& operator+=(const nsString& aString);
nsString& operator+=(const char* anISOLatin1);
nsString& operator+=(const PRUnichar* aBuffer);
nsString& operator+=(PRUnichar aChar);
nsString& Append(const nsString& aString,PRInt32 aLength=-1);
nsString& Append(const char* anISOLatin1,PRInt32 aLength=-1);
nsString& Append(char aChar);
nsString& Append(const PRUnichar* aBuffer,PRInt32 aLength=-1);
nsString& Append(PRUnichar aChar);
nsString& Append(PRInt32 aInteger,PRInt32 aRadix); //radix=8,10 or 16
nsString& Append(float aFloat);
PRInt32 Left(nsString& aCopy,PRInt32 aCount);
PRInt32 Mid(nsString& aCopy,PRInt32 anOffset,PRInt32 aCount);
PRInt32 Right(nsString& aCopy,PRInt32 aCount);
PRInt32 Insert(nsString& aCopy,PRInt32 anOffset,PRInt32 aCount=-1);
PRInt32 Insert(PRUnichar aChar,PRInt32 anOffset);
nsString& Cut(PRInt32 anOffset,PRInt32 aCount);
nsString& StripChars(const char* aSet);
nsString& StripWhitespace();
nsString& Trim( const char* aSet,
PRBool aEliminateLeading=PR_TRUE,
PRBool aEliminateTrailing=PR_TRUE);
nsString& CompressWhitespace( PRBool aEliminateLeading=PR_TRUE,
PRBool aEliminateTrailing=PR_TRUE);
static PRBool IsSpace(PRUnichar ch);
static PRBool IsAlpha(PRUnichar ch);
static PRBool IsDigit(PRUnichar ch);
//@}
///searching methods...
//@{
PRInt32 Find(const char* anISOLatin1) const;
PRInt32 Find(const PRUnichar* aString) const;
PRInt32 Find(PRUnichar aChar,PRInt32 offset=0) const;
PRInt32 Find(const nsString& aString) const;
PRInt32 FindFirstCharInSet(const char* anISOLatin1Set,PRInt32 offset=0) const;
PRInt32 FindFirstCharInSet(nsString& aString,PRInt32 offset=0) const;
PRInt32 FindLastCharInSet(const char* anISOLatin1Set,PRInt32 offset=0) const;
PRInt32 FindLastCharInSet(nsString& aString,PRInt32 offset=0) const;
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;
PRInt32 RFind(PRUnichar aChar,PRBool aIgnoreCase=PR_FALSE) const;
//@}
///comparision methods...
//@{
virtual PRInt32 Compare(const nsString &S,PRBool aIgnoreCase=PR_FALSE) const;
virtual PRInt32 Compare(const char *anISOLatin1,PRBool aIgnoreCase=PR_FALSE,PRInt32 aLength=-1) const;
virtual PRInt32 Compare(const PRUnichar *aString,PRBool aIgnoreCase=PR_FALSE,PRInt32 aLength=-1) const;
PRBool operator==(const nsString &S) const;
PRBool operator==(const char *anISOLatin1) const;
PRBool operator==(const PRUnichar* aString) const;
PRBool operator!=(const nsString &S) const;
PRBool operator!=(const char *anISOLatin1) const;
PRBool operator!=(const PRUnichar* aString) const;
PRBool operator<(const nsString &S) const;
PRBool operator<(const char *anISOLatin1) const;
PRBool operator<(const PRUnichar* aString) const;
PRBool operator>(const nsString &S) const;
PRBool operator>(const char *anISOLatin1) const;
PRBool operator>(const PRUnichar* aString) const;
PRBool operator<=(const nsString &S) const;
PRBool operator<=(const char *anISOLatin1) const;
PRBool operator<=(const PRUnichar* aString) const;
PRBool operator>=(const nsString &S) const;
PRBool operator>=(const char *anISOLatin1) const;
PRBool operator>=(const PRUnichar* aString) const;
PRBool Equals(const nsString& aString) const;
PRBool Equals(const char* anISOLatin1,PRInt32 aLength=-1) const;
PRBool Equals(const nsIAtom *aAtom) const;
PRBool Equals(const PRUnichar* s1, const PRUnichar* s2) const;
PRBool EqualsIgnoreCase(const nsString& aString) const;
PRBool EqualsIgnoreCase(const char* anISOLatin1,PRInt32 aLength=-1) const;
PRBool EqualsIgnoreCase(const nsIAtom *aAtom) const;
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;
};
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);
PRUnichar mBuf[32];
};
#endif

View File

@@ -1,140 +0,0 @@
/* -*- 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

@@ -1,337 +0,0 @@
/* -*- 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

@@ -1,182 +0,0 @@
/* -*- 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

@@ -1,227 +0,0 @@
/* -*- 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

@@ -1,74 +0,0 @@
/* -*- 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___ */

View File

@@ -1,127 +0,0 @@
/* -*- 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

@@ -1,43 +0,0 @@
#!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

@@ -1,171 +0,0 @@
/* -*- 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; };
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;
}
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

@@ -1,40 +0,0 @@
#!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

@@ -1,373 +0,0 @@
/* -*- 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 DWORD gSyncHack;
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) {};
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;
DWORD TimerImpl::gSyncHack = 0;
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) {
if(gSyncHack == 0) {
aTickCount = ::GetTickCount();
}
else {
aTickCount = gSyncHack;
}
}
// 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;
// Set the hack, such that when FE_ClearTimeout
// calls SyncTimeoutPeriod, that GetTickCount()
// overhead is not incurred.
gSyncHack = aNow;
// 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;
}
}
gSyncHack = 0;
}
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

@@ -1,105 +0,0 @@
/* -*- 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

@@ -1,62 +0,0 @@
#!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

@@ -1,108 +0,0 @@
/* -*- 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();
for (PRInt32 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

@@ -1,89 +0,0 @@
/* -*- 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

@@ -1,202 +0,0 @@
/* -*- 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

@@ -1,90 +0,0 @@
#!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

@@ -1,32 +0,0 @@
/* -*- 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

@@ -1,38 +0,0 @@
/*
* 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
}
}

View File

@@ -1 +1 @@
5009821211
5009808600

View File

@@ -84,9 +84,6 @@ sub BuildMozilla()
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");
@@ -102,9 +99,6 @@ sub BuildMozilla()
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");
@@ -122,54 +116,40 @@ sub BuildMozilla()
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:network:macbuild:network.mcp", "Network$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 )
if ( $main::MOZ_MEDIUM == 1 || $main::MOZ_DARK == 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:Composer:build:Composer.mcp", "Composer$D.o");
if ( $main::MOZ_DARK == 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");
BuildProject(":mozilla:lib:libmsg:macbuild:MsgLib.mcp", "MsgLib$D.o");
BuildProject(":mozilla:cmd:macfe:MailNews:build:MailNews.mcp", "MailNews$D.o");
BuildProject(":mozilla:directory:c-sdk:ldap:libraries:macintosh:LDAPClient.mcp","LDAPClient$D.o");
}
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:dummies:MakeDummies.mcp", "MsgLib$D.o");
BuildProject(":mozilla:cmd:macfe:projects:dummies:MakeDummies.mcp", "MailNews$D.o");
BuildProject(":mozilla:cmd:macfe:projects:dummies:MakeDummies.mcp", "LDAPClient$D.o");
}
# Build the appropriate resources target
BuildProject(":mozilla:cmd:macfe:projects:client:Client.mcp", "Moz_Resources");
}
else
{
# Build a project with dummy targets to make stub libraries
BuildProject("cmd:macfe:projects:dummies:MakeDummies.mcp", "Composer$D.o");
# Build the appropriate resources target
BuildProject(":mozilla:cmd:macfe:projects:client:Client.mcp", "Nav_Resources");
}
BuildProject(":mozilla:cmd:macfe:projects:client:Client.mcp", "Client$D");
@@ -180,11 +160,8 @@ 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:config:mac:MANIFEST", ":mozilla:dist:config:");
InstallFromManifest(":mozilla:include:MANIFEST", ":mozilla:dist:include:");
InstallFromManifest(":mozilla:cmd:macfe:pch:MANIFEST", ":mozilla:dist:include:");
@@ -224,8 +201,7 @@ sub DistMozilla()
InstallFromManifest(":mozilla:jpeg:MANIFEST", ":mozilla:dist:jpeg:");
#JSJ
# beard: this conflicts with LiveConnect's jsjava.h.
#InstallFromManifest(":mozilla:js:jsj:MANIFEST", ":mozilla:dist:jsj:");
InstallFromManifest(":mozilla:js:jsj:MANIFEST", ":mozilla:dist:jsj:");
#JSDEBUG
InstallFromManifest(":mozilla:js:jsd:MANIFEST", ":mozilla:dist:jsdebug:");
@@ -233,9 +209,6 @@ sub DistMozilla()
#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:");
@@ -252,9 +225,6 @@ sub DistMozilla()
{
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:");
@@ -274,9 +244,7 @@ sub DistMozilla()
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:");
@@ -300,8 +268,7 @@ sub DistMozilla()
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:");
InstallFromManifest(":mozilla:lib:plugin:MANIFEST", ":mozilla:dist:plugin:");
#LIBHOOK
InstallFromManifest(":mozilla:modules:libhook:public:MANIFEST", ":mozilla:dist:libhook:");
@@ -328,18 +295,8 @@ sub DistMozilla()
#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

@@ -117,18 +117,12 @@ if ($build{all})
chdir("::::");
$MOZ_SRC = cwd();
Moz::StopForErrors();
#Moz::DontStopForErrors();
#OpenErrorLog("::NGLayoutBuildLog");
OpenErrorLog(":::Mozilla.BuildLog"); # Tinderbox requires that name
OpenErrorLog("::NGLayoutBuildLog");
Checkout();
chdir($MOZ_SRC);
BuildDist();
chdir($MOZ_SRC);
BuildProjects();
print "Build layout complete\n";

View File

@@ -1,374 +0,0 @@
#!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

@@ -39,8 +39,6 @@ require Exporter;
use File::Path;
use ExtUtils::Manifest 'maniread';
use CodeWarriorLib;
sub current_directory()
{
my $current_directory = cwd();
@@ -76,22 +74,21 @@ Pretty much, everything is taken care of for you.
sub UseCodeWarriorLib($)
{
# ($CodeWarriorLib) = @_;
# $CodeWarriorLib = full_path_to($CodeWarriorLib);
($CodeWarriorLib) = @_;
$CodeWarriorLib = full_path_to($CodeWarriorLib);
}
sub activate_CodeWarrior()
{
#MacPerl::DoAppleScript(<<END_OF_APPLESCRIPT);
# tell (load script file "$CodeWarriorLib") to ActivateCodeWarrior()
#END_OF_APPLESCRIPT
MacPerl::DoAppleScript(<<END_OF_APPLESCRIPT);
tell (load script file "$CodeWarriorLib") to ActivateCodeWarrior()
END_OF_APPLESCRIPT
}
BEGIN
{
# UseCodeWarriorLib(":CodeWarriorLib");
# activate_CodeWarrior();
CodeWarriorLib::activate();
UseCodeWarriorLib(":CodeWarriorLib");
activate_CodeWarrior();
}
$logging = 0;
@@ -225,8 +222,8 @@ sub build_project($$$)
my ($project_path, $target_name, $clean_build) = @_;
$project_path = full_path_to($project_path);
# $project_path =~ m/.+:(.+)/;
# my $project_name = $1;
$project_path =~ m/.+:(.+)/;
my $project_name = $1;
log_message_with_time("### Building \"$project_path\"");
@@ -239,15 +236,10 @@ sub build_project($$$)
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
$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 )
@@ -267,13 +259,13 @@ C<BuildProject()> and C<BuildProjectClean()> are identical, except that the latt
sub BuildProject($;$)
{
my ($project_path, $target_name) = @_;
build_project($project_path, $target_name, 0);
build_project($project_path, $target_name, "false");
}
sub BuildProjectClean($;$)
{
my ($project_path, $target_name) = @_;
build_project($project_path, $target_name, 1);
build_project($project_path, $target_name, "true");
}
@@ -299,26 +291,18 @@ sub MakeAlias($$)
$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";
my $message = "Can't create a Finder alias (at \"$new_file\")\n for \"$old_file\";";
# die "$message symlink doesn't work on directories.\n" if -d $old_file;
die "$message because \"$old_file\" doesn't exist.\n" unless -e $old_file;
#check if the alias is already pointing to the right direction
my ($aliasto) = readlink($new_file);
my ($full_old_file) = ( $old_file =~ m/^:/ ) ? cwd() . $old_file : $old_file;
unless ($aliasto && ($aliasto eq $full_old_file))
{
unlink $new_file;
# print "symlink(\"$old_file\", \"$new_file\");\n";
symlink($old_file, $new_file) || die "$message symlink returned an unexpected error.\n";
}
}

View File

@@ -108,17 +108,12 @@ sub Checkout()
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";
@@ -127,35 +122,34 @@ sub Checkout()
$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";
$session->checkout("mozilla/modules/libpref") || 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";
}
if ($main::pull{xpcom})
{
$session->checkout("mozilla/modules/libreg") || die "checkout failure";
$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";
my($IMGLIB_BRANCH) = "MODULAR_IMGLIB_BRANCH";
$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/lib/xp ") || 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/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";
@@ -166,7 +160,7 @@ sub Checkout()
}
if ($main::pull{mac})
{
$session->checkout("mozilla/build/mac") || die "checkout failure";
$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";
@@ -196,10 +190,9 @@ sub BuildDist()
[":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:config:mac:MANIFEST", "$distdirectory:config:"],
[":mozilla:include:MANIFEST", "$distdirectory:include:"],
[":mozilla:cmd:macfe:pch:MANIFEST", "$distdirectory:include:"],
#NSPR
[":mozilla:nsprpub:pr:include:MANIFEST", "$distdirectory:nspr:"],
[":mozilla:nsprpub:pr:src:md:mac:MANIFEST", "$distdirectory:nspr:mac:"],
@@ -232,18 +225,14 @@ sub BuildDist()
[":mozilla:modules:libimg:png:MANIFEST", "$distdirectory:libimg:"],
[":mozilla:modules:libimg:src:MANIFEST", "$distdirectory:libimg:"],
[":mozilla:modules:libimg:public: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:"],
#//PARSE
#// [":mozilla:lib:libparse:MANIFEST", "$distdirectory:libparse:"],
#//OLD LAYOUT
#// [":mozilla:lib:layout:MANIFEST", "$distdirectory:layout:"],
#//STYLE
#// [":mozilla:lib:libstyle:MANIFEST", "$distdirectory:libstyle:"],
#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:"],
[":mozilla:lib:liblayer:include:MANIFEST", "$distdirectory:layers:"],
#NETWORK
[":mozilla:network:cache:MANIFEST", "$distdirectory:network:"],
[":mozilla:network:client:MANIFEST", "$distdirectory:network:"],
@@ -277,9 +266,6 @@ sub BuildDist()
[":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
@@ -291,7 +277,6 @@ sub BuildDist()
[":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:"],
#HTMLPARSER
[":mozilla:htmlparser:src:MANIFEST", "$distdirectory:htmlparser:"],
@@ -318,10 +303,9 @@ sub BuildCommonProjects()
# 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");
Moz::BuildProjectClean(":mozilla:lib:mac:MacMemoryAllocator:MemAllocator.mcp", "Stubs");
# shared
@@ -344,6 +328,10 @@ sub BuildCommonProjects()
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:xpcom:macbuild:xpcomPPC.mcp", "xpcom$D.shlb");
MakeAlias(":mozilla:xpcom:macbuild:xpcom$D.shlb", "$dist_dir");
$main::DEBUG ? MakeAlias(":mozilla:xpcom:macbuild:xpcom$D.shlb.xSYM", "$dist_dir") : 0;
BuildProject(":mozilla:jpeg:macbuild:JPEG.mcp", "JPEG$D.shlb");
MakeAlias(":mozilla:jpeg:macbuild:JPEG$D.shlb", "$dist_dir");
@@ -359,16 +347,13 @@ sub BuildCommonProjects()
# static
BuildProject(":mozilla:xpcom:macbuild:xpcomPPC.mcp", "xpcom$D.o");
BuildProject(":mozilla:modules:security:freenav:macbuild:NoSecurity.mcp", "Security.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");
BuildProject(":mozilla:network:macbuild:network.mcp", "networkModular$D.o");
}

267
mozilla/client.mak Normal file
View File

@@ -0,0 +1,267 @@
# 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.
# Enable builds on any drive if defined.
!if !defined(MOZ_SRC)
MOZ_SRC=y:
!endif
# Enable builds from user defined top level directory.
!if !defined(MOZ_TOP)
MOZ_TOP=mozilla
!endif
#//------------------------------------------------------------------------
#// Defines specific to MOZ_NGLAYOUT
#//------------------------------------------------------------------------
!if defined(MOZ_NGLAYOUT)
NGLAYOUT_MAKEFILE=nglayout.mak
NGLAYOUT_ENV_VARS=STANDALONE_IMAGE_LIB=1 MODULAR_NETLIB=1 NGLAYOUT_BUILD_PREFIX=1
MOZNGLAYOUT_BRANCH=RAPTOR_INTEGRATION0_BRANCH
CVSCO = cvs -q co -P
!endif
#//------------------------------------------------------------------------
#// Figure out how to do the pull.
#//------------------------------------------------------------------------
!if "$(MOZ_BRANCH)" != ""
CVS_BRANCH=-r $(MOZ_BRANCH)
HAVE_BRANCH=1
!else
HAVE_BRANCH=0
!endif
!if "$(MOZ_DATE)" != ""
CVS_BRANCH=-D "$(MOZ_DATE)"
HAVE_DATE=1
!else
HAVE_DATE=0
!endif
!if $(HAVE_DATE) && $(HAVE_BRANCH)
ERR_MESSAGE=$(ERR_MESSAGE)^
Cannot specify both MOZ_BRANCH and MOZ_DATE
!endif
NMAKE=@nmake -nologo -$(MAKEFLAGS)
#//------------------------------------------------------------------------
#//
#// Stuff a do complete pull and build
#//
#//------------------------------------------------------------------------
default:: build_all
pull_and_build_all:: pull_all \
build_all
#// Do this when you pull a new tree, or else you will often get bugs
#// when replaceing an old dist with a new dist.
pull_clobber_build_all:: pull_all \
clobber_all \
build_all
clobber_build_all:: clobber_all \
build_all
!if defined(MOZ_NGLAYOUT)
# The MOZ_NGLAYOUT pull is complicated, be very careful choosing which files are on
# the tip and which are on the branches.
pull_all:: pull_client_source_product pull_nglayout pull_netlib repull_ngl_integration pull_imglib repull_include
!else
pull_all:: pull_client_source_product
!endif
!if defined(MOZ_NGLAYOUT)
pull_nglayout:
@cd $(MOZ_SRC)
$(CVSCO) $(MOZ_TOP)/$(NGLAYOUT_MAKEFILE)
@cd $(MOZ_SRC)/$(MOZ_TOP)
$(NMAKE) -f $(NGLAYOUT_MAKEFILE) pull_nglayout $(NGLAYOUT_ENV_VARS)
pull_netlib:
@cd $(MOZ_SRC)/$(MOZ_TOP)
$(NMAKE) -f $(NGLAYOUT_MAKEFILE) pull_netlib $(NGLAYOUT_ENV_VARS)
# Here is where we pull everything on the layout integration branch
repull_ngl_integration:
@cd $(MOZ_SRC)
$(CVSCO) -r $(MOZNGLAYOUT_BRANCH) $(MOZ_TOP)/include $(MOZ_TOP)/cmd $(MOZ_TOP)/lib $(MOZ_TOP)/modules
@cd $(MOZ_SRC)/$(MOZ_TOP)
# Careful to put this after repull_ngl_integration, want modules/libutil and
# modules/libimg to be on imglib branch
pull_imglib:
@cd $(MOZ_SRC)/$(MOZ_TOP)
$(NMAKE) -f $(NGLAYOUT_MAKEFILE) pull_imglib $(NGLAYOUT_ENV_VARS)
# Want certain files in the include directory to be on the tip
repull_include:
@cd $(MOZ_SRC)
$(CVSCO) -A $(MOZ_TOP)/include/net.h
!endif
pull_client_source_product:
@echo +++ client.mak: checking out the client with "$(CVS_BRANCH)"
cd $(MOZ_SRC)\.
-cvs -q co $(CVS_BRANCH) MozillaSourceWin
!if defined(MOZ_NGLAYOUT)
# Build NGLayout first.
build_all: build_nglayout \
build_dist \
build_client
!else
build_all: build_dist \
build_client
!endif
!if defined(MOZ_NGLAYOUT)
build_nglayout:
cd $(MOZ_SRC)\$(MOZ_TOP)
$(NMAKE) -f $(NGLAYOUT_MAKEFILE) $(NGLAYOUT_ENV_VARS)
!endif
build_dist:
@echo +++ client.mak: building dist
cd $(MOZ_SRC)\$(MOZ_TOP)
$(NMAKE) -f makefile.win
build_client:
@echo +++ client.mak: building client
cd $(MOZ_SRC)\$(MOZ_TOP)\cmd\winfe\mkfiles32
!if "$(MOZ_BITS)" == "16"
$(NMAKE) -f mozilla.mak exports
!endif
$(NMAKE) -f mozilla.mak DEPEND=1
$(NMAKE) -f mozilla.mak
#
# remove all source files from the tree and print a report of what was missed
#
!if defined(MOZ_NGLAYOUT)
clobber_all:: clobber_moz clobber_nglayout
!else
clobber_all:: clobber_moz
!endif
clobber_moz:
cd $(MOZ_SRC)\$(MOZ_TOP)
$(NMAKE) -f makefile.win clobber_all
cd $(MOZ_SRC)\$(MOZ_TOP)\cmd\winfe\mkfiles32
$(NMAKE) -f mozilla.mak clobber_all
!if !defined(MOZ_MEDIUM)
cd $(MOZ_SRC)\$(MOZ_TOP)\netsite\ldap\libraries\msdos\winsock
$(NMAKE) -f nsldap.mak clobber_all
!endif
!if defined(MOZ_NGLAYOUT)
clobber_nglayout:
cd $(MOZ_SRC)\$(MOZ_TOP)
$(NMAKE) -f $(NGLAYOUT_MAKEFILE) clobber $(NGLAYOUT_ENV_VARS)
!endif
depend:
-del /s /q make.dep
$(NMAKE) -f makefile.win depend
#//------------------------------------------------------------------------
#// Utility stuff...
#//------------------------------------------------------------------------
#//------------------------------------------------------------------------
# Verify that MOZ_SRC is set correctly
#//------------------------------------------------------------------------
# Check to see if it is set at all
!if "$(MOZ_SRC)"!=""
#
# create a temp file at the root and make sure it is visible from MOZ_SRC
#
!if [copy $(MAKEDIR)\client.mak $(MAKEDIR)\xyzzy.tmp > NUL] == 0
!endif
!if !EXIST( $(MOZ_SRC)\$(MOZ_TOP)\xyzzy.tmp )
ERR_MESSAGE=$(ERR_MESSAGE)^
MOZ_SRC isn't set correctly: [$(MOZ_SRC)\$(MOZ_TOP)]!=[$(MAKEDIR)]
!endif
!if [del $(MAKEDIR)\xyzzy.tmp]
!endif
!else
# MOZ_SRC isn't set at all
ERR_MESSAGE=$(ERR_MESSAGE)^
Environment variable MOZ_SRC isn't set.
!endif
#//------------------------------------------------------------------------
# Verify that MOZ_BITS is set
#//------------------------------------------------------------------------
!if !defined(MOZ_BITS)
ERR_MESSAGE=$(ERR_MESSAGE)^
Environment variable MOZ_BITS isn't set.
!endif
!if !defined(MOZ_TOOLS)
ERR_MESSAGE=$(ERR_MESSAGE)^
Environment variable MOZ_TOOLS isn't set.
!endif
#//------------------------------------------------------------------------
#// Display error
#//------------------------------------------------------------------------
!if "$(ERR_MESSAGE)" != ""
ERR_MESSAGE = ^
client.mak: ^
$(ERR_MESSAGE) ^
^
client.mak: usage^
^
nmake -f client.mak [MOZ_BRANCH=<cvs_branch_name>] ^
[MOZ_DATE=<cvs_date>]^
[pull_and_build_all]^
[pull_all]^
[pull_dist]^
[pull_client]^
[build_all]^
[build_dist]^
[build_ldap]^
[build_client]^
^
Environment variables:^
^
MOZ_BITS set to either 32 or 16 ^
MOZ_SRC set to the directory above $(MOZ_TOP) or "$(MAKEDIR)\.."^
MOZ_TOOLS set to the directory containing the java compiler see ^
http://warp/tools/nt^
JAVA_HOME set to the same thing as MOZ_TOOLS^
CVSROOT set to the public mozilla cvs server^
!ERROR $(ERR_MESSAGE)
!endif

21
mozilla/cmd/Makefile Normal file
View File

@@ -0,0 +1,21 @@
#
# 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 = xfe patcher
include $(DEPTH)/config/rules.mk

View File

@@ -0,0 +1,57 @@
<!-- -*- Mode: HTML; tab-width: 8; indent-tabs-mode: nil -*-
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.
-->
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
<HTML>
<HEAD>
<TITLE>Account Setup</TITLE>
<SCRIPT LANGUAGE = "JavaScript" ARCHIVE="asw.jar" SRC="1step.js"></SCRIPT>
<LINK REL=STYLESHEET TYPE="text/JavaScript" ARCHIVE="asw.jar" HREF="sheet.js"></LINK>
</HEAD>
<BODY BACKGROUND="images/bg.gif" BGCOLOR="cccccc" onLoad="loadData()" ID="1step100">
<!-- The layer below contains the Account Setup identifier. -->
<LAYER NAME = "tagtext" LEFT = 420 TOP = 0 VISIBILITY = SHOW>
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=200 ID="nospace">
<TR><TD HEIGHT=20 VALIGN=MIDDLE BACKGROUND="images/tag.gif">
<B CLASS="previewtag">ACCOUNT SETUP</B>
</TD></TR>
</TABLE>
</LAYER>
<!-- The layer below contains the headline and text of this screen -->
<P CLASS="title"><B>Connecting to the Internet <BR>account server...</B></P>
<TABLE BORDER="0" CELLPADDING="0" CELLSPACING="0" WIDTH=500>
<TR>
</TR>
</TABLE>
<SPACER TYPE=HORIZONTAL SIZE=42>
<APPLET ARCHIVE="asw.jar" CODE="netscape/asw/CPGeneratorProgress.class" HEIGHT=140 WIDTH=400></APPLET>
</BODY>
</HTML>

View File

@@ -0,0 +1,242 @@
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil -*-
*
* 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.
*/
<!-- to hide script contents from old browsers
var globals = parent.parent.globals;
var plugin = globals.document.setupPlugin;
var documentVars = globals.document.vars;
function go( msg )
{
parent.parent.globals.debug( "1step go" );
if ( parent.parent.globals.document.vars.editMode.value == "yes" )
return true;
else
return checkData();
}
function checkData()
{
return true;
}
function configureDialer( configFolder, acctSetupIni, regFile )
{
globals.debug( "Configuring dialer" );
var intlFlag = globals.GetNameValuePair( acctSetupIni, "Mode Selection", "IntlMode" );
intlFlag = intlFlag.toLowerCase();
// * determine name of scripting file
var scriptEnabledFlag = "FALSE";
var scriptFile = globals.GetNameValuePair( regFile, "Dial-In Configuration", "ScriptFileName" );
if ( scriptFile != null && scriptFile != "" )
{
scriptFile = configFolder + scriptFile;
scriptEnabledFlag = "TRUE";
}
else
{
scriptFile = "";
scriptEnabledFlag = "FALSE";
}
// * determine tty
var ttyFlag = globals.GetNameValuePair( regFile, "Security", "SecurityDevice" );
ttyFlag = ttyFlag.toLowerCase();
if ( ttyFlag == "yes" )
ttyFlag = "TRUE";
else
ttyFlag = "FALSE";
// * determine outside line access string
var outsideLineAccessStr = "";
if ( documentVars.prefixData.value != "" )
{
outsideLineAccessStr = documentVars.prefixData.value;
x = outsideLineAccessStr.indexOf( "," );
if ( x < 0 )
outsideLineAccessStr = outsideLineAccessStr + ",";
}
// * configure dialer for Registration Server
dialerData = plugin.newStringArray( 28 ); // increment this # as new dialer strings are added
dialerData[ 0 ] = "FileName=" + regFile;
dialerData[ 1 ] = "AccountName=" + globals.GetNameValuePair( regFile, "Dial-In Configuration", "SiteName" );
dialerData[ 2 ] = "ISPPhoneNum=" + globals.GetNameValuePair( regFile, "Dial-In Configuration", "Phone" );
dialerData[ 3 ] = "LoginName=" + globals.GetNameValuePair( regFile, "Dial-In Configuration", "Name" );
dialerData[ 4 ] = "Password=" + globals.GetNameValuePair( regFile, "Dial-In Configuration", "Password" );
dialerData[ 5 ] = "DNSAddress=" + globals.GetNameValuePair( regFile, "IP", "DNSAddress" );
dialerData[ 6 ] = "DNSAddress2=" + globals.GetNameValuePair( regFile, "IP", "DNSAddress2" );
dialerData[ 7 ] = "DomainName=" + globals.GetNameValuePair( regFile, "IP", "DomainName" );
dialerData[ 8 ] = "IPAddress=" + globals.GetNameValuePair( regFile, "IP", "IPAddress" );
dialerData[ 9 ] = "IntlMode=" + ( ( intlFlag == "yes" ) ? "TRUE" : "FALSE" );
dialerData[ 10 ] = "DialOnDemand=TRUE";
dialerData[ 11 ] = "ModemName=" + globals.document.vars.modem.value;
dialerData[ 12 ] = "ModemType=" + plugin.GetModemType( documentVars.modem.value );
dialerData[ 13 ] = "DialType=" + documentVars.dialMethod.value;
dialerData[ 14 ] = "OutsideLineAccess=" + outsideLineAccessStr;
dialerData[ 15 ] = "DisableCallWaiting=" + ( ( documentVars.cwData.value != "" ) ? "TRUE" : "FALSE" );
dialerData[ 16 ] = "DisableCallWaitingCode=" + documentVars.cwData.value;
dialerData[ 17 ] = "UserAreaCode=" + documentVars.modemAreaCode.value; // XXX what to do if international mode?
dialerData[ 18 ] = "CountryCode=" + documentVars.countryCode.value;
dialerData[ 19 ] = "LongDistanceAccess=1"; // XXX
dialerData[ 20 ] = "DialAsLongDistance=TRUE"; // XXX
dialerData[ 21 ] = "DialAreaCode=TRUE"; // XXX
dialerData[ 22 ] = "ScriptEnabled=" + scriptEnabledFlag;
dialerData[ 23 ] = "ScriptFileName=" + scriptFile;
dialerData[ 24 ] = "NeedsTTYWindow=" + ttyFlag;
dialerData[ 25 ] = "Location=Home";
dialerData[ 26 ] = "DisconnectTime=" + globals.GetNameValuePair( acctSetupIni, "Mode Selection", "Dialer_Disconnect_After" );
dialerData[ 27 ] = "Path=Server";
// * write out dialer data to Java Console
if ( documentVars.debugMode.value.toLowerCase() == "yes" )
{
globals.debug( "\nDialer data (for Registration Server): " );
var numElements = dialerData.length;
for ( var x = 0; x < numElements; x++ )
globals.debug( " " + x + ": " + dialerData[ x ] );
}
// * configure the dialer
plugin.DialerConfig( dialerData, true );
// * check if we need to reboot
if ( plugin.NeedReboot() == true )
{
// XXX hardcode in name of next screen???
globals.forceReboot( "1step.htm" );
return;
}
if ( plugin.DialerConnect() == false )
{
plugin.DialerHangup();
// XXX hardcode in name of next screen???
window.location.replace( "error.htm" );
return;
}
}
function loadData()
{
netscape.security.PrivilegeManager.enablePrivilege( "AccountSetup" );
if ( parent.controls.generateControls )
parent.controls.generateControls();
// * only connect to reggie if editmode is off
if ( documentVars.editMode.value != "yes" )
{
var configFolder = globals.getConfigFolder( self );
var acctSetupIni = globals.getAcctSetupFilename( self );
var regFile = configFolder + documentVars.regServer.value;
var regSource = globals.GetNameValuePair( acctSetupIni, "Mode Selection", "RegSource" );
var localFlag = globals.GetNameValuePair( regFile, "Dial-In Configuration", "LocalMode" );
localFlag = localFlag.toLowerCase();
globals.debug( "localFlag:" + localFlag );
if ( localFlag != "yes" )
{
globals.debug( "LocalMode==no" );
var connectStatusFlag = plugin.IsDialerConnected();
if ( connectStatusFlag == true )
{
if ( confirm( "Account Setup can't connect until you close your current connection. Close the connection now?" ) == false )
return;
plugin.DialerHangup();
}
configureDialer( configFolder, acctSetupIni, regFile );
}
regCGI = globals.GetNameValuePair( regFile, "IP", "RegCGI" );
regRoot = globals.GetNameValuePair( regFile, "Configuration", "RegRoot" );
metadataMode = globals.GetNameValuePair( regFile, "Configuration", "MetadataMode" );
if ( metadataMode == "no" )
globals.debug( "MetadataMode==no, you will not be downloading necessary metadata" );
if ( regCGI == null || regCGI == "" )
{
alert( "Internal problem determining the Registration Server." );
return;
}
if ( regRoot == null )
{
alert( "Internal problem determining location of Registration Server data file repository (RegRoot)." );
return;
}
/*
// * write out reggie data to Java Console
if ( documentVars.debugMode.value.toLowerCase() == "yes" )
{
globals.debug( "\nRegServer data: " + document.forms[ 0 ].action );
var numElements = document.forms[ 0 ].length;
for ( var x = 0; x < document.forms[ 0 ].length; x++ )
globals.debug( " " + x + ": " + document.forms[ 0 ].elements[ x ].name + "=" + document.forms[ 0 ].elements[ x ].value );
}
*/
// * submit reggie data
navigator.preference( "security.warn_submit_insecure", false );
navigator.preference( "security.warn_entering_secure", false );
navigator.preference( "security.warn_leaving_secure", false );
// * automatically submit form to registration server
//document.forms[ 0 ].submit();
reggieData = plugin.newStringArray( 8 ); // increment this # as new dialer strings are added
reggieData[ 0 ] = "CST_PHONE_NUMBER=" + documentVars.modemPhoneNumber.value;
reggieData[ 1 ] = "REG_SOURCE=" + regSource;
reggieData[ 2 ] = "CLIENT_LANGUAGE=" + navigator.language;
reggieData[ 3 ] = "CST_AREA_CODE_1=" + documentVars.modemAreaCode.value;
reggieData[ 4 ] = "CST_AREA_CODE_2=" + documentVars.altAreaCode1.value;
reggieData[ 5 ] = "CST_AREA_CODE_3=" + documentVars.altAreaCode2.value;
reggieData[ 6 ] = "CST_AREA_CODE_4=" + documentVars.altAreaCode3.value;
reggieData[ 7 ] = "CST_COUNTRY_CODE=" + "1";
/*documentVars.countryCode.value;*/
//if ( localFlag != "yes" )
// globals.set1StepMode( 1 );
var result = plugin.GenerateComparePage( globals.getFolder( self ), regCGI, regRoot, metadataMode, reggieData );
plugin.DialerHangup();
//if ( localFlag != "yes" )
// globals.oneStepSemaphore = true;
if ( result == true )
window.location.replace( "compwrap.htm" );
else
window.location.replace( "error.htm" );
}
}
function saveData()
{
}
// end hiding contents from old browsers -->

View File

@@ -0,0 +1,60 @@
<!-- -*- Mode: HTML; tab-width: 8; indent-tabs-mode: nil -*-
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.
-->
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
<HTML>
<HEAD>
<TITLE>Account Setup</TITLE>
<SCRIPT LANGUAGE="JavaScript" ARCHIVE="asw.jar" SRC="2step.js"></SCRIPT>
<LINK REL=STYLESHEET TYPE="text/JavaScript" ARCHIVE="asw.jar" HREF="sheet.js"></LINK>
</HEAD>
<BODY BACKGROUND="images/bg.gif" BGCOLOR="cccccc" onLoad="loadData()" ID="2step100">
<!-- The layer below contains the Account Setup identifier. -->
<LAYER NAME="tagtext" LEFT=420 TOP=0 VISIBILITY=SHOW>
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=200 ID="nospace">
<TR><TD HEIGHT=20 VALIGN=MIDDLE BACKGROUND="images/tag.gif">
<B CLASS="previewtag">ACCOUNT SETUP</B>
</TD></TR>
</TABLE>
</LAYER>
<!-- The layer below contains the headline and text of this screen -->
<P CLASS="title"><B>Connect to
<SCRIPT LANGUAGE="JavaScript" ID="2step101">insertISPName();</SCRIPT>
</B></P>
<P>Account Setup will now connect you to
<SCRIPT LANGUAGE="JavaScript" ID="2step102">insertISPName();</SCRIPT>
so that you can create an account with this ISP. (Note: It may take a minute for your modem to connect to this ISP.)</P>
<P>After you have connected to
<SCRIPT LANGUAGE="JavaScript" ID="2step103">insertISPName();</SCRIPT>
you will be asked to supply account and billing information, such as your desired electronic mail name and password, and credit card information.</P>
<CENTER>
<SCRIPT LANGUAGE="JavaScript" ID="2step104">
generatePopNumberList();
</SCRIPT>
</CENTER>
</BODY>
</HTML>

View File

@@ -0,0 +1,91 @@
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil -*-
*
* 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.
*/
<!-- to hide script contents from old browsers
var globals = parent.parent.globals;
var controls = parent.controls;
function go( msg )
{
netscape.security.PrivilegeManager.enablePrivilege( "AccountSetup" );
// * skip if we're in edit mode
if ( globals.document.vars.editMode.value != "yes" )
{
if ( document.forms && document.forms[ 0 ] && document.forms[ 0 ].popList )
globals.document.setupPlugin.CreateConfigIAS(
globals.selectedISP, document.forms[ 0 ].popList.selectedIndex );
else
globals.document.setupPlugin.CreateConfigIAS( globals.selectedISP, -1 );
return true;
}
else
{
return false;
}
}
function checkData()
{
return true;
}
function saveData()
{
}
function insertISPName()
{
document.write( globals.getSelectedISPName() );
}
function loadData()
{
//parent.twostepfooter.document.writeln( "<BODY BACKGROUND='images/bg.gif' BGCOLOR='cccccc'>" );
//parent.twostepfooter.document.writeln( "<P>If you have trouble setting up your account call " );
//parent.twostepfooter.document.writeln( globals.getSelectedISPName() );
//parent.twostepfooter.document.writeln( "at (support number).</P>" );
//parent.twostepfooter.document.close();
if ( controls.generateControls )
controls.generateControls();
}
function generatePopNumberList()
{
netscape.security.PrivilegeManager.enablePrivilege( "AccountSetup" );
var list = globals.document.setupPlugin.GetISPPopList( globals.selectedISP );
globals.debug( "generating pop list" );
if ( list && list.length > 0 )
{
globals.debug( "emitting table" );
document.writeln( "<TABLE CELLPADDING=2 CELLSPACING=0 ID='minspace'><TR><TD ALIGN=LEFT VALIGN=TOP HEIGHT=25><spacer type=vertical size=2><B>Pick a phone number from the following list to connect to:</B></TD><TD ALIGN=LEFT VALIGN=TOP><FORM><SELECT NAME='popList'>");
for ( var x = 0; x < list.length; x++ )
{
var name = list[ x ];
var selected = ( x == 0 ) ? " SELECTED" : "";
document.writeln( "<OPTION VALUE='" + x + "'" + selected + ">" + name );
}
document.writeln( "</SELECT></FORM></TD></TR></TABLE>" );
}
}
// end hiding contents from old browsers -->

View File

@@ -0,0 +1,134 @@
<!-- -*- Mode: HTML; tab-width: 8; indent-tabs-mode: nil -*-
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.
-->
<HTML>
<HEAD>
<SCRIPT LANGUAGE = "JavaScript" ARCHIVE="asw.jar" SRC="aboutbox.js">
</SCRIPT>
</HEAD>
<BODY BGCOLOR=EEEEEE onLoad="loadData()" ID="aboutbox100">
<LAYER NAME="programName" VISIBILITY=hidden LEFT=-100 TOP=0 HEIGHT=100 WIDTH=100>
<TABLE BORDER=0 WIDTH="100%">
<TR>
<TD ALIGN=center VALIGN=top><STRONG>Account Setup</STRONG><BR>4.0</TD>
</TR>
</TABLE>
</LAYER>
<LAYER NAME="programDesc" VISIBILITY=hidden LEFT=250 TOP=-100 HEIGHT=100 WIDTH=100>
<TABLE BORDER=0 WIDTH="100%">
<TR>
<TD ALIGN=center VALIGN=top><STRONG>Internet<BR>Signup<BR>Program</STRONG></TD>
</TR>
</TABLE>
</LAYER>
<LAYER NAME="programCopyRight" VISIBILITY=hidden LEFT=740 TOP=0 HEIGHT=100 WIDTH=200>
<TABLE BORDER=0 WIDTH="100%">
<TR>
<TD ALIGN=center VALIGN=top>Copyright &copy 1996, 1997<BR>Netscape Communications Corp.<BR>All Rights Reserved.</TD>
</TR>
</TABLE>
</LAYER>
<LAYER NAME="ProgramThanks" VISIBILITY=hidden LEFT=10 TOP=480 WIDTH=580>
<CENTER>Brought to you by:</CENTER>
<BR>
<TABLE BORDER=0 WIDTH="100%" BGCOLOR=CCCCCC>
<TR>
<TD ALIGN=center VALIGN=middle><STRONG>Client Engineering</STRONG></TD>
<TD>Robert John Churchill, Rex Lam, Tim McClarren, Arshad Tayyeb, Cathleen Wang, Stella Yun</TD>
</TR>
<TR>
<TD ALIGN=center VALIGN=middle><STRONG>FreePPP</STRONG></TD>
<TD>Steve Dagley</TD>
</TR>
<TR>
<TD ALIGN=center VALIGN=middle><STRONG>Server Engineering</STRONG></TD>
<TD>Steve Elmer, Lucy Wu</TD>
</TR>
<TR>
<TD ALIGN=center VALIGN=middle><STRONG>Documentation/Help</STRONG></TD>
<TD>Dirk Dougherty, Robin Foster, Kate O'Day</TD>
</TR>
<TR>
<TD ALIGN=center VALIGN=middle><STRONG>User Experience</STRONG></TD>
<TD>Jim Corban, Valerie Hunter</TD>
</TR>
<TR>
<TD ALIGN=center VALIGN=middle><STRONG>Kwality Assurance</STRONG></TD>
<TD>Aracely Areas, John Bennett, Bruce Gay, Sarah Groves, Vashti Holt, Brent Martin, Dylan Shea, John Unruh, Pascal Vin</TD>
</TR>
<TR>
<TD ALIGN=center VALIGN=middle><STRONG>Release Engineering</STRONG></TD>
<TD>Don Bragg, Doug Turner, Chris Yeh</TD>
</TR>
<TR>
<TD ALIGN=center VALIGN=middle><STRONG>International</STRONG></TD>
<TD>David Yett</TD>
</TR>
<TR>
<TD ALIGN=center VALIGN=middle><STRONG>Management</STRONG></TD>
<TD>Leland Hambley, Nancy Wang, Monique Barbanson</TD>
</TR>
<TR>
<TD ALIGN=center VALIGN=middle><STRONG>Marketing</STRONG></TD>
<TD>Ken Hickman, Debra Evans, John Freeborg, Julie Herendeen</TD>
</TR>
<TR>
<TD ALIGN=center VALIGN=middle><STRONG>Thanks!</STRONG></TD>
<TD>The entire Communicator team!</TD>
</TR>
<TR>
<TD ALIGN=center VALIGN=middle><STRONG>Thank Goodness for...</STRONG></TD>
<TD>Mountain Dew!</TD>
</TR>
</TABLE>
</CENTER>
</LAYER>
<LAYER NAME="NetscapeIcon" VISIBILITY=hidden LEFT=250 TOP=90 WIDTH=100 HEIGHT=50>
<CENTER>
<IMG SRC="images/netscape.gif" WIDTH=32 HEIGHT=32 BORDER=0><BR>
<LAYER NAME="NetscapeString" VISIBILITY=hidden LEFT=16>
Go Netscape!
</LAYER>
</CENTER>
</LAYER>
</LAYER>
</BODY>
</HTML>

View File

@@ -0,0 +1,113 @@
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil -*-
*
* 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.
*/
<!-- to hide script contents from old browsers
function go( msg )
{
if ( msg=="Back" )
return true;
return false;
}
function checkData()
{
return true;
}
function loadData()
{
if ( parent && parent.controls && parent.controls.generateControls )
{
parent.controls.generateControls();
}
document.layers[ "programName" ].visibility = "SHOW";
animate1();
}
function saveData()
{
}
function animate1()
{
if ( document.layers[ "programName" ].left < 100 )
{
document.layers[ "programName" ].moveBy( 10, 0 );
setTimeout( "animate1()", 100 );
}
else
{
document.layers[ "programDesc" ].visibility = "SHOW";
animate2();
}
}
function animate2()
{
if ( document.layers[ "programDesc" ].top < 0 )
{
document.layers[ "programDesc" ].moveBy( 0, 10 );
setTimeout( "animate2()", 100 );
}
else
{
document.layers[ "programCopyRight" ].visibility = "SHOW";
animate3();
}
}
function animate3()
{
if ( document.layers[ "programCopyRight" ].left > 380 )
{
document.layers[ "programCopyRight" ].moveBy( -10, 0);
setTimeout( "animate3()", 100 );
}
else
{
document.layers[ "NetscapeIcon" ].visibility = "SHOW";
document.layers[ "ProgramThanks" ].visibility = "SHOW";
animate4();
}
}
function animate4()
{
if ( document.layers[ "ProgramThanks" ].top > 50 )
{
document.layers[ "NetscapeIcon" ].moveBy( 0, 5 );
document.layers[ "ProgramThanks" ].moveBy( 0, -10 );
setTimeout( "animate4()", 100 );
}
else
{
document.layers[ "NetscapeIcon" ].document.layers[ "NetscapeString" ].visibility = "SHOW";
}
}
// end hiding contents from old browsers -->

View File

@@ -0,0 +1,104 @@
<!-- -*- Mode: HTML; tab-width: 8; indent-tabs-mode: nil -*-
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.
-->
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
<HTML>
<HEAD>
<TITLE>Account Setup</TITLE>
<SCRIPT LANGUAGE = "JavaScript" ARCHIVE="asw.jar" SRC="accounts.js">
</SCRIPT>
<LINK REL=STYLESHEET TYPE="text/JavaScript" ARCHIVE="asw.jar" HREF="sheet.js">
</LINK>
</HEAD>
<BODY BACKGROUND="images/bg.gif" BGCOLOR="cccccc" ONLOAD="loadData()" ID="accounts100">
<!-- The layer below contains the Account Setup identifier. -->
<LAYER NAME = "tagtext" LEFT = 420 TOP = 0 VISIBILITY = SHOW>
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=200 ID="nospace">
<TR><TD HEIGHT=20 VALIGN=MIDDLE BACKGROUND="images/tag.gif">
<B CLASS="previewtag">ACCOUNT SETUP</B>
</TD></TR>
</TABLE>
</LAYER>
<!-- The layer below contains the headline and text of this screen -->
<FORM>
<P CLASS="title"><B>Welcome to Account Setup</B></P>
<!-- ÇSPACER TYPE=VERTICAL SIZE=16È -->
<P>Please click one of the buttons below to choose whether you would like to create a new Internet account or set up Communicator to access an account that you already have.</P>
<SPACER TYPE=HORIZONTAL SIZE=72>
<TABLE CELLPADDING="0" CELLSPACING="0" BORDER="0" WIDTH="500">
<TR>
<TD ALIGN=LEFT VALIGN="TOP" WIDTH="66" HEIGHT="54" ALIGN="LEFT">
<A HREF="about:blank" ONCLICK="document.images['new'].src='images/str_dn.gif'; setPath('New Path'); return false" ONMOUSEOVER="document.images['new'].src='images/str_mo.gif'" ONMOUSEOUT="document.images['new'].src='images/start.gif'" ID="accounts101">
<IMG NAME="new" SRC="images/start.gif" LOWSRC="images/str_dn.gif" BORDER=0 HEIGHT=53 WIDTH=54></A>
</TD>
<TD ALIGN=LEFT WIDTH="358" VALIGN="TOP" CLASS="accounts">
<B>I want to create a new Internet account.</B>
<SPACER TYPE=VERTICAL SIZE=4>
If you're new to the Internet, Account Setup helps you create an Internet account that you can use right away. You can also choose this option if you want to create a second Internet account or change your Internet service provider.
</TD>
</TR>
<TR>
<TD><SPACER TYPE=VERTICAL SIZE=16>
</TD>
</TR>
<TR>
<TD ALIGN="LEFT" VALIGN="TOP" WIDTH="66" HEIGHT="54" ALIGN="LEFT">
<A HREF="about:blank" ONCLICK="document.images['existing'].src='images/str_dn.gif'; setPath('Existing Path'); return false" ONMOUSEOVER="document.images['existing'].src='images/str_mo.gif'" ONMOUSEOUT="document.images['existing'].src='images/start.gif'" ID="accounts102">
<IMG NAME="existing" SRC="images/start.gif" LOWSRC="images/str_dn.gif" BORDER=0 HEIGHT=53 WIDTH=54></A>
</TD>
<TD ALIGN="LEFT" WIDTH="358" VALIGN="TOP" CLASS="accounts">
<B>I already have an Internet account. I want to set up Communicator to access my account.</B>
<SPACER TYPE=VERTICAL SIZE=4>
If you already have an Internet account with an Internet service provider, Account Setup helps you quickly set up Communicator to access your account.
</TD>
</TR>
</TABLE>
</BODY>
</HTML>

View File

@@ -0,0 +1,67 @@
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil -*-
*
* 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.
*/
<!-- to hide script contents from old browsers
function go(msg)
{
if (msg == parent.parent.globals.document.vars.path.value) {
return(true);
}
return(false);
}
function doGo()
{
parent.controls.go("Next");
}
function setPath(msg)
{
parent.parent.globals.document.vars.path.value = msg;
setTimeout("doGo()",1);
}
function checkData()
{
return(true);
}
function loadData()
{
if (parent.controls.generateControls) parent.controls.generateControls();
}
function saveData()
{
}
// end hiding contents from old browsers -->

View File

@@ -0,0 +1,120 @@
<!-- -*- Mode: HTML; tab-width: 2; indent-tabs-mode: nil -*-
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.
-->
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
<HTML>
<HEAD>
<TITLE>Account Setup</TITLE>
<SCRIPT LANGUAGE = "JavaScript" ARCHIVE="asw.jar" SRC="acctInfo.js">
</SCRIPT>
<LINK REL=STYLESHEET TYPE="text/JavaScript" ARCHIVE="asw.jar" HREF="sheet.js">
</LINK>
</HEAD>
<BODY BACKGROUND="images/bg.gif" BGCOLOR="cccccc" onLoad="loadData()" ID="acctInfo100">
<!-- The layer below contains the Account Setup identifier. -->
<LAYER NAME = "tagtext" LEFT = 420 TOP = 0 VISIBILITY = SHOW>
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=200 ID="nospace">
<TR><TD HEIGHT=20 VALIGN=MIDDLE BACKGROUND="images/tag.gif">
<B CLASS="previewtag">ACCOUNT SETUP</B>
</TD></TR>
</TABLE>
</LAYER>
<!-- The layer below contains the headline and text of this screen -->
<FORM>
<P CLASS="title"><B>Information About Yourself</B></P>
<P>Please enter your name and, optionally, you organization name below. Account Setup sets Communicator to add this information to the email you send and the web pages you create. </P>
<CENTER>
<TABLE CELLPADDING="3" CELLSPACING="0" border="0" WIDTH=100>
<TR>
<TD></TD>
<TD ALIGN="CENTER" VALIGN="BOTTOM" CLASS="tabletext">
First:
</TD>
<TD ALIGN="CENTER" VALIGN="BOTTOM" CLASS="tabletext">
Last:
</TD>
</TR>
<TR>
<TD VALIGN="BOTTOM" ALIGN="RIGHT" CLASS="tabletext">
<B>Name:</B>
<spacer type=vertical size=2>
</FONT>
</TD>
<TD ALIGN="LEFT" VALIGN="TOP" CLASS="tabletext">
<INPUT NAME="first" TYPE="text" SIZE=25 MAXLENGTH=30>
</TD>
<TD ALIGN="LEFT" VALIGN="TOP" CLASS="tabletext">
<INPUT NAME="last" TYPE="text" SIZE=26 MAXLENGTH=30>
</TD>
</TR>
<TR>
<TD COLSPAN="3">
<spacer type=vertical size=2>
</TD>
</TR>
<TR>
<TD VALIGN="BOTTOM" ALIGN="RIGHT" CLASS="tabletext">
<B>Organization:</B>
<spacer type=vertical size=2>
</FONT>
</TD>
<TD ALIGN="LEFT" VALIGN="TOP" COLSPAN="2" CLASS="tabletext">
<INPUT NAME="company" TYPE="text" SIZE=54 MAXLENGTH=30>
</TD>
</TR>
</TABLE>
</CENTER>
</FORM>
</BODY>
</HTML>

View File

@@ -0,0 +1,107 @@
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil -*-
*
* 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.
*/
<!-- to hide script contents from old browsers
function go()
{
if (parent.parent.globals.document.vars.editMode.value == "yes")
return true;
else
return(checkData());
}
function checkData()
{
if (document.forms[0].first.value == "") {
alert("You must enter a first name.");
document.forms[0].first.focus();
document.forms[0].first.select();
return false;
}
if (document.forms[0].last.value == "") {
alert("You must enter a last name.");
document.forms[0].last.focus();
document.forms[0].last.select();
return false;
}
/*
if (document.forms[0].areaCode.value == "") {
alert("You must enter an area code.");
document.forms[0].areaCode.focus();
document.forms[0].areaCode.select();
return false;
}
if (document.forms[0].phoneNumber.value == "") {
alert("You must enter a telephone number.");
document.forms[0].phoneNumber.focus();
document.forms[0].phoneNumber.select();
return false;
}
*/
return true;
}
function loadData()
{
// make sure all data objects/element exists and valid; otherwise, reload. SUCKS!
if (((document.forms[0].first == "undefined") || (document.forms[0].first == "[object InputArray]")) ||
((document.forms[0].last == "undefined") || (document.forms[0].last == "[object InputArray]")) ||
((document.forms[0].company == "undefined") || (document.forms[0].company == "[object InputArray]")))
{
parent.controls.reloadDocument();
return;
}
document.forms[0].first.value = parent.parent.globals.document.vars.first.value;
document.forms[0].last.value = parent.parent.globals.document.vars.last.value;
document.forms[0].company.value = parent.parent.globals.document.vars.company.value;
// document.forms[0].areaCode.value = parent.parent.globals.document.vars.areaCode.value;
// document.forms[0].phoneNumber.value = parent.parent.globals.document.vars.phoneNumber.value;
parent.parent.globals.setFocus(document.forms[0].first);
if (parent.controls.generateControls) parent.controls.generateControls();
}
function saveData()
{
// make sure all form element are valid objects, otherwise just skip & return!
if (((document.forms[0].first == "undefined") || (document.forms[0].first == "[object InputArray]")) ||
((document.forms[0].last == "undefined") || (document.forms[0].last == "[object InputArray]")) ||
((document.forms[0].company == "undefined") || (document.forms[0].company == "[object InputArray]")))
{
parent.controls.reloadDocument();
return;
}
parent.parent.globals.document.vars.first.value = document.forms[0].first.value;
parent.parent.globals.document.vars.last.value = document.forms[0].last.value;
parent.parent.globals.document.vars.company.value = document.forms[0].company.value;
// parent.parent.globals.document.vars.areaCode.value = document.forms[0].areaCode.value;
// parent.parent.globals.document.vars.phoneNumber.value = document.forms[0].phoneNumber.value;
}
// end hiding contents from old browsers -->

View File

@@ -0,0 +1,175 @@
<!-- -*- Mode: HTML; tab-width: 8; indent-tabs-mode: nil -*-
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.
-->
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
<HTML>
<HEAD>
<TITLE>Account Setup</TITLE>
<SCRIPT LANGUAGE = "JavaScript" ARCHIVE="asw.jar" SRC="billing.js">
</SCRIPT>
<LINK REL=STYLESHEET TYPE="text/JavaScript" ARCHIVE="asw.jar" HREF="sheet.js">
</LINK>
</HEAD>
<BODY BACKGROUND="images/bg.gif" BGCOLOR="cccccc" onLoad="loadData()" ID="billing100">
<!-- The layer below contains the Account Setup identifier. -->
<LAYER NAME = "tagtext" LEFT = 420 TOP = 0 VISIBILITY = SHOW>
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=200 ID="nospace">
<TR><TD HEIGHT=20 VALIGN=MIDDLE BACKGROUND="images/tag.gif">
<B CLASS="previewtag">ACCOUNT SETUP</B>
</TD></TR>
</TABLE>
</LAYER>
<!-- The layer below contains the headline and text of this screen -->
<FORM>
<P CLASS="title"><B>Your Billing Information</B></P>
<P>Internet accounts are paid for by credit card. Please provide information about the credit card that you would like to use for billing. Account Setup forwards this information to your provider when you create your account. </P>
<CENTER>
<TABLE CELLPADDING="2" CELLSPACING="0" border="0">
<TR>
<TD VALIGN="BOTTOM" ALIGN="RIGHT">
<B>Name on Card:</B>
<spacer type=vertical size=2>
</FONT>
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
<INPUT NAME="cardname" TYPE="text" SIZE=30 MAXLENGTH=30>
</TD>
</TR>
<TR>
<TD COLSPAN="3">
<spacer type=vertical size=6>
</TD>
</TR>
<TR>
<TD VALIGN="BOTTOM" ALIGN="RIGHT">
<B>Type of Card:</B>
<spacer type=vertical size=4>
</FONT>
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
<SELECT NAME="cards">
<SCRIPT LANGUAGE="JavaScript" ID="billing101">
generateCards();
</SCRIPT>
</SELECT>
</TD>
</TR>
<TR>
<TD COLSPAN="3">
<spacer type=vertical size=3>
</TD>
</TR>
<TR>
<TD VALIGN="BOTTOM" ALIGN="RIGHT">
<spacer type=vertical size=6>
<B>Card Number:</B>
<spacer type=vertical size=2>
</FONT>
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
<spacer type=vertical size=4>
<INPUT NAME="cardnumber" TYPE="text" SIZE=25 MAXLENGTH=25>
</TD>
</TR>
<TR>
<TD COLSPAN="3">
<spacer type=vertical size=6>
</TD>
</TR>
<TR>
<TD VALIGN="BOTTOM" ALIGN="RIGHT">
<B>Expiration Date:</B>
<spacer type=vertical size=4>
</FONT>
</TD>
<TD ALIGN="LEFT" VALIGN="MIDDLE">
<SELECT NAME="month">
<OPTION VALUE="January">January
<OPTION VALUE="February">February
<OPTION VALUE="March">March
<OPTION VALUE="April">April
<OPTION VALUE="May">May
<OPTION VALUE="June">June
<OPTION VALUE="July">July
<OPTION VALUE="August">August
<OPTION VALUE="September">September
<OPTION VALUE="October">October
<OPTION VALUE="November">November
<OPTION VALUE="December">December
</SELECT>
<spacer type=horizontal size=2>
<SELECT NAME="year">
<OPTION VALUE="1997">1997
<OPTION VALUE="1998">1998
<OPTION VALUE="1999">1999
<OPTION VALUE="2000">2000
<OPTION VALUE="2001">2001
<OPTION VALUE="2002">2002
<OPTION VALUE="2003">2003
<OPTION VALUE="2004">2004
</SELECT>
</TD>
</TR>
</TABLE>
</CENTER>
</FORM>
</BODY>
</HTML>

View File

@@ -0,0 +1,319 @@
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil -*-
*
* 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.
*/
<!-- to hide script contents from old browsers
function go(msg)
{
if (parent.parent.globals.document.vars.editMode.value == "yes")
return true;
else
return(checkData());
}
function generateCards()
{
var theFile = parent.parent.globals.getAcctSetupFilename(self);
var theCards = parent.parent.globals.GetNameValuePair(theFile,"New Acct Mode","CardTypes");
if (theCards == null || theCards == "") {
theCards = "AX,DC,MC,VI";
}
if (theCards.indexOf("AX")>=0) {
document.writeln("<OPTION VALUE='American Express'>American Express");
}
if (theCards.indexOf("DC")>=0) {
document.writeln("<OPTION VALUE='Discover Card'>Discover Card");
}
if (theCards.indexOf("MC")>=0) {
document.writeln("<OPTION VALUE='MasterCard'>MasterCard");
}
if (theCards.indexOf("VI")>=0) {
document.writeln("<OPTION VALUE='VISA'>VISA");
}
}
function loadData()
{
// make sure all data objects/element exists and valid; otherwise, reload. SUCKS!
if (((document.forms[0].cardname == "undefined") || (document.forms[0].cardname == "[object InputArray]")) ||
((document.forms[0].cards == "undefined") || (document.forms[0].cards == "[object InputArray]")) ||
((document.forms[0].cardnumber == "undefined") || (document.forms[0].cardnumber == "[object InputArray]")) ||
((document.forms[0].month == "undefined") || (document.forms[0].month == "[object InputArray]")) ||
((document.forms[0].year == "undefined") || (document.forms[0].year == "[object InputArray]")))
{
parent.controls.reloadDocument();
return;
}
document.forms[0].cardname.value = parent.parent.globals.document.vars.cardname.value;
if (document.forms[0].cardname.value == "") {
document.forms[0].cardname.value = parent.parent.globals.document.vars.first.value + " " + parent.parent.globals.document.vars.last.value;
}
for (var i = 0; i<document.forms[0].cards.length; i++) {
if (parent.parent.globals.document.vars.cardtype.value == document.forms[0].cards[i].value) {
document.forms[0].cards.selectedIndex = i;
break;
}
}
document.forms[0].cardnumber.value = parent.parent.globals.document.vars.cardnumber.value;
var month = parent.parent.globals.document.vars.month.value;
if (month == "") month = 0;
document.forms[0].month.selectedIndex = month;
var found = false;
var year = parent.parent.globals.document.vars.year.value;
// if (year == "") year = document.forms[0].year[0].value;
for (var i = 0; i<document.forms[0].year.length; i++) {
if (year == document.forms[0].year[i].value) {
document.forms[0].year.selectedIndex = i;
found = true;
break;
}
}
if (found == false) {
document.forms[0].year.selectedIndex = 0;
}
parent.parent.globals.setFocus(document.forms[0].cardname);
if (parent.controls.generateControls) parent.controls.generateControls();
}
function saveData()
{
// make sure all form element are valid objects, otherwise just skip & return!
if (((document.forms[0].cardname == "undefined") || (document.forms[0].cardname == "[object InputArray]")) ||
((document.forms[0].cards == "undefined") || (document.forms[0].cards == "[object InputArray]")) ||
((document.forms[0].cardnumber == "undefined") || (document.forms[0].cardnumber == "[object InputArray]")) ||
((document.forms[0].month == "undefined") || (document.forms[0].month == "[object InputArray]")) ||
((document.forms[0].year == "undefined") || (document.forms[0].year == "[object InputArray]")))
{
parent.controls.reloadDocument();
return;
}
parent.parent.globals.document.vars.cardname.value = document.forms[0].cardname.value;
if (document.forms[0].cards.length>0 && document.forms[0].cards.selectedIndex >=0) {
parent.parent.globals.document.vars.cardtype.value = document.forms[0].cards[document.forms[0].cards.selectedIndex].value;
}
else {
parent.parent.globals.document.vars.cardtype.value="";
}
parent.parent.globals.document.vars.cardnumber.value = document.forms[0].cardnumber.value;
parent.parent.globals.document.vars.month.value = document.forms[0].month.selectedIndex;
parent.parent.globals.document.vars.year.value = document.forms[0].year[document.forms[0].year.selectedIndex].value;
}
function checkData()
{
if (document.forms[0].cardname.value == "") {
alert("You must enter a cardholder name.");
document.forms[0].cardname.focus();
document.forms[0].cardname.select();
return false;
}
if (document.forms[0].cardnumber.value == "") {
alert("You must enter a credit card number.");
document.forms[0].cardnumber.focus();
document.forms[0].cardnumber.select();
return false;
}
// check cardnumber validity here
var cardNumber=document.forms[0].cardnumber.value;
for (var i=0; i<cardNumber.length; i++) {
if ("1234567890 -".indexOf(cardNumber.substring(i,i+1)) == -1) {
alert("'" + cardNumber + "' is not a valid card number.");
document.forms[0].cardnumber.focus();
document.forms[0].cardnumber.select();
return(false);
}
}
// do cardnumber check-digit validity here
var length=cardNumber.length;
var checkDigit=cardNumber.substring(length-1,length);
var tempCardNumber="";
for (var i=0; i<cardNumber.length; i++) {
if ("1234567890".indexOf(cardNumber.substring(i,i+1))>=0) {
tempCardNumber+=cardNumber.substring(i,i+1);
}
}
var length=tempCardNumber.length;
var checkSum=0;
for (var i=0; i<length-1; i++) {
var digit=tempCardNumber.substring(length-i-2,length-i-1);
var temp=digit * (1+((i+1)%2));
if (temp<10) checkSum=checkSum+temp;
else checkSum=checkSum+(temp-9);
}
checkSum=(10-(checkSum%10))%10;
if (checkSum != checkDigit) {
alert("'" + cardNumber + "' is not a valid card number.");
document.forms[0].cardnumber.focus();
document.forms[0].cardnumber.select();
return(false);
}
// do cardtype check
var cardType="";
if (cardNumber.substring(0,1)=="3" && cardNumber.substring(1,2)=="7") {
cardType="American Express";
cardCode="AX";
}
/*
else if (cardNumber.substring(0,1)=="5" && cardNumber.substring(1,2)=="6") {
cardType="BankCard";
cardCode="BC";
}
*/
/*
else if (cardNumber.substring(0,1)=="3") {
cardType="Diner's Club";
cardCode="DI";
}
*/
else if (cardNumber.substring(0,1)=="5") {
cardType="MasterCard";
cardCode="MC";
}
else if (cardNumber.substring(0,1)=="4") {
cardType="VISA";
cardCode="VI";
}
else if (cardNumber.substring(0,1)=="6") {
cardType="Discover Card";
cardCode="DC";
}
// else cardType="unknown";
parent.parent.globals.document.vars.cardcode.value = cardCode;
if (document.forms[0].cards.length>0) {
if (cardType != document.forms[0].cards[document.forms[0].cards.selectedIndex].value) {
var found=false;
var currentSelection = document.forms[0].cards.selectedIndex;
if (cardType!="") {
if (!confirm(cardNumber + " is a " + cardType + ". Correct?")) {
document.forms[0].cardnumber.focus();
document.forms[0].cardnumber.select();
return(false);
}
for (var i = 0; i < document.forms[0].cards.length; i++) {
if (document.forms[0].cards[i].value==cardType) {
document.forms[0].cards[i].selected=true;
parent.parent.globals.document.vars.cardtype.value=cardType;
found=true;
}
else {
document.forms[0].cards[i].selected=false;
}
}
if (found == false && currentSelection>=0) {
document.forms[0].cards[currentSelection].selected=true;
}
}
if (found==false) {
// is the card accepted?
var theFile = parent.parent.globals.getAcctSetupFilename(self);
var theCards = parent.parent.globals.GetNameValuePair(theFile,"New Acct Mode","CardTypes");
if (theCards == null || theCards == "") {
theCards = "AX,DC,MC,VI";
}
if (theCards.indexOf(cardCode)<0) {
alert(cardType + " is not accepted for payment.");
}
else {
alert("'" + cardNumber + "' is not a valid card number.");
}
document.forms[0].cardnumber.focus();
document.forms[0].cardnumber.select();
return(false);
}
}
// check credit card lengths
var length=tempCardNumber.length;
var validLength = false;
if (cardCode != "") {
if (cardCode == "AX") {
if (length == 16) validLength=true;
}
else if (cardCode == "MC") {
if (length == 16) validLength=true;
}
else if (cardCode == "VI") {
if (length == 13 || length == 16) validLength=true;
}
else if (cardCode == "DC") {
if (length == 16) validLength=true;
}
}
if (validLength == false) {
alert("'" + cardNumber + "' is not a valid card number. (Invalid length)");
document.forms[0].cardnumber.focus();
document.forms[0].cardnumber.select();
return(false);
}
}
// check month and year
var today = new Date();
var theMonth = today.getMonth();
var theYear = today.getYear()+1900;
var expiredFlag = false;
if (theYear > document.forms[0].year[document.forms[0].year.selectedIndex].value) {
expiredFlag = true;
}
else if (theYear == document.forms[0].year[document.forms[0].year.selectedIndex].value) {
if (theMonth > document.forms[0].month.selectedIndex) {
expiredFlag = true;
}
}
if (expiredFlag) {
alert("'" + cardNumber + "' appears to have expired.");
return(false);
}
return true;
}
// end hiding contents from old browsers -->

View File

@@ -0,0 +1,223 @@
<!-- -*- Mode: HTML; tab-width: 8; indent-tabs-mode: nil -*-
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.
-->
<HTML>
<HEAD>
<SCRIPT LANGUAGE = "JavaScript" ARCHIVE="asw.jar" SRC="clayer1.js">
</SCRIPT>
<SCRIPT LANGUAGE = "JavaScript" ARCHIVE="asw.jar" SRC="clayer2.js">
</SCRIPT>
<LINK REL=STYLESHEET TYPE="text/JavaScript" ARCHIVE="asw.jar" HREF="sheet.js" >
</LINK>
</HEAD>
<BODY BACKGROUND="images/navbar.gif" onLoad="loadData()" ID="clayer100">
<NOSCRIPT>
<CENTER><STRONG>
JavaScript support is disabled!<P>
Choose "Edit | Preferences | Advanced" and enable JavaScript, then reload this page.<P>
</CENTER></STRONG>
</NOSCRIPT>
<LAYER NAME="controls" WIDTH=620 HEIGHT=55 TOP=0 LEFT=0>
<LAYER NAME="help" LEFT=4 TOP=0 WIDTH=200 VISIBILITY=HIDE>
<LAYER LEFT=4 TOP=6>
<A HREF="about:blank" onClick="document.images['help'].src='images/hlp_down.gif';var flag=go('Help');document.images['help'].src='images/hlp_up.gif';return false"
onMouseOver="document.images['help'].src='images/hlp_mo.gif'"
onMouseOut="document.images['help'].src='images/hlp_up.gif'" ID="clayer101">
<IMG NAME="help" SRC="images/hlp_up.gif" BORDER=0 HEIGHT=32 WIDTH=32></A>
</LAYER>
<LAYER LEFT=12 TOP=43>
<B CLASS="clayer">HELP</B>
</LAYER>
</LAYER>
<LAYER NAME="exit" LEFT=50 TOP=0 WIDTH=200 VISIBILITY=HIDE>
<LAYER LEFT=4 TOP=6>
<A HREF="about:blank" onClick="document.images['exit'].src='images/ext_down.gif';var flag=go('Exit');document.images['exit'].src='images/ext_up.gif';return false"
onMouseOver="document.images['exit'].src='images/ext_mo.gif'"
onMouseOut="document.images['exit'].src='images/ext_up.gif'" ID="clayer102">
<IMG NAME="exit" SRC="images/ext_up.gif" BORDER=0 HEIGHT=32 WIDTH=32></A>
</LAYER>
<LAYER LEFT=12 TOP=43>
<B CLASS="clayer">EXIT</B>
</LAYER>
</LAYER>
<LAYER NAME="back" LEFT=260 TOP=0 WIDTH=200 VISIBILITY=HIDE>
<LAYER LEFT=4 TOP=6>
<A HREF="about:blank" onClick="document.images['back'].src='images/bk_down.gif';var flag=go('Back');document.images['back'].src='images/bk_up.gif';return false"
onMouseOver="document.images['back'].src='images/bk_mo.gif'"
onMouseOut="document.images['back'].src='images/bk_up.gif'" ID="clayer103">
<IMG NAME="back" SRC="images/bk_up.gif" BORDER=0 HEIGHT=32 WIDTH=32></A>
</LAYER>
<LAYER LEFT=4 TOP=43>
<B CLASS="clayer">BACK</B>
</LAYER>
</LAYER>
<LAYER NAME="next" LEFT=310 TOP=0 WIDTH=200 VISIBILITY=HIDE>
<LAYER LEFT=4 TOP=6>
<A HREF="about:blank" onClick="document.images['next'].src='images/nxt_down.gif';var flag=go('Next');document.images['next'].src='images/nxt_up.gif';return false"
onMouseOver="document.images['next'].src='images/nxt_mo.gif'"
onMouseOut="document.images['next'].src='images/nxt_up.gif'" ID="clayer104">
<IMG NAME="next" SRC="images/nxt_up.gif" BORDER=0 HEIGHT=32 WIDTH=32></A>
</LAYER>
<LAYER LEFT=8 TOP=43>
<B CLASS="clayer">NEXT</B>
</LAYER>
</LAYER>
<LAYER NAME="connectnow" LEFT=310 TOP=0 WIDTH=200 VISIBILITY=HIDE>
<LAYER LEFT=4 TOP=6>
<A HREF="about:blank" onClick="document.images['connectnow'].src='images/cn_down.gif';var flag=go('Next');document.images['connectnow'].src='images/cn_up.gif';return false"
onMouseOver="document.images['connectnow'].src='images/cn_mo.gif'"
onMouseOut="document.images['connectnow'].src='images/cn_up.gif'" ID="clayer105">
<IMG NAME="connectnow" SRC="images/cn_up.gif" BORDER=0 HEIGHT=32 WIDTH=32></A>
</LAYER>
<LAYER LEFT=8 TOP=43>
<B CLASS="clayer">CONNECT NOW</B>
</LAYER>
</LAYER>
<LAYER NAME="download" LEFT=310 TOP=0 WIDTH=200 VISIBILITY=HIDE>
<LAYER LEFT=4 TOP=6>
<A HREF="about:blank" onClick="document.images['download'].src='images/cn_down.gif';var flag=go('Next');document.images['download'].src='images/cn_up.gif';return false"
onMouseOver="document.images['download'].src='images/cn_mo.gif'"
onMouseOut="document.images['download'].src='images/cn_up.gif'" ID="clayer113">
<IMG NAME="download" SRC="images/cn_up.gif" BORDER=0 HEIGHT=32 WIDTH=32></A>
</LAYER>
<LAYER LEFT=8 TOP=43>
<B CLASS="clayer">CONNECT NOW</B>
</LAYER>
</LAYER>
<LAYER NAME="connectagain" LEFT=310 TOP=0 WIDTH=200 VISIBILITY=HIDE>
<LAYER LEFT=4 TOP=6>
<A HREF="about:blank" onClick="document.images['connectagain'].src='images/nxt_down.gif';var flag=go('Next');document.images['connectagain'].src='images/nxt_up.gif';return false"
onMouseOver="document.images['connectagain'].src='images/nxt_mo.gif'"
onMouseOut="document.images['connectagain'].src='images/nxt_up.gif'" ID="clayer106">
<IMG NAME="connectagain" SRC="images/nxt_up.gif" BORDER=0 HEIGHT=32 WIDTH=32></A>
</LAYER>
<LAYER LEFT=8 TOP=43>
<B CLASS="clayer">CONNECT AGAIN</B>
</LAYER>
</LAYER>
<LAYER NAME="connectserver" LEFT=310 TOP=0 WIDTH=200 VISIBILITY=HIDE>
<LAYER LEFT=4 TOP=6>
<A HREF="about:blank" onClick="document.images['connectserver'].src='images/cn_down.gif';var flag=go('Next');document.images['connectserver'].src='images/cn_up.gif';return false"
onMouseOver="document.images['connectserver'].src='images/cn_mo.gif'"
onMouseOut="document.images['connectserver'].src='images/cn_up.gif'" ID="clayer107">
<IMG NAME="connectserver" SRC="images/cn_up.gif" BORDER=0 HEIGHT=32 WIDTH=32></A>
</LAYER>
<LAYER LEFT=8 TOP=43>
<B CLASS="clayer">CONNECT TO NETSCAPE</B>
</LAYER>
</LAYER>
<LAYER NAME="connectisp" LEFT=310 TOP=0 WIDTH=200 VISIBILITY=HIDE>
<LAYER LEFT=4 TOP=6>
<A HREF="about:blank" onClick="document.images['connectisp'].src='images/cn_down.gif';var flag=go('Next');document.images['connectisp'].src='images/cn_up.gif';return false"
onMouseOver="document.images['connectisp'].src='images/cn_mo.gif'"
onMouseOut="document.images['connectisp'].src='images/cn_up.gif'" ID="clayer114">
<IMG NAME="connectisp" SRC="images/cn_up.gif" BORDER=0 HEIGHT=32 WIDTH=32></A>
</LAYER>
<LAYER LEFT=8 TOP=43>
<B CLASS="clayer">CONNECT TO ISP</B>
</LAYER>
</LAYER>
<LAYER NAME="done" LEFT=310 TOP=0 WIDTH=200 VISIBILITY=HIDE>
<LAYER LEFT=4 TOP=6>
<A HREF="about:blank" onClick="document.images['done'].src='images/dn_down.gif';var flag=go('Done');document.images['done'].src='images/dn_up.gif';return false"
onMouseOver="document.images['done'].src='images/dn_mo.gif'"
onMouseOut="document.images['done'].src='images/dn_up.gif'" ID="clayer108">
<IMG NAME="done" SRC="images/dn_up.gif" BORDER=0 HEIGHT=32 WIDTH=32></A>
</LAYER>
<LAYER LEFT=4 TOP=43>
<B CLASS="clayer">DONE</B>
</LAYER>
</LAYER>
<LAYER NAME="restart" LEFT=310 TOP=0 WIDTH=200 VISIBILITY=HIDE>
<LAYER LEFT=4 TOP=6>
<A HREF="about:blank" onClick="document.images['restart'].src='images/rb_down.gif';var flag=go('Restart');document.images['restart'].src='images/rb_up.gif';return false"
onMouseOver="document.images['restart'].src='images/rb_mo.gif'"
onMouseOut="document.images['restart'].src='images/rb_up.gif'" ID="clayer109">
<IMG NAME="restart" SRC="images/rb_up.gif" BORDER=0 HEIGHT=32 WIDTH=32></A>
</LAYER>
<LAYER LEFT=8 TOP=43>
<B CLASS="clayer">RESTART</B>
</LAYER>
</LAYER>
<LAYER NAME="setup" LEFT=500 TOP=0 WIDTH=200 VISIBILITY=HIDE>
<LAYER LEFT=30 TOP=6>
<A HREF="about:blank" onClick="document.images['setup'].src='images/ff_down.gif';var flag=go('Setup');document.images['setup'].src='images/ff_up.gif';return false"
onMouseOver="document.images['setup'].src='images/ff_mo.gif'"
onMouseOut="document.images['setup'].src='images/ff_up.gif'" ID="clayer110">
<IMG NAME="setup" SRC="images/ff_up.gif" BORDER=0 HEIGHT=32 WIDTH=32></A>
</LAYER>
<LAYER LEFT=0 TOP=43>
<B CLASS="clayer">ACCOUNT SETUP</B>
</LAYER>
</LAYER>
<LAYER NAME="connectlater" LEFT=550 TOP=0 WIDTH=200 VISIBILITY=HIDE>
<LAYER LEFT=4 TOP=6>
<A HREF="about:blank" onClick="document.images['later'].src='images/dn_down.gif';var flag=go('Later');document.images['later'].src='images/dn_up.gif';return false"
onMouseOver="document.images['later'].src='images/dn_mo.gif'"
onMouseOut="document.images['later'].src='images/dn_up.gif'" ID="clayer111">
<IMG NAME="later" SRC="images/dn_up.gif" BORDER=0 HEIGHT=32 WIDTH=32></A>
</LAYER>
<LAYER LEFT=10 TOP=43>
<B CLASS="clayer">DONE</B>
</LAYER>
</LAYER>
</LAYER>
</BODY>
</HTML>

View File

@@ -0,0 +1,955 @@
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil -*-
*
* 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.
*/
<!-- to hide script contents from old browsers
compromisePrincipals();
function page( file, section, variable )
{
this.type = "INFO";
this.file = file;
this.section = section;
this.variable = variable;
this.fullhistory = false;
this.top = false;
}
// the following three functions make sense if you go look at the "Next" clause in the function
// "go" below
// * a "condition" is read from the Account Setup init file (typically "Config\ACCTSET.INI"),
// from the section "[section]" and the given variable name, and if the given "value" matches,
// the "file" gets loaded
function condition( file, section, variable, value )
{
this.type = "CONDITION";
this.file = file;
this.section = section;
this.variable = variable;
this.value = value;
}
// * a "method" is given in "method" (a JavaScript method), and if when evaluated, it's value
// is "value", the given "file" gets loaded
function method( file, method, value )
{
this.type = "METHOD";
this.file = file;
this.method = method;
this.value = value;
}
// * an "action" simply loads the given "file"
function action( file )
{
this.type = "ACTION";
this.file = file;
}
function checkEditMode()
{
if ( parent.parent && parent.parent.globals && parent.parent.globals.document.vars.editMode.value.toLowerCase() == "yes" )
return true;
else
return false;
}
pages = new Array();
pages[ 0 ] = new Array();
pages[ 0 ][ 0 ] = new page( "main.htm",null,null);
pages[ 0 ][ 1 ] = new method( "ipreview/inpvw1.htm", "parent.content.go( 'Internet Preview' )", true );
pages[ 0 ][ 2 ] = new method( "preview/duepvw1.htm", "parent.content.go( 'Preview' )", true );
pages[ 0 ][ 3 ] = new method( "intro/intro1.htm", "parent.controls.checkShowIntroFlag( '' )", true );
//pages[0][4]=new condition("intro/intro1.htm","Mode Selection","Show_Intro_Screens","yes");
//pages[0][5]=new condition("needs1.htm","Mode Selection","ForceNew","yes");
//pages[0][6]=new condition("useAcct.htm","Mode Selection","ForceExisting","yes");
//pages[0][7]=new action("accounts.htm");
pages[ 1 ] = new Array();
pages[ 1 ][ 0 ] = new page( "accounts.htm", null, null);
pages[ 1 ][ 1 ] = new method( "needs1.htm", "parent.content.go( 'New Path' )", true );
pages[ 1 ][ 2 ] = new method( "useAcct.htm", "parent.content.go( 'Existing Path' )", true );
// New Account Path
pages[ 2 ] = new Array();
pages[ 2 ][ 0 ] = new page( "needs1.htm", "New Acct Mode", "ShowNewPathInfo" );
pages[ 2 ][ 1 ] = new condition( "newAcct.htm", "New Acct Mode", "ShowNewPathInfo", "no" );
pages[ 2 ][ 2 ] = new method( "newAcct.htm", "parent.content.go('')", true );
pages[ 3 ] = new Array();
pages[ 3 ][ 0 ] = new page( "newAcct.htm", "New Acct Mode", "AskPersonalInfo" );
pages[ 3 ][ 1 ] = new condition( "billing.htm", "New Acct Mode", "AskPersonalInfo", "no" );
pages[ 3 ][ 2 ] = new method( "billing.htm", "parent.content.go( '' )", true );
pages[ 4 ] = new Array();
pages[ 4 ][ 0 ] = new page( "billing.htm", "New Acct Mode", "AskBillingInfo" );
pages[ 4 ][ 1 ] = new condition( "modem1.htm", "New Acct Mode", "AskBillingInfo", "no" );
pages[ 4 ][ 2 ] = new method( "modem1.htm", "parent.content.go( '' )", true );
pages[ 5 ] = new Array();
pages[ 5 ][ 0 ] = new page( "modem1.htm", null, null );
pages[ 5 ][ 1 ] = new method( "dialinf1.htm", "parent.content.go( '' )", true );
pages[ 6 ] = new Array();
pages[ 6 ][ 0 ] = new page( "dialinf1.htm", null, null );
pages[ 6 ][ 1 ] = new method( "dialinf2.htm", "parent.content.go( '' )", true );
pages[ 7 ] = new Array();
pages[ 7 ][ 0 ] = new page( "dialinf2.htm", null, null );
pages[ 7 ][ 1 ] = new method( "download.htm", "parent.content.go( 'New Path' )", true );
pages[ 7 ][ 2 ] = new method( "connect2.htm", "parent.content.go( 'Existing Path' )", true );
pages[ 53 ] = new Array();
pages[ 53 ][ 0 ] = new page( "download.htm", null, null );
pages[ 53 ][ 1 ] = new method( "1step.htm", "parent.content.go( '' )", true );
pages[ 54 ] = new Array();
pages[ 54 ][ 0 ] = new page( "1step.htm", null, null );
pages[ 55 ] = new Array();
pages[ 55 ][ 0 ] = new page( "compwrap.htm", null, null );
pages[ 55 ][ 1 ] = new method( "moreinfo.htm", "parent.content.go( '' )", true );
pages[ 56 ] = new Array();
pages[ 56 ][ 0 ] = new page( "moreinfo.htm", null, null );
pages[ 56 ][ 1 ] = new method( "2step.htm", "parent.content.go( '' )", true );
pages[ 57 ] = new Array();
pages[ 57 ][ 0 ] = new page( "2step.htm", null, null );
pages[ 57 ][ 1 ] = new method( "register.htm", "parent.content.go( '' )", true );
pages[ 8 ] = new Array();
pages[ 8 ][ 0 ] = new page( "connect1.htm", null, null );
pages[ 8 ][ 1 ] = new method( "editfour.htm", "checkEditMode('')", true );
pages[ 8 ][ 2 ] = new method( "register.htm", "parent.content.go('')", true );
pages[ 9 ] = new Array();
pages[ 9 ][ 0 ] = new page( "register.htm", null, null );
// Existing Account Path
pages[10]=new Array();
pages[10][0]=new page("useAcct.htm",null,null);
pages[10][1]=new condition("needs2.htm","Mode Selection","ExistingSRFile","...");
pages[10][2]=new method("needs2.htm","parent.content.go('')",true);
pages[11]=new Array();
pages[11][0]=new page("needs2.htm","Existing Acct Mode","ShowExistingPathInfo");
pages[11][1]=new condition("acctInfo.htm","Existing Acct Mode","ShowExistingPathInfo","no");
pages[11][2]=new method("acctInfo.htm","parent.content.go('')",true);
pages[12]=new Array();
pages[12][0]=new page("acctInfo.htm","Existing Acct Mode","AskName");
pages[12][1]=new condition("dial.htm","Existing Acct Mode","AskName","no");
pages[12][2]=new method("dial.htm","parent.content.go('')",true);
pages[13]=new Array();
pages[13][0]=new page("dial.htm","Existing Acct Mode","AskPhone");
pages[13][1]=new condition("namepw.htm","Existing Acct Mode","AskPhone","no");
pages[13][2]=new method("namepw.htm","parent.content.go('')",true);
pages[14]=new Array();
pages[14][0]=new page("namepw.htm","Existing Acct Mode","AskLogin");
pages[14][1]=new condition("email.htm","Existing Acct Mode","AskLogin","no");
pages[14][2]=new method("email.htm","parent.content.go('')",true);
pages[15]=new Array();
pages[15][0]=new page("email.htm","Existing Acct Mode","AskEmail");
pages[15][1]=new condition("servers.htm","Existing Acct Mode","AskEmail","no");
pages[15][2]=new method("servers.htm","parent.content.go('')",true);
pages[16]=new Array();
pages[16][0]=new page("servers.htm","Existing Acct Mode","AskHosts");
pages[16][1]=new condition("dns.htm","Existing Acct Mode","AskHosts","no");
pages[16][2]=new method("dns.htm","parent.content.go('')",true);
pages[17]=new Array();
pages[17][0]=new page("dns.htm","Existing Acct Mode","AskDNS");
pages[17][1]=new condition("publish.htm","Existing Acct Mode","AskDNS","no");
pages[17][2]=new method("publish.htm","parent.content.go('')",true);
pages[18]=new Array();
pages[18][0]=new page("publish.htm","Existing Acct Mode","AskPublishing");
pages[18][1]=new condition("modem1.htm","Existing Acct Mode","AskPublishing","no");
pages[18][2]=new method("modem1.htm","parent.content.go('')",true);
pages[19]=new Array();
pages[19][0]=new page("connect2.htm",null,null);
pages[19][1]=new method(null,"parent.content.go('Connect Now')",true);
pages[19][2]=new method("error.htm","parent.content.go('error.htm')",true);
// Final Screens
pages[ 20 ] = new Array();
pages[ 20 ][ 0 ] = new page( "ok.htm", null, null );
pages[ 21 ] = new Array();
pages[ 21 ][ 0 ] = new page( "okreboot.htm", null, null );
pages[ 22 ] = new Array();
pages[ 22 ][ 0 ] = new page( "error.htm", null, null );
pages[ 22 ][ 1 ] = new method( "register.htm", "parent.content.go( 'New Path' )", true );
pages[ 22 ][ 2 ] = new method( "connect2.htm", "parent.content.go( 'Existing Path' )", true );
pages[ 23 ] = new Array();
pages[ 23 ][ 0 ] = new page( "later.htm", null, null );
pages[ 23 ][ 1 ] = new method( "later.htm", "parent.content.go( 'Done' )", true );
pages[ 59 ] = new Array();
pages[ 59 ][ 0 ] = new page( "error2.htm", null, null );
pages[ 59 ][ 1 ] = new method( "1step.htm", "parent.content.go( '' )", true );
// Settings
pages[24]=new Array();
pages[24][0]=new page("settings.htm",null,null);
// About Box
pages[25]=new Array();
pages[25][0]=new page("aboutbox.htm",null,null);
// Manage IAS Servers
pages[26]=new Array();
pages[26][0]=new page("addias.htm",null,null);
// Manage NCI Servers
pages[27]=new Array();
pages[27][0]=new page("addnci.htm",null,null);
// Dialup Edition Preview Screens
pages[28]=new Array();
pages[28][0]=new page("preview/duepvw1.htm",null,null);
//pages[28][0].fullhistory=true;
pages[28][1]=new method("preview/duepvw2.htm","parent.content.go('')",true);
pages[29]=new Array();
pages[29][0]=new page("preview/duepvw2.htm",null,null);
pages[29][1]=new method("preview/duepvw3.htm","parent.content.go('')",true);
pages[30]=new Array();
pages[30][0]=new page("preview/duepvw3.htm",null,null);
pages[30][1]=new method("preview/duepvw4.htm","parent.content.go('')",true);
pages[31]=new Array();
pages[31][0]=new page("preview/duepvw4.htm",null,null);
pages[31][1]=new method("preview/duepvw5.htm","parent.content.go('')",true);
pages[32]=new Array();
pages[32][0]=new page("preview/duepvw5.htm",null,null);
pages[32][1]=new method("preview/duepvw7a.htm","parent.content.go('')",true);
//The following array is ignored as reference to Conference feature is removed
pages[33]=new Array();
pages[33][0]=new page("preview/duepvw6.htm",null,null);
pages[33][1]=new method("preview/duepvw7.htm","parent.content.go('')",true);
//The following array is ignored as reference to Netcaster feature is removed
pages[34]=new Array();
pages[34][0]=new page("preview/duepvw7.htm",null,null);
pages[34][1]=new method("preview/duepvw7a.htm","parent.content.go('')",true);
pages[35]=new Array();
pages[35][0]=new page("preview/duepvw7a.htm",null,null);
pages[35][1]=new method("preview/duepvw8.htm","parent.content.go('')",true);
pages[36]=new Array();
pages[36][0]=new page("preview/duepvw8.htm",null,null);
//pages[36][1]=new method("main.htm","parent.content.go('')",true);
pages[36][1]=new action("main.htm");
// Internet Preview Screens
pages[37]=new Array();
pages[37][0]=new page("ipreview/inpvw1.htm",null,null);
//pages[37][0].fullhistory=true;
pages[37][1]=new method("ipreview/inpvw2.htm","parent.content.go('')",true);
pages[38]=new Array();
pages[38][0]=new page("ipreview/inpvw2.htm",null,null);
pages[38][1]=new method("ipreview/inpvw3.htm","parent.content.go('')",true);
pages[39]=new Array();
pages[39][0]=new page("ipreview/inpvw3.htm",null,null);
pages[39][1]=new method("ipreview/inpvw4.htm","parent.content.go('')",true);
pages[40]=new Array();
pages[40][0]=new page("ipreview/inpvw4.htm",null,null);
pages[40][1]=new method("ipreview/inpvw5.htm","parent.content.go('')",true);
pages[41]=new Array();
pages[41][0]=new page("ipreview/inpvw5.htm",null,null);
pages[41][1]=new method("ipreview/inpvw5a.htm","parent.content.go('')",true);
pages[42]=new Array();
pages[42][0]=new page("ipreview/inpvw6.htm",null,null);
pages[42][1]=new method("ipreview/inpvw7.htm","parent.content.go('')",true);
pages[43]=new Array();
pages[43][0]=new page("ipreview/ipreview/inpvw7.htm",null,null);
//pages[43][1]=new method("main.htm","parent.content.go('')",true);
pages[43][1]=new action("main.htm"); // XXX For Deluxe, change "main.htm" to "ipreview/inpvw8.htm"
pages[44]=new Array();
pages[44][0]=new page("ipreview/inpvw8.htm",null,null);
//pages[44][1]=new method("main.htm","parent.content.go('')",true);
pages[44][1]=new action("main.htm");
// start screen
pages[45]=new Array();
pages[45][0]=new page("start.htm",null,null);
//pages[45][0].top=true;
// intro screens
pages[46]=new Array();
pages[46][0]=new page("intro/intro1.htm",null,null);
//pages[46][0].fullhistory=true;
pages[46][1]=new method("intro/intro2.htm","parent.content.go('')",true);
pages[47]=new Array();
pages[47][0]=new page("intro/intro2.htm",null,null);
pages[47][1]=new method("intro/intro3.htm","parent.content.go('')",true);
pages[48]=new Array();
pages[48][0]=new page("intro/intro3.htm",null,null);
pages[48][1]=new method("intro/intro4.htm","parent.content.go('')",true);
pages[49]=new Array();
pages[49][0]=new page("intro/intro4.htm",null,null);
pages[49][1]=new method("intro/intro5.htm","parent.content.go('')",true);
pages[50]=new Array();
pages[50][0]=new page("intro/intro5.htm",null,null);
pages[50][1]=new method("intro/intro6.htm","parent.content.go('')",true);
pages[51]=new Array();
pages[51][0]=new page("intro/intro6.htm",null,null);
//pages[51][1]=new condition("needs1.htm","Mode Selection","ForceNew","yes");
//pages[51][2]=new condition("useAcct.htm","Mode Selection","ForceExisting","yes");
pages[51][1]=new action("main.htm");
pages[52]=new Array();
pages[52][0]=new page("editfour.htm",null,null);
pages[52][1]=new method("register.htm","parent.content.go('register.htm')",true);
pages[52][2]=new method("ok.htm","parent.content.go('ok.htm')",true);
pages[52][3]=new method("okreboot.htm","parent.content.go('okreboot.htm')",true);
pages[52][4]=new method("error.htm","parent.content.go('error.htm')",true);
// 53 - 57 are used in the New Account path
// Added to accommodate Netcenter Screen
pages[58]=new Array();
pages[58][0]=new page("ipreview/inpvw5a.htm",null,null);
pages[58][1]=new method("ipreview/inpvw6.htm","parent.content.go('')",true);
// NB: if you add new pages here, make sure that the array indices are not already
// being used
function checkShowIntroFlag()
{
if ( parent && parent.parent && parent.parent.globals )
{
var theFile = parent.parent.globals.getAcctSetupFilename( self );
var theFlag = parent.parent.globals.GetNameValuePair( theFile, "Mode Selection", "Show_Intro_Screens" );
if ( theFlag != null )
{
theFlag = theFlag.toLowerCase();
}
return ( theFlag == "yes" );
}
else
{
return false;
}
}
// return the page number (according to ordinals along the path taken) of "file"
function findPageOffset( file )
{
// * take off any path information preceeding file name
if ( ( slashPos = file.lastIndexOf( "/" ) ) > 0 )
{
file = file.substring( slashPos + 1, file.length );
}
// * loop through all the page information and attempt to find a page name matching
// "file"
var pageNum = -1;
for ( var x = 0; x < pages.length; x++ )
{
for ( var y = 0; y < pages[ x ].length; y++ )
{
if ( pages[ x ][ y ].type== "INFO" )
{
var theName = pages[ x ][ y ].file;
// * again, remove any path
if ( ( slashPos = theName.lastIndexOf( "/" ) ) > 0 )
{
theName = theName.substring( slashPos + 1, theName.length );
}
// * pages[ x ][ y ].file
if ( theName == file )
{
// * found it
pageNum = x;
}
// * break here so we don't keep testing all the rest of the array entries after
// we've found the "INFO" entry
break;
}
}
// * break if we've found it
if ( pageNum >= 0 )
break;
}
if ( parent && parent.parent && parent.parent.globals )
{
parent.parent.globals.debug( "\tfindPageOffset: '" +file+ "' is " + pageNum );
}
return pageNum;
}
// main navigational function in Account Setup, "msg" is typically the name of a button
// that was pressed
function go( msg )
{
netscape.security.PrivilegeManager.enablePrivilege( "AccountSetup" );
var editMode = false;
var globals = null;
if ( parent && parent.parent && parent.parent.globals )
globals = parent.parent.globals;
if ( globals != null )
editMode = ( globals.document.vars.editMode.value.toLowerCase() == "yes" ) ? true : false;
// var formName = new String(parent.content.location);
var formName = "" + parent.content.location;
if ( ( x = formName.lastIndexOf( "/" ) ) > 0 )
formName = formName.substring( x + 1, formName.length );
var pageNum = findPageOffset( formName );
if ( pageNum >= 0 )
formName = pages[ pageNum ][ 0 ].file;
// var startingPageName = parent.content.document.forms[0].name;
var startingPageName = formName;
var thePlatform = globals.getPlatform();
var separatorString = ",";
// process messages
if ( msg == "Next" )
{
// * if something is wrong with the current page content, don't do anything
if ( !parent || !parent.content )
return;
// * if we're currently loading, don't do anything
if ( parent.content.loading )
return;
if ( editMode != true )
{
if ( parent.content.checkData && ( parent.content.checkData() == false ) )
return;
// workaround for onunload handler bugs in 4.0b2; no longer using onunload handler
if ( parent.content.saveData != null )
parent.content.saveData();
}
var pageName = startingPageName;
if ( globals != null )
globals.debug("\ngo: Starting at page " +pageName);
var acctSetupFile = "";
if ( globals != null )
acctSetupFile = globals.getAcctSetupFilename( self );
var moved = false;
var active = true;
while ( active )
{
active = false;
var pageNum = findPageOffset( pageName );
if ( pageNum < 0 )
{
alert( "The file '" + pageName + "' is unknown to Account Setup." );
return;
}
for ( var x = 0; x < pages[ pageNum ].length; x++ )
{
if ( editMode == false && pages[ pageNum ][ x ].type == "CONDITION" )
{
var theFlag = globals.GetNameValuePair( acctSetupFile, pages[ pageNum ][ x ].section,
pages[ pageNum ][ x ].variable );
theFlag = theFlag.toLowerCase();
if ( pages[ pageNum ][ x ].value == "..." )
{
if ( theFlag != null && theFlag != "" )
{
active = moved = true;
pageName = pages[ pageNum ][ x ].file;
break;
}
}
else if ( theFlag == pages[ pageNum ][ x ].value )
{
active = moved = true;
pageName = pages[ pageNum ][ x ].file;
break;
}
}
else if ( moved == false && pages[ pageNum ][ x ].type == "METHOD" )
{
var val = eval( pages[ pageNum ][ x ].method );
if ( globals != null )
{
globals.debug( "\tMethod: " + pages[ pageNum ][ x ].method );
globals.debug( "\tReturned: " + val );
}
if ( val == pages[ pageNum ][ x ].value )
{
active = moved = true;
pageName = pages[ pageNum ][ x ].file;
break;
}
}
else if ( moved == false && pages[ pageNum ][ x ].type == "ACTION" )
{
globals.debug( "\tAction: " + pages[ pageNum ][ x ].file );
active = false;
moved = true;
pageName = pages[ pageNum ][ x ].file;
break;
}
}
}
if ( pageName != startingPageName )
{
if ( globals != null )
{
if ( globals.document.setupPlugin.NeedReboot() == true )
globals.forceReboot( pageName );
else
{
if ( pageName == "main.htm" )
globals.document.vars.pageHistory.value = "";
else
globals.document.vars.pageHistory.value += startingPageName + separatorString;
globals.debug( "go: Moving to page " + pageName );
pages.current = pageName;
parent.content.location.replace( pageName );
if ( helpWindow && helpWindow != null )
{
if ( helpWindow.closed == false )
{
doHelp( pageName );
}
}
}
}
else
{
pages.current = pageName;
if ( pages[ pageNum ][ 0 ].top == true )
{
parent.location.replace( pageName );
}
else
{
var theLoc = "" + parent.content.location;
if ( ( x = theLoc.lastIndexOf( "/" ) ) > 0 )
{
pageName = theLoc.substring( 0, x + 1 ) + pageName;
}
parent.content.location.replace( pageName );
}
}
}
}
else if ( msg == "Back" )
{
if ( parent.content.loading )
return;
// workaround for onunload handler bugs in 4.0b2; no longer using onunload handler
if ( parent.content.saveData !=null )
parent.content.saveData();
// parent.content.history.back();
if ( parent.content.verifyData )
{
var verifyFlag = parent.content.verifyData();
if ( verifyFlag != true )
{
generateControls();
return;
}
}
if ( globals != null )
{
var historyCleanup = true;
while ( historyCleanup == true )
{
historyCleanup = false;
var pageHistory = globals.document.vars.pageHistory.value;
if ( pageHistory!="" )
{
var pageName="";
x = pageHistory.lastIndexOf( separatorString );
pageHistory = pageHistory.substring( 0, x );
x = pageHistory.lastIndexOf( separatorString );
if ( x >= 0 )
{
pageName = pageHistory.substring( x + 1, pageHistory.length );
globals.document.vars.pageHistory.value = pageHistory.substring( 0, x + 1 );
if ( ( pageName == "register.htm" ) || ( pageName == "error.htm" ) ||
( pageName == "error2.htm" ) )
historyCleanup = true;
}
else
{
pageName=pageHistory;
globals.document.vars.pageHistory.value="";
}
}
}
globals.debug("go: Moving back to page " + pageName );
if ( pageName == "undefined" )
return;
pages.current = pageName;
if ( pageNum >= 0 && pages[ pageNum ][ 0 ].fullhistory == true )
parent.parent.history.back();
else
parent.content.location.replace( pageName );
if ( helpWindow && helpWindow != null )
{
if ( helpWindow.closed == false )
doHelp( pageName );
}
}
else
{
if ( pages[ pageNum ][ 0 ].fullhistory == true )
parent.parent.history.back();
else
parent.content.history.back();
}
}
else if ( msg == "Help" )
{
doHelp( formName );
}
else if ( msg == "Show Screen" )
{
var pageNum = findPageOffset( formName );
if ( pageNum>=0 )
{
var section = pages[ pageNum ][ 0 ].section;
var variable = pages[ pageNum ][ 0 ].variable;
if ( section != null && section!="" && variable != null && variable!="" )
{
showScreenToggle = true;
var acctSetupFile = globals.getAcctSetupFilename( self );
var theFlag = globals.GetNameValuePair( acctSetupFile, section, variable);
theFlag = theFlag.toLowerCase();
if ( theFlag == "no" )
theFlag="yes";
else
theFlag="no";
parent.parent.SetNameValuePair( acctSetupFile, section, variable, theFlag);
}
}
}
else if ( msg == "Later" )
{
if ( parent.content.go( "Later" ) == true )
{
if ( ( globals.document.vars.editMode.value.toLowerCase() != "yes") ||
( confirm( "Normally, this would complete the Account Setup process and quit Communicator. Would you like to quit now?" ) == true ) )
{
// parent.content.location.href = "later.htm";
if ( globals != null )
{
if ( globals.document.vars.editMode.value.toLowerCase() != "yes")
globals.saveGlobalData();
globals.document.setupPlugin.QuitNavigator();
}
window.close();
}
}
}
else if ( msg == "Done" )
{
if ( globals != null )
{
if ( globals.document.vars.editMode.value.toLowerCase() != "yes" )
globals.saveGlobalData();
if ( ( globals.document.vars.editMode.value.toLowerCase() != "yes") ||
( confirm( "Normally, this would complete the Account Setup process and quit Communicator. Would you like to quit now?") == true ) )
{
globals.document.setupPlugin.QuitNavigator();
window.close();
}
}
}
else if ( msg == "Exit" )
{
var longMsgFlag = true;
var confirmFlag = false;
if ( formName.indexOf( "main.htm" ) >= 0 )
longMsgFlag = false;
else if ( formName.indexOf( "aboutbox.htm" ) >= 0 )
longMsgFlag = false;
else if ( formName.indexOf( "error.htm" ) >= 0 )
longMsgFlag = false;
else if ( formName.indexOf( "error2.htm" ) >= 0 )
longMsgFlag = false;
else if ( formName.indexOf( "intro/" ) >= 0 )
longMsgFlag = false;
else if ( formName.indexOf( "ipreview/" ) >= 0 )
longMsgFlag = false;
else if ( formName.indexOf( "preview/" ) >= 0 )
longMsgFlag = false;
if ( longMsgFlag == true )
{
if ( globals.document.vars.editMode.value.toLowerCase() != "yes" )
confirmFlag = confirm( "You haven't finished setting up your account. Are you sure you want to quit Account Setup?" );
else // this is for the account setup editor
confirmFlag = confirm( "Are you sure you want to quit the Account Setup Editor?" );
}
else
confirmFlag = confirm( "Quit Account Setup?" );
if ( confirmFlag == true )
{
if ( globals != null )
{
globals.saveGlobalData();
globals.document.setupPlugin.QuitNavigator();
}
window.close();
}
}
else if ( msg == "Restart" )
{
if ( globals.document.vars.editMode.value.toLowerCase() != "yes" )
{
globals.saveGlobalData();
globals.document.setupPlugin.Reboot( null );
window.close();
}
else
alert( "Cannot reboot in edit mode." );
}
else if ( msg == "About" )
{
globals.document.vars.pageHistory.value += startingPageName + separatorString;
pages.current = "aboutbox.htm";
parent.content.location.replace( "aboutbox.htm" );
}
else if ( msg == "Setup" )
{
globals.document.vars.pageHistory.value += startingPageName + separatorString;
var acctSetupFile = globals.getAcctSetupFilename( self );
var newPathFlag = globals.GetNameValuePair( acctSetupFile, "Mode Selection", "ForceNew" );
newPathFlag = newPathFlag.toLowerCase();
var existingPathFlag = globals.GetNameValuePair( acctSetupFile, "Mode Selection", "ForceExisting" );
existingPathFlag = existingPathFlag.toLowerCase();
var pageName="";
if ( newPathFlag == "yes" && existingPathFlag != "yes")
pageName = "needs1.htm";
else if ( existingPathFlag == "yes" && newPathFlag != "yes" )
pageName = "useAcct.htm";
else
pageName = "accounts.htm";
parent.content.location.replace( pageName );
if ( helpWindow && helpWindow != null )
{
if ( helpWindow.closed == false )
doHelp( pageName );
}
}
else if ( msg == "Edit Settings" )
{
globals.document.vars.pageHistory.value += startingPageName + separatorString;
pages.current = "settings.htm";
parent.content.location.replace( "../CG/docs/settings.htm" );
}
else if ( msg == "Manage Servers" )
{
globals.document.vars.pageHistory.value += startingPageName + separatorString;
pages.current = "editregs.htm";
parent.content.location.replace( "../CG/docs/editregs.htm" );
}
else if ( msg == "Manage Accounts" )
{
globals.document.vars.pageHistory.value += startingPageName + separatorString;
pages.current = "editisps.htm";
parent.content.location.replace( "../CG/docs/editisps.htm" );
}
else if ( msg == "Edit IAS" )
{
if ( thePlatform == "Macintosh" )
globals.document.vars.pageHistory.value += "../../Tools/CG/docs/" + startingPageName + separatorString;
else
globals.document.vars.pageHistory.value += "../../../AccountSetupTools/CG/docs/" + startingPageName + separatorString;
pages.current = "addias.htm";
parent.content.location.replace("ias/addias.htm");
}
else if ( msg == "Edit NCI" )
{
if (thePlatform == "Macintosh")
globals.document.vars.pageHistory.value += "../../Tools/CG/docs/" + startingPageName + separatorString;
else
globals.document.vars.pageHistory.value += "../../../AccountSetupTools/CG/docs/" + startingPageName + separatorString;
pages.current = "addnci.htm";
parent.content.location.replace( "nci/addnci.htm" );
}
else if ( msg == "Screen Options" )
{
globals.document.vars.pageHistory.value += startingPageName + separatorString;
if ( formName == "namepw.htm" )
{
pages.current = "asktty.htm";
parent.content.location.replace( "../CG/docs/asktty.htm" );
}
//else if (formName == "servers.htm") {
// pages.current = "askserv.htm";
// parent.content.location.replace("../CG/docs/askserv.htm");
// }
else if ( formName == "ok.htm" )
{
pages.current = "asksvinf.htm";
parent.content.location.replace( "../CG/docs/asksvinf.htm" );
}
else if ( formName == "okreboot.htm" )
{
pages.current = "asksvinf.htm";
parent.content.location.replace( "../CG/docs/asksvinf.htm" );
}
else if ( formName == "billing.htm" )
{
pages.current = "editcc.htm";
parent.content.location.replace( "../CG/docs/editcc.htm" );
}
else if ( formName == "main.htm" )
{
pages.current = "settings.htm";
parent.content.location.replace( "../CG/docs/settings.htm" );
}
else if ( formName == "useAcct.htm" )
{
pages.current = "editisps.htm";
parent.content.location.replace( "../CG/docs/editisps.htm" );
}
else if ( formName == "connect1.htm" )
{
pages.current = "editregs.htm";
parent.content.location.replace( "../CG/docs/editregs.htm" );
}
} //end screen options special casing
else
parent.content.go( msg );
// generateControls();
}
function loadData()
{
var file="";
// preLoadImages();
if (parent && parent.parent && parent.parent.globals) {
file = parent.parent.globals.document.vars.startupFile.value;
}
if (file != null && file != "") {
if (parent && parent.parent && parent.parent.globals) {
parent.parent.globals.document.vars.startupFile.value = "";
}
parent.content.location.replace(file);
}
generateControls();
}
// end hiding contents from old browsers -->

View File

@@ -0,0 +1,876 @@
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil -*-
*
* 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.
*/
<!-- to hide script contents from old browsers
// globals
var theToolBar = null; // a global pointer to our toolbar - should it exist
var helpWindow = null;
var preLoaded = false;
var backImages = null;
var helpImages = null;
var exitImages = null;
var nextImages = null;
var connectImages = null;
var doneImages = null;
var ffImages = null;
var rebootImages = null;
compromisePrincipals();
function preLoadImages()
{
if ( preLoaded == false )
{
//img[0] is the normal image
//img[1] is the mouseover
//img[2] is the mousedown
backImages = new Array;
helpImages = new Array;
exitImages = new Array;
nextImages = new Array;
connectImages = new Array;
doneImages = new Array;
ffImages = new Array;
rebootImages = new Array;
backImages[0] = new Image(32,32);
backImages[0].src = "images/bk_up.gif";
backImages[1] = new Image(32,32);
backImages[1].src = "images/bk_mo.gif";
backImages[2] = new Image(32,32);
backImages[2].src = "images/bk_down.gif";
helpImages[0] = new Image(32,32);
helpImages[0].src = "images/hlp_up.gif";
helpImages[1] = new Image(32,32);
helpImages[1].src = "images/hlp_mo.gif";
helpImages[2] = new Image(32,32);
helpImages[2].src = "images/hlp_down.gif";
exitImages[0] = new Image(32,32);
exitImages[0].src = "images/ext_up.gif";
exitImages[1] = new Image(32,32);
exitImages[1].src = "images/ext_mo.gif";
exitImages[2] = new Image(32,32);
exitImages[2].src = "images/ext_down.gif";
nextImages[0] = new Image(32,32);
nextImages[0].src = "images/nxt_up.gif";
nextImages[1] = new Image(32,32);
nextImages[1].src = "images/nxt_mo.gif";
nextImages[2] = new Image(32,32);
nextImages[2].src = "images/nxt_down.gif";
rebootImages[0] = new Image(32,32);
rebootImages[0].src = "images/rb_up.gif";
rebootImages[1] = new Image(32,32);
rebootImages[1].src = "images/rb_mo.gif";
rebootImages[2] = new Image(32,32);
rebootImages[2].src = "images/rb_down.gif";
connectImages[0] = new Image(32,32);
connectImages[0].src = "images/cn_up.gif";
connectImages[1] = new Image(32,32);
connectImages[1].src = "images/cn_mo.gif";
connectImages[2] = new Image(32,32);
connectImages[2].src = "images/cn_down.gif";
doneImages[0] = new Image(32,32);
doneImages[0].src = "images/dn_up.gif";
doneImages[1] = new Image(32,32);
doneImages[1].src = "images/dn_mo.gif";
doneImages[2] = new Image(32,32);
doneImages[2].src = "images/dn_down.gif";
ffImages[0] = new Image(32,32);
ffImages[0].src = "images/ff_up.gif";
ffImages[1] = new Image(32,32);
ffImages[1].src = "images/ff_mo.gif";
ffImages[2] = new Image(32,32);
ffImages[2].src = "images/ff_down.gif";
preLoaded = true;
}
}
function generateControls()
{
var editMode = false;
var showAcctsetEdit = false;
var showRegFileEdit = false;
var showISPFileEdit = false;
var showExit = true;
var showHelp = true;
var showBack = true;
var showNext = true;
var showConnectServer = false;
var showConnectISP = false;
var showConnectNow = false;
var showDownload = false;
var showConnectLater = false;
var showAgain = false;
var showDone = false;
var showRestart = false;
var showSetupShortcut = false;
var showInternet = false;
var showScreenToggle = false;
var screenVisible = true;
var showScreenOptions = false;
netscape.security.PrivilegeManager.enablePrivilege( "AccountSetup" );
if ( parent && parent.parent && parent.parent.globals )
{
editMode = ( parent.parent.globals.document.vars.editMode.value.toLowerCase() == "yes" ) ? true : false;
}
// var formName = parent.content.location.toString();
var formName = "" + parent.content.location;
if ( formName != null && formName != "" && formName != "about:blank" )
{
if ( ( x = formName.lastIndexOf( "/" ) ) > 0 )
formName = formName.substring( x + 1, formName.length );
if ( editMode == true )
{
var section = null;
var variable = null;
var pageNum = findPageOffset( formName );
if ( pageNum >= 0 )
{
section = pages[ pageNum ][ 0 ].section;
variable = pages[ pageNum ][ 0 ].variable;
if ( section!=null && section!="" && variable!=null && variable!="" )
{
showScreenToggle = true;
var theFile = parent.parent.globals.getAcctSetupFilename( self );
var theFlag = parent.parent.globals.GetNameValuePair( theFile, section, variable );
theFlag = theFlag.toLowerCase();
if ( theFlag == "no" )
screenVisible = false;
}
}
}
if ( formName == "main.htm" )
{
showBack = false;
showNext = false;
if ( navigator.javaEnabled() == false )
{
showNext = false;
editMode = false;
showAcctsetEdit = false;
showISPFileEdit = false;
showRegFileEdit = false;
document.writeln( "<CENTER><STRONG>Java support is disabled!<P>\n" );
document.writeln( "Choose Options | Network Preferences and enable Java, then try again.</STRONG></CENTER>\n" );
}
else if ( !navigator.mimeTypes[ "application/x-netscape-autoconfigure-dialer" ] )
{
showNext = false;
editMode = false;
showAcctsetEdit = false;
showISPFileEdit = false;
showRegFileEdit = false;
document.writeln( "<CENTER><STRONG>The 'Account Setup Plugin' is not installed!<P>\n" );
document.writeln( "Please install the plugin, then run 'Account Setup' again.</STRONG></CENTER>\n" );
}
else if ( parent.parent.globals.document.setupPlugin == null )
{
showNext = false;
editMode = false;
}
if ( editMode == true )
{
showAcctsetEdit = true;
showScreenOptions = true;
}
}
else if ( editMode == true && formName == "useAcct.htm" )
{
showScreenOptions = true;
}
else if ( editMode == true && formName == "servers.htm" )
{
showScreenOptions = false;
}
else if ( editMode == true && formName == "billing.htm" )
{
showScreenOptions = true;
}
else if ( formName == "accounts.htm" )
{
showNext = false;
}
else if ( formName == "compare.htm" )
{
}
else if ( formName == "connect1.htm" )
{
showNext = false;
showConnectServer = true;
if ( editMode == true )
showScreenOptions = true;
}
else if ( formName == "download.htm" )
{
showNext = false;
showConnectServer = true;
if ( editMode == true )
showScreenOptions = true;
}
else if ( formName == "connect2.htm" )
{
showNext = false;
showExit = false;
showConnectNow = true;
showConnectLater = true;
}
else if ( formName == "1step.htm" )
{
showNext = false;
showExit = false;
showHelp = false;
if ( editMode == true )
showBack = true;
}
//else if ( formName == "2stpwrap.htm" )
else if ( formName == "2step.htm" )
{
showNext = false;
showConnectISP = true;
if ( editMode == true )
showScreenOptions = true;
}
else if ( formName == "register.htm" )
{
showHelp = false;
showBack = false;
showNext = false;
if ( editMode == true )
showBack = true;
}
else if ( formName == "ok.htm" )
{
showScreenOptions = true;
showBack = false;
showExit = false;
showNext = false;
showInternet = true;
showDone = true;
if ( editMode == true )
showBack = true;
}
else if ( formName == "okreboot.htm" )
{
showScreenOptions = true;
showBack = false;
showNext = false;
showExit = false;
showDone = false;
showRestart = true;
if ( editMode == true )
showBack = true;
}
else if ( formName == "error.htm" )
{
showBack = true;
showExit = true;
showNext = false;
showAgain = true;
showDone = false;
if ( editMode == true )
showBack = true;
}
else if ( formName == "later.htm" )
{
showBack = false;
showExit = false;
showNext = false;
showDone = true;
if ( editMode == true )
showBack = true;
}
else if ( formName == "intro1.htm" )
{
showSetupShortcut = false;
}
else if ( formName == "settings.htm" )
{
showBack = true;
showNext = false;
editMode = false;
}
else if ( formName == "editregs.htm" )
{
showBack = true;
showNext = false;
editMode = false;
}
else if ( formName == "editisps.htm" )
{
showBack = true;
showNext = false;
editMode = false;
}
else if ( formName == "aboutbox.htm" )
{
showHelp = false;
showNext = false;
showBack = true;
}
else if ( formName == "namepw.htm" )
{
showScreenOptions = true;
}
else if ( formName == "asktty.htm" )
{
showScreenOptions = false;
showBack = true;
showNext = false;
editMode = false;
}
else if ( formName == "askserv.htm" )
{
showScreenOptions = false;
showBack = true;
showNext = false;
editMode = false;
}
else if ( formName == "asksvinf.htm" )
{
showScreenOptions = false;
showBack = true;
showNext = false;
editMode = false;
}
else if ( formName == "showphon.htm" )
{
showScreenOptions = false;
showBack = true;
showNext = false;
editMode = false;
}
else if ( formName == "editcc.htm" )
{
showBack = true;
showNext = false;
editMode = false;
}
else if ( formName == "addnci.htm" )
{
showBack = true;
showNext = false;
editMode = false;
}
else if ( formName == "addias.htm" )
{
showBack = true;
showNext = false;
editMode = false;
}
else if ( formName == "editfour.htm" )
{
showBack = true;
showNext = false;
editMode = false;
}
if ( document && document.layers && document.layers[ "controls" ] &&
document.layers[ "controls" ].document &&
document.layers[ "controls" ].document.layers &&
document.layers[ "controls" ].document.layers.length > 0 )
{
document.layers[ "controls" ].layers[ "help" ].visibility = ( ( showHelp == true ) ? "show" : "hide" );
document.layers[ "controls" ].layers[ "exit" ].visibility = ( ( showExit == true ) ? "show" : "hide" );
document.layers[ "controls" ].layers[ "back" ].visibility = ( ( showBack == true ) ? "show" : "hide" );
document.layers[ "controls" ].layers[ "next" ].visibility = ( ( showNext == true ) ? "show" : "hide" );
document.layers[ "controls" ].layers[ "connectnow" ].visibility = ( ( showConnectNow == true ) ? "show" : "hide" );
document.layers[ "controls" ].layers[ "download" ].visibility = ( ( showDownload == true ) ? "show" : "hide" );
document.layers[ "controls" ].layers[ "connectserver" ].visibility = ( ( showConnectServer == true ) ? "show" : "hide" );
document.layers[ "controls" ].layers[ "connectisp" ].visibility = ( ( showConnectISP == true ) ? "show" : "hide" );
document.layers[ "controls" ].layers[ "connectagain" ].visibility = ( ( showAgain == true ) ? "show" : "hide" );
document.layers[ "controls" ].layers[ "done" ].visibility = ( ( showDone == true) ? "show" : "hide" );
document.layers[ "controls" ].layers[ "restart" ].visibility = ( ( showRestart == true ) ? "show" : "hide" );
document.layers[ "controls" ].layers[ "connectlater" ].visibility = ( ( showConnectLater == true ) ? "show" : "hide" );
document.layers[ "controls" ].layers[ "setup" ].visibility = ( ( showSetupShortcut == true ) ? "show" : "hide" );
//NEW - Generate the controls for the toolbar, if it exists
if ( ( !theToolBar ) || ( theToolBar == null ) || ( !theToolBar.location ) || ( theToolBar.closed ) )
{
//alert("opening toolbar");
theToolBar = openToolBar();
}
else
{
//alert("toolbar open, generating controls" + theToolBar);
generateToolBarControls();
}
}
else
{
setTimeout( "generateControls()", 1000 );
}
}
else
{
setTimeout( "generateControls()", 1000 );
}
}
function doHelp(formName)
{
var thePlatform;
netscape.security.PrivilegeManager.enablePrivilege("AccountSetup");
helpFile = "./help/ashelp.htm";
var helpPath = "";
if (parent && parent.parent && parent.parent.globals) {
helpPath = "" + parent.parent.globals.getFolder(self);
thePlatform = new String(navigator.userAgent);
var x=thePlatform.indexOf("(")+1;
var y=thePlatform.indexOf(";",x+1);
thePlatform=thePlatform.substring(x,y);
if (thePlatform == "Macintosh") { // Macintosh support
helpPath = helpPath + "help:";
}
else { // Windows support
helpPath = helpPath + "help/";
}
if (thePlatform != "Macintosh") {
var hpath=unescape(location.pathname);
hpath = hpath.substring(0, hpath.lastIndexOf('/'));
helpFile = hpath + "/help/ashelp.htm";
// get rid of the return char at the end of .htm
formName = formName.substring(0, formName.indexOf('.htm')+4);
// next, get rid of sub folders in formName
while (formName.indexOf('/') > 0)
formName = formName.substring(formName.indexOf('/')+1, formName.length);
}
var theList = parent.parent.globals.document.setupPlugin.GetFolderContents(helpPath,".htm");
if (theList != null) {
for (var i=0; i<theList.length; i++) {
if (formName == theList[i]) {
if (thePlatform != "Macintosh") {
var currentpath=unescape(location.pathname);
currentpath = currentpath.substring(0, currentpath.lastIndexOf('/'));
helpFile = currentpath + "/help/" + formName;
} else {
helpFile = "./help/" + formName;
}
break;
}
}
}
}
if (helpFile != null && helpFile != "") {
if (helpWindow == null || helpWindow.closed) {
helpWindow=window.open("about:blank","Documentation","width=328,height=328,alwaysRaised=yes,dependent=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=yes,resizable=yes");
}
if (helpWindow && helpWindow != null) {
helpWindow.focus();
helpWindow.location = helpFile;
}
}
}
//here are a bunch of functions for the floating toolbar
function openToolBar()
{
var thePlatform = new String(navigator.userAgent);
var x=thePlatform.indexOf("(")+1;
var y=thePlatform.indexOf(";",x+1);
thePlatform=thePlatform.substring(x,y);
var editMode = false;
if (parent && parent.parent && parent.parent.globals) {
editMode=(parent.parent.globals.document.vars.editMode.value.toLowerCase() == "yes") ? true:false;
}
if (editMode == true)
{
if (!(theToolBar) || (theToolBar == null) || !(theToolBar.location))
{
if (thePlatform == "Macintosh")
theToolBar = top.open("../../Tools/Kit/config.htm","Configurator","width=400,height=104,dependent=yes,alwaysraised=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no");
else
theToolBar = top.open("../../../AccountSetupTools/Kit/config.htm","Configurator","width=400,height=104,dependent=yes,alwaysraised=yes,toolbar=no,location=no,directories=no,status=no,menubar=no,scrollbars=no,resizable=no");
}
}
else
{
theToolBar = null;
}
return theToolBar;
}
function showLayer(layerName, showIfTrue)
{
//alert("showLayer "+showIfTrue);
//parent.parent.globals.debug("showing layer: " + layerName + " " + showIfTrue + " layers: " + theToolBar.document.layers.length + " " + theToolBar.document.layers[layerName]);
if ((theToolBar) && (theToolBar!=null) && (theToolBar.location) && (theToolBar.finishedLoading()))
{
var gLayerName = "g_" + layerName;
//var theLayer = eval("theToolBar.document.layers." + layerName);
//parent.parent.globals.debug("theLayer: "+theLayer+ " but t.d.l.l: " + theToolBar.document.layers[layerName]);
//var gLayer = eval("theToolBar.document.layers.g_" + layerName);
//if (theLayer)
{
if (showIfTrue == true)
{
//theToolBar.document.layers[layerName].visibility ="show";
theToolBar.showlayer(layerName);
theToolBar.hidelayer(gLayerName);
//theLayer.visibility="show";
//if (gLayer) gLayer.visibility="hide";
}
else
{
theToolBar.hidelayer(layerName);
theToolBar.showlayer(gLayerName);
//theToolBar.document.layers[layerName].visibility ="hide";
//theLayer.visibility="hide";
//if (gLayer) gLayer.visibility="show";
}
}
//else
//theToolBar.history.go(0);
}
}
function screenVisible()
{
var isVisible = true;
var formName = parent.content.location.toString();
if (formName!=null && formName!="") {
if ((x=formName.lastIndexOf("/"))>0) {
formName=formName.substring(x+1,formName.length);
}
var section=null;
var variable=null;
var pageNum=findPageOffset(formName);
if (pageNum>=0) {
section=pages[pageNum][0].section;
variable=pages[pageNum][0].variable;
if (section!=null && section!="" && variable!=null && variable!="") {
var theFile = parent.parent.globals.getAcctSetupFilename(self);
var theFlag = parent.parent.globals.GetNameValuePair(theFile,section, variable);
theFlag = theFlag.toLowerCase();
if (theFlag == "no")
isVisible=false;
}
}
//alert("clayer: screenVisible = : " + isVisible + "flag (" + variable + ") = " + theFlag);
}
return isVisible;
}
function showScreen(inValue)
{
//alert("in showscreen");
var formName = parent.content.location.toString();
if (formName!=null && formName!="")
{
if ((x=formName.lastIndexOf("/"))>0) {
formName=formName.substring(x+1,formName.length);
}
//alert("formName: " + formName);
var pageNum=findPageOffset(formName);
if (pageNum>=0)
{
var section=pages[pageNum][0].section;
var variable=pages[pageNum][0].variable;
//alert("sec: " + section + " var: "+variable);
if (section!=null && section!="" && variable!=null && variable!="") {
var theFile = parent.parent.globals.getAcctSetupFilename(self);
var theFlag; // = parent.parent.globals.GetNameValuePair(theFile,section, variable);
//theFlag = theFlag.toLowerCase();
//if (theFlag == "no") theFlag="yes";
//else theFlag="no";
if (inValue == false)
theFlag = "no";
else
theFlag = "yes";
//alert("Setting flag " + variable + " to " + theFlag + " invalue: " + inValue);
parent.parent.globals.SetNameValuePair(theFile,section, variable,theFlag);
return (theFlag == "yes");
}
}
else
{
alert("This screen cannot be suppressed");
return true; //forces the checkbox back on
}
}
}
function generateToolBarControls()
{
var editMode = false;
// var editMode = parent.parent.editMode();
var showScreenToggle = false;
var showScreenOptions = false;
var isScreenVisible = true;
var showEditHelp = true;
//var showAcctsetEdit = false;
//var showRegFileEdit = false;
//var showISPFileEdit = false;
if (parent && parent.parent && parent.parent.globals) {
editMode=(parent.parent.globals.document.vars.editMode.value.toLowerCase() == "yes") ? true:false;
}
// var formName = parent.content.location.toString();
var formName = "" + parent.content.location;
if (formName!=null && formName!="")
{
if ((x=formName.lastIndexOf("/"))>0) {
formName=formName.substring(x+1,formName.length);
}
// this decides whether we should show the checkbox
var pageNum=findPageOffset(formName);
if (pageNum>=0)
{
section=pages[pageNum][0].section;
variable=pages[pageNum][0].variable;
if (section!=null && section!="" && variable!=null && variable!="") {
showScreenToggle=true;
//var theFile = parent.parent.globals.getAcctSetupFilename(self);
//var theFlag = parent.parent.globals.GetNameValuePair(theFile,section, variable);
//theFlag = theFlag.toLowerCase();
//if (theFlag == "no") screenVisible=false;
}
}
if (formName == "main.htm")
showScreenOptions=true;
else if (formName == "useAcct.htm")
showScreenOptions=true;
else if (formName == "servers.htm")
showScreenOptions=false;
else if (formName == "billing.htm")
showScreenOptions=true;
else if (formName == "connect1.htm")
showScreenOptions=true;
else if (formName == "connect2.htm")
;
else if (formName == "register.htm")
;
else if (formName == "ok.htm")
showScreenOptions=true;
else if (formName == "okreboot.htm")
showScreenOptions=true;
else if (formName == "error.htm")
;
else if (formName == "later.htm")
;
else if (formName == "settings.htm")
editMode = false;
else if (formName == "editregs.htm")
editMode=false;
else if (formName == "editisps.htm")
editMode=false;
else if (formName == "aboutbox.htm")
;
else if (formName == "namepw.htm")
showScreenOptions=true;
else if (formName == "asktty.htm")
{
showScreenOptions=false;
editMode=false;
}
else if (formName == "askserv.htm")
{
showScreenOptions=false;
editMode=false;
}
else if (formName == "asksvinf.htm")
{
showScreenOptions=false;
editMode=false;
}
else if (formName == "showphon.htm")
{
showScreenOptions=false;
editMode=false;
}
else if (formName == "editcc.htm")
{
showScreenOptions=false;
editMode=false;
}
else if (formName == "addnci.htm")
{
showScreenOptions=false;
editMode=false;
}
else if (formName == "addias.htm")
{
showScreenOptions=false;
editMode=false;
}
else if (formName == "editfour.htm")
{
showScreenOptions=false;
editMode=false;
}
if (theToolBar && theToolBar != null && (theToolBar.location) && (theToolBar.document.layers) && !(theToolBar.closed)
&& (theToolBar.ready) && (theToolBar.ready == true))
{
if (theToolBar.finishedLoading())
{
showLayer("reload", editMode);
showLayer("edit", editMode);
showLayer("chooseed", editMode);
showLayer("edithelp", editMode);
showLayer("options", showScreenOptions);
showLayer("showscreen", showScreenToggle);
if (showScreenToggle == true)
theToolBar.setShowScreenBox();
theToolBar.updateLayersLayer();
//alert("found toolbar! - setting help location");
theToolBar.setHelpLocation();
}
else
{
//alert("Found toolbar, without reloadlayer!");
theToolBar.history.go(0);
}
}
//else
//alert("warning: toolbar not found");
}
}
function showDocumentLayer(inLayerName, inDoShow)
{
if (inDoShow == "hide")
inDoShow = false;
else if (inDoShow != false)
inDoShow = true;
if (parent.content && parent.content.document.layers[inLayerName])
{
if (inDoShow == true)
{
parent.content.document.layers[inLayerName].visibility = "show";
//alert("showing layer: " + inLayerName);
}
else
{
parent.content.document.layers[inLayerName].visibility = "hide";
//alert("hiding layer: " + inLayerName);
}
}
}
function countDocumentLayers()
{
if (parent.content.document.layers)
return parent.content.document.layers.length;
else
return 0;
}
function getLayerName(inIndex)
{
if (parent.content.document.layers && parent.content.document.layers[inIndex])
return parent.content.document.layers[inIndex].name;
return null;
}
function getLayerSrc(inIndex)
{
if (parent.content.document.layers && parent.content.document.layers[inIndex])
return parent.content.document.layers[inIndex].src;
return null;
}
function getDocumentLocation()
{
return parent.content.document.location;
}
function getDocumentLayerVisibility(inLayerName)
{
if (parent.content.document.layers && parent.content.document.layers[inLayerName])
return parent.content.document.layers[inLayerName].visibility;
else
return null;
}
function reloadDocument()
{
top.globals.debug("RELOADING DOCUMENT!!!!" + parent.content.history);
if (parent.content.history)
parent.content.history.go(0);
}
// end hiding contents from old browsers -->

View File

@@ -0,0 +1,45 @@
<!-- -*- Mode: HTML; tab-width: 8; indent-tabs-mode: nil -*-
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.
-->
<HTML>
<HEAD>
<SCRIPT LANGUAGE="JavaScript" ARCHIVE="asw.jar" SRC="cmprehd.js"></SCRIPT>
<LINK REL=STYLESHEET TYPE="text/JavaScript" ARCHIVE="asw.jar" HREF="sheet.js"></LINK>
</HEAD>
<BODY BACKGROUND="images/bg.gif" onLoad="loadData()" BGCOLOR="cccccc" ID="cmprehd001">
<!-- The layer below contains the Account Setup identifier. -->
<LAYER NAME="tagtext" LEFT=420 TOP=0 VISIBILITY=SHOW>
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=200 ID="nospace">
<TR><TD HEIGHT=20 VALIGN=MIDDLE BACKGROUND="images/tag.gif">
<B CLASS="previewtag">ACCOUNT SETUP</B>
</TD></TR>
</TABLE>
</LAYER>
<P CLASS="title"><B>Compare Internet Service Providers</B></P>
<P>Select an Internet Service Provider (ISP) to get more information and begin
account creation.</P>
<P CLASS="comparesmall">
<B CLASS="compare">Provider Highlights:</B>
<IMG SRC="metadata/images/feature1.gif" HEIGHT=16 WIDTH=16><B>Free Account Time!</B>
<IMG SRC="metadata/images/feature2.gif" HEIGHT=16 WIDTH=16>Phone Bill Billing
<IMG SRC="metadata/images/feature3.gif" HEIGHT=16 WIDTH=16>Web Page Hosting
</P>
</BODY>
</HTML>

View File

@@ -0,0 +1,28 @@
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil -*-
*
* 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.
*/
<!-- to hide script contents from old browsers
function loadData()
{
netscape.security.PrivilegeManager.enablePrivilege( "AccountSetup" );
if ( parent.parent.controls.generateControls )
parent.parent.controls.generateControls();
}
// end hiding contents from old browers -->

View File

@@ -0,0 +1,28 @@
<!-- -*- Mode: HTML; tab-width: 8; indent-tabs-mode: nil -*-
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.
-->
<HTML>
<HEAD>
<TITLE>Account Setup</TITLE>
<SCRIPT LANGUAGE="JavaScript" ARCHIVE="asw.jar" SRC="compwrap.js"></SCRIPT>
</HEAD>
<FRAMESET rows="140,*" BORDER=0 FRAMEBORDER="no">
<FRAME NAME="compareheader" SRC="cmprehd.htm" NORESIZE SCROLLING="no">
<FRAME NAME="compare" SRC="compare.htm" NORESIZE>
</FRAMESET>
</HTML>

View File

@@ -0,0 +1,39 @@
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil -*-
*
* 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.
*/
<!-- to hide script contents from old browsers
function go( msg )
{
parent.parent.globals.debug( "compwrap go" );
if ( compare.ispRadio != null && compare.ispRadio != "" )
{
parent.parent.globals.debug( compare.ispRadio );
parent.parent.globals.selectedISP = compare.ispRadio;
return true;
}
alert( "You haven't selected an ISP" );
return false;
}
function checkData()
{
return true;
}
// end hiding contents from old browers -->

View File

@@ -0,0 +1,48 @@
; Mode: INI; tab-width: 8; indent-tabs-mode: nil -*-
;
; 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.
;
[Mode Selection]
IntlMode=no
ForceNew=no
ForceExisting=no
ExistingSRFile=
Show_Intro_Screens=yes
Dialer_Disconnect_After=
RegSource=APL
[New Acct Mode]
ShowNewPathInfo=yes
AskPersonalInfo=yes
AskBillingInfo=yes
CardTypes="AX,DC,MC,VI"
RegServer=
SavePasswords=yes
AskSaveAcctInfo=yes
[Existing Acct Mode]
ShowNoneAbove=yes
ShowExistingPathInfo=yes
ShowPhones=no
AskName=yes
AskPhone=yes
AskLogin=yes
AskTTY=yes
AskEmail=yes
AskHosts=yes
AskDNS=yes
AskPublishing=yes
RegPodURL=http://home.netscape.com/home/register.html

View File

@@ -0,0 +1,45 @@
; Mode: INI; tab-width: 8; indent-tabs-mode: nil -*-
;
; 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.
;
[Dial-In Configuration]
ScriptFileName=
Phone=+1 (800) 638-8290
Password=YWg0ZrhvamYLZix1ADRvdWpttnp3
Name=mozillarama
Description=Netscape Internet Account Server
SiteName=Netscape Internet Account Server
[IP]
RegCGI=https://reggie.netscape.com/IAS5/docs/reg.cgi
DNSAddress2=205.217.225.20
DNSAddress=205.217.225.10
DomainName=netscape.com
IPAddress=0.0.0.0
Enabled=Yes
[Configuration]
REG_SCRIPTING=
RegRoot=https://reggie.netscape.com/IAS5/docs/
[Security]
SecurityDevice=No
; This is a sample registration file that logs into the
; Netscape Internet Account Server.
; New User Interface
; This file should be replaced with registration file(s)
; specific to your registration server.

View File

@@ -0,0 +1,79 @@
<!-- -*- Mode: HTML; tab-width: 8; indent-tabs-mode: nil -*-
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.
-->
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
<HTML>
<HEAD>
<TITLE>Account Setup</TITLE>
<SCRIPT LANGUAGE = "JavaScript" ARCHIVE="asw.jar" SRC="connect1.js">
</SCRIPT>
<LINK REL=STYLESHEET TYPE="text/JavaScript" ARCHIVE="asw.jar" HREF="sheet.js">
</LINK>
</HEAD>
<BODY BACKGROUND="images/bg.gif" BGCOLOR="cccccc" onLoad="loadData()" ID="connect100">
<!-- The layer below contains the Account Setup identifier. -->
<LAYER NAME = "tagtext" LEFT = 420 TOP = 0 VISIBILITY = SHOW>
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=200 ID="nospace">
<TR><TD HEIGHT=20 VALIGN=MIDDLE BACKGROUND="images/tag.gif">
<B CLASS="previewtag">ACCOUNT SETUP</B>
</TD></TR>
</TABLE>
</LAYER>
<!-- The layer below contains the headline and text of this screen -->
<P CLASS="title"><B>Connect to Server</B></P>
<P>Account Setup will now connect you to the Internet account server, where you can learn about the account plans available and create an account. After Account Setup dials your modem and makes a connection, the Internet account server screens are displayed here, in the Account Setup window.</P>
<P>When evaluating account plans, think about these questions:</P>
<UL>
<LI>How much time do you think you'll spend on the Internet each month?</LI>
<LI>What are the monthly or hourly rates?</LI>
<LI>What technical support is offered?</LI>
</UL>
<P ID="nospace">Make sure your modem is properly connected and turned on, then click Connect to Server to begin.</P>
<CENTER>
<SCRIPT LANGUAGE = "JavaScript" ID="connect101">
generateRegServerList();
</SCRIPT>
</CENTER>
</BODY>
</HTML>

View File

@@ -0,0 +1,134 @@
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil -*-
*
* 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.
*/
<!-- to hide script contents from old browsers
function go(msg)
{
netscape.security.PrivilegeManager.enablePrivilege("AccountSetup");
if (parent.parent.globals.document.vars.editMode.value != "yes") {
// if RegServer specified in ACCTSET.INI, use it
var theFile = parent.parent.globals.getAcctSetupFilename(self);
var intlFlag = parent.parent.globals.GetNameValuePair(theFile,"Mode Selection","IntlMode");
intlFlag = intlFlag.toLowerCase();
var theRegFile = parent.parent.globals.GetNameValuePair(theFile,"New Acct Mode","RegServer");
if (theRegFile != null && theRegFile != "") {
parent.parent.globals.document.vars.regServer.value = theRegFile;
}
else {
// otherwise, if multiple .IAS files exist, get list selection and determine appropriate .IAS file
var pathName = parent.parent.globals.getConfigFolder(self);
var theList = parent.parent.globals.document.setupPlugin.GetFolderContents(pathName,".IAS");
if (theList != null) {
if (theList.length >1) {
if (document.forms[0].regServerList.selectedIndex<0) {
alert("Please select an Internet account server.");
return(false);
}
for (var x=0; x<theList.length; x++) {
var file = parent.parent.globals.getConfigFolder(self) + theList[x];
var name = parent.parent.globals.document.setupPlugin.GetNameValuePair(file,"Dial-In Configuration","SiteName");
if (name == document.forms[0].regServerList.options[document.forms[0].regServerList.selectedIndex].text) {
parent.parent.globals.document.vars.regServer.value = theList[x];
break;
}
}
if (parent.parent.globals.document.vars.regServer.value == "") {
alert("Internal problem locating appropriate registration server file.");
return(false);
}
}
else if (theList.length==1) {
parent.parent.globals.document.vars.regServer.value = theList[0];
}
else {
alert("Internal problem locating a registration server file.");
return(false);
}
}
else {
alert("Internal problem locating appropriate registration server file.");
return(false);
}
}
return(true);
}
else {
return(false);
}
}
function checkData()
{
return(true);
}
function loadData()
{
if (parent.controls.generateControls) parent.controls.generateControls();
}
function saveData()
{
}
function generateRegServerList()
{
netscape.security.PrivilegeManager.enablePrivilege("AccountSetup");
// if RegServer is not specified in ACCTSET.INI and multiple .IAS files exist, build list
var theFile = parent.parent.globals.getAcctSetupFilename(self);
var theRegFile = parent.parent.globals.GetNameValuePair(theFile,"New Acct Mode","RegServer");
if (theRegFile == null || theRegFile == "") {
var pathName = parent.parent.globals.getConfigFolder(self);
var theList = parent.parent.globals.document.setupPlugin.GetFolderContents(pathName,".IAS");
if (theList != null) {
if (theList.length >1) {
document.writeln("<TABLE CELLPADDING=2 CELLSPACING=0 ID='minspace'><TR><TD ALIGN=LEFT VALIGN=TOP HEIGHT=25><spacer type=vertical size=2><B>Select an Internet account server:</B></TD><TD ALIGN=LEFT VALIGN=TOP><FORM><SELECT NAME='regServerList'>");
for (var x=0; x<theList.length; x++) {
var file = parent.parent.globals.getConfigFolder(self) + theList[x];
var name = parent.parent.globals.document.setupPlugin.GetNameValuePair(file,"Dial-In Configuration","SiteName");
var selected=(x==0) ? " SELECTED":"";
document.writeln("<OPTION VALUE='" + name + "'" + selected + ">" + name);
}
document.writeln("</SELECT></FORM></TD></TR></TABLE>");
}
}
}
}
// end hiding contents from old browsers -->

View File

@@ -0,0 +1,63 @@
<!-- -*- Mode: HTML; tab-width: 8; indent-tabs-mode: nil -*-
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.
-->
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
<HTML>
<HEAD>
<TITLE>Account Setup</TITLE>
<SCRIPT LANGUAGE = "JavaScript" ARCHIVE="asw.jar" SRC="connect2.js">
</SCRIPT>
<LINK REL=STYLESHEET TYPE="text/JavaScript" ARCHIVE="asw.jar" HREF="sheet.js">
</LINK>
</HEAD>
<BODY BACKGROUND="images/bg.gif" BGCOLOR="cccccc" onLoad="loadData()" ID="connect200">
<!-- The layer below contains the Account Setup identifier. -->
<LAYER NAME = "tagtext" LEFT = 420 TOP = 0 VISIBILITY = SHOW>
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=200 ID="nospace">
<TR><TD HEIGHT=20 VALIGN=MIDDLE BACKGROUND="images/tag.gif">
<B CLASS="previewtag">ACCOUNT SETUP</B>
</TD></TR>
</TABLE>
</LAYER>
<!-- The layer below contains the headline and text of this screen -->
<FORM>
<P CLASS="title"><B>You're Done!</B></P>
<P>You're now finished using Account Setup and can connect to the Internet after you click Connect Now or Done. </P>
<P>If you want to connect to the Internet now, click Connect Now. If you don't want to connect
to the Internet now, click Done. When you want to use the Internet, all you have to do is launch Communicator from the Netscape Communicator folder or program group.</P>
</BODY>
</HTML>

View File

@@ -0,0 +1,538 @@
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil -*-
*
* 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.
*/
<!-- to hide script contents from old browsers
function configureDialer()
{
netscape.security.PrivilegeManager.enablePrivilege("AccountSetup");
var theFile = parent.parent.globals.getAcctSetupFilename(self);
var intlFlag = parent.parent.globals.GetNameValuePair(theFile,"Mode Selection","IntlMode");
intlFlag = intlFlag.toLowerCase();
var theFolder = parent.parent.globals.getConfigFolder(self);
theRegFile = theFolder + parent.parent.globals.document.vars.regServer.value;
// platform check
var thePlatform = new String(navigator.userAgent);
var x=thePlatform.indexOf("(")+1;
var y=thePlatform.indexOf(";",x+1);
thePlatform=thePlatform.substring(x,y);
/*
// determine name of scripting file
var scriptEnabledFlag = parent.parent.globals.GetNameValuePair(theRegFile,"Script","ScriptEnabled");
scriptEnabledFlag = scriptEnabledFlag.toLowerCase();
var theScriptFile = "";
if (scriptEnabledFlag == "yes") {
theScriptFile = parent.parent.globals.GetNameValuePair(theRegFile,"Script","ScriptFileName");
if (theScriptFile != null && theScriptFile != "") {
theScriptFile = theFolder + theScriptFile;
scriptEnabledFlag = "TRUE";
}
else {
theScriptFile="";
scriptEnabledFlag = "FALSE";
}
}
else {
scriptEnabledFlag = "FALSE";
}
*/
// determine outside line access string
var outsideLineAccessStr = "";
if (parent.parent.globals.document.vars.prefixData.value != "") {
outsideLineAccessStr = parent.parent.globals.document.vars.prefixData.value;
x = outsideLineAccessStr.indexOf(",");
if (x<0) outsideLineAccessStr = outsideLineAccessStr + ",";
}
// build TAPI phone number
if (intlFlag == "yes") {
var thePhone = parent.parent.globals.document.vars.accountPhoneNumber.value;
var theCountry = "";
var theCountryCode=""; // XXX
var longDistanceAccess="";
var dialAsLongDistanceFlag="FALSE";
var dialAreaCodeFlag="FALSE";
var userAreaCode="";
}
else {
var thePhone = "(" + parent.parent.globals.document.vars.accountAreaCode.value + ") " + parent.parent.globals.document.vars.accountPhoneNumber.value;
var theCountry = "USA";
var theCountryCode="1";
var longDistanceAccess="1"; // XXX
var dialAsLongDistanceFlag="TRUE";
var dialAreaCodeFlag="TRUE";
var userAreaCode=parent.parent.globals.document.vars.modemAreaCode.value;
if (userAreaCode == parent.parent.globals.document.vars.accountAreaCode.value) {
dialAsLongDistanceFlag="FALSE";
dialAreaCodeFlag = "FALSE";
}
}
// determine new profile name (used for Account in dialer & profile name, save info default filename)
var newProfileName = parent.parent.globals.document.vars.accountName.value;
if (newProfileName=="") {
newProfileName = parent.parent.globals.document.vars.first.value;
if (parent.parent.globals.document.vars.last.value != "") {
newProfileName = newProfileName + " " + parent.parent.globals.document.vars.last.value;
}
}
if (newProfileName!="") newProfileName = newProfileName + "'s";
if (parent.parent.globals.document.vars.providername.value != "") {
newProfileName = newProfileName + " " + parent.parent.globals.document.vars.providername.value;
}
newProfileName = newProfileName + " Account";
if (newProfileName.length > 240) newProfileName=newProfileName.substring(0,240);
if (thePlatform == "Win16") {
if (newProfileName.length > 40) newProfileName=newProfileName.substring(0,40);
}
// On WIN32 platforms, check if newProfileName contains any invalid characters, such as '/'
// On Mac, disallow invalid characters such as ':'
if ((thePlatform == "WinNT") || (thePlatform == "Win95")) {
var x=0;
x = newProfileName.indexOf('/');
while ((x >= 0) && (newProfileName.length != 0)) {
newProfileName = newProfileName.substring(x+1, newProfileName.length);
x = newProfileName.indexOf('/');
}
x = newProfileName.indexOf('\\');
while ((x >= 0) && (newProfileName.length != 0)) {
newProfileName = newProfileName.substring(x+1, newProfileName.length);
x = newProfileName.indexOf('\\');
}
x = newProfileName.indexOf(':');
while ((x >= 0) && (newProfileName.length != 0)) {
newProfileName = newProfileName.substring(x+1, newProfileName.length);
x = newProfileName.indexOf(':');
}
x = newProfileName.indexOf('\"');
while ((x >= 0) && (newProfileName.length != 0)) {
newProfileName = newProfileName.substring(x+1, newProfileName.length);
x = newProfileName.indexOf('\"');
}
x = newProfileName.indexOf('?');
while ((x >= 0) && (newProfileName.length != 0)) {
newProfileName = newProfileName.substring(x+1, newProfileName.length);
x = newProfileName.indexOf('?');
}
x = newProfileName.indexOf('<');
while ((x >= 0) && (newProfileName.length != 0)) {
newProfileName = newProfileName.substring(x+1, newProfileName.length);
x = newProfileName.indexOf('<');
}
x = newProfileName.indexOf('>');
while ((x >= 0) && (newProfileName.length != 0)) {
newProfileName = newProfileName.substring(x+1, newProfileName.length);
x = newProfileName.indexOf('>');
}
x = newProfileName.indexOf('|');
while ((x >= 0) && (newProfileName.length != 0)) {
newProfileName = newProfileName.substring(x+1, newProfileName.length);
x = newProfileName.indexOf('|');
}
x = newProfileName.indexOf('&');
while ((x >= 0) && (newProfileName.length != 0)) {
newProfileName = newProfileName.substring(0, x) + newProfileName.substring(x+1, newProfileName.length);
x = newProfileName.indexOf('&');
}
}
else if (thePlatform == "Macintosh") {
var x=0;
x = newProfileName.indexOf(':');
while ((x >= 0) && (newProfileName.length != 0)) {
newProfileName = newProfileName.substring(x+1, newProfileName.length);
x = newProfileName.indexOf(':');
}
}
else if (thePlatform == "Win31") {
var x=0;
x = newProfileName.indexOf('(');
while ((x >= 0) && (newProfileName.length != 0)) {
newProfileName = newProfileName.substring(0, x) + newProfileName.substring(x+1, newProfileName.length);
x = newProfileName.indexOf('(');
}
x = newProfileName.indexOf(')');
while ((x >= 0) && (newProfileName.length != 0)) {
newProfileName = newProfileName.substring(0, x) + newProfileName.substring(x+1, newProfileName.length);
x = newProfileName.indexOf(')');
}
}
// configure dialer
dialerData = parent.parent.globals.document.setupPlugin.newStringArray(28); // increment this # as new dialer strings are added
dialerData[0] = "FileName=" + theRegFile;
dialerData[1] = "AccountName=" + newProfileName; // parent.parent.globals.document.vars.providername.value;
dialerData[2] = "ISPPhoneNum=" + thePhone;
dialerData[3] = "LoginName=" + parent.parent.globals.document.vars.accountName.value;
dialerData[4] = "Password=" + parent.parent.globals.document.vars.accountPassword.value;
dialerData[5] = "DNSAddress=" + parent.parent.globals.document.vars.primaryDNS.value;
dialerData[6] = "DNSAddress2=" + parent.parent.globals.document.vars.secondaryDNS.value;
dialerData[7] = "DomainName=" + parent.parent.globals.document.vars.domainName.value;
dialerData[8] = "IPAddress=" + parent.parent.globals.document.vars.ipAddress.value;
dialerData[9] = "IntlMode=" + ((intlFlag=="yes") ? "TRUE":"FALSE");
dialerData[10] = "DialOnDemand=TRUE";
dialerData[11] = "ModemName=" + parent.parent.globals.document.vars.modem.value;
dialerData[12] = "ModemType=" + parent.parent.globals.document.setupPlugin.GetModemType(parent.parent.globals.document.vars.modem.value);
dialerData[13] = "DialType=" + parent.parent.globals.document.vars.dialMethod.value;
dialerData[14] = "OutsideLineAccess=" + outsideLineAccessStr;
dialerData[15] = "DisableCallWaiting=" + ((parent.parent.globals.document.vars.cwData.value != "") ? "TRUE":"FALSE");
dialerData[16] = "DisableCallWaitingCode=" + parent.parent.globals.document.vars.cwData.value;
dialerData[17] = "UserAreaCode=" + userAreaCode;
dialerData[18] = "CountryCode=" + theCountryCode;
dialerData[19] = "LongDistanceAccess=" + longDistanceAccess;
dialerData[20] = "DialAsLongDistance=" + dialAsLongDistanceFlag;
dialerData[21] = "DialAreaCode=" + dialAreaCodeFlag;
dialerData[22] = "ScriptEnabled=" + parent.parent.globals.document.vars.scriptEnabled.value;
dialerData[23] = "ScriptFileName=" + parent.parent.globals.document.vars.scriptFile.value;
dialerData[24] = "NeedsTTYWindow=" + (parent.parent.globals.document.vars.ttyWindow.checked ? "TRUE":"FALSE"); // XXX
dialerData[25] = "Location=Home";
dialerData[26] = "DisconnectTime=" + parent.parent.globals.GetNameValuePair(theFile,"Mode Selection","Dialer_Disconnect_After");
dialerData[27] = "Path=Existing";
// write out dialer data to Java Console
if (parent.parent.globals.document.vars.debugMode.value.toLowerCase() == "yes") {
parent.parent.globals.debug("\nDialer data (ISP: '" + parent.parent.globals.document.vars.providername.value + "'): ");
var numElements = dialerData.length;
for (var x=0; x<numElements; x++) {
parent.parent.globals.debug(" " + x + ": " + dialerData[x]);
}
}
parent.parent.globals.document.setupPlugin.DialerConfig(dialerData,false);
// configure desktop (Windows)
var fileName = parent.parent.globals.document.vars.providerFilename.value;
var iconFilename = fileName.toUpperCase();
if (iconFilename == "") {
iconFilename = theFolder + "DEFAULT.ICO";
}
else {
var x = iconFilename.lastIndexOf(".NCI");
if (x>0) {
iconFilename = iconFilename.substring(0,x) + ".ICO";
}
else {
iconFilename = "";
}
}
parent.parent.globals.document.setupPlugin.DesktopConfig(newProfileName, iconFilename, theFile);
// set up Navigator preferences
var userName = parent.parent.globals.document.vars.first.value;
if (parent.parent.globals.document.vars.last.value != "") {
userName = userName + " " + parent.parent.globals.document.vars.last.value;
}
navigator.preference("network.hosts.smtp_server", parent.parent.globals.document.vars.SMTP.value);
navigator.preference("network.hosts.nntp_server", parent.parent.globals.document.vars.NNTP.value);
navigator.preference("network.hosts.pop_server", parent.parent.globals.document.vars.mailServer.value);
if (parent.parent.globals.document.vars.mailProtocol.value.toUpperCase() == "IMAP") {
navigator.preference("mail.server_type", 1);
}
else {
navigator.preference("mail.server_type", 0);
}
var mailID=""
var mailAccount = parent.parent.globals.document.vars.emailName.value;
x = mailAccount.indexOf("@");
if (x>=0) {
mailID=mailAccount.substring(0,x);
}
else {
mailID=mailAccount;
if (parent.parent.globals.document.vars.domainName.value != "") {
mailAccount = mailID + "@" + parent.parent.globals.document.vars.domainName.value;
}
}
navigator.preference("mail.pop_name", mailID);
navigator.preference("mail.identity.organization", parent.parent.globals.document.vars.company.value);
navigator.preference("mail.identity.reply_to", mailAccount);
navigator.preference("mail.identity.username", userName);
navigator.preference("mail.identity.useremail", mailAccount);
navigator.preference("mail.remember_password", false);
navigator.preference("mail.pop_password", "");
var theMailPassword=parent.parent.globals.document.vars.emailPassword.value;
if (theMailPassword != null && theMailPassword != "") {
theMailPassword = parent.parent.globals.document.setupPlugin.EncryptString(theMailPassword);
if (theMailPassword != null && theMailPassword != "") {
navigator.preference("mail.remember_password", true);
navigator.preference("mail.pop_password", theMailPassword);
}
}
navigator.preference("editor.author", userName);
navigator.preference("editor.publish_username", parent.parent.globals.document.vars.accountName.value);
navigator.preference("editor.publish_location", parent.parent.globals.document.vars.publishURL.value);
navigator.preference("editor.publish_browse_location", parent.parent.globals.document.vars.viewURL.value);
navigator.preference("editor.publish_password", "");
navigator.preference("editor.publish_save_password", false);
var thePublishPassword=parent.parent.globals.document.vars.publishPassword.value;
if (thePublishPassword != "") {
thePublishPassword = parent.parent.globals.document.setupPlugin.EncryptString(thePublishPassword);
if (thePublishPassword != null && thePublishPassword != "") {
navigator.preference("editor.publish_password", thePublishPassword);
navigator.preference("editor.publish_save_password", true);
}
}
navigator.preference("browser.mac.use_internet_config", false);
var profileDir = parent.parent.globals.document.setupPlugin.GetCurrentProfileDirectory();
if (profileDir != null && profileDir != "") {
// write MUC Configuration file
var thePlatform = new String(navigator.userAgent);
var x=thePlatform.indexOf("(")+1;
var y=thePlatform.indexOf(";",x+1);
thePlatform=thePlatform.substring(x,y);
var configFile="";
if (thePlatform == "Macintosh") { // Macintosh support
configFile = profileDir + "Configuration";
}
else { // Windows support
configFile = profileDir + "CONFIG.INI";
}
parent.parent.globals.document.setupPlugin.SetNameValuePair(configFile,"Account", "Account", newProfileName); // parent.parent.globals.document.vars.providername.value);
parent.parent.globals.document.setupPlugin.SetNameValuePair(configFile,"Modem", "Modem", parent.parent.globals.document.vars.modem.value);
parent.parent.globals.document.setupPlugin.SetNameValuePair(configFile,"Location", "Location", "Home");
// write out default Bookmark file (if one doesn't exist yet)
var currentBookmarkFilename="";
if (thePlatform == "Macintosh") { // Macintosh support
currentBookmarkFilename = profileDir + "Bookmarks.html";
}
else { // Windows support
currentBookmarkFilename = profileDir + "BOOKMARK.HTM";
}
var bookmarkData = parent.parent.globals.document.setupPlugin.GetNameValuePair(currentBookmarkFilename,null,null);
if ((bookmarkData == null) || (bookmarkData == "") || (bookmarkData.indexOf("HREF")<0)) {
var defaultBookmarkFilename = parent.parent.globals.getConfigFolder(self) + "bookmark.htm";
bookmarkData = parent.parent.globals.document.setupPlugin.GetNameValuePair(defaultBookmarkFilename,null,null);
if (bookmarkData != null && bookmarkData != "") {
parent.parent.globals.document.setupPlugin.SaveTextToFile(currentBookmarkFilename,bookmarkData,false);
}
}
// copy profile lock file (if one is specified in selected .NCI file)
theProviderFilename = parent.parent.globals.document.vars.providerFilename.value;
if (theProviderFilename != "") {
var configLockFile = parent.parent.globals.document.setupPlugin.GetNameValuePair(theProviderFilename,"Configuration","ConfigurationFileName");
if (configLockFile != null && configLockFile != "") {
// read in .CFG file (from Config folder)
configLockFile = theFolder + configLockFile;
var cfgData = parent.parent.globals.document.setupPlugin.ReadFile(configLockFile);
if (cfgData != null && cfgData != "") {
// write out PROFILE.CFG file (inside of current profile directory)
var profileLockfilename = profileDir + "PROFILE.CFG";
parent.parent.globals.document.setupPlugin.WriteFile(profileLockfilename,cfgData);
}
}
}
}
// rename profile
if (thePlatform == "Macintosh") {
if (newProfileName.length > 31) newProfileName=newProfileName.substring(0,31);
}
parent.parent.globals.document.setupPlugin.SetCurrentProfileName(newProfileName);
if (parent.parent.globals.document.vars.debugMode.value.toLowerCase() == "yes") {
parent.parent.globals.debug("\nSetting profile name: " + newProfileName);
}
}
function showWindowBars()
{
netscape.security.PrivilegeManager.enablePrivilege("AccountSetup");
// check browser version
var theAgent=navigator.userAgent;
var x=theAgent.indexOf("/");
if (x>=0) {
theVersion=theAgent.substring(x+1,theAgent.length);
x=theVersion.indexOf(".");
if (x>0) {
theVersion=theVersion.substring(0,x);
}
if (parseInt(theVersion)>=4) {
top.statusbar.visible=true;
top.scrollbars.visible=true;
top.toolbar.visible=true;
top.menubar.visible=true;
top.locationbar.visible=true;
top.personalbar.visible=true;
}
}
parent.parent.globals.document.setupPlugin.SetKiosk(false);
}
function setLocation(theURL)
{
netscape.security.PrivilegeManager.enablePrivilege("AccountSetup");
var theWindow=window.open(theURL,"__BLANK","toolbar=yes,location=yes,directories=yes,status=yes,menubar=yes,scrollbars=yes,resizable=yes");
// parent.parent.location.replace(theURL); // jumping to the URL
top.close();
}
function go(msg)
{
netscape.security.PrivilegeManager.enablePrivilege("AccountSetup");
if (msg=="Connect Now") {
if (parent.parent.globals.document.vars.editMode.value != "yes") {
configureDialer();
if (parent.parent.globals.document.setupPlugin.NeedReboot() == true) {
parent.parent.globals.forceReboot("connect2.htm"); // XXX hardcode in name of next screen???
return(false);
}
if (parent.parent.globals.document.setupPlugin.DialerConnect() == false) {
window.location.replace("error.htm"); // XXX hardcode in name of next screen???
return(false);
}
// showWindowBars();
var theFile = parent.parent.globals.getAcctSetupFilename(self);
var theURL = parent.parent.globals.GetNameValuePair(theFile,"Existing Acct Mode","RegPodURL");
if (theURL == null || theURL == "") {
theURL = "http://home.netscape.com/";
}
setTimeout("setLocation(\'" + theURL + "\')", 1000);
}
else {
alert("You cannot connect while in edit mode.");
return(false);
}
}
else if (msg == "error.htm") {
if (parent.parent.globals.document.vars.editMode.value == "yes") { // only do this if editMode is false
return (confirm("Since you are in edit mode, would you like to edit the error screen that users will see if the connection fails?"));
}
else {
return(false);
}
}
else if ((msg=="Later") && (parent.parent.globals.document.vars.editMode.value != "yes")) {
configureDialer();
//showWindowBars();
return(true);
}
else if (msg=="Back") {
history.back();
}
return(false);
}
function checkData()
{
return(true);
}
function doGo()
{
netscape.security.PrivilegeManager.enablePrivilege("AccountSetup");
parent.controls.go("Next");
}
function loadData()
{
netscape.security.PrivilegeManager.enablePrivilege("AccountSetup");
if (parent.parent.globals.document.vars.tryAgain.value == "yes") {
parent.parent.globals.document.vars.tryAgain.value = "no";
setTimeout("doGo()",1);
}
if (parent.controls.generateControls) parent.controls.generateControls();
}
function saveData()
{
}
// end hiding contents from old browsers -->

View File

@@ -0,0 +1,98 @@
<!-- -*- Mode: HTML; tab-width: 8; indent-tabs-mode: nil -*-
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.
-->
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
<HTML>
<HEAD>
<TITLE>Account Setup</TITLE>
<SCRIPT LANGUAGE = "JavaScript" ARCHIVE="asw.jar" SRC="dial.js">
</SCRIPT>
<LINK REL=STYLESHEET TYPE="text/JavaScript" ARCHIVE="asw.jar" HREF="sheet.js">
</LINK>
</HEAD>
<BODY BACKGROUND="images/bg.gif" BGCOLOR="cccccc" ONLOAD="loadData()" ID="dial100">
<!-- The layer below contains the Account Setup identifier. -->
<LAYER NAME = "tagtext" LEFT = 420 TOP = 0 VISIBILITY = SHOW>
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=200 ID="nospace">
<TR><TD HEIGHT=20 VALIGN=MIDDLE BACKGROUND="images/tag.gif">
<B CLASS="previewtag">ACCOUNT SETUP</B>
</TD></TR>
</TABLE>
</LAYER>
<!-- The layer below contains the headline and text of this screen -->
<FORM>
<P CLASS="title"><B>Your Account Access Phone Number</B></P>
<P>Enter the number you dial to connect to your Internet account.</P>
<SPACER TYPE=HORIZONTAL SIZE=72>
<TABLE CELLPADDING="0" CELLSPACING="0" BORDER="0">
<TR>
<TD VALIGN="BOTTOM" ALIGN="RIGHT">
<B>
Telephone Number:
</B>
<spacer type=vertical size=2>
</TD>
<TD VALIGN="TOP" ALIGN="LEFT" COLSPAN="2">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0" ID="nospace">
<TR>
<TD ALIGN="CENTER" VALIGN="BOTTOM">
<SCRIPT LANGUAGE="JavaScript" ID="dial101">
writeLocalText("Area Code:");
</SCRIPT>
</TD>
<TD ALIGN="CENTER" VALIGN="BOTTOM">
Number:&nbsp;
</TD>
</TR>
<TR>
<TD ALIGN="MIDDLE" VALIGN="TOP">
<INPUT NAME="accountAreaCode" TYPE="&{localString};" SIZE=3 MAXLENGTH=3>
</TD>
<TD ALIGN="LEFT" VALIGN="TOP">
<INPUT NAME="accountPhoneNumber" TYPE="text" SIZE=24 MAXLENGTH=24>
</TD></TR></TABLE>
</TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>

View File

@@ -0,0 +1,128 @@
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil -*-
*
* 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.
*/
<!-- to hide script contents from old browsers
var intlString = "";
var localString = "";
var theFile = parent.parent.globals.getAcctSetupFilename(self);
var intlFlag = parent.parent.globals.GetNameValuePair(theFile,"Mode Selection","IntlMode");
intlFlag = intlFlag.toLowerCase();
if (intlFlag == "yes") {
intlString = "text";
localString = "hidden";
}
else {
intlString = "hidden";
localString = "text";
}
function writeLocalText(theString)
{
if (localString == "text") {
document.write(theString);
}
}
function go(msg)
{
if (parent.parent.globals.document.vars.editMode.value == "yes")
return true;
else
return(checkData());
}
function checkData()
{
if (intlFlag != "yes") {
if (document.forms[0].accountAreaCode.value == "") {
alert("You must enter an area code.");
parent.parent.globals.setFocus(document.forms[0].accountAreaCode);
return(false);
}
if (parent.parent.globals.verifyAreaCode(document.forms[0].accountAreaCode.value)==false) {
alert("Please enter a valid area code.");
parent.parent.globals.setFocus(document.forms[0].accountAreaCode);
return(false);
}
}
if (document.forms[0].accountPhoneNumber.value == "") {
alert("You must enter a telephone number.");
parent.parent.globals.setFocus(document.forms[0].accountPhoneNumber);
return(false);
}
if (parent.parent.globals.verifyPhoneNumber(document.forms[0].accountPhoneNumber.value)==false) {
alert("Please enter a valid telephone number.");
parent.parent.globals.setFocus(document.forms[0].accountPhoneNumber);
return(false);
}
return(true);
}
function loadData()
{
// make sure all data objects/element exists and valid; otherwise, reload. SUCKS!
if (((document.forms[0].accountAreaCode == "undefined") || (document.forms[0].accountAreaCode == "[object InputArray]")) ||
((document.forms[0].accountPhoneNumber == "undefined") || (document.forms[0].accountPhoneNumber == "[object InputArray]")))
{
parent.controls.reloadDocument();
return;
}
if (intlFlag != "yes") {
document.forms[0].accountAreaCode.value = parent.parent.globals.document.vars.accountAreaCode.value;
}
document.forms[0].accountPhoneNumber.value = parent.parent.globals.document.vars.accountPhoneNumber.value;
parent.parent.globals.setFocus(document.forms[0].accountAreaCode);
if (parent.controls.generateControls) parent.controls.generateControls();
}
function saveData()
{
// make sure all form element are valid objects, otherwise just skip & return!
if (((document.forms[0].accountAreaCode == "undefined") || (document.forms[0].accountAreaCode == "[object InputArray]")) ||
((document.forms[0].accountPhoneNumber == "undefined") || (document.forms[0].accountPhoneNumber == "[object InputArray]")))
{
parent.controls.reloadDocument();
return;
}
if (intlFlag != "yes") {
parent.parent.globals.document.vars.accountAreaCode.value = document.forms[0].accountAreaCode.value;
}
parent.parent.globals.document.vars.accountPhoneNumber.value = document.forms[0].accountPhoneNumber.value;
}
// end hiding contents from old browsers -->

View File

@@ -0,0 +1,154 @@
<!-- -*- Mode: HTML; tab-width: 8; indent-tabs-mode: nil -*-
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.
-->
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
<HTML>
<HEAD>
<TITLE>Account Setup</TITLE>
<SCRIPT LANGUAGE = "JavaScript" ARCHIVE="asw.jar" SRC="dialinf1.js">
</SCRIPT>
<LINK REL=STYLESHEET TYPE="text/JavaScript" ARCHIVE="asw.jar" HREF="sheet.js">
</LINK>
</HEAD>
<BODY BACKGROUND="images/bg.gif" BGCOLOR="cccccc" ONLOAD="loadData()" ID="dialinf100">
<!-- The layer below contains the Account Setup identifier. -->
<LAYER NAME = "tagtext" LEFT = 420 TOP = 0 VISIBILITY = SHOW>
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=200 ID="nospace">
<TR><TD HEIGHT=20 VALIGN=MIDDLE BACKGROUND="images/tag.gif">
<B CLASS="previewtag">ACCOUNT SETUP</B>
</TD></TR>
</TABLE>
</LAYER>
<!-- The layer below contains the headline and text of this screen -->
<FORM>
<P CLASS="title"><B>Dialing Settings for Your Location</B></P>
<P>Please specify any special dialing settings that apply to the location that you are connecting from.</P>
<P>If you have Call Waiting, you should turn it off before you connect. Select a code from the pop-up menu below, or enter one of your own in the text box.</P>
<spacer type=horizontal size=72>
<TABLE CELLPADDING="0" CELLSPACING="0" BORDER="0"ID="minspace">
<TR>
<TD VALIGN="BOTTOM" ALIGN="RIGHT">
<B>Turn off Call Waiting with:&nbsp;</B>
<SPACER TYPE=VERTICAL SIZE=2>
</TD>
<TD ALIGN=LEFT VALIGN="MIDDLE" ALIGN="RIGHT">
<INPUT NAME="cwData" TYPE="text" SIZE=8 MAXLENGTH=8 ONCHANGE="updateCWOptions(document.forms[0].cwData)" ID="dialinf101">
<SPACER TYPE=HORIZONTAL SIZE=6>
</TD>
<TD ALIGN=LEFT VALIGN="BOTTOM" ALIGN="RIGHT">
<SPACER TYPE=VERTICAL SIZE=1>
<SELECT NAME="cwOptions" ONCHANGE="updateCWOptions(document.forms[0].cwOptions)" ID="dialinf102">
<OPTION VALUE="">(Line Doesn't Have Call Waiting)
<OPTION VALUE="*70,">*70,
<OPTION VALUE="1170,">1170,
<OPTION VALUE="70#,">70#,
</SELECT>
</TD>
</TR>
</TABLE>
<SPACER TYPE=VERTICAL SIZE=16>
<P>If you are connecting from a building with an internal phone network--such as from an office or a hotel--you need to access an outside line before you can connect.</P>
<spacer type=horizontal size=72>
<TABLE CELLPADDING="0" CELLSPACING="0" BORDER="0" ID="minspace">
<TR>
<TD VALIGN="BOTTOM" ALIGN="RIGHT">
<B>Access an outside line by dialing:&nbsp;</B>
<SPACER TYPE=VERTICAL SIZE=2>
</TD>
<TD ALIGN=LEFT VALIGN="MIDDLE" ALIGN="LEFT">
<INPUT NAME="prefixData" TYPE="text" SIZE=8 MAXLENGTH=20 ONCHANGE="updatePrefix(document.forms[0].prefixData)" ID="dialinf103">
</TD>
</TR>
</TABLE>
<!-- The layer below contains pulse and tone radio buttons --!>
<LAYER NAME = "dialingMethods" VISIBILITY = "hide">
<P ID="nospace">Which dialing method would you like to use?</P>
<spacer type=horizontal size=72>
<TABLE CELLPADDING="0" CELLSPACING="0" border="0" ID="minspace">
<TR>
<TD VALIGN="BOTTOM" ALIGN="RIGHT">
<B>
<FORM>
<INPUT NAME="dialMethod" TYPE="radio" VALUE="TONE" CHECKED>Tone
<INPUT NAME="dialMethod" TYPE="radio" VALUE="PULSE">Pulse
</FORM>
</B>
</TD>
</TR>
</TABLE>
</LAYER>
<SCRIPT LANGUAGE="JavaScript" ID="dialinf104">
generateDialingMethods();
updateCWOptions(document.forms[0].cwData);
</SCRIPT>
</FORM>
</BODY>
</HTML>

View File

@@ -0,0 +1,275 @@
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil -*-
*
* 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.
*/
<!-- to hide script contents from old browsers
function go(msg)
{
return(true);
}
function verifyCallWaiting(cwData)
{
var validFlag=true;
if (cwData.length > 0) {
for (var x=0; x<cwData.length; x++) {
if ("0123456789*#,".indexOf(cwData.charAt(x)) <0) {
validFlag=false;
break;
}
}
}
return(validFlag);
}
function verifyPrefix(prefixData)
{
var validFlag=true;
if (prefixData.length > 0) {
for (var x=0; x<prefixData.length; x++) {
if ("0123456789,".indexOf(prefixData.charAt(x)) <0) {
validFlag=false;
break;
}
}
}
return(validFlag);
}
function checkData()
{
if (verifyCallWaiting(document.forms[0].cwData.value) == false) {
alert("Please enter a valid call waiting string. (It may contain numbers, asterisks, pound signs and commas.)");
parent.parent.globals.setFocus(document.forms[0].cwData);
return(false);
}
if (verifyPrefix(document.forms[0].prefixData.value) == false) {
alert("Please enter a valid outside line string. (It may contain numbers and commas.)");
parent.parent.globals.setFocus(document.forms[0].prefixData);
return(false);
}
return(true);
}
function loadData()
{
netscape.security.PrivilegeManager.enablePrivilege("AccountSetup");
// make sure all data objects/element exists and valid; otherwise, reload. SUCKS!
if (((document.forms[0].cwData == "undefined") || (document.forms[0].cwData == "[object InputArray]")) ||
((document.forms[0].cwOptions == "undefined") || (document.forms[0].cwOptions == "[object InputArray]")) ||
((document.forms[0].prefixData == "undefined") || (document.forms[0].prefixData == "[object InputArray]")))
{
parent.controls.reloadDocument();
return;
}
document.forms[0].cwData.value=parent.parent.globals.document.forms[0].cwData.value;
// document.forms[0].cwOFF.checked=parent.parent.globals.document.forms[0].cwOFF.checked;
// document.forms[0].cwOFF.checked=(document.forms[0].cwData.value=="") ? 0:1;
var found=false;
for (var i = 0; i < document.forms[0].cwOptions.length; i++) {
if (document.forms[0].cwOptions[i].value==parent.parent.globals.document.forms[0].cwData.value) {
document.forms[0].cwOptions[i].selected=true;
found=true;
}
else {
document.forms[0].cwOptions[i].selected=false;
}
}
if (found==false) {
if (document.forms[0].cwData.value == "") {
document.forms[0].cwOptions[0].text = "(Line Doesn't Have Call Waiting)";
document.forms[0].cwOptions[0].value = "";
}
else {
document.forms[0].cwOptions[0].text = document.forms[0].cwData.value;
document.forms[0].cwOptions[0].value = document.forms[0].cwData.value;
}
document.forms[0].cwOptions[0].selected=true;
}
document.forms[0].prefixData.value=parent.parent.globals.document.forms[0].prefixData.value;
// document.forms[0].prefix.checked=parent.parent.globals.document.forms[0].prefix.checked;
// document.forms[0].prefix.checked=(document.forms[0].prefixData.value=="") ? 0:1;
var theModem = parent.parent.globals.document.vars.modem.value;
var theModemType = parent.parent.globals.document.setupPlugin.GetModemType(theModem);
if (theModemType != null) {
theModemType = theModemType.toUpperCase();
if (theModemType == "ISDN") {
// do nothing
}
else {
if (parent.parent.globals.document.forms[0].dialMethod.value == "PULSE") {
document.layers["dialingMethods"].document.forms[0].dialMethod[0].checked=false;
document.layers["dialingMethods"].document.forms[0].dialMethod[1].checked=true;
}
else {
document.layers["dialingMethods"].document.forms[0].dialMethod[0].checked=true;
document.layers["dialingMethods"].document.forms[0].dialMethod[1].checked=false;
}
}
}
parent.parent.globals.setFocus(document.forms[0].cwData);
if (parent.controls.generateControls) parent.controls.generateControls();
}
function saveData()
{
netscape.security.PrivilegeManager.enablePrivilege("AccountSetup");
// make sure all form element are valid objects, otherwise just skip & return!
if (((document.forms[0].cwData == "undefined") || (document.forms[0].cwData == "[object InputArray]")) ||
((document.forms[0].cwOptions == "undefined") || (document.forms[0].cwOptions == "[object InputArray]")) ||
((document.forms[0].prefixData == "undefined") || (document.forms[0].prefixData == "[object InputArray]")))
{
parent.controls.reloadDocument();
return;
}
// parent.parent.globals.document.forms[0].cwOFF.checked = document.forms[0].cwOFF.checked;
parent.parent.globals.document.forms[0].cwData.value = document.forms[0].cwData.value;
// parent.parent.globals.document.forms[0].prefix.checked = document.forms[0].prefix.checked;
parent.parent.globals.document.forms[0].prefixData.value = document.forms[0].prefixData.value;
var theModem = parent.parent.globals.document.vars.modem.value;
var theModemType = parent.parent.globals.document.setupPlugin.GetModemType(theModem);
if (theModemType != null) {
theModemType = theModemType.toUpperCase();
if (theModemType == "ISDN") {
parent.parent.globals.document.forms[0].dialMethod.value = theModemType;
}
else {
if (document.layers["dialingMethods"].document.forms[0].dialMethod[1].checked == true) {
parent.parent.globals.document.forms[0].dialMethod.value = document.layers["dialingMethods"].document.forms[0].dialMethod[1].value;
}
else {
parent.parent.globals.document.forms[0].dialMethod.value = document.layers["dialingMethods"].document.forms[0].dialMethod[0].value;
}
}
}
}
function updateCWOptions(theObject)
{
/*
if (theObject.name=="cwOFF") {
if (theObject.checked) {
parent.parent.globals.setFocus(document.forms[0].cwData);
}
else {
document.forms[0].cwData.value="";
document.forms[0].cwOFF.checked=0;
}
}
else
*/
if (theObject.name=="cwData") {
document.forms[0].cwOptions[0].text = "(Line Doesn't Have Call Waiting)";
document.forms[0].cwOptions[0].value = "";
if (document.forms[0].cwData.value=="") {
document.forms[0].cwOptions.selectedIndex = 0;
}
else {
var found=0;
for (var x=1; x<document.forms[0].cwOptions.length; x++) {
if (document.forms[0].cwOptions[x].text == document.forms[0].cwData.value) {
found=x;
break;
}
}
if (found<1) {
document.forms[0].cwOptions[0].text = document.forms[0].cwData.value;
document.forms[0].cwOptions[0].value = document.forms[0].cwData.value;
}
document.forms[0].cwOptions.selectedIndex = found;
}
}
else
if (theObject.name=="cwOptions") {
document.forms[0].cwData.value=document.forms[0].cwOptions[document.forms[0].cwOptions.selectedIndex].value;
parent.parent.globals.setFocus(document.forms[0].cwData);
// document.forms[0].cwOFF.checked=1;
}
return(true);
}
function updatePrefix(theObject)
{
/*
if (theObject.name=="prefix") {
if (theObject.checked) {
parent.parent.globals.setFocus(document.forms[0].prefixData);
}
else {
document.forms[0].prefixData.value="";
document.forms[0].prefix.checked=0;
}
}
else if (theObject.name=="prefixData") {
if (document.forms[0].prefixData.value=="") {
document.forms[0].prefix.checked=0;
}
else {
document.forms[0].prefix.checked=1;
}
}
*/
return(false);
}
function generateDialingMethods()
{
netscape.security.PrivilegeManager.enablePrivilege("AccountSetup");
var theModem = parent.parent.globals.document.vars.modem.value;
var theModemType = parent.parent.globals.document.setupPlugin.GetModemType(theModem);
if (theModemType != null && theModemType.toUpperCase() != "ISDN")
{
document.layers["dialingMethods"].visibility = "show";
}
else
{
document.layers["dialingMethods"].visibility = "hide";
}
}
// end hiding contents from old browsers -->

View File

@@ -0,0 +1,114 @@
<!-- -*- Mode: HTML; tab-width: 8; indent-tabs-mode: nil -*-
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.
-->
<!DOCTYPE HTML PUBLIC "-//IETF//DTD HTML 3.0//EN">
<HTML>
<HEAD>
<TITLE>Account Setup</TITLE>
<SCRIPT LANGUAGE = "JavaScript" ARCHIVE="asw.jar" SRC="dialinf2.js">
</SCRIPT>
<LINK REL=STYLESHEET TYPE="text/JavaScript" ARCHIVE="asw.jar" HREF="sheet.js">
</LINK>
</HEAD>
<BODY BACKGROUND="images/bg.gif" BGCOLOR="cccccc" ONLOAD="loadData()" ID="dialinf200">
<!-- The layer below contains the Account Setup identifier. -->
<LAYER NAME = "tagtext" LEFT = 420 TOP = 0 VISIBILITY = SHOW>
<TABLE BORDER=0 CELLPADDING=0 CELLSPACING=0 WIDTH=200 ID="nospace">
<TR><TD HEIGHT=20 VALIGN=MIDDLE BACKGROUND="images/tag.gif">
<B CLASS="previewtag">ACCOUNT SETUP</B>
</TD></TR>
</TABLE>
</LAYER>
<!-- The layer below contains the headline and text of this screen -->
<FORM>
<P CLASS="title"><B>Phone Number of Your Location</B></P>
<P>Please enter the phone number of the line that you are currently using--
the line that is now connected to your computer or modem. Account Setup will use this
information to set up your connection software to access the Internet.</P>
<SPACER TYPE=HORIZONTAL SIZE=72>
<TABLE CELLPADDING="0" CELLSPACING="0" BORDER="0">
<TR>
<TD VALIGN="BOTTOM" ALIGN="RIGHT">
<B>
Telephone Number:
</B>
<spacer type=vertical size=2>
</TD>
<TD VALIGN="TOP" ALIGN="LEFT" COLSPAN="2">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0" ID="nospace">
<TR>
<TD ALIGN="CENTER" VALIGN="BOTTOM">
<SCRIPT LANGUAGE="JavaScript" ID="dialinf202">
writeLocalText("Area Code:");
</SCRIPT>
</TD>
</TR>
<TR>
<TD ALIGN="MIDDLE" VALIGN="TOP">
<INPUT NAME="modemAreaCode" TYPE="&{localString};" SIZE=3 MAXLENGTH=3>
</TD>
<TD ALIGN="LEFT" VALIGN="TOP">
<INPUT NAME="modemPhoneNumber" TYPE="text" SIZE=24 MAXLENGTH=24>
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
<P>Optional: If an ISP is not available in your area, Account Setup will check up to 3
additional area codes to find an Internet service provider you can access.</P>
<SPACER TYPE=HORIZONTAL SIZE=72>
<TABLE CELLPADDING="0" CELLSPACING="0" BORDER="0">
<TR>
<TD VALIGN="TOP" ALIGN="LEFT" COLSPAN="2">
<TABLE CELLSPACING="0" CELLPADDING="0" BORDER="0" ID="nospace">
<TR>
<TD VALIGN="TOP" ALIGN="LEFT">
<B>Alternate Area Code 1:</B>
<SPACER TYPE=VERTICAL SIZE=2>
</TD>
<TD ALIGN="MIDDLE" VALIGN="TOP">
<INPUT NAME="altAreaCode1" TYPE="text" SIZE=3 MAXLENGTH=3>
</TD>
</TR>
<TR>
<TD VALIGN="MIDDLE" ALIGN="LEFT">
<B>Alternate Area Code 2:</B>
<SPACER TYPE=VERTICAL SIZE=2>
</TD>
<TD ALIGN="MIDDLE" VALIGN="TOP">
<INPUT NAME="altAreaCode2" TYPE="text" SIZE=3 MAXLENGTH=3>
</TD>
</TR>
<TR>
<TD VALIGN="BOTTOM" ALIGN="LEFT">
<B>Alternate Area Code 3:</B>
<SPACER TYPE=VERTICAL SIZE=2>
</TD>
<TD ALIGN="MIDDLE" VALIGN="TOP">
<INPUT NAME="altAreaCode3" TYPE="text" SIZE=3 MAXLENGTH=3>
</TD>
</TR>
</TABLE>
</TD>
</TR>
</TABLE>
</FORM>
</BODY>
</HTML>

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