This commit was manufactured by cvs2svn to create tag 'scullin_SNAPSHOT1'.

git-svn-id: svn://10.0.0.236/tags/scullin_SNAPSHOT1@4687 18797224-902f-48f8-a5cc-f745e15eee43
This commit is contained in:
(no author) 1998-06-30 00:55:19 +00:00
parent ace27f0975
commit 11f241c065
157 changed files with 0 additions and 64598 deletions

View File

@ -1,169 +0,0 @@
/* -*- Mode: Java; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.0 (the "NPL"); you may not use this file except in
* compliance with the NPL. You may obtain a copy of the NPL at
* http://www.mozilla.org/NPL/
*
* Software distributed under the NPL is distributed on an "AS IS" basis,
* WITHOUT WARRANTY OF ANY KIND, either express or implied. See the NPL
* for the specific language governing rights and limitations under the
* NPL.
*
* The Initial Developer of this code under the NPL is Netscape
* Communications Corporation. Portions created by Netscape are
* Copyright (C) 1998 Netscape Communications Corporation. All Rights
* Reserved.
*/
pref("editor.html_editor", "");
pref("editor.image_editor", "");
pref("editor.author", "");
pref("editor.auto_save_delay", 10); // minutes
pref("editor.html_editor", "");
pref("editor.image_editor", "");
pref("editor.fontsize_mode", 0);
pref("editor.template_location", "http://home.netscape.com/home/gold3.0_templates.html");
pref("editor.default_template_location", "http://home.netscape.com/home/gold3.0_templates.html");
pref("editor.template_last_loc", "");
pref("editor.template_history_0", "");
pref("editor.template_history_1", "");
pref("editor.template_history_2", "");
pref("editor.template_history_3", "");
pref("editor.template_history_4", "");
pref("editor.template_history_5", "");
pref("editor.template_history_6", "");
pref("editor.template_history_7", "");
pref("editor.template_history_8", "");
pref("editor.template_history_9", "");
pref("editor.template_history_10", "");
pref("editor.template_history_11", "");
pref("editor.template_history_12", "");
pref("editor.template_history_13", "");
pref("editor.template_history_14", "");
pref("editor.template_history_15", "");
pref("editor.template_history_16", "");
pref("editor.template_history_17", "");
pref("editor.template_history_18", "");
pref("editor.template_history_19", "");
pref("editor.url_history.TITLE_0", "");
pref("editor.url_history.TITLE_1", "");
pref("editor.url_history.TITLE_2", "");
pref("editor.url_history.TITLE_3", "");
pref("editor.url_history.TITLE_4", "");
pref("editor.url_history.TITLE_5", "");
pref("editor.url_history.TITLE_6", "");
pref("editor.url_history.TITLE_7", "");
pref("editor.url_history.TITLE_8", "");
pref("editor.url_history.TITLE_9", "");
pref("editor.url_history.URL_0", "");
pref("editor.url_history.URL_1", "");
pref("editor.url_history.URL_2", "");
pref("editor.url_history.URL_3", "");
pref("editor.url_history.URL_4", "");
pref("editor.url_history.URL_5", "");
pref("editor.url_history.URL_6", "");
pref("editor.url_history.URL_7", "");
pref("editor.url_history.URL_8", "");
pref("editor.url_history.URL_9", "");
localDefPref("editor.html_directory", "C:\\My Documents");
localDefPref("editor.image_directory", "C:\\My Documents");
localDefPref("editor.background_image", "");
pref("editor.last_pref_page", 0);
pref("editor.last_text_page", 0);
pref("editor.last_doc_page", 0);
pref("editor.last_table_page", 0);
pref("editor.use_custom_colors", false);
pref("editor.use_background_image", true);
pref("editor.publish_keep_links", true);
pref("editor.publish_keep_images", true);
pref("editor.show_copyright", true);
pref("editor.show_character_toolbar", true);
pref("editor.show_paragraph_toolbar", true);
pref("editor.text_color", "#000000");
pref("editor.link_color", "#0000FF");
pref("editor.active_link_color", "#000088");
pref("editor.followed_link_color", "#FF0000");
pref("editor.background_color", "#FFFFFF");
pref("editor.auto_save", false);
pref("editor.javascript_color", "#FF0000");
pref("editor.color_scheme", "Netscape Default Colors");
pref("editor.hints.bookmark", true);
pref("editor.hints.image", true);
pref("editor.hints.sitemanager", true);
pref("editor.hints.copyright", true);
pref("editor.hints.removelinks", true);
localDefPref("editor.hrule.height", 2);
localDefPref("editor.hrule.width", 100);
pref("editor.hrule.width_percent", true);
pref("editor.hrule.shading", true);
pref("editor.hrule.align", 0); // match types in edttypes.h ED_ALIGN_CENTER
pref("editor.publish_username", "");
pref("editor.publish_password", "");
pref("editor.publish_save_password", false);
pref("editor.publish_location", "");
pref("editor.publish_browse_location", "");
pref("editor.publish_last_loc", "");
pref("editor.publish_last_pass", "");
pref("editor.publish_history_0", "");
pref("editor.publish_history_1", "");
pref("editor.publish_history_2", "");
pref("editor.publish_history_3", "");
pref("editor.publish_history_4", "");
pref("editor.publish_history_5", "");
pref("editor.publish_history_6", "");
pref("editor.publish_history_7", "");
pref("editor.publish_history_8", "");
pref("editor.publish_history_9", "");
pref("editor.publish_history_10", "");
pref("editor.publish_history_11", "");
pref("editor.publish_history_12", "");
pref("editor.publish_history_13", "");
pref("editor.publish_history_14", "");
pref("editor.publish_history_15", "");
pref("editor.publish_history_16", "");
pref("editor.publish_history_17", "");
pref("editor.publish_history_18", "");
pref("editor.publish_history_19", "");
pref("editor.publish_password_0", "");
pref("editor.publish_password_1", "");
pref("editor.publish_password_2", "");
pref("editor.publish_password_3", "");
pref("editor.publish_password_4", "");
pref("editor.publish_password_5", "");
pref("editor.publish_password_6", "");
pref("editor.publish_password_7", "");
pref("editor.publish_password_8", "");
pref("editor.publish_password_9", "");
pref("editor.publish_password_10", "");
pref("editor.publish_password_11", "");
pref("editor.publish_password_12", "");
pref("editor.publish_password_13", "");
pref("editor.publish_password_14", "");
pref("editor.publish_password_15", "");
pref("editor.publish_password_16", "");
pref("editor.publish_password_17", "");
pref("editor.publish_password_18", "");
pref("editor.publish_password_19", "");
pref("editor.custom_color_0", "0,0,0");
pref("editor.custom_color_1", "99,0,0");
pref("editor.custom_color_2", "CC,0,0");
pref("editor.custom_color_3", "FF,0,0");
pref("editor.custom_color_4", "0,99,0");
pref("editor.custom_color_5", "0,CC,0");
pref("editor.custom_color_6", "0,FF,0");
pref("editor.custom_color_7", "0,0,99");
pref("editor.custom_color_8", "0,0,CC");
pref("editor.custom_color_9", "0,0,FF");
pref("editor.last_color_picked", "0,0,0");
pref("editor.last_background_color_picked", "255,255,255");
pref("editor.new_cell_has_space", true);

View File

@ -1,101 +0,0 @@
#
# This is a list of local files which get copied to the mozilla:dist directory
#
abcom.h
abdefn.h
addrbook.h
allxpstr.h
bkmks.h
cdefs.h
cgi.h
client.h
csid.h
ctxtfunc.h
dirprefs.h
ds.h
dserr.h
edt.h
edttypes.h
fe_proto.h
fe_rgn.h
fullsoft.h
garray.h
glhist.h
gui.h
hotlist.h
imap.h
intl_csi.h
itapefs.h
libcnv.h
libc_r.h
libevent.h
libi18n.h
libmime.h
libmocha.h
libnet.h
libstyle.h
lo_ele.h
mcom_db.h
mcom_ndbm.h
merrors.h
mime.h
mimeenc.h
minicom.h
mk_cx_fn.h
msgcom.h
msgmapi.h
msgnet.h
msgtypes.h
msg_filt.h
msg_srch.h
m_cvstrm.h
ncompat.h
net.h
np.h
npapi.h
npassoc.h
nsldap.h
nslocks.h
ntos.h
ntypes.h
pics.h
prefetch.h
proto.h
pwcacapi.h
resdef.h
shist.h
shistele.h
shr_str.h
spellchk.h
structs.h
undo.h
unix-dns.h
vcc.h
vobject.h
winfile.h
xlate.h
xp.h
xpassert.h
xpgetstr.h
xplocale.h
xp_core.h
xp_debug.h
xp_error.h
xp_file.h
xp_hash.h
xp_help.h
xp_list.h
xp_mcom.h
xp_md5.h
xp_mem.h
xp_mesg.h
xp_ncent.h
xp_qsort.h
xp_rgb.h
xp_sec.h
xp_str.h
xp_thrmo.h
xp_time.h
xp_trace.h
xupfonts.h

View File

@ -1,20 +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 = ..

View File

@ -1,664 +0,0 @@
/* -*- Mode: C; tab-width: 8; 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 _AB_COM_H_
#define _AB_COM_H_
#include "xp_core.h"
#include "msgcom.h"
#include "abdefn.h"
#include "dirprefs.h"
#ifdef XP_CPLUSPLUS
class AB_Pane;
class AB_ContainerPane;
class AB_ContainerInfo;
class AB_MailingListPane;
class AB_PersonPane;
#else
typedef struct AB_Pane AB_Pane;
typedef struct AB_ContainerPane AB_ContainerPane;
typedef struct AB_ContainerInfo AB_ContainerInfo;
typedef struct AB_MailingListPane AB_MailingListPane;
typedef struct AB_PersonPane AB_PersonPane;
#endif
XP_BEGIN_PROTOS
#define AB_API extern "C"
#if defined(XP_MAC)
#define FE_IMPLEMENTS_SHOW_PROPERTY_SHEET
#endif
const ABID AB_ABIDUNKNOWN = 0; /* Find a better home for this somewhere! */
/* new errors added by mscott for the 2 pane AB UI. I will eventually name this enumerated type AB_Error */
enum
{
AB_SUCCESS = 0,
AB_FAILURE,
AB_INVALID_PANE,
AB_INVALID_CONTAINER,
AB_INVALID_ATTRIBUTE,
AB_OUT_OF_MEMORY
};
/* these are the types of possible containers */
typedef enum
{
AB_LDAPContainer,
AB_MListContainer, /* a mailing list */
AB_PABContainer /* a personal AB */
} AB_ContainerType;
/* AB_ContainerAttributes define the types of information FEs can ask the BE about
a AB_ContainerInfo in the ABContainerPane. */
typedef enum
{
attribContainerType, /* mailing list? LDAP directory? PAB? */
attribName, /* the name for the container */
attribNumChildren, /* how many child containers does this container have? */
attribDepth, /* container depth in the overall hierarchy. 0 == root ctr, 1 == one level below a root container, etc. */
attribContainerInfo /* FEs might want to get the container Info * for a line in the container pane */
} AB_ContainerAttribute;
typedef struct AB_ContainerAttribValue
{
AB_ContainerAttribute attrib; /* used to determine value of the union */
union{
char * string;
int32 number; /* used by numchildren & depth */
AB_ContainerType containerType;
AB_ContainerInfo * container;
} u;
} AB_ContainerAttribValue;
typedef enum
{
AB_Drag_Not_Allowed = 0x00000000,
AB_Require_Copy = 0x00000001,
AB_Require_Move = 0x00000002,
AB_Default_Drag = 0xFFFFFFFF
} AB_DragEffect;
typedef enum
{
AB_attribUnknown = 0, /* unrecognized attribute */
AB_attribEntryType, /* mailing list or person entry */
AB_attribEntryID,
AB_attribFullName,
AB_attribNickName,
AB_attribGivenName, /* all of the following are person entry specific */
AB_attribMiddleName,
AB_attribFamilyName,
AB_attribCompanyName,
AB_attribLocality,
AB_attribRegion,
AB_attribEmailAddress,
AB_attribInfo,
AB_attribHTMLMail,
AB_attribExpandedName,
AB_attribTitle,
AB_attribPOAddress,
AB_attribStreetAddress,
AB_attribZipCode,
AB_attribCountry,
AB_attribWorkPhone,
AB_attribFaxPhone,
AB_attribHomePhone,
AB_attribDistName,
AB_attribSecurity,
AB_attribCoolAddress,
AB_attribUseServer,
AB_attribPager,
AB_attribCellularPhone,
AB_attribDisplayName,
AB_attribWinCSID, /* character set id */
AB_attribOther /* any attrib with this value or higher is always a string type (our dyanmic attributes) */
} AB_AttribID;
/* WARNING!!! WILL BE PHASING THIS STRUCTURE OUT!!!! */
typedef struct AB_EntryAttributeItem{
AB_AttribID id;
char * description; /* resource string specifying a user-readable descript for the attrib i.e. "First Name" */
XP_Bool sortable; /* is this attribute sortable? (may help FEs display the column if they know if it can be sorted or not */
}AB_EntryAttributeItem;
typedef enum{
AB_MailingList = 0,
AB_Person
} AB_EntryType;
typedef struct AB_AttributeValue
{
AB_AttribID attrib; /* we need this to know how to read the union */
union{
char * string;
XP_Bool boolValue;
AB_EntryType entryType; /* mailing list or person entry */
int16 shortValue; /* use for server type or WinCSID field */
} u;
} AB_AttributeValue;
/* New Column ID structure used to abstract the columns in the AB_Pane used by the FEs from the attributes thos columns actually
represent. */
typedef enum{
AB_ColumnID0 = 0,
AB_ColumnID1,
AB_ColumnID2,
AB_ColumnID3,
AB_ColumnID4,
AB_ColumnID5,
AB_ColumnID6,
AB_NumberOfColumns /* make sure this is always the last one!! */
} AB_ColumnID;
typedef struct AB_ColumnInfo{
AB_AttribID attribID; /* the attrib ID this column is displaying */
char * displayString; /* column display string */
XP_Bool sortable; /* is this column attribute sortable? i.e. phone number is not! */
} AB_ColumnInfo;
/**********************************************************************************************
FE Call back functions. We'll show the types here...NOTE: FEs must now register their call back
functions through these APIs so the back end knows which return to use.
*********************************************************************************************/
/* FEs must register this function with the appropriate pane, it is called by the back end in
response to the following commands: AB_PropertiesCmd, AB_AddUserCmd, AB_AddMailingListCmd */
/* typedef int AB_ShowPropertySheetForEntryFunc (MSG_Pane * pane, AB_EntryType entryType); */
typedef int AB_ShowPropertySheetForEntryFunc (MSG_Pane * pane, MWContext * context);
int AB_SetShowPropertySheetForEntryFunc(
MSG_Pane * abPane,
AB_ShowPropertySheetForEntryFunc * func);
/* BE sets the type for the DIR_Server and hands it to the FEs to be displayed & filled out in a
pane. It is called by the back end in response to the following commands: AB_PropertiesCmd,
AB_NewLDAPDirectory, AB_NewAddressBook. */
typedef int AB_ShowPropertySheetForDirFunc(DIR_Server * server, MWContext * context, XP_Bool newDirectory /* is it a new directory? */);
int AB_SetShowPropertySheetForDirFunc(
MSG_Pane * abcPane, /* container pane */
AB_ShowPropertySheetForDirFunc * func);
/***************************************************************************************
DON'T USE THIS FUNCTION!!!! THIS WILL BE PHASING OUT!!!!!! #mscott 01/21/98
This is a callback into the FE instructing them to bring up a person entry pane or a
mailing list pane. The back end has already created the pane. A type is included to let the FE
determine if the pane is a mailing list or person entry pane. In addition, in the case of a mailing list
pane, the FE must still initialize the mailing list pane before it can be used
***************************************************************************************/
#ifdef FE_IMPLEMENTS_SHOW_PROPERTY_SHEET
extern int FE_ShowPropertySheetForAB2(
MSG_Pane * pane, /* BE created mailing list or person entry pane */
AB_EntryType entryType); /* mailing list or person entry */
#endif
/***************************************************************************************
None pane-specific APIs. These function work on many panes
***************************************************************************************/
int AB_ClosePane(MSG_Pane * pane);
/****************************************************************************************
Address Book Pane General APIs - creating, initializing, closing, changing containers,
searching, etc.
*****************************************************************************************/
int AB_CreateABPane(
MSG_Pane ** abPane,
MWContext * context,
MSG_Master * master);
int AB_InitializeABPane(
MSG_Pane * abPane,
AB_ContainerInfo * abContainer);
/* to change the container the abPane is currently displaying */
int AB_ChangeABContainer(
MSG_Pane * abPane,
AB_ContainerInfo * container); /* the new containerInfo to display */
int AB_GetEntryIndex(
MSG_Pane * abPane,
ABID id, /* entry id in the database */
MSG_ViewIndex * index); /* FE allocated, BE fills with index */
int AB_GetABIDForIndex(
MSG_Pane * abPane,
MSG_ViewIndex index,
ABID * id); /* FE allocated. BE fills with the id you want */
int AB_SearchDirectoryAB2(
MSG_Pane * abPane,
char * searchString);
int AB_LDAPSearchResultsAB2(
MSG_Pane * abPane,
MSG_ViewIndex index,
int32 num);
int AB_FinishSearchAB2(MSG_Pane * abPane);
int AB_CommandAB2(
MSG_Pane * srcPane, /* NOTE: this can be a ABpane or an ABContainerPane!!! you can delete containers & entries */
AB_CommandType command, /* delete or mailto are the only currently supported commands */
MSG_ViewIndex * indices,
int32 numIndices);
int AB_CommandStatusAB2(
MSG_Pane * srcPane, /* NOTE: Can be an ABPane or an ABContainerPane!! */
AB_CommandType command,
MSG_ViewIndex * indices,
int32 numIndices,
XP_Bool * selectable_p,
MSG_COMMAND_CHECK_STATE * selected_p,
const char ** displayString,
XP_Bool * plural_p);
/* still need to add registering and unregistering compose windows */
/****************************************************************************************
AB_ContainerInfo General APIs - adding users and a sender. Doesn't require a pane.
*****************************************************************************************/
int AB_AddUserAB2(
AB_ContainerInfo * abContainer, /* the container to add the person to */
AB_AttributeValue * values, /* FE defined array of attribute values for the new user. FE must free this array */
uint16 numItems,
ABID * entryID); /* BE returns the ABID for this new user */
int AB_AddUserWithUIAB2(
AB_ContainerInfo * abContainer,
AB_AttributeValue * values,
uint16 numItems,
XP_Bool lastOneToAdd);
int AB_AddSenderAB2(
AB_ContainerInfo * abContainer,
char * author,
char * url);
/****************************************************************************************
Drag and Drop Related APIs - vcards, ab lines, containers, etc.
*****************************************************************************************/
int AB_DragEntriesIntoContainer(
MSG_Pane * srcPane, /* could be an ABPane or ABCPane */
const MSG_ViewIndex * srcIndices, /* indices of items to be dragged */
int32 numIndices,
AB_ContainerInfo * destContainer,
AB_DragEffect request); /* copy or move? */
/* FE's should call this function to determine if the drag & drop they want to perform is
valid or not. I would recommend calling it before the FE actually performs the drag & drop call */
AB_DragEffect AB_DragEntriesIntoContainerStatus(
MSG_Pane * abPane,
const MSG_ViewIndex * indices,
int32 numIndices,
AB_ContainerInfo * destContainer,
AB_DragEffect request); /* do you want to do a move? a copy? default drag? */
/****************************************************************************************
Importing and Exporting - ABs from files, vcards...
*****************************************************************************************/
typedef enum
{
AB_Filename, /* char * in import and export APIs contain an FE allocated/freed filename */
AB_PromptForFileName, /* prompt for file name on import or export */
AB_Vcard,
AB_CommaList, /* comma separated list of email addresses */
AB_RawData /* we don't know what it is, will try to extract email addresses */
} AB_ImportExportType;
int AB_ImportData(
AB_ContainerInfo * destContainer,
const char * buffer, /* could be a filename or NULL (if type = prompt for filename) or a block of data to be imported */
int32 bufSize, /* how big is the buffer? */
AB_ImportExportType dataType); /* valid types: All */
/* returns TRUE if the container accepts imports of the data type and FALSE otherwise */
XP_Bool AB_ImportDataStatus(
AB_ContainerInfo * destContainer,
AB_ImportExportType dataType);
/* exporting always occurs to a file unless the data type is vcard. Only valid export data types are: vcard,
filename, prompt for filename */
int AB_ExportData(
AB_ContainerInfo * srcContainer,
char ** buffer, /* filename or NULL. Or if type = Vcard, the BE allocated vcard. FE responosible for freeing it?? */
int32 * bufSize, /* ignored unless VCard is data type in which case FE allocates, BE fills */
AB_ImportExportType dataType); /* valid types: filename, prompt for filename, vcard */
/****************************************************************************************
ABContainer Pane --> Creation, Loading, getting line data for each container.
*****************************************************************************************/
int AB_CreateContainerPane(
MSG_Pane ** abContainerPane, /* BE will pass back ptr to pane through this */
MWContext * context,
MSG_Master * master);
int AB_InitializeContainerPane(MSG_Pane * abContainerPane);
/* this will return MSG_VIEWINDEXNONE if the container info is not in the pane */
MSG_ViewIndex AB_GetIndexForContainer(
MSG_Pane * abContainerPane,
AB_ContainerInfo * container); /* container you want the index for */
/* this will return NULL if the index is invalid */
AB_ContainerInfo * AB_GetContainerForIndex(
MSG_Pane * abContainerPane,
const MSG_ViewIndex index);
/* the following set of APIs support getting/setting container pane line data out such as the container's
name, type, etc. We are going to try a particular discipline for memory management of AB_ContainerAttribValues.
For APIs which get an attribute value, the BE will actually allocate the struct. To free the space, the FE should
call AB_FreeContainerAttribValue. For any API which sets an attribute value, the FE is responsible for allocating and
de-allocating the data. */
int AB_GetContainerAttributeForPane(
MSG_Pane * abContainerPane,
MSG_ViewIndex index, /* index of container you want information for */
AB_ContainerAttribute attrib, /* attribute FE wants to know */
AB_ContainerAttribValue ** value); /* BE allocates struct. FE should call AB_FreeContainerAttribValue to free space when done */
int AB_SetContainerAttributeForPane(
MSG_Pane * abContainerPane,
MSG_ViewIndex index,
AB_ContainerAttribValue * value); /* FE handles all memory allocation! */
int AB_GetContainerAttribute(
AB_ContainerInfo * ctr,
AB_ContainerAttribute attrib,
AB_ContainerAttribValue ** value); /* BE allocates struct. FE should call AB_FreeContainerAttribValue to free space when donee */
int AB_SetContainerAttribute(
AB_ContainerInfo * ctr,
AB_ContainerAttribValue * value); /* FE handles all memory allocateion / deallocation! */
int AB_GetContainerAttributes(
AB_ContainerInfo * ctr,
AB_ContainerAttribute * attribsArray,
AB_ContainerAttribValue ** valuesArray,
uint16 * numItems);
int AB_SetContainerAttributes(
AB_ContainerInfo * ctr,
AB_ContainerAttribValue * valuesArray,
uint16 numItems);
/* getting and setting multiple container attributes on a per container pane basis */
int AB_GetContainerAttributesForPane(
MSG_Pane * abContainerPane,
MSG_ViewIndex index,
AB_ContainerAttribute * attribsArray,
AB_ContainerAttribValue ** valuesArray,
uint16 * numItems);
int AB_SetContainerAttributesForPane(
MSG_Pane * abContainerPane,
MSG_ViewIndex index,
AB_ContainerAttribValue * valuesArray,
uint16 numItems);
int AB_FreeContainerAttribValue(AB_ContainerAttribValue * value); /* BE will free the attribute value */
int AB_FreeContainerAttribValues(AB_ContainerAttribValue * valuesArray, uint16 numItems);
XP_Bool AB_IsStringContainerAttribValue(AB_ContainerAttribValue * value); /* use this to determine if your attrib is a string attrib */
/* Use the following two functions to build the combo box in the Address Window of all the root level containers.
You first ask for the number of root level (PABs and LDAP directories). Use this number to allocate an array of
AB_ContainerInfo ptrs. Give this array to the back end and we will fill it. FE can destroy array when done with it.
FE shoud NOT be deleting the individual AB_ContainerInfo ptrs. */
int AB_GetNumRootContainers(
MSG_Pane * abContainerPane,
int32 * numRootContainers);
int AB_GetOrderedRootContainers(
MSG_Pane * abContainerPane,
AB_ContainerInfo ** ctrArray, /* FE Allocated & Freed */
int32 * numCtrs); /* in - # of elements in ctrArray. out - BE fills with # root containers stored in ctrArray */
/* sometimes you want to get a handle on the DIR_Sever for a particular container. Both return NULL if for some
reason there wasn't a DIR_Server. If the container is a mailing list, returns DIR_Server of the PAB the list is in.
NOTE: If you modify any of the DIR_Server properties, you should call AB_UpdateDIRServerForContainer to make sure that the container
(and hence any pane views on the container) are updated */
DIR_Server * AB_GetDirServerForContainer(AB_ContainerInfo * container);
/* Please don't call this function. It is going away!!! Use AB_UpdateDirServerForContainerPane instead!! */
int AB_UpdateDIRServerForContainer(AB_ContainerInfo * container);
/* will create a new container in the container pane if the directory does not already exist. Otherwise updates the
directory's container in the pane */
int AB_UpdateDIRServerForContainerPane(
MSG_Pane * abContainerPane,
DIR_Server * directory);
/*******************************************************************************************************************
Old Column Header APIs. These will be phased out!!! Please don't use them
******************************************************************************************************************/
int AB_GetNumEntryAttributesForContainer(
AB_ContainerInfo * container,
uint16 * numItems); /* BE will fill this integer with the number of available attributes for the container */
int AB_GetEntryAttributesForContainer(
AB_ContainerInfo * container,
AB_EntryAttributeItem * items, /* FE allocated array which BE fills with values */
uint16 * maxItems); /* FE passes in # elements allocated in array. BE returns # elements filled in array */
/********************************************************************************************************************
Our New Column Header APIs. We'll be phasing out AB_GetNumEntryAttributesForContainer and AB_GetEntryAttributesForContainer
********************************************************************************************************************/
AB_ColumnInfo * AB_GetColumnInfo(
AB_ContainerInfo * container,
AB_ColumnID columnID);
int AB_GetNumColumnsForContainer(AB_ContainerInfo * container);
int AB_GetColumnAttribIDs(
AB_ContainerInfo * container,
AB_AttribID * attribIDs, /* FE allocated array of attribs. BE fills with values */
int * numAttribs); /* FE passes in # elements allocated in array. BE returns # elements filled */
int AB_FreeColumnInfo(AB_ColumnInfo * columnInfo);
/****************************************************************************************
AB Pane List Data -> how to get ab pane line attributes such as name, address, phone, etc.
*****************************************************************************************/
/* to actually get an entry attribute */
int AB_GetEntryAttributeForPane(
MSG_Pane * abPane,
MSG_ViewIndex index,
AB_AttribID attrib, /* what attribute do you want? */
AB_AttributeValue ** valueArray); /* BE handles memory allocation. FE must call AB_FreeEntryAttributeValue when done */
int AB_GetEntryAttribute(
AB_ContainerInfo * container,
ABID entryid, /* an identifier or key used to name the object in the container */
AB_AttribID attrib, /* attribute type the FE wants to know */
AB_AttributeValue ** valueArray); /* BE handles memory allocation. FE must call AB_FreeEntryAttributeValue when done */
int AB_SetEntryAttribute(
AB_ContainerInfo * container,
ABID entryid, /* an identifier or key used to name the object in the container */
AB_AttributeValue * value); /* FE handles all memory allocation */
int AB_SetEntryAttributeForPane(
MSG_Pane * abPane,
MSG_ViewIndex index,
AB_AttributeValue * value); /* FE handles all memory allocation */
/* we also allow you to set entry attributes in batch by passing in an array of attribute values */
int AB_SetEntryAttributes(
AB_ContainerInfo * container,
ABID entryID,
AB_AttributeValue * valuesArray, /* FE allocated array of attribute values to set */
uint16 numItems); /* FE passes in # items in array */
int AB_SetEntryAttributesForPane(
MSG_Pane * abPane,
MSG_ViewIndex index,
AB_AttributeValue * valuesArray,
uint16 numItems);
int AB_GetEntryAttributes(
AB_ContainerInfo * container,
ABID entryID,
AB_AttribID * attribs, /* FE allocated array of attribs that you want */
AB_AttributeValue ** values, /* BE allocates & fills an array of values for the input array of attribs */
uint16 * numItems); /* IN: size of attribs array. OUT: # of values in value array */
int AB_GetEntryAttributesForPane(
MSG_Pane * abPane,
MSG_ViewIndex index,
AB_AttribID * attribs, /* FE allocated array of attribs that you want */
AB_AttributeValue ** values,
uint16 * numItems);
/* Memory allocation APIs for setting/getting entry attribute values */
int AB_FreeEntryAttributeValue(AB_AttributeValue * value /* pointer to a value */);
int AB_FreeEntryAttributeValues(AB_AttributeValue * values /* array of values */, uint16 numItems);
int AB_CopyEntryAttributeValue(
AB_AttributeValue * srcValue, /* already allocated attribute value you want to copy from */
AB_AttributeValue * destValue); /* already allocated attribute value you want to copy into */
XP_Bool AB_IsStringEntryAttributeValue(AB_AttributeValue * value);
/****************************************************************************************
Sorting
*****************************************************************************************/
/* sorting by first name is a global setting. It is set per abPane and does not change
when you load a new container into the abPane */
XP_Bool AB_GetSortByFirstNameAB2(MSG_Pane * abPane); /* is the pane sorting by first name? */
void AB_SortByFirstNameAB2(
MSG_Pane * abPane,
XP_Bool sortByFirstName); /* true for sort by first, false for last first */
/* Insert our sort by column stuff here */
int AB_SortByAttribute(
MSG_Pane * abPane,
AB_AttribID id, /* attribute we want to sort by */
XP_Bool sortAscending);
int AB_GetPaneSortedByAB2(
MSG_Pane * abPane,
AB_AttribID * attribID); /* BE fills with the attribute we are sorting by */
XP_Bool AB_GetPaneSortedAscendingAB2(MSG_Pane * abPane);
/*****************************************************************************************
APIs for the Mailing List Pane. In addition to these, the mailing list pane responds to
previous AB APIs such as AB_Close, MSG_GetNumLines().
****************************************************************************************/
int AB_InitializeMailingListPaneAB2(MSG_Pane * mailingListPane);
AB_ContainerInfo * AB_GetContainerForMailingList(MSG_Pane * mailingListPane);
/* this could return ABID = 0 for a new entry that is not in the database */
ABID AB_GetABIDForMailingListIndex(
MSG_Pane * mailingListPane,
const MSG_ViewIndex index);
MSG_ViewIndex AB_GetMailingListIndexForABID(
MSG_Pane * mailingListPane,
ABID entryID); /* this function could return MSG_VIEWINDEXNONE if entryID = 0 or not in list */
/* Use these two APIs to get Mailing List ENTRY attributes (i.e. people or other mailing list attributes in this mailing list) */
int AB_SetMailingListEntryAttributes(
MSG_Pane * pane,
const MSG_ViewIndex index,
AB_AttributeValue * valuesArray, /* FE allocated array of attribute values you want to set */
uint16 numItems);
int AB_GetMailingListEntryAttributes(
MSG_Pane * mailingListPane,
const MSG_ViewIndex index,
AB_AttribID * attribs, /* FE allocated & freed array of attribs you want */
AB_AttributeValue ** values, /* BE allocates & fills values for the input array of attribs */
uint16 * numItems); /* FE provides # attribs in array. BE fills with # values returned in values */
/* Use these two APIs to Set and Get the Mailing List properties. */
int AB_GetMailingListAttributes(
MSG_Pane * mailingListPane,
AB_AttribID * attribs, /* FE allocated array of attribs */
AB_AttributeValue ** values, /* BE allocates & fills values. FE must call a free to the back end */
uint16 * numItems);
int AB_SetMailingListAttributes(
MSG_Pane * mailingListPane,
AB_AttributeValue * valuesArray, /* FE allocated array of attribute values you want to set */
uint16 numItems);
/*******************************************************************************************
APIs for the person entry pane aka the person property sheets. The person entry pane is created
by the back end and given to the front end in the call FE_ShowPropertySheetFor. In the current
incarnation, person atributes are set and retrieved through the person entry pane and NOT through
the AB_ContainerInfo the person is in. If you "cheat" and go through the container directly, you may
not be getting the correct information. When the person entry pane is committed, the changes are pushed
back into the container. During the commit process, if it is a new person then a new entry is made in the
database.
********************************************************************************************/
AB_ContainerInfo * AB_GetContainerForPerson(MSG_Pane * personPane);
ABID AB_GetABIDForPerson(MSG_Pane * personPane); /* could return 0 if new user */
/* get and set the person attributes here */
int AB_SetPersonEntryAttributes(
MSG_Pane * personPane,
AB_AttributeValue * valuesArray,
uint16 numItems);
int AB_GetPersonEntryAttributes(
MSG_Pane * personPane,
AB_AttribID * attribs, /* FE allocted & freed array of attribs they want */
AB_AttributeValue ** values, /* BE allocates & fills values */
uint16 * numItems); /* in - FE provides # of attribs. out - BE fills with # values */
int AB_CommitChanges(MSG_Pane * pane); /* commits changes to a mailing list pane or a person entry pane! */
XP_END_PROTOS
#endif /* _AB_COM_H */

View File

@ -1,200 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 _ABDefn_H_
#define _ABDefn_H_
/* max lengths for address book fields */
const int kMaxFullNameLength = 256; /* common name */
const int kMaxNameLength = 64; /* given, middle, family */
const int kMaxCompanyLength = 128; /* company name */
const int kMaxLocalityLength = 128; /* city */
const int kMaxRegionLength = 128; /* state */
const int kMaxCountryLength = 128; /* state */
const int kMaxEmailAddressLength = 256;
const int kMaxInfo = 1024;
const int kMaxTitle = 64;
const int kMaxAddress = 128;
const int kMaxZipCode = 40;
const int kMaxPhone = 32;
const int32 kMaxDN = 32768;
const int kMaxCoolAddress = 256;
const int kMaxAddressEntry = 1000;
const short kDefaultDLS = 0;
const short kSpecificDLS = 1;
const short kHostOrIPAddress = 2;
typedef uint32 ABID;
/* This structure represents a single line in the address book pane
*/
typedef struct AB_EntryLineTag
{
ABID entryType; /* type of entry either person or list */
char fullname[256];
char emailAddress[256];
char companyName[128];
char nickname[64];
char locality[128];
char workPhone[32];
#ifdef XP_CPLUSPLUS
public:
void Initialize();
#endif
} AB_EntryLine;
typedef struct PersonEntryTag {
char * pNickName;
char * pGivenName;
char * pMiddleName;
char * pFamilyName;
char * pCompanyName;
char * pLocality;
char * pRegion;
char * pEmailAddress;
char * pInfo;
XP_Bool HTMLmail;
char * pTitle;
char * pPOAddress;
char * pAddress;
char * pZipCode;
char * pCountry;
char * pWorkPhone;
char * pFaxPhone;
char * pHomePhone;
char * pDistName;
short Security;
char * pCoolAddress;
short UseServer;
int16 WinCSID;
#ifdef XP_CPLUSPLUS
public:
void Initialize();
void CleanUp();
#endif
} PersonEntry;
typedef struct MailingListEntryTag {
char * pFullName;
char * pNickName;
char * pInfo;
char * pDistName;
int16 WinCSID;
#ifdef XP_CPLUSPLUS
public:
void Initialize();
void CleanUp();
#endif
} MailingListEntry;
const ABID ABTypeAll = 35;
const ABID ABTypePerson = 36;
const ABID ABTypeList = 37;
const unsigned long ABTypeEntry = 0x70634944; /* ASCII - 'pcID' */
const unsigned long ABFullName = 0x636E2020; /* ASCII - 'cn ' */
const unsigned long ABNickname = 0x6E69636B; /* ASCII - 'nick' */
const unsigned long ABEmailAddress = 0x6D61696C; /* ASCII - 'mail' */
const unsigned long ABLocality = 0x6C6F6320; /* ASCII - 'loc ' */
const unsigned long ABCompany = 0x6F726720; /* ASCII - 'org ' */
/* defines for vcard support */
#define vCardClipboardFormat "+//ISBN 1-887687-00-9::versit::PDI//vCard"
#define vCardMimeFormat "text/x-vcard"
typedef enum
{
/* FILE MENU
=========
*/
AB_NewMessageCmd, /* Send a new message to the selected entries */
AB_ImportCmd, /* import a file into the address book */
AB_SaveCmd, /* export to a file */
AB_CloseCmd, /* close the address book window */
AB_NewAddressBook, /* Create a new personal address book */
AB_NewLDAPDirectory, /* Create a new LDAP directory */
/* EDIT MENU
=========
*/
AB_UndoCmd, /* Undoes the last operation. */
AB_RedoCmd, /* Redoes the last undone operation. */
AB_DeleteCmd, /* Causes the given entries to be
deleted. */
AB_DeleteAllCmd, /* Causes all occurrences of the given entries to be deleted. */
AB_LDAPSearchCmd, /* Perform an LDAP search */
/* VIEW/SORT MENUS
===============
*/
AB_SortByTypeCmd, /* Sort alphabetized by type. */
AB_SortByFullNameCmd, /* Sort alphabetizedby full name. */
AB_SortByLocality, /* Sort by state */
AB_SortByNickname, /* Sort by nickname */
AB_SortByEmailAddress, /* Sort by email address */
AB_SortByCompanyName, /* Sort by email address */
AB_SortAscending, /* Sort current column ascending */
AB_SortDescending, /* Sort current column descending */
/* these are the new sort command IDs added for the 2 pane AB. Use these instead of the previous ones...*/
AB_SortByColumnID0,
AB_SortByColumnID1,
AB_SortByColumnID2,
AB_SortByColumnID3,
AB_SortByColumnID4,
AB_SortByColumnID5,
AB_SortByColumnID6,
/* ITEM MENU
============
*/
AB_AddUserCmd, /* Add a user to the address book */
AB_AddMailingListCmd, /* Add a mailing list to the address book */
AB_PropertiesCmd, /* Get the properties of an entry */
AB_CallCmd, /* Call the entry using CallPoint */
AB_ImportLdapEntriesCmd, /* Add a user to the AB from an LDAP directory */
/* Mailing List Pane Specific Commands!!! */
AB_InsertLineCmd, /* Insert a blank entry line into the mailing list pane */
AB_ReplaceLineCmd /* Replace the entry in the mailing list pane with a blank entry */
} AB_CommandType;
#endif

View File

@ -1,449 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 _AddrBook_H_
#define _AddrBook_H_
#include "xp_core.h"
#include "msgcom.h"
#include "abdefn.h"
#include "dirprefs.h"
#ifdef XP_CPLUSPLUS
class MLPane;
class ABPane;
class AddressPane;
class ABook;
#else
typedef struct MLPane MLPane;
typedef struct ABPane ABPane;
typedef struct AddressPane AddressPane;
typedef struct ABook ABook;
#endif
XP_BEGIN_PROTOS
#define AB_kGromitDbFileName "da5id.nab"
#define AB_CONFIG_USE_GROMIT_FILE_FORMAT 1
/****************************************************************************/
/* Get the address book .*/
/****************************************************************************/
ABook* FE_GetAddressBook(MSG_Pane* pane);
/****************************************************************************/
/* This is a callback into the FE to bring up a modal property sheet */
/* for modifying an existing entry or creating a new one from a */
/* person structure. If entryId != MSG_MESSAGEIDNONE then it is the */
/* entryID of the entry to modify. Each FE should Return TRUE if the user */
/* hit ok return FALSE if they hit cancel and return -1 if there was a */
/* problem creating the window or something */
/****************************************************************************/
int FE_ShowPropertySheetFor (MWContext* context, ABID entryID,
PersonEntry* pPerson);
/****************************************************************************/
/* Return whether or not to attach the users */
/* vcard to outgoing messages */
/****************************************************************************/
XP_Bool AB_AttachUsersvCard(void);
/****************************************************************************/
/* Convert the address book error code to .*/
/****************************************************************************/
int AB_ConvertABErrToMKErr(uint32 err);
/****************************************************************************/
/* Create and initialize the address book pane which is the a view on an */
/* address book. It will provide a sorted list of all the address book */
/* entries ids . This is intended to be used in a two step */
/* process of create and then initialize */
/****************************************************************************/
int AB_InitAddressBookPane(ABPane** ppABookPane,
DIR_Server* dir,
ABook* pABook,
MWContext* context,
MSG_Master* master,
unsigned long sortBy,
XP_Bool sortForward);
/****************************************************************************/
/* Create the address book pane which is the a view on an */
/* address book. */
/****************************************************************************/
int AB_CreateAddressBookPane(ABPane** ppABookPane,
MWContext* context,
MSG_Master* master);
/****************************************************************************/
/* Initialize the address book pane which is the a view on an */
/* address book. It will provide a sorted list of all the address book */
/* entries ids .*/
/****************************************************************************/
int AB_InitializeAddressBookPane(ABPane* ppABookPane,
DIR_Server* dir,
ABook* pABook,
unsigned long sortBy,
XP_Bool sortForward);
/****************************************************************************/
/* Close the address book pane. Called when the view on an address book */
/* is being closed */
/****************************************************************************/
int AB_CloseAddressBookPane(ABPane** ppABookPane);
/****************************************************************************/
/* Create and initialize a mailing list pane which is the a view on an */
/* mailing list. It will provide a sorted view of all the entries in a */
/* mailing list. This is intended to be used in as a one one step process */
/****************************************************************************/
int AB_InitMailingListPane(MLPane** ppABookPane,
ABID* listID,
DIR_Server* dir,
ABook* pABook,
MWContext* context,
MSG_Master* master,
unsigned long sortBy,
XP_Bool sortForward);
/****************************************************************************/
/* Create a mailing list pane which is the a view on an */
/* mailing list. This is intended to be used in a two step */
/* process of create and then initialize */
/****************************************************************************/
int AB_CreateMailingListPane(MLPane** ppABookPane,
MWContext* context,
MSG_Master* master);
/****************************************************************************/
/* Initialize a mailing list pane which is the a view on an */
/* mailing list. It will provide a sorted view of all the entries in a */
/* mailing list.*/
/****************************************************************************/
int AB_InitializeMailingListPane(MLPane* pABookPane,
ABID* listID,
DIR_Server* dir,
ABook* pABook);
/****************************************************************************/
/* Close the mailing list pane. Called when the view on an mailing list */
/* is being closed */
/****************************************************************************/
int AB_CloseMailingListPane(MLPane** ppMLPane);
/****************************************************************************/
/* Register a compose window with the address book */
/* The composition pane should do this everytime it opens */
/* so that name completion can take place */
/****************************************************************************/
int AB_RegisterComposeWindow(ABook* pABook, DIR_Server* directory);
/****************************************************************************/
/* Unregister a compose window with the address book */
/* The composition pane should do this when it is getting closed */
/****************************************************************************/
int AB_UnregisterComposeWindow(ABook* pABook, DIR_Server* directory);
/****************************************************************************/
/* Change the Current directory */
/****************************************************************************/
int AB_ChangeDirectory(ABPane* pABookPane, DIR_Server* directory);
/****************************************************************************/
/* Begin a search on the LDAP directory */
/****************************************************************************/
int AB_SearchDirectory(ABPane* pABookPane, char* searchString);
/****************************************************************************/
/* Process LDAP search results*/
/****************************************************************************/
int AB_LDAPSearchResults(ABPane* pABookPane, MSG_ViewIndex index, int32 num);
/****************************************************************************/
/* Finish an LDAP search */
/****************************************************************************/
int AB_FinishSearch(ABPane* pABookPane, MWContext* context);
/****************************************************************************/
/* Create and initialize the address book database */
/****************************************************************************/
int AB_InitAddressBook(DIR_Server* directory, ABook** ppABook);
/****************************************************************************/
/* Create and initialize the address book database */
/* upgrading the old html address book if we need to*/
/****************************************************************************/
int AB_InitializeAddressBook(DIR_Server* directory, ABook** ppABook,
const char * pOldHTMLBook);
/****************************************************************************/
/* Close the address book database */
/****************************************************************************/
int AB_CloseAddressBook(ABook** ppABook);
/****************************************************************************/
/* Add a person entry to the database */
/****************************************************************************/
int AB_AddUser(DIR_Server* dir, ABook* pABook, PersonEntry* pPerson,
ABID* entryID);
int AB_AddUserWithUI (MWContext *context, PersonEntry *person,
DIR_Server *pab, XP_Bool lastOneToAdd);
/****************************************************************************/
/* Add an entry to the database from a url*/
/****************************************************************************/
int AB_AddSenderToAddBook(ABook* pABook, MWContext* context, char* author,
char* url);
/****************************************************************************/
/* Add a mailing list to the database */
/****************************************************************************/
int AB_AddMailingList(DIR_Server* dir, ABook* pABook,
MailingListEntry* pABList, ABID* entryID);
/****************************************************************************/
/* Perform a command on the selected indices */
/* Right now this will only work on delete and mail to */
/****************************************************************************/
int AB_Command (ABPane* pane, AB_CommandType command,
MSG_ViewIndex* indices, int32 numindices);
/****************************************************************************/
/* Before the front end displays any menu (each time), it should call this */
/* function for each command on that menu to determine how it should be */
/* displayed. */
/****************************************************************************/
int AB_CommandStatus (ABPane* pane,
AB_CommandType command,
MSG_ViewIndex* indices, int32 numindices,
XP_Bool *selectable_p,
MSG_COMMAND_CHECK_STATE *selected_p,
const char **display_string,
XP_Bool *plural_p);
/****************************************************************************/
/* Get and Set how full names are constructed for people entries */
/* first last or last first */
/****************************************************************************/
XP_Bool AB_GetSortByFirstName(ABook* pABook);
void AB_SetSortByFirstName(ABook* pABook, XP_Bool sortby);
/****************************************************************************/
/* Import Export various formats that will prompt for filename */
/****************************************************************************/
int AB_ImportFromFile(ABPane* pABookPane, MWContext* context);
int AB_ExportToFile(ABPane* pABookPane, MWContext* context);
/****************************************************************************/
/* This is only used right now for drop/paste of a vcard */
/****************************************************************************/
int AB_ImportFromVcard(AddressPane* pABookPane, const char* pVcard);
/****************************************************************************/
/* This is only used right now for drop of a vcard */
/* It it a helper function that can be called by the FE to */
/* convert a vcard to an valid rfc822 address that can be used */
/* in the address widget of the compose window */
/****************************************************************************/
int AB_ConvertVCardsToExpandedName(ABook* pABook, const char* vCardString,
XP_List ** ppEntries, int32 * numEntries);
/****************************************************************************/
/* Import Export various formats that wont do any prompting */
/* This is needed for the command line interface and automatic upgrading */
/****************************************************************************/
int AB_ImportFromFileNamed(ABook* pABook, char* filename);
int AB_ExportToFileNamed(ABook* pABook, char* filename);
/****************************************************************************/
/* This function is only called from the backend. */
/* It is used to process the addbook url that is only used in mimevcrd.c */
/* It probably will never be called by an FE */
/****************************************************************************/
int AB_ImportFromVcardURL(ABook* pABook, MWContext* context, const char* pVcard);
/****************************************************************************/
/* This will create a buffer with a vcard in it. It is used for constructing */
/* a buffer that can be used in drag/drop or copy to the clipboard */
/****************************************************************************/
int AB_ExportToVCard(ABook* pABook, DIR_Server* dir, ABID entryID,
char** ppVcard);
int AB_ExportToVCardFromPerson(ABook* pABook, PersonEntry* pPerson,
char** ppVcard);
/****************************************************************************/
/* This will create a temp file for a vcard. This function is only called */
/* from the backend compose window for constructing a vcard attachment */
/* It probably will never be called by an FE */
/****************************************************************************/
int AB_ExportToVCardTempFile(ABook* pABook, DIR_Server* dir, ABID entryID,
char** filename);
/****************************************************************************/
/* Operations on panes/view */
/****************************************************************************/
/****************************************************************************/
/* Get the unique database id at a particular pane index */
/****************************************************************************/
ABID AB_GetEntryIDAt(AddressPane* pABookPane, uint32 index);
uint32 AB_GetIndexOfEntryID (AddressPane* pABookPane, ABID entryID);
int AB_GetEntryLine (ABPane * pABookPane, uint32 index,
AB_EntryLine * pEntryLine);
/****************************************************************************/
/* Get info about how a pane is sorted */
/****************************************************************************/
XP_Bool AB_GetPaneSortedAscending(ABPane * pABookPane);
ABID AB_GetPaneSortedBy(ABPane * pABookPane);
/****************************************************************************/
/* Get number of entries */
/* For the address book you can ask for ALL, people, or mailing lists */
/* For mailing list panes you will only be returned ALL */
/****************************************************************************/
int AB_GetEntryCount(DIR_Server* dir, ABook* pABook, uint32* count,
ABID etype, ABID listID);
/****************************************************************************/
/* Modify information for an entry (person or mailing list) */
/****************************************************************************/
int AB_ModifyUser(DIR_Server* dir, ABook* pABook, ABID entryID, PersonEntry* pPerson);
int AB_ModifyMailingList(DIR_Server* dir, ABook* pABook, ABID entryID,
MailingListEntry* pEntry);
/****************************************************************************/
/* Modify information for a mailing list that has been modified */
/* but not committed in a mailing list pane */
/****************************************************************************/
int AB_ModifyMailingListAndEntries(MLPane* pMLPane, MailingListEntry* pABList);
/****************************************************************************/
/* Modify information for a mailing list that has been modified */
/* but not committed in a mailing list pane. Some of the error checking */
/* that was perfomed in add/replace in a mailing list had to be moved to */
/* here. The fe's should be calling this function instead of the one above */
/****************************************************************************/
int AB_ModifyMailingListAndEntriesWithChecks(MLPane* pMLPane, MailingListEntry* pList,
MSG_ViewIndex *index, MSG_ViewIndex begIndex);
/****************************************************************************/
/* Get information for every entry (person or mailing list) */
/****************************************************************************/
int AB_GetType(DIR_Server* dir, ABook* pABook, ABID entryID, ABID* type);
int AB_GetFullName(DIR_Server* dir, ABook* pABook, ABID entryID, char* pname);
int AB_GetNickname(DIR_Server* dir, ABook* pABook, ABID entryID, char* pname);
/****************************************************************************/
/* Get information for every person entry */
/****************************************************************************/
int AB_GetGivenName(DIR_Server* dir, ABook* pABook, ABID entryID, char* pname);
int AB_GetMiddleName(DIR_Server* dir, ABook* pABook, ABID entryID, char* pname);
int AB_GetFamilyName(DIR_Server* dir, ABook* pABook, ABID entryID, char* pname);
int AB_GetCompanyName(DIR_Server* dir, ABook* pABook, ABID entryID, char* pname);
int AB_GetLocality(DIR_Server* dir, ABook* pABook, ABID entryID, char* pname);
int AB_GetRegion(DIR_Server* dir, ABook* pABook, ABID entryID, char* pname);
int AB_GetEmailAddress(DIR_Server* dir, ABook* pABook, ABID entryID, char* paddress);
int AB_GetInfo(DIR_Server* dir, ABook* pABook, ABID entryID, char* pinfo);
int AB_GetHTMLMail(DIR_Server* dir, ABook* pABook, ABID entryID, XP_Bool* pHTML);
int AB_GetExpandedName(DIR_Server* dir, ABook* pABook, ABID entryID, char** pname);
int AB_GetTitle(DIR_Server* dir, ABook* pABook, ABID entryID, char* ptitle);
int AB_GetPOAddress(DIR_Server* dir, ABook* pABook, ABID entryID, char* ppoaddress);
int AB_GetStreetAddress(DIR_Server* dir, ABook* pABook, ABID entryID, char* pstreet);
int AB_GetZipCode(DIR_Server* dir, ABook* pABook, ABID entryID, char* pzip);
int AB_GetCountry(DIR_Server* dir, ABook* pABook, ABID entryID, char* pcountry);
int AB_GetWorkPhone(DIR_Server* dir, ABook* pABook, ABID entryID, char* pphone);
int AB_GetFaxPhone(DIR_Server* dir, ABook* pABook, ABID entryID, char* pphone);
int AB_GetHomePhone(DIR_Server* dir, ABook* pABook, ABID entryID, char* pphone);
int AB_GetDistName(DIR_Server* dir, ABook* pABook, ABID entryID, char* pname);
int AB_GetSecurity(DIR_Server* dir, ABook* pABook, ABID entryID, short* security);
int AB_GetCoolAddress(DIR_Server* dir, ABook* pABook, ABID entryID, char* paddress);
int AB_GetUseServer(DIR_Server* dir, ABook* pABook, ABID entryID, short* use);
int AB_GetEntryIDForPerson(DIR_Server* dir, ABook* pABook, ABID* entryID,
PersonEntry* pPerson);
/****************************************************************************/
/* Add/Remove entries for a mailing list */
/****************************************************************************/
int AB_GetEntryCountInMailingList(MLPane* pMLPane, uint32* count);
int AB_AddIDToMailingListAt(MLPane* pMLPane, ABID entryID, MSG_ViewIndex index);
int AB_RemoveIDFromMailingListAt(MLPane* pMLPane, MSG_ViewIndex index);
int AB_ReplaceIDInMailingListAt(MLPane* pMLPane, ABID entryID, MSG_ViewIndex index);
int AB_AddPersonToMailingListAt(MLPane* pMLPane, PersonEntry* person,
MSG_ViewIndex index, ABID* entryID);
/****************************************************************************/
/* Find index to first entry in a pane that matches the typedown */
/****************************************************************************/
int AB_GetIndexMatchingTypedown(ABPane* pABookPane,
MSG_ViewIndex* index, const char* aValue, MSG_ViewIndex startIndex);
/****************************************************************************/
/* Return the id of the name/nickname entries that match a string. If we */
/* find a nickname that uniquely matches then return otherwise check the */
/* full name field. */
/****************************************************************************/
int AB_GetIDForNameCompletion(ABook* pABook, DIR_Server* dir, ABID* entryID,
ABID* field, const char* aValue);
/****************************************************************************/
/* Return a string of expanded addresses from the address book */
/****************************************************************************/
char* AB_ExpandHeaderString(ABook* pABook, const char* addresses,
XP_Bool expandfull);
/****************************************************************************/
/* Return the ids of mailing lists that a entry is a member of */
/* This was mentioned at one time as a requirement in the ui but it may */
/* go away */
/****************************************************************************/
int AB_GetMailingListsContainingID(ABook* pABook, MSG_ViewIndex* plist,
ABID entryID);
/****************************************************************************/
/* This should not be called by any of the fes. I placed it here so it */
/* could be called in the backend by other functions such as those in libmsg */
/* This allows for an increase in performance when adding a bunch of entries */
/* to the database */
/****************************************************************************/
int AB_SetIsImporting(ABook* pABook, XP_Bool isImporting);
/****************************************************************************/
/* This should not be called by any of the fes. I placed it here so it */
/* could be called in the backend by other functions in libmsg */
/* This will set the wantsHTML boolean to be set for all address book */
/* entries with that match the name and email address. */
/****************************************************************************/
int AB_SetHTMLForPerson(DIR_Server* dir, ABook* pABook, PersonEntry* pPerson);
/****************************************************************************/
/* This should not be called by any of the fes. I placed it here so it */
/* could be called in the backend by other functions in libmsg */
/* This will break a name apart into first name and last name. */
/* Be sure and set the WinCSID in the person structure */
/****************************************************************************/
int AB_BreakApartFirstName (ABook* pABook, PersonEntry* pPerson);
XP_END_PROTOS
#endif

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -1,700 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 BKMKS_H
#define BKMKS_H
#include "xp_mcom.h"
#include "ntypes.h"
XP_BEGIN_PROTOS
#define BM_LAST_CELL 0xFFFF /* See BMFE_RefreshCells */
typedef time_t BM_Date;
typedef enum {
BM_Cmd_Invalid, /* XFE in particular likes to have an invalid
ID code as one of the entries here...*/
BM_Cmd_Open, /* Open a new bookmark file. */
BM_Cmd_ImportBookmarks, /* Import entries from another bookmark
file. */
BM_Cmd_SaveAs, /* Save these bookmarks into another file. */
BM_Cmd_Close, /* Close the bookmarks window. (NYI ###) */
BM_Cmd_Undo, /* Undo the last command. */
BM_Cmd_Redo, /* Redo the last undone command. */
BM_Cmd_Cut, /* Cut the selected bookmarks. */
BM_Cmd_Copy, /* Copy the selected bookmarks. */
BM_Cmd_Paste, /* Paste in the most recent cut/copy. */
BM_Cmd_Delete, /* Delete the selected bookmarks without
affecting the clipboard. */
BM_Cmd_SelectAllBookmarks, /* Select every bookmark in the window. */
BM_Cmd_Find, /* Find a string. */
BM_Cmd_FindAgain, /* Find the same string again. */
BM_Cmd_BookmarkProps, /* Bring up the properties window. */
BM_Cmd_GotoBookmark, /* Load the selected bookmark in a browser
window. */
/* Sort the bookmarks. NYI### */
BM_Cmd_Sort_Name,
BM_Cmd_Sort_Name_Asc,
BM_Cmd_Sort_Address,
BM_Cmd_Sort_Address_Asc,
BM_Cmd_Sort_AddDate,
BM_Cmd_Sort_AddDate_Asc,
BM_Cmd_Sort_LastVisit,
BM_Cmd_Sort_LastVisit_Asc,
BM_Cmd_Sort_Natural,
BM_Cmd_InsertBookmark, /* Insert a new bookmark (or a new address if
in addressbook). */
BM_Cmd_InsertHeader, /* Insert a new header. */
BM_Cmd_InsertSeparator, /* Insert a separator. */
BM_Cmd_MakeAlias, /* Make an alias of this bookmark. */
BM_Cmd_SetAddHeader, /* Make the current header be the one where new
bookmarks are added. */
BM_Cmd_SetMenuHeader /* Make the current header be the one which the
pulldown menu is created from. */
} BM_CommandType;
#define BM_Cmd_SortBookmarks BM_Cmd_Sort_Name
typedef enum
{
BM_Sort_NONE = -1,
BM_Sort_Name,
BM_Sort_Name_Asc,
BM_Sort_Address,
BM_Sort_Address_Asc,
BM_Sort_AddDate,
BM_Sort_AddDate_Asc,
BM_Sort_LastVisit,
BM_Sort_LastVisit_Asc,
BM_Sort_Natural
} BM_SortType;
/* The various types of bookmark entries (as returned by BM_GetType). */
typedef uint16 BM_Type;
#define BM_TYPE_HEADER 0x0001
#define BM_TYPE_URL 0x0002
#define BM_TYPE_ADDRESS 0x0004
#define BM_TYPE_SEPARATOR 0x0008
#define BM_TYPE_ALIAS 0x0010
/* This represents one line in the bookmarks window -- a URL, a
separater, an addressbook entry, a header, etc. It's also already
defined in ntypes.h, and some compilers bitch and moan about seeing it
twice, so I've commented it out here. */
/* typedef struct BM_Entry_struct BM_Entry; */
/* information for the find dialog */
typedef struct BM_FindInfo {
char* textToFind;
XP_Bool checkNickname; /* Meaningful only in addressbook */
XP_Bool checkName;
XP_Bool checkLocation;
XP_Bool checkDescription;
XP_Bool matchCase;
XP_Bool matchWholeWord;
BM_Entry* lastEntry;
} BM_FindInfo;
struct BM_Entry_Focus {
BM_Entry* saveFocus;
XP_Bool foundSelection;
};
extern XP_Bool BM_IsHeader(BM_Entry* entry);
extern XP_Bool BM_IsUrl(BM_Entry* entry);
extern XP_Bool BM_IsAddress(BM_Entry* entry);
extern XP_Bool BM_IsSeparator(BM_Entry* entry);
extern XP_Bool BM_IsAlias(BM_Entry* entry);
extern XP_Bool BM_IsFolded(BM_Entry* entry);
extern XP_Bool BM_IsSelected(BM_Entry* entry);
/* Returns the state of whether this is a "changed URL"; that is, a URL whose
contents have apparently changed since we last visited it. */
#define BM_CHANGED_YES 1
#define BM_CHANGED_NO 0
#define BM_CHANGED_UNKNOWN -1
extern int32 BM_GetChangedState(BM_Entry* entry);
/* Get/Set the header that is to be the root of the pulldown menu. */
extern BM_Entry* BM_GetMenuHeader(MWContext* context);
extern void BM_SetMenuHeader(MWContext* context, BM_Entry* entry);
/* Get/Set the header that is to be the container of new items added from
browser windows. */
extern BM_Entry* BM_GetAddHeader(MWContext* context);
extern void BM_SetAddHeader(MWContext* context, BM_Entry* entry);
typedef void (*EntryFunc)(MWContext* context, BM_Entry* entry, void* closure);
/* Executes the given function on every single entry in the bookmark file. */
extern void BM_EachEntryDo(MWContext* context, EntryFunc func, void* closure);
/* Executes the given function for every entry that is selected. */
extern void BM_EachSelectedEntryDo(MWContext* context, EntryFunc func,
void* closure);
/* Executes the given function for every entry that is selected and is not a
descendent of a header that is not folded or selected. */
extern void BM_EachProperSelectedEntryDo(MWContext* context, EntryFunc func,
void* closure, struct BM_Entry_Focus* bmFocus);
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* Front end stubs -- each FE needs to implement these. */
/* Refresh each cell between and including first and last in the bookmarks
widget (if now is TRUE, the FE is expected to redraw them BEFORE returning,
otherwise the FE can simply invalidate them and wait for the redraw to
happen). If BM_LAST_CELL is passed in as last, then it means paint from
the first to the end. */
extern void BMFE_RefreshCells(MWContext* context, int32 first, int32 last,
XP_Bool now);
/* Resize the widget to accomodate "visibleCount" number of entries vertically
and the width of widest entry the actual widget should NOT change size, just
the size of the scrollable area under it */
extern void BMFE_SyncDisplay(MWContext* context);
/* measure the item and assign the width and height required to draw it into
the widget into width and height. This is used only by BM_WidestEntry(); if
you don't need that call, you can just make this an empty stub. */
extern void BMFE_MeasureEntry(MWContext* context, BM_Entry* entry,
uint32* width, uint32* height);
/* Save the given bucket o' bits as the clipboard. This same bucket needs to
be returned later if BMFE_GetClipContents() is called. */
extern void BMFE_SetClipContents(MWContext* context, void* buffer,
int32 length);
/* return the clipboard contents */
extern void* BMFE_GetClipContents(MWContext* context, int32* length);
/* Copy the selected items from a history window to the clipboard (as bookmarks) */
extern char *BM_ClipCopyHistorySelection( void *pHistCsr, uint32 *pSelections, int iCount, int *pSize, XP_Bool bLongFormat );
/* Insert the block into the list */
extern void BM_DropBlockL( MWContext *pContext, char *pData, BM_Entry *firstSelected );
/* Create the bookmarks property window. If one already exists, just bring it
to the front. This will always be immediately followed by a call to
BMFE_EditItem(). */
extern void BMFE_OpenBookmarksWindow(MWContext* context);
/* Edit the given item in the bookmarks property window. If there is no
bookmarks property window currently, then the FE should ignore this call.
If the bookmarks property window is currently displaying some other entry,
then it should save any changes made to that entry (by calling BM_SetName,
etc.) before loading up this entry. */
extern void BMFE_EditItem(MWContext* context, BM_Entry* entry);
/* The given entry is no longer valid (i.e., the user just deleted it). So,
the given pointer is about to become invalid, and the FE should remove any
references to it it may have. In particular, if it is the one being edited
in the bookmarks property window, then the FE should clear that window. */
extern void BMFE_EntryGoingAway(MWContext* context, BM_Entry* entry);
/* The user has requested to view the given url. Show it to him in, using some
appropriate context. Url may be targeted to a different window */
extern void BMFE_GotoBookmark(MWContext* context,
const char* url, const char* target);
/* Create the find dialog, and fill it in as specified in the given
structure. When the user hits the "Find" button in the dialog, call
BM_DoFindBookmark. */
extern void* BMFE_OpenFindWindow(MWContext* context, BM_FindInfo* findInfo);
/* Make sure that the given entry is visible. */
extern void BMFE_ScrollIntoView(MWContext* context, BM_Entry* entry);
/* The list of bookmarks has changed somehow, so any "bookmarks" menu needs to
be recreated. This should be a cheap call, just setting a flag in the FE so
that it knows to recreate the menu later (like, when the user tries to view
it). Recreating it immediately would be bad, because this can get called
much more often than is reasonable. */
extern void BMFE_BookmarkMenuInvalid(MWContext* context);
/* We're in the process of doing a What's Changed operation. The What's
Changed window should update to display the URL, the percentage (calculate
as done*100/total), and the total estimated time (given here as a
pre-formatted string). The What's Changed window should end up looking
something like this:
Checking <URL>... (<13> left)
{===================== } (progress bar)
Estimated time remaining: <2 hours 13 minutes>
(Remaining time depends on the sites selected and
the network traffic).
[ Cancel ]
It's up to the FE to notice the first time this is called and change its
window to display the info instead of the initial What's Changed screen.
If the user ever hits Cancel (or does something equivilant, like destroys
the window), the FE must call BM_CancelWhatsChanged(). */
extern void BMFE_UpdateWhatsChanged(MWContext* context,
const char* url, /* If NULL, just display
"Checking..." */
int32 done, int32 total,
const char* totaltime);
/* We've finished processing What's Changed. The What's Changed window should
change to display the summary of what happened. It should look something
like this:
Done checking <157> Bookmarks.
<134> documents were reached.
<27> documents have changed and are marked in blue.
[ OK ]
When the user clicks on the OK, the FE should just take down the window.
(It doesn't matter if the FE calls BM_CancelWhatsChanged(); it will be a
no-op in this situtation.) */
extern void BMFE_FinishedWhatsChanged(MWContext* context, int32 totalchecked,
int32 numreached, int32 numchanged);
#ifdef XP_WIN
/* The current bookmarks file is about to change */
extern void BMFE_ChangingBookmarksFile(void);
/* The current bookmarks file has been changed */
extern void BMFE_ChangedBookmarksFile(void);
#endif
#ifdef XP_UNIX
/* Use these to know when to allow refresh */
extern void BMFE_StartBatch(MWContext* context);
extern void BMFE_EndBatch(MWContext* context);
#endif
/* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
/* Initialize a new bookmarks context. (returns negative on failure) */
extern int BM_InitializeBookmarksContext(MWContext* context);
/* Prepare to destroy a bookmarks context. Will save any changes that have
been made. */
extern void BM_CleanupBookmarksContext(MWContext* context);
/* Set some FE data to associate with a bookmarks context. */
extern void BM_SetFEData(MWContext* context, void* data);
/* Get the FE data previously associated with a context. */
extern void* BM_GetFEData(MWContext* context);
/* Create a new url entry. */
extern BM_Entry* BM_NewUrl(const char* name, const char* address,
const char* content_type, BM_Date last_visit);
/* Create a new header. */
extern BM_Entry* BM_NewHeader(const char* name);
/* Create a copy of an existing bookmark. If the bookmark is a folder
it will also contain a copy of all of the bookmarks in the folder.*/
extern BM_Entry* BM_CopyBookmark(MWContext* context, BM_Entry* original);
/* Frees an entry. This should never be called unless you are sure the entry
has not been added to some header, and is not the object of some alias. In
other words, be sure nothing could possibly have a pointer to this it.
If the object is a header, this will also free all of its descendents. */
extern void BM_FreeEntry(MWContext* context, BM_Entry* entry);
/* Get the type of this bookmark. (Returns one of the BM_TYPE_* values.) */
extern BM_Type BM_GetType(BM_Entry* entry);
extern char* BM_GetName(BM_Entry* entry);
extern char* BM_GetAddress(BM_Entry* entry);
extern char* BM_GetTarget(BM_Entry* entry, XP_Bool recurse);
extern char* BM_GetDescription(BM_Entry* entry);
extern char* BM_GetNickName(BM_Entry* entry); /* Only meaningful in address
book. */
/* Get the full name and address of the given entry (which must be an
address book entry or header). Result is returned in a newly allocated
string; free it with XP_FREE() when through. */
extern char* BM_GetFullAddress(MWContext* context, BM_Entry* entry);
/* These return prettily formated info about the bookmark. They each
return the result in a staticly allocated string, so if you call the
same function twice the results get stomped. */
extern char* BM_PrettyLastVisitedDate(BM_Entry* entry);
extern char* BM_PrettyAddedOnDate(BM_Entry* entry);
extern char* BM_PrettyAliasCount(MWContext* context, BM_Entry* entry);
/* Get the root node of a context. */
extern BM_Entry* BM_GetRoot(MWContext* context);
/* Given a node, return the first of its children (if any). */
extern BM_Entry* BM_GetChildren(BM_Entry* entry);
/* Given a node, return the next node that has the same parent (if any). */
extern BM_Entry* BM_GetNext(BM_Entry* entry);
/* Given a node, returns its parent (or NULL if this is the root) */
extern BM_Entry* BM_GetParent(BM_Entry* entry);
/* Does this node have a sibling somewhere below it? */
extern XP_Bool BM_HasNext(BM_Entry* entry);
/* Does this node have a sibling somewhere above it? Note that there is *not*
an API to actually get that sibling, as this is not a simple call. However,
determing the existance of such a child is easy, and that's what Windows
needs to paint its pipes. */
extern XP_Bool BM_HasPrev(BM_Entry* entry);
/* Routines to change the name/address/description of an entry. These routines
will take care of updating the display as necessary. */
extern void BM_SetName(MWContext* context, BM_Entry* entry,
const char* newName);
extern void BM_SetAddress(MWContext* context, BM_Entry* entry,
const char* newAddress);
extern void BM_SetTarget(MWContext* context, BM_Entry* entry,
const char* newTarget);
extern void BM_SetDescription(MWContext* context, BM_Entry* entry,
const char* newDesc);
/* Only meaningful in addressbook (on an address or header or alias to same) */
extern XP_Bool BM_SetNickName(MWContext* context, BM_Entry* entry,
const char* newName);
/* The user just hit "Cancel" on the properties window, which was editing
the given item. This gives the bookmarks code a chance to delete the
item if it was just newly created. */
extern void BM_CancelEdit(MWContext* context, BM_Entry* entry);
/* fold or unfold the header according to "fold" and all its subfolders if
foldAll is TRUE */
extern void BM_FoldHeader(MWContext* context, BM_Entry* entry, XP_Bool fold,
XP_Bool refresh, XP_Bool foldAll);
/* clear all the selection flags, and cause a redisplay if refresh is set. */
extern void BM_ClearAllSelection(MWContext* context, XP_Bool refresh);
/* Clear all the child selections of the passes header and redisplay if refresh
is set. */
extern void BM_ClearAllChildSelection(MWContext* context, BM_Entry* at,
XP_Bool refresh);
/* Select everything. */
extern void BM_SelectAll(MWContext* context, XP_Bool refresh);
/* selects the item, call BMFE_Refresh on it if "refresh" and calls
BM_ClearSelection first if extend is FALSE */
extern void BM_SelectItem(MWContext* context, BM_Entry* item, XP_Bool refresh,
XP_Bool extend, XP_Bool select);
/* Adds a range of bookmarks to the current selection. To be called by the FE
when the user Shift-Clicks in the window. This will unselect everything and
then select a range of bookmarks, from the last bookmark that was selected
with BM_SelectItem to the one given here. */
extern void BM_SelectRangeTo(MWContext* context, BM_Entry* item);
/* toggles the selected state of the item, call BMFE_Refresh on it if "refresh"
and calls BM_ClearSelection if extend is FALSE */
extern void BM_ToggleItem(MWContext* context, BM_Entry* item, XP_Bool refresh,
XP_Bool extend );
/* returns the first selected entry */
extern BM_Entry* BM_FirstSelectedItem(MWContext* context);
extern BM_Date BM_GetLastVisited(BM_Entry *);
extern BM_Date BM_GetAdditionDate(BM_Entry *);
/* return the number of bookmarks */
extern int32 BM_GetCount(MWContext* context);
/* return the number of visible bookmarks */
extern int32 BM_GetVisibleCount(MWContext* context);
/* returns an integer index of the item in the list */
extern int32 BM_GetIndex(MWContext* context, BM_Entry* item);
/* returns an integer index of the item in the list and does not pay attention
to the is_folded value */
extern int32 BM_GetUnfoldedIndex(MWContext* context, BM_Entry* item);
/* returns the object associated with the index returned by BM_GetIndex() */
extern BM_Entry* BM_AtIndex(MWContext* context, int32 index);
/* returns the object associated with the index returned by
BM_GetUnfoldedIndex() */
extern BM_Entry* BM_AtUnfoldedIndex(MWContext* context, int32 index);
/* returns an integer depth of the item in the list starting
at zero */
extern int32 BM_GetDepth(MWContext* context, BM_Entry* item);
/* Execute a find operation according to the data in the given structure. This
will cause the appropriate entry to be selected and made visible. */
extern void BM_DoFindBookmark(MWContext* context, BM_FindInfo* findInfo);
/* For addressbook only: find and return the entry (if any) for the e-mail
address within the given mailto: url. (used by libmsg) */
extern BM_Entry* BM_FindAddress(MWContext* context, const char* mailtourl);
/* For addressbook only: edit the entry for the e-mail address within the
given mailto: url, creating the entry if necessary. (used by libmsg) */
extern void BM_EditAddress(MWContext* context, const char* mailtourl);
/* For addressbook only: if the given list of addresses includes a nickname
from the addresses, then return a new string with the addresses expanded.
If expandfull is True, then all mailing list entries are expanded too,
otherwise, mailing list entries are only expanded to include their name.
(used by libmsg). */
extern char* BM_ExpandHeaderString(MWContext* context, const char* value,
XP_Bool expandfull);
/* Checks every bookmark context for a url and updates the last accessed
time. (For use by global history code; FE's probably don't need this.) */
extern void BM_UpdateBookmarksTime(URL_Struct* URL_s, BM_Date cur_time);
/* returns TRUE if the second argument is a direct descendent of the first
argument, returns FALSE otherwise */
extern XP_Bool BM_IsDescendent(MWContext* context, BM_Entry* parent,
BM_Entry* possible_child);
/* The front end can use this call to determine what the indentation depth is
needed to display all the icons in the bookmarks. The XFE uses this to
dynamically resize the icon column. In true C style, the number returned is
actually one bigger than the biggest depth the FE will ever get. */
extern int BM_GetMaxDepth(MWContext* context);
/* This is called during a drag operation. The user is dragging some bookmarks
and is currently pointing at the given line. (If under is True, then the
user is really pointing between the given line and the next line.) This
returns TRUE if the FE should draw a box around the given line, and FALSE if
it should underline it. */
extern XP_Bool BM_IsDragEffectBox(MWContext* context, int line, XP_Bool under);
/* Actually do a drop in a drag-n-drop reordering operation. The arguments are
the same as BM_IsDragEffectBox(); the selected items will be moved. */
extern void BM_DoDrop(MWContext* ctnx, int line, XP_Bool under);
/* find and return the widest visible entry in the bookmarks tree. This makes
sense only if your FE has defined a meaningful BMFE_MeasureEntry(). */
extern BM_Entry* BM_WidestEntry(MWContext* context);
/* insert an item after another item in the bm if the insert_after item is NULL
or not found the item will be inserted at the end of the list */
extern void BM_InsertItemAfter(MWContext* context, BM_Entry* insert_after,
BM_Entry* insertee);
/* insert an item in a header if "insert_after" is a Header type, or after the
item if "insert after" is not a header type. if the insert_after item is
NULL or not found the item will be inserted at the end of the bm */
extern void BM_InsertItemInHeaderOrAfterItem(MWContext* context,
BM_Entry* insert_after,
BM_Entry* insertee );
/* Cause the given item to be inserted at the end of the given header. The
header passed in here is usually BM_GetAddHeader(). */
extern void BM_AppendToHeader(MWContext* context, BM_Entry* header,
BM_Entry* entry);
extern void BM_PrependChildToHeader(MWContext* context, BM_Entry* parent, BM_Entry* child);
/* Removes the given item from bookmarks without deleting it*/
extern void BM_RemoveChildFromHeader(MWContext* context, BM_Entry* parent, BM_Entry* child);
/* Cause the given bookmark to be displayed in a browser window somewhere.
The given item must be an URL (BM_IsUrl must return TRUE). */
extern void BM_GotoBookmark(MWContext* context, BM_Entry* item);
/* Reads the hostlist from disk, what else? Pass in the bm filename and a
relative URL which represents the original location of the html file. If
you are reading the default bm you should pass in a file URL of the form
file://localhost/PATH */
extern void BM_ReadBookmarksFromDisk(MWContext* context, const char* filename,
const char* relative_url);
/* saves the bm to a file. If the given filename is NULL, then save it back to
where it was loaded from and only if changes have been made. Returns
negative on failure. */
extern int32 BM_SaveBookmarks(MWContext* context, const char* filename);
/* Returns the filename that the bookmarks are saved in. */
extern const char* BM_GetFileName(MWContext* context);
/* read in a new bookmarks file (esp for LI use). */
extern void BM_Open_File(MWContext* context, char* newFile);
/* ability to set the modified to true or false (esp for LI use). */
extern void BM_SetModified(MWContext* context, XP_Bool mod);
/* Whether the file will be written when Save is called. */
extern XP_Bool BM_Modified(MWContext* context);
/* Convert a number of selections in a bm list into a block of memory that the
user can use for cut and paste operations */
extern char* BM_ConvertSelectionsToBlock(MWContext* context,
XP_Bool bLongFormat,
int32* lTotalLen);
/* Take a block of memory and insert the bm items it represents into the
current bm */
extern void BM_InsertBlockAt(MWContext* context, char* pOriginalBlock,
BM_Entry* addTo, XP_Bool bLongFormat,
int32 lTotalLen);
/* select all aliases for an entry */
extern void BM_SelectAliases(MWContext* context, BM_Entry* forEntry );
/* Count how many aliases there are to the given entry. */
extern int32 BM_CountAliases(MWContext* context, BM_Entry* forEntry);
/* Make an alias for each of the currently selected entries. */
extern void BM_MakeAliases(MWContext* context);
/* Returns the real item that an alias points to. The given entry must be an
alias (BM_IsAlias must return TRUE on it). */
extern BM_Entry* BM_GetAliasOriginal(BM_Entry*);
/* Start a What's Changed operation. Before calling this routine, it's up to
the FE to present a dialog like this when What's Changed starts:
Look for documents that have changed on:
(o) All bookmarks
( ) Selected bookmarks
[ Start Checking ] [ Cancel ]
Then the FE calls this routine when the user clicks Start Checking. The FE
will immediately get called via BMFE_UpdateWhatsChanged(), and the FE should
change the dialog box's appearance to match. */
extern int BM_StartWhatsChanged(MWContext* context,
XP_Bool do_only_selected);
/* Cancel a running What's Changed operation. */
extern int BM_CancelWhatsChanged(MWContext* context);
/* Returns whether the given command can be executed right now. Should be
used to decide whether to disable a menu item for this command. */
extern XP_Bool BM_FindCommandStatus(MWContext* context,
BM_CommandType command);
/* Execute the given command. */
extern void BM_ObeyCommand(MWContext* context, BM_CommandType command );
/* Clean up the undo queue */
void BM_ResetUndo(MWContext * context);
XP_END_PROTOS
#endif /* BMLIST_H */

View File

@ -1,159 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/*
* Copyright (c) 1991, 1993
* The Regents of the University of California. All rights reserved.
*
* This code is derived from software contributed to Berkeley by
* Berkeley Software Design, Inc.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions
* are met:
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.
* 2. Redistributions in binary form must reproduce the above copyright
* notice, this list of conditions and the following disclaimer in the
* documentation and/or other materials provided with the distribution.
* 3. All advertising materials mentioning features or use of this software
* must display the following acknowledgement:
* This product includes software developed by the University of
* California, Berkeley and its contributors.
* 4. Neither the name of the University nor the names of its contributors
* may be used to endorse or promote products derived from this software
* without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
* IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
* ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
* FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
* OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
* HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
* LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
* OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.
*
* @(#)cdefs.h 8.7 (Berkeley) 1/21/94
*/
#ifndef _CDEFS_H_
#define _CDEFS_H_
#ifdef __BEGIN_DECLS
#undef __BEGIN_DECLS
#endif
#ifdef __END_DECLS
#undef __END_DECLS
#endif
#if defined(__cplusplus)
#define __BEGIN_DECLS extern "C" {
#define __END_DECLS }
#else
#define __BEGIN_DECLS
#define __END_DECLS
#endif
/*
* The __CONCAT macro is used to concatenate parts of symbol names, e.g.
* with "#define OLD(foo) __CONCAT(old,foo)", OLD(foo) produces oldfoo.
* The __CONCAT macro is a bit tricky -- make sure you don't put spaces
* in between its arguments. __CONCAT can also concatenate double-quoted
* strings produced by the __STRING macro, but this only works with ANSI C.
*/
#undef __P
#undef __CONCAT
#undef __STRING
#if defined(__STDC__) || defined(__cplusplus) || defined(_WINDOWS) || defined(XP_OS2)
#define __P(protos) protos /* full-blown ANSI C */
#define __CONCAT(x,y) x ## y
#define __STRING(x) #x
#define __const const /* define reserved names to standard */
#define __signed signed
#define __volatile volatile
#ifndef _WINDOWS
#if defined(__cplusplus)
#define __inline inline /* convert to C++ keyword */
#else
#ifndef __GNUC__
#define __inline /* delete GCC keyword */
#endif /* !__GNUC__ */
#endif /* !__cplusplus */
#endif /* !_WINDOWS */
#else /* !(__STDC__ || __cplusplus) */
#define __P(protos) () /* traditional C preprocessor */
#define __CONCAT(x,y) x/**/y
#define __STRING(x) "x"
#ifndef __GNUC__
#define __const /* delete pseudo-ANSI C keywords */
#define __inline
#define __signed
#define __volatile
/*
* In non-ANSI C environments, new programs will want ANSI-only C keywords
* deleted from the program and old programs will want them left alone.
* When using a compiler other than gcc, programs using the ANSI C keywords
* inline, signed etc. as normal identifiers should define -DNO_ANSI_KEYWORDS.
* When using "gcc -traditional", we assume that this is the intent; if
* __GNUC__ is defined but __STDC__ is not, we leave the new keywords alone.
*/
#ifndef NO_ANSI_KEYWORDS
#define inline /* delete ANSI C keywords */
#define signed
#define volatile
#endif
#endif /* !__GNUC__ */
#endif /* !(__STDC__ || __cplusplus) */
/*
* GCC1 and some versions of GCC2 declare dead (non-returning) and
* pure (no side effects) functions using "volatile" and "const";
* unfortunately, these then cause warnings under "-ansi -pedantic".
* GCC2 uses a new, peculiar __attribute__((attrs)) style. All of
* these work for GNU C++ (modulo a slight glitch in the C++ grammar
* in the distribution version of 2.5.5).
*/
#if !defined(__GNUC__) || __GNUC__ < 2 || __GNUC_MINOR__ < 5
#define __attribute__(x) /* delete __attribute__ if non-gcc or gcc1 */
#if defined(__GNUC__) && !defined(__STRICT_ANSI__)
#define __dead __volatile
#define __pure __const
#endif
#endif
/* Delete pseudo-keywords wherever they are not available or needed. */
#ifndef __dead
#define __dead
#define __pure
#endif
#ifdef AIXV3
/* Wont compile without const. Need a cleaner way to handle this. */
#ifdef const
#undef const
#endif
#endif
#endif /* !_CDEFS_H_ */

View File

@ -1,76 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 __cgi_h_
#define __cgi_h_
/*
** CGI assist library. Portability layer for writing correctly behaving
** CGI programs.
*/
#include "ds.h"
XP_BEGIN_PROTOS
/*
** Read in the input, generating a single long string out of it. CGI
** programs normally get the value of various forms elements as input.
*/
extern char *CGI_GatherInput(FILE *in);
/*
** Given a null terminated string, compress it in place, converting
** "funny characters" into their ascii equivalent. Maps "+" to space and
** %xx to the binary version of xx, where xx is a pair of hex digits.
*/
extern void CGI_CompressString(char *s);
/*
** Convert a string into an argument vector. This seperates the incoming
** string into pieces, and calls CGI_CompressString to compress the
** pieces. This allocates memory for the return value only.
*/
extern char **CGI_ConvertStringToArgVec(char *string, int *argcp);
/*
** Look for the variable called "name" in the argv. Return a pointer to
** the value portion of the variable if found, zero otherwise. this does
** not malloc memory.
*/
extern char *CGI_GetVariable(char *name, int argc, char **argv);
/* Return non-zero if the variable string is not empty */
#define CGI_IsEmpty(var) (!(var) || ((var)[0] == 0))
/*
** Return true if the server that started the cgi running is using
** security (https).
*/
extern DSBool CGI_IsSecureServer(void);
/*
** Concatenate strings to produce a single string.
*/
extern char *CGI_Cat(char *, ...);
/* Escape a string, cgi style */
char *CGI_Escape(char *in);
XP_END_PROTOS
#endif /* __cgi_h_ */

View File

@ -1,59 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 should be included after xp_mcom.h
*
* All definitions for intermodule communications in the Netscape
* client should be contained in this file
*/
#ifndef _CLIENT_H_
#define _CLIENT_H_
#define NEW_FE_CONTEXT_FUNCS
/* include header files needed for prototypes/etc */
#include "xp_mcom.h"
#include "ntypes.h" /* typedefs for commonly used Netscape data structures */
#include "fe_proto.h" /* all the standard FE functions */
#include "proto.h" /* library functions */
/* global data structures */
#include "structs.h"
#include "merrors.h"
#ifndef XP_MAC /* don't include everything in the world */
/* --------------------------------------------------------------------- */
/* include other bits of the Netscape client library */
#include "lo_ele.h" /* Layout structures */
#include "net.h"
#include "gui.h"
#include "shist.h"
#include "hotlist.h"
#include "glhist.h"
#include "mime.h"
#endif /* !XP_MAC */
#endif /* _CLIENT_H_ */

View File

@ -1,250 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/* csid.h */
#ifndef _CSID_H_
#define _CSID_H_
/* Codeset type */
#define SINGLEBYTE 0x0000 /* 0000 0000 0000 0000 = 0 */
#define MULTIBYTE 0x0100 /* 0000 0001 0000 0000 = 256 */
#define STATEFUL 0x0200 /* 0000 0010 0000 0000 = 512 */
#define WIDECHAR 0x0300 /* 0000 0011 0000 0000 = 768 */
#define CODESET_MASK 0x0F00 /* 0000 1111 0000 0000 = 3840 */
/*
* Check for double byte encodings
* (should distinguish 2 byte from true multibyte)
*/
#define IS_16BIT_ENCODING(x) (((x)&CODESET_MASK) == MULTIBYTE)
/* line-break on spaces */
#define CS_SPACE 0x0400 /* 0000 0100 0000 0000 = 1024 */
/* Auto Detect Mode */
#define CS_AUTO 0x0800 /* 0000 1000 0000 0000 = 2048 */
/* Code Set IDs */
/* CS_DEFAULT: used if no charset param in header */
/* CS_UNKNOWN: used for unrecognized charset */
/* type id */
#define CS_DEFAULT (SINGLEBYTE | 0) /* 0 */
#define CS_ASCII (SINGLEBYTE | 1) /* 1 */
#define CS_LATIN1 (SINGLEBYTE | 2) /* 2 */
#define CS_JIS (STATEFUL | 3) /* 515 */
#define CS_SJIS (MULTIBYTE | 4) /* 260 */
#define CS_EUCJP (MULTIBYTE | 5) /* 261 */
#define CS_JIS_AUTO (CS_AUTO|STATEFUL | 3) /* 2563 */
#define CS_SJIS_AUTO (CS_AUTO|MULTIBYTE | 4) /* 2308 */
#define CS_EUCJP_AUTO (CS_AUTO|MULTIBYTE | 5) /* 2309 */
#define CS_MAC_ROMAN (SINGLEBYTE | 6) /* 6 */
#define CS_BIG5 (MULTIBYTE | 7) /* 263 */
#define CS_GB_8BIT (MULTIBYTE | 8) /* 264 */
#define CS_CNS_8BIT (MULTIBYTE | 9) /* 265 */
#define CS_LATIN2 (SINGLEBYTE | 10) /* 10 */
#define CS_MAC_CE (SINGLEBYTE | 11) /* 11 */
#define CS_KSC_8BIT (MULTIBYTE|CS_SPACE | 12) /* 1292 */
#define CS_KSC_8BIT_AUTO (CS_AUTO | MULTIBYTE|CS_SPACE | 12)
#define CS_2022_KR (STATEFUL | 13) /* 525 */
#define CS_8859_3 (SINGLEBYTE | 14) /* 14 */
#define CS_8859_4 (SINGLEBYTE | 15) /* 15 */
#define CS_8859_5 (SINGLEBYTE | 16) /* 16 ISO Cyrillic */
#define CS_8859_6 (SINGLEBYTE | 17) /* 17 ISO Arabic */
#define CS_8859_7 (SINGLEBYTE | 18) /* 18 ISO Greek */
#define CS_8859_8 (SINGLEBYTE | 19) /* 19 ISO Hebrew */
#define CS_8859_9 (SINGLEBYTE | 20) /* 20 */
#define CS_SYMBOL (SINGLEBYTE | 21) /* 21 */
#define CS_DINGBATS (SINGLEBYTE | 22) /* 22 */
#define CS_DECTECH (SINGLEBYTE | 23) /* 23 */
#define CS_CNS11643_1 (MULTIBYTE | 24) /* 280 */
#define CS_CNS11643_2 (MULTIBYTE | 25) /* 281 */
#define CS_JISX0208 (MULTIBYTE | 26) /* 282 */
#define CS_JISX0201 (SINGLEBYTE | 27) /* 27 */
#define CS_KSC5601 (MULTIBYTE | 28) /* 284 */
#define CS_TIS620 (SINGLEBYTE | 29) /* 29 */
#define CS_JISX0212 (MULTIBYTE | 30) /* 286 */
#define CS_GB2312 (MULTIBYTE | 31) /* 287 */
#define CS_UCS2 (WIDECHAR | 32) /* 810 */
#define CS_UCS4 (WIDECHAR | 33) /* 811 */
#define CS_UTF8 (MULTIBYTE | 34) /* 290 */
#define CS_UTF7 (STATEFUL | 35) /* 35 */
#define CS_NPC (MULTIBYTE | 36) /* 292 */
#define CS_X_BIG5 (MULTIBYTE | 37) /* 293 */
#define CS_USRDEF2 (SINGLEBYTE | 38) /* 38 */
#define CS_KOI8_R (SINGLEBYTE | 39) /* 39 */
#define CS_MAC_CYRILLIC (SINGLEBYTE | 40) /* 40 */
#define CS_CP_1251 (SINGLEBYTE | 41) /* 41 */
#define CS_MAC_GREEK (SINGLEBYTE | 42) /* 42 */
#define CS_CP_1253 (SINGLEBYTE | 43) /* 43 */
#define CS_CP_1250 (SINGLEBYTE | 44) /* 44 */
#define CS_CP_1254 (SINGLEBYTE | 45) /* 45 */
#define CS_MAC_TURKISH (SINGLEBYTE | 46) /* 46 */
#define CS_GB2312_11 (MULTIBYTE | 47) /* 303 */
#define CS_JISX0208_11 (MULTIBYTE | 48) /* 304 */
#define CS_KSC5601_11 (MULTIBYTE | 49) /* 305 */
#define CS_CNS11643_1110 (MULTIBYTE | 50) /* 306 */
#define CS_UCS2_SWAP (WIDECHAR | 51) /* 819 */
#define CS_IMAP4_UTF7 (STATEFUL | 52) /* 564 */
#define CS_CP_850 (SINGLEBYTE | 53) /* 53 PC Latin 1 */
#define CS_CP_852 (SINGLEBYTE | 54) /* 54 PC Latin 2 */
#define CS_CP_855 (SINGLEBYTE | 55) /* 55 PC Cyrillic */
#define CS_CP_857 (SINGLEBYTE | 56) /* 56 PC Turkish */
#define CS_CP_862 (SINGLEBYTE | 57) /* 57 PC Hebrew */
#define CS_CP_864 (SINGLEBYTE | 58) /* 58 PC Arabic */
#define CS_CP_866 (SINGLEBYTE | 59) /* 59 PC Russian */
#define CS_CP_874 (SINGLEBYTE | 60) /* 60 PC Thai */
#define CS_CP_1257 (SINGLEBYTE | 61) /* 61 Windows Baltic */
#define CS_CP_1258 (SINGLEBYTE | 62) /* 62 Windows Vietnamese */
#define CS_ARMSCII8 (SINGLEBYTE | 63) /* 63 Armenian ArmSCII-8 */
#define CS_HZ (STATEFUL | 64) /* 576 */
#define CS_ISO_2022_CN (STATEFUL | 65) /* 577 */
#define CS_GB13000 (MULTIBYTE | 66) /* 322 */
#define CS_BIG5_PLUS (MULTIBYTE | 67) /* 323 */
#define CS_UHC (MULTIBYTE|CS_SPACE | 68) /* 1348 cp949 */
#define CS_CNS11643_3 (MULTIBYTE | 69) /* 325 */
#define CS_CNS11643_4 (MULTIBYTE | 70) /* 326 */
#define CS_CNS11643_5 (MULTIBYTE | 71) /* 327 */
#define CS_CNS11643_6 (MULTIBYTE | 72) /* 328 */
#define CS_CNS11643_7 (MULTIBYTE | 73) /* 329 */
#define CS_CNS11643_8 (MULTIBYTE | 74) /* 330 */
#define CS_CNS11643_9 (MULTIBYTE | 75) /* 331 */
#define CS_CNS11643_10 (MULTIBYTE | 76) /* 332 */
#define CS_CNS11643_11 (MULTIBYTE | 77) /* 333 */
#define CS_CNS11643_12 (MULTIBYTE | 78) /* 334 */
#define CS_CNS11643_13 (MULTIBYTE | 79) /* 335 */
#define CS_CNS11643_14 (MULTIBYTE | 80) /* 336 */
#define CS_CNS11643_15 (MULTIBYTE | 81) /* 337 */
#define CS_CNS11643_16 (MULTIBYTE | 82) /* 338 */
#define CS_VISCII ( 83) /* 83 */
#define CS_VIQR ( 84) /* 84 */
#define CS_KOI8_U ( 85) /* 85 */
#define CS_ISO_IR_111 ( 86) /* 86 */
#define CS_8859_6_I ( 87) /* 87 */
#define CS_8859_6_E ( 88) /* 88 */
#define CS_8859_8_I ( 89) /* 89 */
#define CS_8859_8_E ( 90) /* 90 */
#define CS_JOHAB (MULTIBYTE | 91) /* 91 cp1361 */
#define CS_JOHABFONT (MULTIBYTE | 92) /* 92 hangterm font*/
#define INTL_CHAR_SET_MAX 93 /* must be highest + 1 */
#define CS_USER_DEFINED_ENCODING (SINGLEBYTE | 254) /* 254 */
#define CS_UNKNOWN (SINGLEBYTE | 255) /* 255 */
#define IS_UTF8_CSID(x) (((x)&0xFF)== (CS_UTF8&0xFF))
#define IS_UNICODE_CSID(x) \
( (((x)&0xFF)== (CS_UCS2&0xFF)) \
|| (((x)&0xFF)== (CS_UTF8&0xFF)) \
|| (((x)&0xFF)== (CS_UTF7&0xFF)) )
/* The trigger is passing the parameter to
PA_FetchParamValue() to satisfy its signature */
#ifdef XP_MAC
#define CS_FE_ASCII CS_MAC_ROMAN
#else
#define CS_FE_ASCII CS_LATIN1
#endif
/* Codeset # sorted by number */
#if 0
0 CS_DEFAULT 0
1 CS_ASCII 1
2 CS_LATIN1 2
6 CS_MAC_ROMAN 6
10 CS_LATIN2 10
11 CS_MAC_CE 11
14 CS_8859_3 14
15 CS_8859_4 15
16 CS_8859_5 16
17 CS_8859_6 17
18 CS_8859_7 18
19 CS_8859_8 19
20 CS_8859_9 20
21 CS_SYMBOL 21
22 CS_DINGBATS 22
23 CS_DECTECH 23
27 CS_JISX0201 27
29 CS_TIS620 29
35 CS_UTF7 35
38 CS_USRDEF2 38
39 CS_KOI8_R 39
40 CS_MAC_CYRILLIC 40
41 CS_CP_1251 41
42 CS_MAC_GREEK 42
43 CS_CP_1253 43
44 CS_CP_1250 44
45 CS_CP_1254 45
46 CS_MAC_TURKISH 46
53 CS_CP_850 53
54 CS_CP_852 54
55 CS_CP_855 55
56 CS_CP_857 56
57 CS_CP_862 57
58 CS_CP_864 58
59 CS_CP_866 59
60 CS_CP_874 60
61 CS_CP_1257 61
62 CS_CP_1258 62
63 CS_ARMSCII8 63
64 INTL_CHAR_SET_MAX 64
254 CS_USER_DEFINED_ENCODING 254
255 CS_UNKNOWN 255
260 CS_SJIS 260
261 CS_EUCJP 261
263 CS_BIG5 263
264 CS_GB_8BIT 264
265 CS_CNS_8BIT 265
280 CS_CNS11643_1 280
281 CS_CNS11643_2 281
282 CS_JISX0208 282
284 CS_KSC5601 284
286 CS_JISX0212 286
287 CS_GB2312 287
290 CS_UTF8 290
292 CS_NPC 292
293 CS_X_BIG5 293
303 CS_GB2312_11 303
304 CS_JISX0208_11 304
305 CS_KSC5601_11 305
306 CS_CNS11643_1110 306
515 CS_JIS 515
525 CS_2022_KR 525
564 CS_IMAP4_UTF7 564
810 CS_UCS2 810
811 CS_UCS4 811
819 CS_UCS2_SWAP 819
1292 CS_KSC_8BIT 1292
2308 CS_SJIS_AUTO 2308
2309 CS_EUCJP_AUTO 2309
2563 CS_JIS_AUTO 2563
#endif
#endif /* _CSID_H_ */

View File

@ -1,36 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/* the context function table
*
* This was typedef'd to ContextFuncs in structs.h
*/
#ifndef _ContextFunctions_
#define _ContextFunctions_
#include "il_types.h"
#include "cl_types.h"
#include "xp_obs.h"
struct _ContextFuncs {
#define MAKE_FE_FUNCS_STRUCT
#include "mk_cx_fn.h"
};
#endif /* _ContextFunctions_ */

View File

@ -1,41 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 CV_ACTIVE
#define CV_ACTIVE
#include "net.h"
/* define a constant to be passed to CV_MakeMultipleDocumentStream
* as the data_object to signify that it should return
* MK_END_OF_MULTIPART_MESSAGE when it gets to the end
* of the multipart instead of waiting for the complete
* function to be called
*/
#define CVACTIVE_SIGNAL_AT_END_OF_MULTIPART 999
XP_BEGIN_PROTOS
extern NET_StreamClass *
CV_MakeMultipleDocumentStream (int format_out,
void *data_object,
URL_Struct *URL_s,
MWContext *window_id);
XP_END_PROTOS
#endif /* CV_ACTIVE */

View File

@ -1,223 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 _DIRPREFS_H_
#define _DIRPREFS_H_
#define kCurrentListVersion 1
/* DIR_Server.dirType */
typedef enum
{
LDAPDirectory,
HTMLDirectory,
PABDirectory
} DirectoryType;
typedef enum
{
cn,
givenname,
sn,
mail,
telephonenumber,
o,
ou,
l,
street,
auth,
custom1,
custom2,
custom3,
custom4,
custom5
} DIR_AttributeId;
typedef struct _DIR_ReplicationInfo DIR_ReplicationInfo;
typedef struct DIR_Server
{
char *description; /* human readable name */
char *serverName; /* network host name */
char *searchBase; /* DN suffix to search at */
char *fileName; /* XP path name of local DB */
char *prefId; /* name of this server's tree in JS prefs */
int port; /* network port number */
int maxHits; /* maximum number of hits to return */
XP_Bool isSecure; /* use SSL? */
XP_Bool saveResults;
XP_Bool efficientWildcards; /* server can match substrings */
char *lastSearchString; /* required if saving results */
DirectoryType dirType;
uint32 flags;
/* site-configurable attributes and filters */
XP_List *customFilters;
XP_List *customAttributes;
char *tokenSeps;
XP_Bool stopFiltersOnHit;
XP_Bool isOffline;
/* site-configurable list of attributes whose values are DNs */
char **dnAttributes;
int dnAttributesCount;
/* site-configurable list of attributes we shouldn't display in HTML */
char **suppressedAttributes;
int suppressedAttributesCount;
/* site-configurable list of attributes for the Basic Search dialog */
DIR_AttributeId *basicSearchAttributes;
int basicSearchAttributesCount;
/* site-configurable URL to open LDAP results */
char *customDisplayUrl;
/* authentication fields */
XP_Bool enableAuth; /* Use DN and password when binding? */
XP_Bool savePassword; /* Remember the DN and password we gave? */
char *authDn; /* DN to give to authenticate as */
char *password; /* Password for the DN */
/* replication fields */
DIR_ReplicationInfo *replInfo;
} DIR_Server;
XP_BEGIN_PROTOS
/* Return the list of directory servers
* each front end hangs on to the list
*/
XP_List * FE_GetDirServers(void);
/* Since the strings in DIR_Server are allocated, we have bottleneck
* routines to help with memory mgmt
*/
int DIR_CopyServer (DIR_Server *in, DIR_Server **out);
int DIR_DeleteServer (DIR_Server *);
int DIR_InitServer (DIR_Server *);
int DIR_ValidateServer (DIR_Server *);
XP_Bool DIR_AreServersSame (DIR_Server *first, DIR_Server *second);
int DIR_DeleteServerList(XP_List *wholeList);
int DIR_GetLdapServers (XP_List *wholeList, XP_List *subList);
int DIR_ReorderLdapServers (XP_List *wholeList);
/* These two routines should be called to initialize and save
* directory preferences from the XP Java Script preferences
*/
int DIR_GetServerPreferences (XP_List **list, const char* pabFile);
int DIR_SaveServerPreferences (XP_List *wholeList);
/* This routine will clean up files for deleted directories */
int DIR_CleanUpServerPreferences(XP_List *deletedList);
#if 1
/* Returns a pointer into the list (not allocated, so don't free) */
int DIR_GetPersonalAddressBook (XP_List *wholeList, DIR_Server **pab);
int DIR_GetComposeNameCompletionAddressBook (XP_List *wholeList, DIR_Server **cab);
#else
/* Returns an allocated list of all personal address books, excluding
* LDAP directories, replicated directories, and CABs
*/
XP_List *DIR_GetPersonalAddressBooks (XP_List *wholeList);
XP_List *DIR_GetAddressBooksForCompletion (XP_List *wholeList);
#endif
void DIR_GetServerFileName(char** filename, const char* leafName);
void DIR_SetServerFileName(DIR_Server* pServer, const char* leafName);
/* APIs for site-configurability of LDAP attribute names and
* search filter behavior.
*
* Strings are NOT allocated, and arrays are NULL-terminated
*/
const char *DIR_GetAttributeName (DIR_Server *server, DIR_AttributeId id);
const char **DIR_GetAttributeStrings (DIR_Server *server, DIR_AttributeId id);
const char *DIR_GetFirstAttributeString (DIR_Server *server, DIR_AttributeId id);
const char *DIR_GetFilterString (DIR_Server *server);
const char *DIR_GetTokenSeparators (DIR_Server *server);
XP_Bool DIR_RepeatFilterForTokens (DIR_Server *server, const char *filter);
XP_Bool DIR_SubstStarsForSpaces (DIR_Server *server, const char *filter);
XP_Bool DIR_UseCustomAttribute (DIR_Server *server, DIR_AttributeId id);
XP_Bool DIR_IsDnAttribute (DIR_Server *s, const char *attr);
XP_Bool DIR_IsAttributeExcludedFromHtml (DIR_Server *s, const char *attr);
int DIR_AttributeNameToId (const char *attrName, DIR_AttributeId *id);
/* APIs for authentication */
void DIR_SetAuthDN (DIR_Server *s, const char *dn);
void DIR_SetPassword (DIR_Server *s, const char *password);
/* APIs for unescaping LDAP special chars */
char *DIR_Unescape (const char *src, XP_Bool makeHtml);
XP_Bool DIR_IsEscapedAttribute (DIR_Server *s, const char *attrib);
/* APIs for replication */
int DIR_ValidateRootDSE (DIR_Server *s, int32 gen, int32 first, int32 last);
/* API for building a URL */
char *DIR_BuildUrl (DIR_Server *s, const char *dn, XP_Bool forAddToAB);
/* Flags manipulation */
#define DIR_AUTO_COMPLETE_ENABLED 0x00000001
#define DIR_ENABLE_AUTH 0x00000002
#define DIR_SAVE_PASSWORD 0x00000004
#define DIR_UTF8_DISABLED 0x00000008 /* not used by the FEs */
#define DIR_IS_SECURE 0x00000010
#define DIR_SAVE_RESULTS 0x00000020 /* not used by the FEs */
#define DIR_EFFICIENT_WILDCARDS 0x00000040 /* not used by the FEs */
#define DIR_LDAPV3_SUPPORTED 0x00000080 /* not used by the FEs */
#define DIR_LDAPV3_NOT_SUPPORTED 0x00000100 /* not used by the FEs */
#define DIR_VIRTUAL_LISTBOX_SUPPORTED 0x00000200 /* not used by the FEs */
#define DIR_VIRTUAL_LISTBOX_NOT_SUPPORTED 0x00000400 /* not used by the FEs */
void DIR_SetAutoCompleteEnabled (XP_List *list, DIR_Server *server, XP_Bool onOrOff);
XP_Bool DIR_TestFlag (DIR_Server *server, uint32 flag);
void DIR_SetFlag (DIR_Server *server, uint32 flag);
void DIR_ClearFlag (DIR_Server *server, uint32 flag);
void DIR_ForceFlag (DIR_Server *server, uint32 flag, XP_Bool forceOnOrOff);
char *DIR_ConvertToServerCharSet (DIR_Server *s, char *src, int16 srcCsid);
char *DIR_ConvertFromServerCharSet (DIR_Server *s, char *src, int16 dstCsid);
#ifdef MOZ_LDAP
/* Does the LDAP client lib work for SSL */
#include "ldap.h"
int DIR_SetupSecureConnection (LDAP *ld);
#endif /* MOZ_LDAP */
XP_END_PROTOS
#endif /* dirprefs.h */

View File

@ -1,267 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 __DS_h_
#define __DS_h_
#ifdef XP_WIN32
#include <windows.h>
#endif /* XP_WIN32 */
#ifdef XP_OS2
#define INCL_WIN
#define INCL_GPI
#define TID OS2TID /* global rename in OS2 H's! */
#include <os2.h>
#undef TID /* and restore */
#endif
#include "xp_mcom.h"
XP_BEGIN_PROTOS
/* Typedefs */
typedef struct DSArrayStr DSArray;
typedef struct DSLinkStr DSLink;
typedef struct DSListStr DSList;
typedef struct DSArenaStr DSArena;
#define DS_MIN(a,b) ((a)<(b)?(a):(b))
#define DS_MAX(a,b) ((a)>(b)?(a):(b))
/*
** Your basic boolean. Done as an enum to cause compiler warnings when a
** boolean procedure doesn't return the right value.
** LISA SEZ: Please do not use this; use PRBool instead. Eventually
** (as soon as I can "make it so") DSBool is going away in favor of PRBool.
*/
typedef enum DSBoolEnum {
DSTrue = 1,
DSFalse = 0
} DSBool;
/*
** A status code. Status's are used by procedures that return status
** values. Again the motivation is so that a compiler can generate
** warnings when return values are wrong. Correct testing of status codes:
**
** DSStatus rv;
** rv = some_function (some_argument);
** if (rv != DSSuccess)
** do_an_error_thing();
**
*/
typedef enum DSStatusEnum {
DSWouldBlock = -2,
DSFailure = -1,
DSSuccess = 0
} DSStatus;
/*
** A comparison code. Used for procedures that return comparision
** values. Again the motivation is so that a compiler can generate
** warnings when return values are wrong.
*/
typedef enum DSComparisonEnum {
DSLessThan = -1,
DSEqual = 0,
DSGreaterThan = 1
} DSComparison;
typedef void (*DSElementFreeFunc)(void *e1, DSBool freeit);
typedef int (*DSElementCompareFunc)(void *e1, void *e2);
/************************************************************************/
/*
** Simple variable length array of pointers. The array keeps a NULL
** pointer at the end of the array.
*/
struct DSArrayStr {
void **things;
DSElementFreeFunc freeElement;
};
extern DSArray *DS_CreateArray(int slots);
extern DSStatus DS_GrowArray(DSArray *da, int slots);
extern void DS_SetArrayMethods(DSArray *da, DSElementFreeFunc free);
extern void DS_DestroyArray(DSArray *da, DSBool freeit);
extern void DS_Sort(DSArray *da, DSElementCompareFunc compare);
extern int DS_Elements(DSArray *da);
extern DSStatus DS_AddElement(DSArray *da, void *element);
extern void DS_RemoveElement(DSArray *da, void *element);
/************************************************************************/
/*
** Circular linked list. Each link contains a pointer to the object that
** is actually in the list.
*/
struct DSLinkStr {
DSLink *next;
DSLink *prev;
void *thing;
};
struct DSListStr {
DSLink link;
};
#define DS_InitList(lst) \
{ \
(lst)->link.next = &(lst)->link; \
(lst)->link.prev = &(lst)->link; \
(lst)->link.thing = 0; \
}
#define DS_ListEmpty(lst) \
((lst)->link.next == &(lst)->link)
#define DS_ListHead(lst) \
((lst)->link.next)
#define DS_ListTail(lst) \
((lst)->link.prev)
#define DS_ListIterDone(lst,lnk) \
((lnk) == &(lst)->link)
#define DS_AppendLink(lst,lnk) \
{ \
(lnk)->next = &(lst)->link; \
(lnk)->prev = (lst)->link.prev; \
(lst)->link.prev->next = (lnk); \
(lst)->link.prev = (lnk); \
}
#define DS_InsertLink(lst,lnk) \
{ \
(lnk)->next = (lst)->link.next; \
(lnk)->prev = &(lst)->link; \
(lst)->link.next->prev = (lnk); \
(lst)->link.next = (lnk); \
}
#define DS_RemoveLink(lnk) \
{ \
(lnk)->next->prev = (lnk)->prev; \
(lnk)->prev->next = (lnk)->next; \
(lnk)->next = 0; \
(lnk)->prev = 0; \
}
extern DSLink *DS_NewLink(void *thing);
extern DSLink *DS_FindLink(DSList *lst, void *thing);
extern void DS_DestroyLink(DSLink *lnk, DSBool freeit);
/************************************************************************/
/*
** Memory manager
*/
/*
** at one time XP_Block was a float* to force clients to cast things
** before use. Now DSBlock is defined since that will be most convenient
** for almost all uses.
*/
typedef unsigned char *DSBlock;
/*
** Allocate some memory. Always allocates at least one byte of memory.
*/
extern void *DS_Alloc(size_t bytes);
/*
** Reallocate some memory, growing or shrinking the memory.
*/
extern void *DS_Realloc(void *oldptr, size_t bytes);
/*
** Allocate and then zero some memory. Always allocates at least one byte
** of memory.
*/
extern void *DS_Zalloc(size_t bytes);
/*
** Allocate a block of memory. Always allocates at least one byte of
** memory.
*/
extern DSBlock DS_AllocBlock(size_t bytes);
/*
** Reallocate a block of memory, growing or shrinking the memory block.
*/
extern DSBlock DS_ReallocBlock(DSBlock block, size_t newBytes);
/*
** Free a block of memory. Safe to use on null pointers.
*/
extern void DS_FreeBlock(DSBlock block);
/*
** Free a chunk of memory. Safe to use on null pointers.
*/
extern void DS_Free(void *ptr);
/*
** Zero and then free a chunk of memory. Safe to use on null pointers.
*/
extern void DS_Zfree(void *ptr, size_t bytes);
/*
* Low cost Malloc Arenas.
*
* The chunks are a linked list.
* The beginning of each chunk is a pointer to the next chunk.
*/
struct DSArenaStr {
unsigned long chunkSize; /* size of each chunk */
unsigned int refCount; /* reference count */
void ** firstChunk; /* pointer to first chunk */
void ** lastChunk; /* pointer to last chunk */
void * pLast; /* last item allocated */
void * pCur; /* beginning of free area */
void * pCurEnd; /* end of free area in current chunk */
};
/* make a new arena */
extern DSArena *
DS_NewArena(unsigned long chunkSize);
/* destroy an arena, and free all memory associated with it */
extern void
DS_FreeArena(DSArena *arena, DSBool zero);
/* malloc a chunk of data from the arena */
extern void *
DS_ArenaAlloc(DSArena *arena, unsigned long size);
/* malloc a chunk of data from the arena, zero filling it */
extern void *
DS_ArenaZalloc(DSArena *arena, unsigned long size);
/* change the size of an object, works best if it was the last object
* allocated
*/
extern void *
DS_ArenaGrow(DSArena *arena, void *pOld, unsigned long oldsize,
unsigned long newsize);
XP_END_PROTOS
#endif /* __DS_h_ */

View File

@ -1,33 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 __DS_ERR_h_
#define __DS_ERR_h_
#define DS_ERROR_BASE (-0x1000)
#define DS_ERROR_LIMIT (DS_ERROR_BASE + 1000)
#define IS_DS_ERROR(code) \
(((code) >= DS_ERROR_BASE) && ((code) < DS_ERROR_LIMIT))
/*
** DS library error codes
*/
#define DS_ERROR_OUT_OF_MEMORY (DS_ERROR_BASE + 0)
#endif /* __DS_ERR_h_ */

File diff suppressed because it is too large Load Diff

View File

@ -1,644 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/*
* File defines external editor types.
*
* These types are remapped internally to the editor.
*/
#ifndef _edt_types_h_
#define _edt_types_h_
#ifndef EDITOR_TYPES
#define ED_Element void
#define ED_Buffer void
#define ED_TagCursor void
#define ED_BitArray void
#endif
#include "xp_core.h"
/* Number of "Netscape Colors" All are in
* Color cube
*/
#define MAX_NS_COLORS 70
typedef int32 ED_BufferOffset;
/*
* Handle to Internal structure used for maintaining links.
*/
typedef struct ED_Link* ED_LinkId;
#define ED_LINK_ID_NONE 0
/* this id is passed to FE_GetImageData.. when it returns, we know to pass
* the call to EDT_SetImageData
*/
#define ED_IMAGE_LOAD_HACK_ID -10
typedef enum {
ED_ELEMENT_NONE, /* Not returned from EDT_GetCurrentElement, needed to have a "not known" value */
ED_ELEMENT_SELECTION, /* a selection instead of a single element */
ED_ELEMENT_TEXT,
ED_ELEMENT_IMAGE,
ED_ELEMENT_HRULE,
ED_ELEMENT_UNKNOWN_TAG,
ED_ELEMENT_TARGET,
ED_ELEMENT_TABLE, /* Keep these at the end so we can use type >= ED_ELEMENT_TABLE to test for any of them */
ED_ELEMENT_CELL,
ED_ELEMENT_ROW, /* May not need these. Currently returning ED_ELEMENT_CELL instead */
ED_ELEMENT_COL
} ED_ElementType;
typedef enum {
ED_CARET_BEFORE = 0,
ED_CARET_AFTER = 1
} ED_CaretObjectPosition;
#define TF_NONE 0
#define TF_BOLD 1
#define TF_ITALIC 2
#define TF_FIXED 4
#define TF_SUPER 8
#define TF_SUB 0x10
#define TF_STRIKEOUT 0x20
#define TF_BLINK 0x40
#define TF_FONT_COLOR 0x80 /* set if font has color */
#define TF_FONT_SIZE 0x100 /* set if font has size */
#define TF_HREF 0x200
#define TF_SERVER 0x400
#define TF_SCRIPT 0x800
#define TF_STYLE 0x1000
#define TF_UNDERLINE 0x2000
#define TF_FONT_FACE 0x4000
#define TF_NOBREAK 0x8000
#define TF_SPELL 0x10000
#define TF_INLINEINPUT 0x20000
#define TF_INLINEINPUTTHICK 0x40000
#define TF_INLINEINPUTDOTTED 0x80000
#define TF_FONT_WEIGHT 0x100000
#define TF_FONT_POINT_SIZE 0x200000
typedef int32 ED_TextFormat; /* Prefered type for the editor text format. */
typedef ED_TextFormat ED_ETextFormat; /* Alias for old code. Remove when possible. */
/* Similar to ED_TextFormat. Used when multiple cells are represented in EDT_TableCellData */
#define CF_NONE 0
#define CF_ALIGN 1
#define CF_VALIGN 2
#define CF_COLSPAN 4
#define CF_ROWSPAN 8
#define CF_HEADER 0x10
#define CF_NOWRAP 0x20
#define CF_WIDTH 0x40
#define CF_HEIGHT 0x80
#define CF_BACK_COLOR 0x100
#define CF_BACK_IMAGE 0x200
#define CF_BACK_NOSAVE 0x400
#define CF_EXTRA_HTML 0x800
typedef int32 ED_CellFormat; /* Prefered type for the editor cell format. */
/*
* The names here are confusing, and have a historical basis that is
* lost in the mists of time. The trouble is that the "ED_ALIGN_CENTER"
* tag is really "abscenter", while the ED_ALIGN_ABSCENTER tag is
* really "center". (and the same for the TOP and BOTTOM tags.)
*
* Someday, if we have a lot of spare time we could switch the names.
*/
/* CLM: Swapped bottom and center tags -- should match latest extensions now?
* Note: BASELINE is not written out (this is default display mode)
*/
typedef enum {
ED_ALIGN_DEFAULT = -1,
ED_ALIGN_CENTER = 0, /* abscenter */
ED_ALIGN_LEFT = 1, /* left */
ED_ALIGN_RIGHT = 2, /* right */
ED_ALIGN_TOP = 3, /* texttop */
ED_ALIGN_BOTTOM = 4, /* absbottom */
ED_ALIGN_BASELINE = 5, /* baseline */
ED_ALIGN_ABSCENTER = 6, /* center */
ED_ALIGN_ABSBOTTOM = 7, /* bottom */
ED_ALIGN_ABSTOP = 8 /* top */
} ED_Alignment;
/*------------------- TABLE SIZING AND SELECTION --------------------*/
/* SizeStyle defines */
#define ED_SIZE_NONE 0
#define ED_SIZE_TOP 0x0001
#define ED_SIZE_RIGHT 0x0002
#define ED_SIZE_BOTTOM 0x0004
#define ED_SIZE_LEFT 0x0008
#define ED_SIZE_ADD_ROWS 0x0010
#define ED_SIZE_ADD_COLS 0x0020
/* Hotspot at corners */
#define ED_SIZE_TOP_RIGHT (ED_SIZE_TOP | ED_SIZE_RIGHT)
#define ED_SIZE_BOTTOM_RIGHT (ED_SIZE_BOTTOM | ED_SIZE_RIGHT)
#define ED_SIZE_TOP_LEFT (ED_SIZE_TOP | ED_SIZE_LEFT)
#define ED_SIZE_BOTTOM_LEFT (ED_SIZE_BOTTOM | ED_SIZE_LEFT)
typedef intn ED_SizeStyle;
typedef enum { /* Return value for EDT_GetTableHitRegion) */
ED_HIT_NONE,
ED_HIT_SEL_TABLE, /* Upper left corner */
ED_HIT_SEL_COL, /* Near top table border */
ED_HIT_SEL_ROW, /* Near left table border */
ED_HIT_SEL_CELL, /* Near top cell border */
ED_HIT_SEL_ALL_CELLS, /* Upper left corner when Ctrl is pressed */
ED_HIT_SIZE_TABLE_WIDTH, /* Near right table border */
ED_HIT_SIZE_TABLE_HEIGHT, /* Near bottom table border */
ED_HIT_SIZE_COL, /* Near right border of a cell and between columns */
ED_HIT_SIZE_ROW, /* Near bottom border of a cell and between columns */
ED_HIT_ADD_ROWS, /* Lower left corner */
ED_HIT_ADD_COLS, /* Lower right corner */
ED_HIT_DRAG_TABLE, /* Near bottom border and between rows when table or cell is already selected */
ED_HIT_CHANGE_COLSPAN, /* Near Right border of cell having COLSPAN (Not used yet) */
ED_HIT_CHANGE_ROWSPAN /* Bottom edge of cell having ROWSPAN (Not used yet) */
} ED_HitType;
typedef enum { /* Return types for EDT_GetTableDragDropRegion */
ED_DROP_NONE, /* Don't allow drop - when pasting wouldn't change anything */
ED_DROP_NORMAL, /* No special table behavior - do the same as any HTML drop */
ED_DROP_INSERT_BEFORE, /* Between columns - near left border of cell when source = column */
ED_DROP_INSERT_AFTER, /* Between columns - near right border of cell when source = column */
ED_DROP_INSERT_ABOVE, /* Between rows - near top border of cell when source = row */
ED_DROP_INSERT_BELOW, /* Between rows - near bottom border of cell when source = row */
ED_DROP_REPLACE_CELL, /* Inside cell - when we want to replace cell contents */
ED_DROP_APPEND_CONTENTS /* Inside cell - when we append to existing contents */
} ED_DropType;
struct _EDT_DragTableData {
ED_HitType iSourceType; /* One of the ED_HIT_SEL_... enums */
ED_DropType iDropType; /* One of above enum values */
LO_Element *pFirstSelectedCell; /* First cell in source being dragged */
LO_Element *pDragOverCell; /* Cell being dragged over */
intn iRows; /* Number of rows */
intn iColumns; /* and columns in selection */
int32 X; /* Location to place highlighting or make caret */
int32 Y; /* to show where to drop cells */
int32 iWidth;
int32 iHeight;
};
typedef struct _EDT_DragTableData EDT_DragTableData;
typedef enum { /* Return values from EDT_GetMergeCellsType */
ED_MERGE_NONE,
ED_MERGE_NEXT_CELL,
ED_MERGE_SELECTED_CELLS
} ED_MergeType;
/* Used with EDT_ChangeTableSelection to tell if we should move
* to next Cell, Row, or Columns along with changing the selected cells
*/
typedef enum {
ED_MOVE_NONE,
ED_MOVE_PREV,
ED_MOVE_NEXT
} ED_MoveSelType;
/*--------------------------- HREF --------------------------------*/
struct _EDT_HREFData {
char *pURL;
char *pExtra;
};
typedef struct _EDT_HREFData EDT_HREFData;
/*--------------------------- Image --------------------------------*/
struct _EDT_ImageData {
XP_Bool bIsMap;
/* char *pUseMap; created with XP_ALLOC() Now in pExtra, hardts */
ED_Alignment align;
char *pSrc;
char *pLowSrc;
char *pName;
char *pAlt;
int32 iWidth;
int32 iHeight;
XP_Bool bWidthPercent; /* Range: 1 - 100 if TRUE, else = pixels (default) */
XP_Bool bHeightPercent;
int32 iHSpace;
int32 iVSpace;
int32 iBorder;
/* Added hardts */
XP_Bool bNoSave;
/* Added by CLM: */
int32 iOriginalWidth; /* Width and Height we got on initial loading */
int32 iOriginalHeight;
EDT_HREFData *pHREFData;
char *pExtra;
};
typedef struct _EDT_ImageData EDT_ImageData;
/*--------------------------- Target --------------------------------*/
struct _EDT_TargetData {
char *pName;
char *pExtra;
};
typedef struct _EDT_TargetData EDT_TargetData;
/*--------------------------- Character --------------------------------*/
#define ED_FONT_POINT_SIZE_DEFAULT 0
#define ED_FONT_POINT_SIZE_MIN 1
#define ED_FONT_POINT_SIZE_MAX 1000
#define ED_FONT_WEIGHT_MIN 100
#define ED_FONT_WEIGHT_NORMAL 400
#define ED_FONT_WEIGHT_BOLD 700
#define ED_FONT_WEIGHT_MAX 900
enum {
ED_FONT_VARIABLE,
ED_FONT_FIXED,
ED_FONT_LOCAL
};
struct _EDT_CharacterData {
ED_TextFormat mask; /* bits to set or get */
ED_TextFormat values; /* values of the bits in the mask */
LO_Color *pColor; /* color if mask bit is set */
int32 iSize; /* size if mask bit is set */
EDT_HREFData *pHREFData; /* href if mask bit is set */
ED_LinkId linkId; /* internal use only */
char* pFontFace; /* FontFace name */
int16 iWeight; /* font weight range = 100-900, 400=Normal, 700=Bold*/
int16 iPointSize; /* not sure what default is! Use 0 to mean "default" */
};
typedef struct _EDT_CharacterData EDT_CharacterData;
/*--------------------------- Horizonal Rule --------------------------------*/
struct _EDT_HorizRuleData {
ED_Alignment align; /* only allows left and right alignment */
int32 size; /* value 1 to 100 indicates line thickness */
int32 iWidth; /* CM: default = 100% */
XP_Bool bWidthPercent; /* Range: 1 - 100 if TRUE(default), else = pixels */
XP_Bool bNoShade;
char *pExtra;
};
typedef struct _EDT_HorizRuleData EDT_HorizRuleData;
/*--------------------------- ContainerData --------------------------------*/
struct _EDT_ContainerData {
ED_Alignment align; /* only allows left and right alignment */
char *pExtra;
};
typedef struct _EDT_ContainerData EDT_ContainerData;
/*--------------------------- TableData --------------------------------*/
struct _EDT_TableData {
ED_Alignment align; /* ED_ALIGN_LEFT, ED_ALIGN_ABSCENTER, ED_ALIGN_RIGHT */
ED_Alignment malign; /* margin alignment: ED_ALIGN_DEFAULT, ED_ALIGN_LEFT, ED_ALIGN_RIGHT */
XP_Bool bUseCols; /* TRUE means COLS= will be output, which speeds up layout in 4.0 */
int32 iRows;
int32 iColumns;
XP_Bool bBorderWidthDefined;
int32 iBorderWidth;
int32 iCellSpacing;
int32 iCellPadding;
XP_Bool bWidthDefined;
XP_Bool bWidthPercent;
int32 iWidth;
int32 iWidthPixels;
XP_Bool bHeightDefined;
XP_Bool bHeightPercent;
int32 iHeight;
int32 iHeightPixels;
LO_Color *pColorBackground; /* null in the default case */
char *pBackgroundImage; /* null in the default case */
XP_Bool bBackgroundNoSave;
char *pExtra;
};
typedef struct _EDT_TableData EDT_TableData;
/*--------------------------- TableCaptionData --------------------------------*/
struct _EDT_TableCaptionData {
ED_Alignment align;
char *pExtra;
};
typedef struct _EDT_TableCaptionData EDT_TableCaptionData;
/*--------------------------- TableRowData --------------------------------*/
struct _EDT_TableRowData {
ED_Alignment align;
ED_Alignment valign;
LO_Color *pColorBackground; /* null in the default case */
char *pBackgroundImage; /* null in the default case */
XP_Bool bBackgroundNoSave;
char *pExtra;
};
typedef struct _EDT_TableRowData EDT_TableRowData;
/*--------------------------- TableCellData --------------------------------*/
struct _EDT_TableCellData {
ED_CellFormat mask; /* bits to tell us what we know for all cells */
ED_HitType iSelectionType; /* Either: ED_HIT_SEL_CELL, ED_HIT_SEL_COL, ED_HIT_SEL_ROW, or ED_HIT_NONE */
intn iSelectedCount; /* Number of cells selected. Usually >= 1 */
ED_Alignment align;
ED_Alignment valign;
int32 iColSpan;
int32 iRowSpan;
XP_Bool bHeader; /* TRUE == th, FALSE == td */
XP_Bool bNoWrap;
int32 X;
int32 Y;
intn iRow;
XP_Bool bWidthDefined;
XP_Bool bWidthPercent;
int32 iWidth;
int32 iWidthPixels;
XP_Bool bHeightDefined;
XP_Bool bHeightPercent;
int32 iHeight;
int32 iHeightPixels;
LO_Color *pColorBackground; /* null in the default case */
char *pBackgroundImage; /* null in the default case */
XP_Bool bBackgroundNoSave;
char *pExtra;
};
typedef struct _EDT_TableCellData EDT_TableCellData;
/*--------------------------- LayerData --------------------------------*/
struct _EDT_LayerData {
char *pExtra;
};
typedef struct _EDT_LayerData EDT_LayerData;
/*--------------------------- DivisionData --------------------------------*/
struct _EDT_DivisionData {
ED_Alignment align;
char *pExtra;
};
typedef struct _EDT_DivisionData EDT_DivisionData;
/*--------------------------- Page Properties --------------------------------*/
struct _EDT_MetaData {
XP_Bool bHttpEquiv; /* true, http-equiv="fdsfds", false name="fdsfds" */
char *pName; /* http-equiv's or name's value */
char *pContent;
};
typedef struct _EDT_MetaData EDT_MetaData;
struct _EDT_PageData {
LO_Color *pColorBackground; /* null in the default case */
LO_Color *pColorLink;
LO_Color *pColorText;
LO_Color *pColorFollowedLink;
LO_Color *pColorActiveLink;
char *pBackgroundImage;
XP_Bool bBackgroundNoSave;
char *pFontDefURL; /* For Web Fonts. */
XP_Bool bFontDefNoSave;
char *pTitle;
XP_Bool bKeepImagesWithDoc;
};
typedef struct _EDT_PageData EDT_PageData;
typedef enum {
ED_COLOR_BACKGROUND,
ED_COLOR_LINK,
ED_COLOR_TEXT,
ED_COLOR_FOLLOWED_LINK
} ED_EColor;
/*
* CLM: Java and PlugIn data structures
*/
struct _EDT_ParamData {
char *pName;
char *pValue;
};
typedef struct _EDT_ParamData EDT_ParamData;
typedef int32 EDT_ParamID;
struct _EDT_PlugInData {
EDT_ParamID ParamID; /* Identifies which Param list is associated */
char *pSrc;
XP_Bool bHidden;
ED_Alignment align;
int32 iWidth;
int32 iHeight;
XP_Bool bWidthPercent; /* Range: 1 - 100 if TRUE, else = pixels default) */
XP_Bool bHeightPercent;
XP_Bool bForegroundPalette; /* PC systems only. For controling 256-color palette wars */
int32 iHSpace;
int32 iVSpace;
int32 iBorder;
};
typedef struct _EDT_PlugInData EDT_PlugInData;
struct _EDT_JavaData {
EDT_ParamID ParamID;
char *pCode;
char *pCodebase;
char *pName;
ED_Alignment align;
char *pSrc;
int32 iWidth;
int32 iHeight;
XP_Bool bWidthPercent; /* Range: 1 - 100 if TRUE, else = pixels default) */
XP_Bool bHeightPercent;
int32 iHSpace;
int32 iVSpace;
int32 iBorder;
};
typedef struct _EDT_JavaData EDT_JavaData;
/* CLM: Error codes for file writing
* Return 0 if no error
*/
typedef enum {
ED_ERROR_NONE,
ED_ERROR_READ_ONLY, /* File is marked read-only */
ED_ERROR_BLOCKED, /* Can't write at this time, edit buffer blocked */
ED_ERROR_BAD_URL, /* URL was not a "file:" type or no string */
ED_ERROR_FILE_OPEN,
ED_ERROR_FILE_WRITE,
ED_ERROR_CREATE_BAKNAME,
ED_ERROR_DELETE_BAKFILE,
ED_ERROR_FILE_RENAME_TO_BAK,
ED_ERROR_CANCEL,
ED_ERROR_FILE_EXISTS, /* We really didn't save -- file existed and no overwrite */
ED_ERROR_SRC_NOT_FOUND,
ED_ERROR_FILE_READ,
/* The following are used internally by the editor and will not be passed to the front end. */
ED_ERROR_PUBLISHING, /* When netlib encounters an error http or ftp publishing. */
ED_ERROR_TAPEFS_COMPLETION /* The tape file system for saving encountered an error when
the Complete() method was called. E.g. an error sending a
mail message. */
} ED_FileError;
typedef enum {
ED_TAG_OK,
ED_TAG_UNOPENED,
ED_TAG_UNCLOSED,
ED_TAG_UNTERMINATED_STRING,
ED_TAG_PREMATURE_CLOSE,
ED_TAG_TAGNAME_EXPECTED
} ED_TagValidateResult;
typedef enum {
ED_LIST_TYPE_DEFAULT,
ED_LIST_TYPE_DIGIT,
ED_LIST_TYPE_BIG_ROMAN,
ED_LIST_TYPE_SMALL_ROMAN,
ED_LIST_TYPE_BIG_LETTERS,
ED_LIST_TYPE_SMALL_LETTERS,
ED_LIST_TYPE_CIRCLE,
ED_LIST_TYPE_SQUARE,
ED_LIST_TYPE_DISC,
ED_LIST_TYPE_CITE /* For Mail Quoting */
} ED_ListType;
struct _EDT_ListData {
/* This should be TagType, but there are problems with the include file dependencies. */
int8 iTagType; /* P_UNUM_LIST, P_NUM_LIST, P_BLOCKQUOTE, */
/* P_DIRECTOR, P_MENU, P_DESC_LIST */
XP_Bool bCompact;
ED_ListType eType;
int32 iStart; /* automatically maps, start is one */
char *pBaseURL; /* If an ED_LIST_TYPE_CITE, this is the URL from the enclosing <BASE> tag.
Don't expose this to users because not actually written out in the HTML. */
char *pExtra;
};
typedef struct _EDT_ListData EDT_ListData;
typedef enum {
ED_BREAK_NORMAL, /* just break the line, ignore images */
ED_BREAK_LEFT, /* break so it passes the image on the left */
ED_BREAK_RIGHT, /* break past the right image */
ED_BREAK_BOTH /* break past both images */
} ED_BreakType;
typedef enum {
ED_SAVE_OVERWRITE_THIS,
ED_SAVE_OVERWRITE_ALL,
ED_SAVE_DONT_OVERWRITE_THIS,
ED_SAVE_DONT_OVERWRITE_ALL,
ED_SAVE_CANCEL
} ED_SaveOption;
/* After saving, what to do with the editor buffer. */
typedef enum {
ED_FINISHED_GOTO_NEW, /* Point the editor to the location of the
newly saved document. */
ED_FINISHED_REVERT_BUFFER, /* Revert the buffer to the state before
the save operation began. */
ED_FINISHED_SAVE_DRAFT, /* Like ED_FINISHED_REVERT_BUFFER, except clears the dirty flag
on success. */
ED_FINISHED_MAIL_SEND /* If we succeed we're going to throw the buffer
away, so don't revert it. If failure, revert the buffer.
Used for mail compose, we don't
want the editor to start any operation that
causes problems when libmsg destroys the editor
context. */
} ED_SaveFinishedOption;
/* For FE_SaveDialogCreate */
typedef enum {
ED_SAVE_DLG_SAVE_LOCAL, /* "saving files to local disk" */
ED_SAVE_DLG_PUBLISH, /* "uploading files to remote server" */
ED_SAVE_DLG_PREPARE_PUBLISH /* "preparing files to publish" */
} ED_SaveDialogType;
typedef int32 EDT_ClipboardResult;
#define EDT_COP_OK 0
#define EDT_COP_DOCUMENT_BUSY 1
#define EDT_COP_SELECTION_EMPTY 2
#define EDT_COP_SELECTION_CROSSES_TABLE_DATA_CELL 3
/* For the result EDT_COP_CLIPBOARD_BAD the XP code has already
* given the user an error dialog. So FE code should not
* give an additional error dialog. (Only occurs on
* paste and paste-like operations.)
*/
#define EDT_COP_CLIPBOARD_BAD 4
#ifdef FIND_REPLACE
#define ED_FIND_FIND_ALL_WORDS 1 /* used to enumerate all words in a */
/* buffer */
#define ED_FIND_MATCH_CASE 2 /* default is to ignore case */
#define ED_FIND_REPLACE 4 /* call back the replace routine */
#define ED_FIND_WHOLE_BUFFER 8 /* start search from the top */
#define ED_FIND_REVERSE 0x10 /* reverse search from this point */
typedef intn ED_FindFlags;
typedef void (*EDT_PFReplaceFunc)( void *pMWContext,
char *pFoundWord,
char **pReplaceWord );
struct _EDT_FindAndReplaceData {
char* pSearchString;
ED_FindFlags fflags;
EDT_PFReplaceFunc pfReplace;
};
typedef struct _EDT_FindAndReplaceData EDT_FindAndReplaceData;
#endif /* FIND_REPLACE */
/* Callback function for image encoder */
typedef int32 EDT_ImageEncoderReference;
typedef unsigned char EDT_ImageEncoderStatus;
#define ED_IMAGE_ENCODER_OK 0
#define ED_IMAGE_ENCODER_USER_CANCELED 1
#define ED_IMAGE_ENCODER_EXCEPTION 2
typedef void (*EDT_ImageEncoderCallbackFn)(EDT_ImageEncoderStatus status, void* hook);
#endif

View File

@ -1,101 +0,0 @@
#
# This is a list of local files which get copied to the mozilla:dist directory
#
abcom.h
abdefn.h
addrbook.h
allxpstr.h
bkmks.h
cdefs.h
cgi.h
client.h
csid.h
ctxtfunc.h
dirprefs.h
ds.h
dserr.h
edt.h
edttypes.h
fe_proto.h
fe_rgn.h
fullsoft.h
garray.h
glhist.h
gui.h
hotlist.h
imap.h
intl_csi.h
itapefs.h
libcnv.h
libc_r.h
libevent.h
libi18n.h
libmime.h
libmocha.h
libnet.h
libstyle.h
lo_ele.h
mcom_db.h
mcom_ndbm.h
merrors.h
mime.h
mimeenc.h
minicom.h
mk_cx_fn.h
msgcom.h
msgmapi.h
msgnet.h
msgtypes.h
msg_filt.h
msg_srch.h
m_cvstrm.h
ncompat.h
net.h
np.h
npapi.h
npassoc.h
nsldap.h
nslocks.h
ntos.h
ntypes.h
pics.h
prefetch.h
proto.h
pwcacapi.h
resdef.h
shist.h
shistele.h
shr_str.h
spellchk.h
structs.h
undo.h
unix-dns.h
vcc.h
vobject.h
winfile.h
xlate.h
xp.h
xpassert.h
xpgetstr.h
xplocale.h
xp_core.h
xp_debug.h
xp_error.h
xp_file.h
xp_hash.h
xp_help.h
xp_list.h
xp_mcom.h
xp_md5.h
xp_mem.h
xp_mesg.h
xp_ncent.h
xp_qsort.h
xp_rgb.h
xp_sec.h
xp_str.h
xp_thrmo.h
xp_time.h
xp_trace.h
xupfonts.h

File diff suppressed because it is too large Load Diff

View File

@ -1,133 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/* Region-related definitions and prototypes */
#ifndef _FE_RGN_H_
#define _FE_RGN_H_
#ifdef LAYERS
#include "xp_core.h"
#include "xp_rect.h"
/******************Definitions and Types************/
/* For Windows only: Should we use the MFC CRgn class for region stuff? */
#ifdef XP_WIN
#undef FE_RGN_USE_MFC
#endif /* XP_WIN */
#ifdef XP_WIN
#ifdef FE_RGN_USE_MFC
#define FE_GetMDRegion(rgn) ((CRgn *)rgn)
#else
/*
* Note that the resultant CRgn * does not have to be
* explicitly deleted. It is considered a temporary object
* by the MFC and is deleted the next time we have idle
* time in the event loop.
*/
#define FE_GetMDRegion(rgn) ((HRGN)rgn)
#endif /* FE_RGN_USE_MFC */
#elif defined(XP_UNIX)
#define FE_GetMDRegion(rgn) ((Region)rgn)
#elif defined(XP_MAC)
#define FE_GetMDRegion(rgn) ((RgnHandle)rgn)
#else
#define FE_GetMDRegion(rgn) (rgn)
#endif /* XP_WIN */
#ifdef XP_WIN
#define FE_MAX_REGION_COORDINATE 0x7FFFFFFF
#else
#define FE_MAX_REGION_COORDINATE 0x7FFF
#endif
/* Setting the clip region to this effectively unsets the clip */
#define FE_NULL_REGION NULL
#define FE_CLEAR_REGION(region) \
do {FE_SubtractRegion((region), (region), (region)); } while (0)
/* Function called by FE_ForEachRectInRegion */
typedef void (*FE_RectInRegionFunc)(void *closure, XP_Rect *rect);
/*******************Prototypes**********************/
XP_BEGIN_PROTOS
extern FE_Region FE_CreateRegion(void);
/* Creates a region from a rectangle. Returns */
/* NULL if region can't be created. */
extern FE_Region FE_CreateRectRegion(XP_Rect *rect);
/* Destroys region. */
extern void FE_DestroyRegion(FE_Region region);
/* Makes a copy of a region. If dst is NULL, creates a new region */
extern FE_Region FE_CopyRegion(FE_Region src, FE_Region dst);
/* Set an existing region to a rectangle */
extern FE_Region FE_SetRectRegion(FE_Region region, XP_Rect *rect);
/* dst = src1 intersect sr2 */
/* dst can be one of src1 or src2 */
extern void FE_IntersectRegion(FE_Region src1, FE_Region src2, FE_Region dst);
/* dst = src1 union src2 */
/* dst can be one of src1 or src2 */
extern void FE_UnionRegion(FE_Region src1, FE_Region src2, FE_Region dst);
/* dst = src1 - src2 */
/* dst can be one of src1 or src2 */
extern void FE_SubtractRegion(FE_Region src1, FE_Region src2, FE_Region dst);
/* Returns TRUE if the region contains no pixels */
extern XP_Bool FE_IsEmptyRegion(FE_Region region);
/* Returns the bounding rectangle of the region */
extern void FE_GetRegionBoundingBox(FE_Region region, XP_Rect *bbox);
/* TRUE if rgn1 == rgn2 */
extern XP_Bool FE_IsEqualRegion(FE_Region rgn1, FE_Region rgn2);
/* Moves a region by the specified offsets */
extern void FE_OffsetRegion(FE_Region region, int32 xOffset, int32 yOffset);
/* Is any part of the rectangle in the specified region */
extern XP_Bool FE_RectInRegion(FE_Region region, XP_Rect *rect);
/* For each rectangle that makes up this region, call the func */
extern void FE_ForEachRectInRegion(FE_Region region,
FE_RectInRegionFunc func,
void * closure);
#ifdef DEBUG
extern void FE_HighlightRect(void *context, XP_Rect *rect, int how_much);
extern void FE_HighlightRegion(void *context, FE_Region region, int how_much);
#endif /* DEBUG */
XP_END_PROTOS
#endif /* LAYERS */
#endif /* _FE_RGN_H_ */

View File

@ -1,222 +0,0 @@
/*--------------------------------------------------------------------
* fullsoft.h
*
* Created: 10/15/97
* Author: Matt Kendall
*
* Copyright (C) 1997-98, Full Circle Software, Inc., All Rights Reserved
*
* Full Circle "Spiral" Application API Definition
* - mkk 1/19/98 renamed from "spiral.h" to "fullsoft.h"
*
*--------------------------------------------------------------------*/
#if !defined(__FULLSOFT_H)
#define __FULLSOFT_H
/* define NO_FC_API to disable all calls to the Full Circle library */
/* define FC_TRACE to enable the Full Circle TRACE macro */
/* define FC_ASSERT to enable the Full Circle ASSERT macro */
/* define FC_TRACE_PARAM to enable the Full Circle TRACE_PARAM macro */
/* define FC_ASSERT_PARAM to enable the Full Circle TRACE_PARAM macro */
#if !defined(FAR)
#define FAR
#endif /* !FAR */
#if !defined(FCAPI)
#define FCAPI
#endif /* defined FCAPI */
typedef const char FAR * FC_KEY ;
typedef const char FAR * FC_TRIGGER ;
typedef unsigned long FC_DATE ;
typedef unsigned long FC_UINT32 ;
typedef void FAR * FC_PVOID ;
typedef const char FAR * FC_STRING ;
typedef void FAR * FC_CONTEXT ;
#define FC_CONTEXT_NONE ((FC_CONTEXT) -1)
typedef enum {
FC_DATA_TYPE_BINARY,
FC_DATA_TYPE_STRING,
FC_DATA_TYPE_INTEGER,
FC_DATA_TYPE_DATE,
FC_DATA_TYPE_COUNTER
} FC_DATA_TYPE ;
typedef enum {
FC_ERROR_OK = 0,
FC_ERROR_CANT_INITIALIZE,
FC_ERROR_NOT_INITIALIZED,
FC_ERROR_ALREADY_INITIALIZED,
FC_ERROR_FAILED,
FC_ERROR_OUT_OF_MEMORY,
FC_ERROR_INVALID_PARAMETER
} FC_ERROR ;
#if defined(__cplusplus)
extern "C" {
#endif /* __cplusplus */
/* define NO_FC_API to disable all calls to the Full Circle library */
#if !defined(NO_FC_API)
FC_ERROR FCAPI
FCInitialize( void ) ;
FC_ERROR FCAPI
FCCreateKey(
FC_KEY key,
FC_DATA_TYPE type,
FC_UINT32 first_count,
FC_UINT32 last_count,
FC_UINT32 max_element_size) ;
FC_ERROR FCAPI
FCCreatePersistentKey(
FC_KEY key,
FC_DATA_TYPE type,
FC_UINT32 first_count,
FC_UINT32 last_count,
FC_UINT32 max_element_size) ;
FC_ERROR FCAPI
FCAddDataToKey(
FC_KEY key,
FC_PVOID buffer,
FC_UINT32 data_length) ;
FC_ERROR FCAPI
FCAddIntToKey(
FC_KEY key,
FC_UINT32 data) ;
FC_ERROR FCAPI
FCAddStringToKey(
FC_KEY key,
FC_STRING string) ;
FC_ERROR FCAPI
FCAddDateToKey(
FC_KEY key,
FC_DATE date) ;
FC_ERROR FCAPI
FCSetCounter(
FC_KEY key,
FC_UINT32 value) ;
FC_ERROR FCAPI
FCIncrementCounter(
FC_KEY key,
FC_UINT32 value) ;
FC_ERROR FCAPI
FCRegisterMemory(
FC_KEY key,
FC_DATA_TYPE type,
FC_PVOID buffer,
FC_UINT32 length,
FC_UINT32 dereference_count,
FC_CONTEXT context) ;
FC_ERROR FCAPI
FCUnregisterMemory( FC_CONTEXT context ) ;
FC_ERROR FCAPI
FCTrigger( FC_TRIGGER trigger ) ;
void FCAPI
FCTrace(FC_STRING fmt, ... ) ;
void FCAPI
FCAssert() ;
void FCAPI
FCTraceParam(
FC_UINT32 track,
FC_UINT32 level,
FC_STRING fmt,
... ) ;
void FCAPI
FCAssertParam(
FC_UINT32 track,
FC_UINT32 level ) ;
#if defined(FC_ASSERT)
#if defined(ASSERT)
#undef ASSERT
#endif /* defined ASSERT */
#define ASSERT(a) { if( !(a) ) FCAssert() ; }
#endif /* FC_ASSERT */
#if defined(FC_TRACE)
#if defined(TRACE)
#undef TRACE
#endif /* defined TRACE */
#define TRACE FCTrace
#endif /* FC_TRACE */
#if defined(FC_ASSERT_PARAM)
#if defined(ASSERT_PARAM)
#undef ASSERT_PARAM
#endif /* defined ASSERT_PARAM */
#define ASSERT_PARAM(a,b,c) { if ( !(c) ) FCAssertParam(a,b) ; }
#endif /* FC_ASSERT_PARAM */
#if defined(FC_TRACE_PARAM)
#if defined(TRACE_PARAM)
#undef TRACE_PARAM
#endif /* defined TRACE_PARAM */
#define TRACE_PARAM FCTraceParam
#endif /* FC_TRACE_PARAM */
#else /* NO_FC_API */
#define FCInitialize() FC_ERROR_OK
#define FCCreateKey(a,b,c,d,e) FC_ERROR_OK
#define FCCreatePersistentKey(a,b,c,d,e) FC_ERROR_OK
#define FCAddDataToKey(a,b,c) FC_ERROR_OK
#define FCAddIntToKey(a,b) FC_ERROR_OK
#define FCAddStringToKey(a,b) FC_ERROR_OK
#define FCAddDateToKey(a,b) FC_ERROR_OK
#define FCRegisterMemory(a,b,c,d,e,f) FC_ERROR_OK
#define FCUnregisterMemory(a) FC_ERROR_OK
#define FCTrigger(a) FC_ERROR_OK
#define FCSetCounter(a,b) FC_ERROR_OK
#define FCIncrementCounter(a,b) FC_ERROR_OK
#if defined(FC_ASSERT)
#define ASSERT(f) ((void)0)
#endif /* FC_ASSERT */
#if defined(FC_TRACE)
void FCAPI FCTrace(FC_STRING fmt,...) ;
#define TRACE 1 ? (void)0 : FCTrace
#endif /* FC_TRACE */
#if defined(FC_ASSERT_PARAM)
#define ASSERT_PARAM(a,b,c) ((void)0)
#endif /* FC_ASSERT_PARAM */
#if defined(FC_TRACE_PARAM)
void FCAPI FCTraceParam(
FC_UINT32 track,
FC_UINT32 level,
FC_STRING fmt,
... ) ;
#define TRACE_PARAM 1 ? (void) 0 : FCTraceParam
#endif /* FC_TRACE_PARAM */
#endif /* NO_FC_API */
#if defined(__cplusplus)
}
#endif /* __cplusplus */
#endif /* __FULLSOFT_H */

View File

@ -1,256 +0,0 @@
/* -*- Mode: C; tab-width: 8; 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.
*/
//
// Warning: This is a C++ file.
//
//
// This implements cross platform Growable arrays of Pointers.
//
#ifndef _GARRAY_H_
#define _GARRAY_H_
//
// On Unix (well at least Solaris) we are having troubles with
// templates, so hey, we won't use them...djw.
//
// On Mac we are having troubles as well, so add me to the list.
// Now, why even have templates?...jar
//
#if ! ( defined(XP_WIN16) || defined(XP_UNIX) || defined(XP_MAC) )
#define TEMPLATE_SUPPORT 1
#endif
class CXP_GrowableArray {
protected:
void **m_pData;
int m_iSize;
int m_iAllocSize;
int NewSize( int iMinSize){
int iNewSize = MAX( m_iAllocSize,16) ;
while( iNewSize < iMinSize ){
iNewSize = iNewSize+iNewSize;
}
return iNewSize;
}
//
// this is the routine that does the actual work. Should be in
// its own file.
//
void GuaranteeSize(int iSize){
if(m_iAllocSize <= iSize){
int iNewSize = NewSize( iSize );
if( m_iAllocSize ){
void ** pNewData = new void*[iNewSize];
XP_BCOPY( m_pData, pNewData, m_iAllocSize * sizeof(void*) );
delete [] m_pData;
m_pData = pNewData;
}
else{
m_pData = new void*[iNewSize];
}
m_iAllocSize = iNewSize;
}
}
public:
CXP_GrowableArray(int iStartSize=0): m_pData(0),m_iSize(0),m_iAllocSize(0){
if( iStartSize ){
GuaranteeSize( iStartSize );
}
};
~CXP_GrowableArray(){ delete [] m_pData; }
int Size(){ return m_iSize; }
void SetSize( int iSize ){
GuaranteeSize( iSize );
m_iSize = iSize;
}
void* operator[](int nIndex) const { return m_pData[nIndex]; }
void*& operator[](int nIndex){ return m_pData[nIndex]; }
int Add(void* newElement){
GuaranteeSize(m_iSize+1);
m_pData[m_iSize] = newElement;
/* Return index to last item in list */
return m_iSize++;
}
int Insert(void* newElement, int nIndex){
intn iLowerLimit;
GuaranteeSize(m_iSize+1);
if( nIndex < 0 )
nIndex = 0;
if( nIndex < m_iSize )
{
iLowerLimit = max(1, nIndex);
/* Shuffle pointers at and above insert index up */
for( int i = m_iSize; i >= iLowerLimit; i-- )
{
m_pData[i] = m_pData[i-1];
}
/* Overwrite pointer at designated location */
m_pData[nIndex] = newElement;
} else {
/* nIndex is too large - just add at end */
m_pData[m_iSize] = newElement;
}
/* Return index to last item in list */
return m_iSize++;
}
int Delete( int nIndex ){
if( nIndex < m_iSize )
{
/* Shuffle remaining pointers down */
for( int i = nIndex; i < m_iSize-1; i++ )
{
m_pData[i] = m_pData[i+1];
}
m_iSize--;
}
/* Return index to last item in list */
return (m_iSize-1);
}
int Delete( void* element ){
for( int i = 0; i < m_iSize; i++ )
{
if( m_pData[i] == element )
{
return Delete(i);
}
}
return (m_iSize-1);
}
int Find( void* element ){
for( int i = 0; i < m_iSize; i++ )
{
if( m_pData[i] == element )
{
return i;
}
}
return -1;
}
void Empty(){
m_iSize = 0;
}
};
class CXP_PtrStack : public CXP_GrowableArray{
public:
int m_iTop;
CXP_PtrStack(): m_iTop(-1){}
Bool IsEmpty(){ return m_iTop == -1; }
void Push( void* t ){
if( ++m_iTop >= Size() ) {
Add( t );
}
else {
(*this)[m_iTop] = t;
}
}
void* Top(){ return (*this)[m_iTop]; }
void* Pop(){ return (*this)[m_iTop--];}
void Reset(){ m_iTop = -1; }
int StackSize() { return m_iTop + 1; }
};
#ifdef TEMPLATE_SUPPORT
template<class PTRTYPE>
class TXP_GrowableArray: public CXP_GrowableArray {
public:
PTRTYPE operator[](int nIndex) const { return (PTRTYPE)(int32)m_pData[nIndex]; }
PTRTYPE& operator[](int nIndex){ return *(PTRTYPE*)&m_pData[nIndex]; }
int Add(PTRTYPE newElement){ return CXP_GrowableArray::Add( (void*) newElement ); }
};
#define Declare_GrowableArray(NAME,PTRTYPE) \
typedef TXP_GrowableArray<PTRTYPE> TXP_GrowableArray_##NAME;
#else
#define Declare_GrowableArray(NAME,PTRTYPE) \
class TXP_GrowableArray_##NAME: public CXP_GrowableArray { \
public: \
PTRTYPE operator[](int nIndex) const { return (PTRTYPE)(int32)m_pData[nIndex]; }\
PTRTYPE& operator[](int nIndex){ return *(PTRTYPE*)&m_pData[nIndex]; } \
int Add(PTRTYPE newElement){ return CXP_GrowableArray::Add( (void*) newElement ); } \
}; \
#endif
//
// PtrStack Imlementation
//
#ifdef TEMPLATE_SUPPORT
template<class PTRTYPE>
class TXP_PtrStack : public TXP_GrowableArray<PTRTYPE> {
public:
int m_iTop;
TXP_PtrStack(): m_iTop(-1){}
Bool IsEmpty(){ return m_iTop == -1; }
void Push( PTRTYPE t ){
if( ++m_iTop >= Size() ) {
Add( t );
}
else {
(*this)[m_iTop] = t;
}
}
PTRTYPE Top(){ return (*this)[m_iTop]; }
PTRTYPE Pop(){ return (*this)[m_iTop--];}
void Reset(){ m_iTop = -1; }
int StackSize(){ return m_iTop + 1; }
};
#define Declare_PtrStack(NAME,PTRTYPE) \
typedef TXP_PtrStack<PTRTYPE> TXP_PtrStack_##NAME;
#else // No template support
#define Declare_PtrStack(NAME, PTRTYPE) \
class TXP_PtrStack_##NAME : public CXP_PtrStack { \
public: \
void Push( PTRTYPE t ){ CXP_PtrStack::Push((void*)(int32)t); } \
PTRTYPE Top(){ return (PTRTYPE)(int32)CXP_PtrStack::Top(); } \
PTRTYPE Pop(){ return (PTRTYPE)(int32)CXP_PtrStack::Pop(); } \
PTRTYPE operator[](int nIndex) const { return (PTRTYPE)(int32)m_pData[nIndex]; }\
PTRTYPE& operator[](int nIndex){ return *(PTRTYPE*)&m_pData[nIndex]; } \
int Add(PTRTYPE newElement){ return CXP_GrowableArray::Add( (void*)(int32)newElement ); } \
}; \
#endif
#endif

View File

@ -1,188 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 GLHIST_H
#define GLHIST_H
#include "ntypes.h"
typedef enum gh_SortColumn
{
eGH_NoSort = -1,
eGH_NameSort,
eGH_LocationSort,
eGH_FirstDateSort,
eGH_LastDateSort,
eGH_VisitCountSort
}gh_SortColumn;
typedef struct _gh_HistEntry
{
char * address;
time_t last_accessed;
time_t first_accessed;
int32 iCount;
int32 iFlags;
char * pszName;
}gh_HistEntry;
typedef struct _gh_HistEntryData
{
time_t last_accessed;
time_t first_accessed;
int32 iCount;
int32 iFlags;
char * pszName;
}gh_HistEntryData;
typedef enum gh_FilterOp
{
eGH_FOEquals,
eGH_FOEqualsNot,
eGH_FOGreater,
eGH_FOGreaterEqual,
eGH_FOLess,
eGH_FOLessEqual,
eGH_FOHas,
eGH_FOHasNot
}gh_FilterOp;
typedef enum gh_FilterLogOp
{
eGH_FLOAnd,
eGH_FLOOr
}gh_FilterLogOp;
typedef struct _gh_FilterCondition
{
enum gh_SortColumn enCol;
enum gh_FilterOp enOp;
union
{
char * pszTest;
int32 iTest;
} tests;
}gh_FilterCondition;
typedef struct _gh_Filter
{
int32 iNumConditions;
gh_FilterCondition * pConditions;
gh_FilterLogOp * enOps;
}gh_Filter;
typedef struct _gh_NotifyMsg
{
int32 iNotifyMsg;
char * pszKey;
void * pUserData;
} gh_NotifyMsg;
typedef void * GHHANDLE;
typedef void * GHURHANDLE;
#define GH_NOTIFY_UPDATE 1
#define GH_NOTIFY_DELETE 2
#ifdef XP_WIN
typedef int (__cdecl *GHISTORY_NOTIFYPROC)( gh_NotifyMsg *pMsg );
#else
typedef int (*GHISTORY_NOTIFYPROC)( gh_NotifyMsg *pMsg );
#endif
XP_BEGIN_PROTOS
/* if the url was found in the global history then the then number of seconds since
* the last access is returned. if the url is not found -1 is returned
*/
extern int GH_CheckGlobalHistory(char * url);
/* add or update the url in the global history
*/
extern void GH_UpdateGlobalHistory(URL_Struct * URL_s);
/* save the global history to a file and remove the list from memory
*/
/*extern void GH_CleanupGlobalHistory(void);*/
/* save the global history to a file and remove the list from memory
*/
extern void GH_SaveGlobalHistory(void);
/* free the global history list
*/
extern void GH_FreeGlobalHistory(void);
/* clear the entire global history list
*/
extern void GH_ClearGlobalHistory(void);
#if defined(XP_MAC) || defined(XP_UNIX)
/* set the maximum time for an object in the Global history in
* number of seconds
*/
extern void GH_SetGlobalHistoryTimeout(int32 timeout_interval);
#endif
/* start global history tracking
*/
extern void GH_InitGlobalHistory(void);
/* create an HTML stream and push a bunch of HTML about
* the global history
*
* returns -1
*/
extern int NET_DisplayGlobalHistoryInfoAsHTML( MWContext *context, URL_Struct *URL_s, int format_out );
/*
// Context/Handle based functions to retrieve a pseudo cursor on the
// Global History list (using a specified sort/index).
*/
extern GHHANDLE GH_GetContext( enum gh_SortColumn enGHSort,
gh_Filter * pFilter,
GHISTORY_NOTIFYPROC pfNotifyProc,
GHURHANDLE hUR,
void * pUserData );
extern void GH_ReleaseContext( GHHANDLE pContext, Bool bReleaseUR );
extern gh_HistEntry * GH_GetRecord( GHHANDLE pContext, uint32 uRow );
extern void GH_DeleteRecord( GHHANDLE pContext, uint32 uRow, Bool bGroup );
extern uint32 GH_GetNumRecords( GHHANDLE pContext );
extern gh_SortColumn GH_GetSortField( GHHANDLE pContext );
extern int GH_UpdateURLTitle( URL_Struct *pUrl, char *pszTitle, Bool bFrameCell );
extern int32 GH_GetRecordNum( GHHANDLE pContext, char *pszLocation );
extern int GH_GetMRUPage( char *pszURL, int iMaxLen );
extern void GH_FileSaveAsHTML( GHHANDLE pContext, MWContext *pMWContext );
extern GHURHANDLE GH_GetURContext( GHHANDLE pContext );
extern void GH_SupportUndoRedo( GHHANDLE pContext );
extern void GH_Undo( GHHANDLE pContext );
extern void GH_Redo( GHHANDLE pContext );
extern Bool GH_CanUndo( GHHANDLE pContext );
extern Bool GH_CanRedo( GHHANDLE pContext );
/* AutoComplete stuff */
enum autoCompStatus {foundDone, notFoundDone, stillSearching, dontCallOnIdle};
extern enum autoCompStatus urlMatch(const char *criteria, char **result, Bool freshStart, Bool scroll);
extern void NET_RegisterEnableUrlMatchCallback(void);
XP_END_PROTOS
#endif /* GLHIST_H */

View File

@ -1,64 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 _GUI_H_
#define _GUI_H_
/* These are defined in libnet/mkhttp.c.
XP_AppName The name of the client program - usually "Netscape", but
possibly something else for bundled versions, like the
MCI client.
XP_AppCodeName The name sent at the HTTP vendor ID string; regardless of
the value of XP_AppName, this must be "Mozilla" or
everything will break.
XP_AppVersion The version number of the client as a string. This is the
string sent along with the vendor ID string, so it should be
of the form "1.1N (Windows)" or "1.1N (X11; SunOS 4.1.3)".
XP_AppLanguage The language of the navigator client. Usually a two-letter
code (EN, FR) but could be a 5-letter code for translations
where a sub-language designation is appropriate (FR_CA)
XP_AppPlatform The compiled flavor of the navigator (as opposed to what
it may actually be running on).
*/
XP_BEGIN_PROTOS
#if defined(XP_WIN) || defined(XP_OS2)
extern char *XP_AppName, *XP_AppCodeName, *XP_AppVersion;
extern char *XP_AppLanguage, *XP_AppPlatform;
#else
extern const char *XP_AppName, *XP_AppCodeName, *XP_AppVersion;
extern const char *XP_AppLanguage, *XP_AppPlatform;
#endif
XP_END_PROTOS
/* this define is needed for error message efficiency
*
* please don't comment it out for UNIX - LJM
*/
/* this is constant across languages - do NOT localize it */
#define XP_CANONICAL_CLIENT_NAME "Netscape"
/* name of the program */
/* XP_LOCAL_CLIENT_NAME was never used consistently: use XP_AppName instead. */
#endif /* _GUI_H_ */

View File

@ -1,250 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 HOTLIST_H
#define HOTLIST_H
#include "xp_mcom.h"
#include "ntypes.h"
XP_BEGIN_PROTOS
typedef enum HOT_Type {
HOT_URLType, HOT_HeaderType, HOT_SeparatorType } HOT_Type;
typedef struct HotlistStruct_ {
HOT_Type type;
Bool is_folded; /* if it's a header is it folded? */
XP_List *children; /* a list of children, only headers have these */
char *name; /* a title */
char *address; /* the URL address */
char *description; /* random text */
time_t last_visit;
time_t addition_date;
char *content_type;
struct HotlistStruct_ *parent; /* My hotlist parent */
XP_List *lParent; /* The XP_List object that points to my parent or NULL */
} HotlistStruct;
/* tell the hotlist code that the hotlist has been modified
* so that it gets saved the next time SaveHotlist is called
*/
extern void HOT_SetModified(void);
/* changes a entry to a header type from a non header type
* and vice versa. If the object was a header and
* has children, the children will be blown away. (very bad)
*/
extern void HOT_ChangeEntryType(HotlistStruct * entry, HOT_Type new_type);
/* Fold or unfold a hotlist header
*
* set the Boolean to True to fold the list and
* False to unfold
*/
extern void HOT_FoldHeader(HotlistStruct * item, Bool fold);
/* checks the hotlist for a url and updates the last accessed
* time
*/
extern void HOT_UpdateHotlistTime(URL_Struct *URL_s, time_t cur_time);
/* Performs regular expression match on hotlist name and address
* fields. Returns the found object, or NULL if not
* found.
*
* start_obj specifies the object to start searching
* on. The start_num object WILL NOT be searched but all those
* after it will be.
* To search the whole list give NULL as start_obj.
*
* If headers became unfolded because of the search then redisplay_all
* will be set to TRUE
*/
extern HotlistStruct * HOT_SearchHotlist(char * search_string,
HotlistStruct * start_obj,
Bool * redisplay_all);
/* returns TRUE if the second argument is a direct
* descendent of the first argument.
*
* returns FALSE otherwise
*/
extern Bool HOT_IsDescendent(HotlistStruct *parent, HotlistStruct *possible_child);
/* Reads the hostlist from disk, what else?
*
* pass in the hotlist filename and a relative URL which represents
* the original location of the html file. If you are reading the
* default hotlist you should pass in a file URL of the form
* file://localhost/PATH
*
*/
extern void HOT_ReadHotlistFromDisk (char * filename, char * relative_url);
/* returns an integer index of the item in the list
*/
extern int HOT_GetIndex(HotlistStruct * item);
/* returns an integer index of the item in the list
* and does not pay attention to the is_folded value
*/
extern int HOT_GetUnfoldedIndex(HotlistStruct * item);
/* returns the object associated with the index returned by
* HOT_GetIndex()
*/
extern HotlistStruct * HOT_IndexOf(int index);
/* returns the object associated with the index returned by
* HOT_GetUnfoldedIndex()
*/
extern HotlistStruct * HOT_UnfoldedIndexOf(int index);
/* returns an integer depth of the item in the list starting at zero
*/
extern int HOT_GetDepth(HotlistStruct * item);
/* return a pointer to the main hotlist list
*
* returns NULL if nothing has ever been
* added to the hotlist
*/
extern XP_List * HOT_GetHotlistList(void);
/* saves the hotlist to a configuration file
*/
extern int HOT_SaveHotlist (char * filename);
/* Free's the entire hotlist
*/
extern void HOT_FreeHotlist (void);
/* create a hotlist entry struct and fill it in with
* the passed in data
*
* returns NULL on out of memory error.
*/
extern HotlistStruct *
HOT_CreateEntry(HOT_Type type,
const char *name,
const char *address,
const char *content_type,
time_t last_visit);
/* free's a hotlist entry
*/
extern void HOT_FreeEntry(HotlistStruct * entry);
/* create a completely new copy of the entry passed in
*/
extern HotlistStruct * HOT_CopyEntry(HotlistStruct * entry);
/* insert an item before another item in the hotlist
*
* if the insert_before item is NULL or not found the item
* will be inserted at the begining of the list
*/
extern void HOT_InsertItemBefore(HotlistStruct * insert_before, HotlistStruct * insertee);
/* insert an item after another item in the hotlist
*
* if the insert_after item is NULL or not found the item
* will be inserted at the end of the list
*/
extern void HOT_InsertItemAfter(HotlistStruct * insert_after, HotlistStruct * insertee);
/* insert an item in a header if "insert_after" is a
* Header type, or after the item if "insert after" is
* not a header type.
*
* if the insert_after item is NULL or not found the item
* will be inserted at the end of the hotlist
*/
extern void
HOT_InsertItemInHeaderOrAfterItem(HotlistStruct * insert_after,
HotlistStruct * insertee);
/* remove an item from the hotlist and free's it
*
* returns TRUE on success, FALSE if not found
*/
extern Bool HOT_RemoveItem(HotlistStruct * old_item);
/* remove an item from the hotlist and doesn't free it
*
* returns TRUE on success, FALSE if not found
*/
extern Bool HOT_RemoveItemFromList(HotlistStruct * old_item);
/* move an item up in the list
*/
extern void HOT_MoveObjectUp(HotlistStruct * item);
/* move an item down in the list
*/
extern void HOT_MoveObjectDown(HotlistStruct * item);
/* returns True if the object can be moved Up
* False if the object cannot be moved Up or if
* it cannot be found in the list
*/
extern Bool HOT_ObjectCanGoUp(HotlistStruct * item);
/* returns True if the object can be moved down
* False if the object cannot be moved down or if
* it cannot be found in the list
*/
extern Bool HOT_ObjectCanGoDown(HotlistStruct * item);
/* Whether the file will be written when Save is called. */
extern Bool HOT_Modified(void);
/*
* Gets the top node of the hotlist
*/
extern HotlistStruct*
HOT_GetHotlist (void);
/*
* Convert a number of selections in a hotlist list into a block of
* memory that the user can use for cut and paste operations
*/
extern char *
HOT_ConvertSelectionsToBlock(HotlistStruct ** list,
int iCount,
int bLongFormat,
int32 * lTotalLen);
/*
* Take a block of memory and insert the hotlist items it represents into
* the current hotlist
*/
extern void
HOT_InsertBlockAt(char * pOriginalBlock,
HotlistStruct * item,
int bLongFormat,
int32 lTotalLen);
XP_END_PROTOS
#endif /* HOTLIST_H */

View File

@ -1,480 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 __imap__
#define __imap__
#include "structs.h"
#include "msgcom.h"
/* used for communication between libmsg and libnet */
#define kNoFlags 0x00 /* RFC flags */
#define kMarked 0x01
#define kUnmarked 0x02
#define kNoinferiors 0x04
#define kNoselect 0x08
#define kImapTrash 0x10 /* Navigator flag */
#define kJustExpunged 0x20 /* This update is a post expunge url update. */
#define kPersonalMailbox 0x40 /* this mailbox is in the personal namespace */
#define kPublicMailbox 0x80 /* this mailbox is in the public namespace */
#define kOtherUsersMailbox 0x100 /* this mailbox is in the other users' namespace */
/* flags for individual messages */
/* currently the ui only offers \Seen and \Flagged */
#define kNoImapMsgFlag 0x0000
#define kImapMsgSeenFlag 0x0001
#define kImapMsgAnsweredFlag 0x0002
#define kImapMsgFlaggedFlag 0x0004
#define kImapMsgDeletedFlag 0x0008
#define kImapMsgDraftFlag 0x0010
#define kImapMsgRecentFlag 0x0020
#define kImapMsgForwardedFlag 0x0040 /* Not always supported, check mailbox folder */
#define kImapMsgMDNSentFlag 0x0080 /* Not always supported. check mailbox folder */
#define kImapMsgSupportUserFlag 0x8000 /* This seems to be the most cost effective way of
* piggying back the server support user flag
* info.
*/
typedef enum {
kPersonalNamespace = 0,
kOtherUsersNamespace,
kPublicNamespace,
kDefaultNamespace,
kUnknownNamespace
} EIMAPNamespaceType;
typedef int32 imap_uid;
#ifdef XP_CPLUSPLUS
class TImapFlagAndUidState;
#else
typedef struct TImapFlagAndUidState TImapFlagAndUidState;
#endif
/* forward declaration */
typedef void ImapActiveEntry;
/* url used to signify that filtering is complete so
we can tell the fe that the inbox thread pane is
loaded */
#define kImapFilteringCompleteURL "Mailbox://?filteringcomplete"
/* url used to signify that online/offline synch is complete */
#define kImapOnOffSynchCompleteURL "Mailbox://?onoffsynchcomplete"
/* if a url creator does not know the hierarchySeparator, use this */
#define kOnlineHierarchySeparatorUnknown ' '
struct mailbox_spec {
int32 folder_UIDVALIDITY;
int32 number_of_messages;
int32 number_of_unseen_messages;
int32 number_of_recent_messages;
uint32 box_flags;
char *allocatedPathName;
char hierarchySeparator;
const char *hostName;
TNavigatorImapConnection *connection;
TImapFlagAndUidState *flagState;
XP_Bool folderSelected;
XP_Bool discoveredFromLsub;
const char *smtpPostAddress;
};
typedef struct mailbox_spec mailbox_spec;
enum EIMAPSubscriptionUpgradeState {
kEverythingDone,
kBringUpSubscribeUI
};
enum ImapOnlineCopyState {
kInProgress,
kSuccessfulCopy,
kFailedCopy,
kSuccessfulDelete,
kFailedDelete,
kReadyForAppendData,
kFailedAppend
};
struct folder_rename_struct {
char *fOldName;
char *fNewName;
};
typedef struct folder_rename_struct folder_rename_struct;
/* this file defines the syntax of the imap4 url's and offers functions
that create url strings. If the functions do not offer enough
functionality then let kevin know before you starting creating strings
from scratch. */
#include "xp_mcom.h"
XP_BEGIN_PROTOS
/* need mailbox status urls to get the number of message and the
number of unread messages */
/* Selecting a mailbox */
/* imap4://HOST?select?MAILBOXPATH */
char *CreateImapMailboxSelectUrl(const char *imapHost,
const char *mailbox,
char hierarchySeparator,
const char *undoDeleteIdentifierList);
/* lite select, used to verify UIDVALIDITY while going on/offline */
char *CreateImapMailboxLITESelectUrl(const char *imapHost,
const char *mailbox,
char hierarchySeparator);
/* expunge, used in traditional imap delete model */
char *CreateImapMailboxExpungeUrl(const char *imapHost,
const char *mailbox,
char hierarchySeparator);
/* Creating a mailbox */
/* imap4://HOST?create?MAILBOXPATH */
char *CreateImapMailboxCreateUrl(const char *imapHost, const char *mailbox, char hierarchySeparator);
/* discover the children of this mailbox */
char *CreateImapChildDiscoveryUrl(const char *imapHost, const char *mailbox, char hierarchySeparator);
/* discover the n-th level children of this mailbox */
char *CreateImapLevelChildDiscoveryUrl(const char *imapHost, const char *mailbox, char hierarchySeparator, int n);
/* discover the mailboxes of this account */
char *CreateImapAllMailboxDiscoveryUrl(const char *imapHost);
/* discover the mailboxes of this account, and the subscribed mailboxes */
char *CreateImapAllAndSubscribedMailboxDiscoveryUrl(const char *imapHost);
/* deleting a mailbox */
/* imap4://HOST?delete?MAILBOXPATH */
char *CreateImapMailboxDeleteUrl(const char *imapHost, const char *mailbox, char hierarchySeparator);
/* renaming a mailbox */
/* imap4://HOST?rename?OLDNAME?NEWNAME */
char *CreateImapMailboxRenameLeafUrl(const char *imapHost,
const char *oldBoxPathName,
char hierarchySeparator,
const char *newBoxLeafName);
/* renaming a mailbox, moving hierarchy */
/* imap4://HOST?movefolderhierarchy?OLDNAME?NEWNAME */
/* oldBoxPathName is the old name of the child folder */
/* destinationBoxPathName is the name of the new parent */
char *CreateImapMailboxMoveFolderHierarchyUrl(const char *imapHost,
const char *oldBoxPathName,
char oldHierarchySeparator,
const char *destinationBoxPathName,
char newHierarchySeparator);
/* listing available mailboxes */
/* imap4://HOST?list */
char *CreateImapListUrl(const char *imapHost,
const char *mailbox,
const char hierarchySeparator);
/* biff */
char *CreateImapBiffUrl(const char *imapHost,
const char *mailbox,
char hierarchySeparator,
uint32 uidHighWater);
/* fetching RFC822 messages */
/* imap4://HOST?fetch?<UID/SEQUENCE>?MAILBOXPATH?x */
/* 'x' is the message UID or sequence number list */
/* will set the 'SEEN' flag */
char *CreateImapMessageFetchUrl(const char *imapHost,
const char *mailbox,
char hierarchySeparator,
const char *messageIdentifierList,
XP_Bool messageIdsAreUID);
/* fetching the headers of RFC822 messages */
/* imap4://HOST?header?<UID/SEQUENCE>?MAILBOXPATH?x */
/* 'x' is the message UID or sequence number list */
/* will not affect the 'SEEN' flag */
char *CreateImapMessageHeaderUrl(const char *imapHost,
const char *mailbox,
char hierarchySeparator,
const char *messageIdentifierList,
XP_Bool messageIdsAreUID);
/* search an online mailbox */
/* imap4://HOST?search?<UID/SEQUENCE>?MAILBOXPATH?SEARCHSTRING */
char *CreateImapSearchUrl(const char *imapHost,
const char *mailbox,
char hierarchySeparator,
const char *searchString,
XP_Bool messageIdsAreUID);
/* delete messages */
/* imap4://HOST?deletemsg?<UID/SEQUENCE>?MAILBOXPATH?x */
/* 'x' is the message UID or sequence number list */
char *CreateImapDeleteMessageUrl(const char *imapHost,
const char *mailbox,
char hierarchySeparator,
const char *messageIds,
XP_Bool idsAreUids);
/* delete all messages */
/* imap4://HOST?deleteallmsgs?MAILBOXPATH */
char *CreateImapDeleteAllMessagesUrl(const char *imapHost,
const char *mailbox,
char hierarchySeparator);
/* store +flags url */
/* imap4://HOST?store+flags?<UID/SEQUENCE>?MAILBOXPATH?x?f */
/* 'x' is the message UID or sequence number list */
/* 'f' is the byte of flags */
char *CreateImapAddMessageFlagsUrl(const char *imapHost,
const char *mailbox,
char hierarchySeparator,
const char *messageIds,
imapMessageFlagsType flags,
XP_Bool idsAreUids);
/* store -flags url */
/* imap4://HOST?store-flags?<UID/SEQUENCE>?MAILBOXPATH?x?f */
/* 'x' is the message UID or sequence number list */
/* 'f' is the byte of flags */
char *CreateImapSubtractMessageFlagsUrl(const char *imapHost,
const char *mailbox,
char hierarchySeparator,
const char *messageIds,
imapMessageFlagsType flags,
XP_Bool idsAreUids);
/* set flags url, make the flags match */
char *CreateImapSetMessageFlagsUrl(const char *imapHost,
const char *mailbox,
char hierarchySeparator,
const char *messageIds,
imapMessageFlagsType flags,
XP_Bool idsAreUids);
/* copy messages from one online box to another */
/* imap4://HOST?onlineCopy?<UID/SEQUENCE>?
SOURCEMAILBOXPATH?x?DESTINATIONMAILBOXPATH */
/* 'x' is the message UID or sequence number list */
char *CreateImapOnlineCopyUrl(const char *imapHost,
const char *sourceMailbox,
char sourceHierarchySeparator,
const char *messageIds,
const char *destinationMailbox,
char destinationHierarchySeparator,
XP_Bool idsAreUids,
XP_Bool isMove); /* cause delete after copy */
/* copy a message from an online box to an offline box */
/* imap4://HOST?ontooffCopy?SOURCEMAILBOXPATH?number=x?
DESTINATIONMAILBOXPATH */
/* 'x' is the message sequence number */
char *CreateImapOnToOfflineCopyUrl( const char *imapHost,
const char *sourceMailbox,
char sourceHierarchySeparator,
const char *messageIds,
const char *destinationMailbox,
XP_Bool idsAreUids,
XP_Bool isMove); /* cause delete after copy */
/* copy messages from an offline box to an online box */
/* imap4://HOST?offtoonCopy?DESTINATIONMAILBOXPATH */
/* the number of messages and their sizes are negotiated later */
char *CreateImapOffToOnlineCopyUrl(const char *imapHost,
const char *destinationMailbox,
char destinationHierarchySeparator);
/* Subscribe to a mailbox on the given IMAP host */
char *CreateIMAPSubscribeMailboxURL(const char *imapHost, const char *mailboxName);
/* Unsubscribe from a mailbox on the given IMAP host */
char *CreateIMAPUnsubscribeMailboxURL(const char *imapHost, const char *mailboxName);
/* get mail account rul */
/* imap4://HOST?NETSCAPE */
char *CreateImapManageMailAccountUrl(const char *imapHost);
/* append message from file */
/* imap4://HOST?appendmsgfromfile?MSGFILEPATH?DESTINATIONMAILBOXPATH */
char *CreateImapAppendMessageFromFileUrl(const char *imapHost,
const char *destinationMailboxPath,
const char hierarchySeparator,
XP_Bool isDraft);
/* refresh the ACL for a folder */
char *CreateIMAPRefreshACLForFolderURL(const char *imapHost, const char *mailbox);
/* refresh the ACL for all folders on given host*/
char *CreateIMAPRefreshACLForAllFoldersURL(const char *imapHost);
/* Run the auto-upgrade to IMAP Subscription */
char *CreateIMAPUpgradeToSubscriptionURL(const char *imapHost, XP_Bool subscribeToAll);
NET_StreamClass *CreateIMAPDownloadMessageStream(ImapActiveEntry *ce, uint32 msgSize);
void UpdateIMAPMailboxInfo(mailbox_spec *adoptedBoxSpec, MWContext *currentContext);
#define kUidUnknown -1
int32 GetUIDValidityForSpecifiedImapFolder(const char *hostName, const char *canonicalimapName, MWContext *currentContext);
enum EMailboxDiscoverStatus {
eContinue,
eContinueNew,
eListMyChildren,
eNewServerDirectory,
eCancelled };
enum EMailboxDiscoverStatus DiscoverIMAPMailbox(mailbox_spec *adoptedBoxSpec, MSG_Master *master, MWContext *currentContext);
void ReportSuccessOfOnlineCopy(MWContext *currentContext, enum ImapOnlineCopyState copyState);
void ReportSuccessOfOnlineDelete(MWContext *currentContext, const char *mailboxName);
void ReportFailureOfOnlineCreate(MWContext *currentContext, const char *mailboxName);
void ReportSuccessOfOnlineRename(MWContext *currentContext, folder_rename_struct *names);
void ReportMailboxDiscoveryDone(MWContext *currentContext, URL_Struct *URL_s);
void ReportSuccessOfChildMailboxDiscovery(MWContext *currentContext);
void NotifyHeaderFetchCompleted(MWContext *currentContext, TNavigatorImapConnection *imapConnection);
void ReportLiteSelectUIDVALIDITY(MSG_Pane *receivingPane, uint32 UIDVALIDITY);
typedef void (UploadCompleteFunctionPointer)(void*);
void BeginMessageUpload(MWContext *currentContext,
PRFileDesc *ioSocket,
UploadCompleteFunctionPointer *completeFunction,
void *completionFunctionArgument);
void IMAP_DoNotDownLoadAnyMessageHeadersForMailboxSelect(TNavigatorImapConnection *connection);
void IMAP_DownLoadMessagesForMailboxSelect(TNavigatorImapConnection *connection,
uint32 *messageKeys, /* uint32* is adopted */
uint32 numberOfKeys);
void IMAP_DownLoadMessageBodieForMailboxSelect(TNavigatorImapConnection *connection,
uint32 *messageKeys, /* uint32* is adopted */
uint32 numberOfKeys);
void IMAP_BodyIdMonitor(TNavigatorImapConnection *connection, XP_Bool enter);
const char *IMAP_GetCurrentConnectionUrl(TNavigatorImapConnection *connection);
void IMAP_UploadAppendMessageSize(TNavigatorImapConnection *connection, uint32 msgSize, imapMessageFlagsType flags);
void IMAP_ResetAnyCachedConnectionInfo();
XP_Bool IMAP_CheckNewMail(TNavigatorImapConnection *connection);
XP_Bool IMAP_NewMailDetected(TNavigatorImapConnection *connection);
TImapFlagAndUidState *IMAP_CreateFlagState(int numberOfMessages);
void IMAP_DeleteFlagState(TImapFlagAndUidState *state);
int IMAP_GetFlagStateNumberOfMessages(TImapFlagAndUidState *state);
imap_uid IMAP_GetUidOfMessage(int zeroBasedIndex, TImapFlagAndUidState *state);
imapMessageFlagsType IMAP_GetMessageFlags(int zeroBasedIndex, TImapFlagAndUidState *state);
imapMessageFlagsType IMAP_GetMessageFlagsFromUID(imap_uid uid, XP_Bool *foundIt, TImapFlagAndUidState *state);
void IMAP_TerminateConnection (TNavigatorImapConnection *connection);
char *IMAP_CreateOnlineSourceFolderNameFromUrl(const char *url);
void IMAP_FreeBoxSpec(mailbox_spec *victim);
const char *IMAP_GetPassword();
void IMAP_SetPassword(const char *password);
/* called once only by MSG_InitMsgLib */
void IMAP_StartupImap();
/* called once only by MSG_ShutdownMsgLib */
void IMAP_ShutdownImap();
/* used to prevent recursive listing of mailboxes during discovery */
int64 IMAP_GetTimeStampOfNonPipelinedList();
/* returns TRUE if either we have a password or we were preAuth'd by SSL certs */
XP_Bool IMAP_HaveWeBeenAuthenticated();
/* used by libmsg when creating an imap message display stream */
int IMAP_InitializeImapFeData (ImapActiveEntry * ce);
MSG_Pane *IMAP_GetActiveEntryPane(ImapActiveEntry * ce);
NET_StreamClass *IMAP_CreateDisplayStream(ImapActiveEntry * ce, XP_Bool clearCacheBit, uint32 msgSize);
/* used by libmsg when a new message is loaded to interrupt the load of the previous message */
void IMAP_PseudoInterruptFetch(MWContext *context);
void IMAP_URLFinished(URL_Struct *URL_s);
XP_Bool IMAP_HostHasACLCapability(const char *hostName);
/**** IMAP Host stuff - used for communication between MSG_IMAPHost (in libmsg) and TImapHostInfo (in libnet) ****/
/* obsolete? */
/*void IMAP_SetNamespacesFromPrefs(const char *hostName, char *personalDir, char *publicDir, char *otherUsersDir);*/
/* Sets the preference of whether or not we should always explicitly LIST the INBOX for given host */
void IMAP_SetShouldAlwaysListInboxForHost(const char *hostName, XP_Bool shouldList);
/* Gets the number of namespaces in use for a given host */
int IMAP_GetNumberOfNamespacesForHost(const char *hostName);
/* Sets the currently-used default personal namespace for a given host. Used for updating from libnet when
we get a NAMESPACE response. */
void MSG_SetNamespacePrefixes(MSG_Master *master, const char *hostName, EIMAPNamespaceType type, const char *prefix);
/* Check to see if we need upgrade to IMAP subscription */
extern XP_Bool MSG_ShouldUpgradeToIMAPSubscription(MSG_Master *mast);
extern void MSG_ReportSuccessOfUpgradeToIMAPSubscription(MWContext *context, enum EIMAPSubscriptionUpgradeState *state);
/* Adds a set of ACL rights for the given folder on the given host for the given user. If userName is NULL, it means
the currently authenticated user (i.e. my rights). */
extern void MSG_AddFolderRightsForUser(MSG_Master *master, const char *hostName, const char*mailboxName, const char *userName, const char *rights);
/* Clears all ACL rights for the given folder on the given host for all users. */
extern void MSG_ClearFolderRightsForFolder(MSG_Master *master, const char *hostName, const char *mailboxName);
/* Refreshes the icon / flags for a given folder, based on new ACL rights */
extern void MSG_RefreshFolderRightsViewForFolder(MSG_Master *master, const char *hostName, const char *mailboxName);
extern XP_Bool MSG_GetFolderNeedsSubscribing(MSG_FolderInfo *folder);
/* Returns TRUE if this folder needs an auto-refresh of the ACL (on a folder open, for example) */
extern XP_Bool MSG_GetFolderNeedsACLListed(MSG_FolderInfo *folder);
/* Returns TRUE if this folder has NEVER (ever) had an ACL retrieved for it */
extern XP_Bool MSG_IsFolderACLInitialized(MSG_Master *master, const char *folderName, const char *hostName);
extern char *IMAP_SerializeNamespaces(char **prefixes, int len);
extern int IMAP_UnserializeNamespaces(const char *str, char **prefixes, int len);
XP_END_PROTOS
#endif

View File

@ -1,369 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/* intl_csi.h */
#ifndef INTL_CSI_H
#define INTL_CSI_H
/*
Using the i18n Character-Set-Information (CSI) accessor functions:
1) include the header file
#include "intl_csi.h"
2) get the i18n CSI object (generally from MWContext)
INTL_CharSetInfo csi = LO_GetDocumentCharacterSetInfo(context);
3) access (read/set) the data element
int16 doc_csid = INTL_GetCSIDocCSID(csi);
INTL_SetCSIDocCSID(csi, new_doc_csid);
int16 win_csid = INTL_GetCSIWinCSID(csi);
INTL_SetCSIWinCSID(csi, new_win_csid);
char *mime_name = INTL_GetCSIMimeCharset(csi);
INTL_SetCSIMimeCharset(csi, new_mime_charset);
int16 relayout_flag = INTL_GetCSIRelayoutFlag(csi);
INTL_SetCSIRelayoutFlag(csi, new_relayout_flag);
*/
XP_BEGIN_PROTOS
#include "ntypes.h"
#include "libi18n.h"
/**
* Cookie for INTL_CSIInfo.
*
* This is a Magic Cookie to validate the pointer to INTL_CSIInfo in MWContext.
*
*/
#define INTL_TAG 0x494E544C
/**@name Character Set Information (CSI) */
/*@{*/
/**
* Allocate a new charset info object, and clear it with zeroes.
*
* @return The new charset info object
* @see INTL_CSIInitialize, INTL_CSIDestroy
*/
PUBLIC INTL_CharSetInfo INTL_CSICreate(void);
/**
* Frees the given charset info object.
*
* @param obj Specifies the charset info object
* @see INTL_CSICreate
*/
PUBLIC void INTL_CSIDestroy(
INTL_CharSetInfo obj
);
/**
* Sets all the charset info object fields to initial values.
*
* The override, HTTP, HTML META, document and window charset IDs are all set
* to CS_DEFAULT. The MIME charset is set to NULL. The relayout flag is set
* to METACHARSET_NONE.
*
* @param obj Specifies the charset info object
* @see INTL_CSIInitialize
*/
PUBLIC void INTL_CSIReset(
INTL_CharSetInfo obj
);
/**
* Initializes the charset info object.
*
* <UL>
* <LI>
* If the given is_metacharset_reload argument is FALSE, INTL_CSIReset is
* called, passing the given charset info object.
*
* <LI>
* If the given is_metacharset_reload argument is TRUE, the charset info
* object's relayout flag is set to METACHARSET_RELAYOUTDONE.
*
* <LI>
* Otherwise, if the override charset ID is previously set in this object,
* it is set in the document charset ID field.
*
* <LI>
* Otherwise, if the given HTTP charset is known, it is set in the HTTP
* charset field.
*
* <LI>
* Otherwise, the document charset ID field is set to the given
* defaultDocCharSetID, unless the type is mail/news, in which case CS_DEFAULT
* is used. This is because the META charset in mail/news is sometimes wrong.
*
* <LI>
* Finally, the window charset ID is set, based on the document charset ID.
* </UL>
*
* @param obj Specifies the charset info object
* @param is_metacharset_reload TRUE if it is currently reloading because
* the layout code found HTML META charset.
* FALSE otherwise.
* @param http_charset Specifies the charset name if it is presented in
* HTTP Content-Type header
* @param type Specifies the context type
* @param defaultDocCharSetID Specifies the default document charset ID.
* @see
*/
PUBLIC void INTL_CSIInitialize(
INTL_CharSetInfo obj,
XP_Bool is_metacharset_reload,
char *http_charset,
int type,
uint16 defaultDocCharSetID
);
/**
* Sets HTML META charset info in the given charset info object.
*
* <UL>
* <LI>
* If the given charset is unknown, this function returns.
*
* <LI>
* If the given context type is mail or news, this function returns,
* since mail/news sometimes has wrong HTML META charsets.
*
* <LI>
* If the relayout flag is set to something other than METACHARSET_NONE, this
* function returns, to avoid setting the META charset more than once.
*
* <LI>
* Otherwise, the HTML META charset field is set, and the relayout flag is
* set to METACHARSET_HASCHARSET.
* If the previous document charset was known,
* and was different from the new META charset, the relayout flag is set to
* METACHARSET_REQUESTRELAYOUT.
* The window charset ID is also checked against the new one.
* If they are different, the relayout flag is set to
* METACHARSET_REQUESTRELAYOUT.
* </UL>
*
* @param obj Specifies the charset info object
* @param charset_tag Specifies the HTML META charset
* @param type Specifies the context type
* @see INTL_GetCSIMetaDocCSID, INTL_GetCSIRelayoutFlag
*/
PUBLIC void INTL_CSIReportMetaCharsetTag(
INTL_CharSetInfo obj,
char *charset_tag,
int type
);
/**
* Returns the context's charset info object.
*
* @param context Specifies the context
* @return The context's charset info object
* @see INTL_CSICreate
*/
PUBLIC INTL_CharSetInfo LO_GetDocumentCharacterSetInfo(
MWContext *context
);
/**
* Returns the document charset ID of the given charset info object.
*
* @param obj Specifies the charset info object
* @return The document charset ID
* @see INTL_SetCSIDocCSID
*/
PUBLIC int16 INTL_GetCSIDocCSID(
INTL_CharSetInfo obj
);
/**
* Sets the document charset ID field of the given charset info object.
*
* The document charset ID field is only set if the higher precedence fields
* (override, HTTP and META) are all set to CS_DEFAULT.
*
* @param obj Specifies the charset info object
* @param docCharSetID Specifies the document charset ID
* @see INTL_GetCSIDocCSID
*/
PUBLIC void INTL_SetCSIDocCSID(
INTL_CharSetInfo obj,
int16 docCharSetID
);
/**
* Returns the override document charset ID of the given charset info object.
*
* @param obj Specifies the charset info object
* @return The override document charset ID
* @see INTL_SetCSIOverrideDocCSID
*/
PUBLIC int16 INTL_GetCSIOverrideDocCSID(
INTL_CharSetInfo obj
);
/**
* Sets the override document charset ID of the given charset info object.
*
* @param obj Specifies the charset info object
* @param overrideDocCharSetID Specifies the override document charset ID
* @see INTL_GetCSIOverrideDocCSID
*/
PUBLIC void INTL_SetCSIOverrideDocCSID(
INTL_CharSetInfo obj,
int16 overrideDocCharSetID
);
/**
* Returns the HTML META document charset ID of the given charset info object.
*
* @param obj Specifies the charset info object
* @return The HTML META document charset ID
* @see INTL_SetCSIMetaDocCSID
*/
PUBLIC int16 INTL_GetCSIMetaDocCSID(
INTL_CharSetInfo obj
);
/**
* Sets the HTML META document charset ID of the given charset info object.
*
* The HTML META document charset ID field is only set if the higher precedence
* fields (override and HTTP) are all set to CS_DEFAULT.
*
* @param obj Specifies the charset info object
* @param metaCharSetID Specifies the HTML META document charset ID
* @see INTL_GetCSIMetaDocCSID
*/
PUBLIC void INTL_SetCSIMetaDocCSID(
INTL_CharSetInfo obj,
int16 metaCharSetID
);
/**
* Returns the HTTP document charset ID of the given charset info object.
*
* @param obj Specifies the charset info object
* @return The HTTP document charset ID
* @see INTL_SetCSIHTTPDocCSID
*/
PUBLIC int16 INTL_GetCSIHTTPDocCSID(
INTL_CharSetInfo obj
);
/**
* Sets the HTTP document charset ID of the given charset info object.
*
* The HTTP document charset ID field is only set if the higher precedence
* field (override) is set to CS_DEFAULT.
*
* @param obj Specifies the charset info object
* @param httpDocCharSetID Specifies the HTTP document charset ID
* @see INTL_GetCSIHTTPDocCSID
*/
PUBLIC void INTL_SetCSIHTTPDocCSID(
INTL_CharSetInfo obj,
int16 httpDocCharSetID
);
/**
* Returns the window charset ID of the given charset info object.
*
* @param obj Specifies the charset info object
* @return The window charset ID
* @see INTL_SetCSIWinCSID
*/
PUBLIC int16 INTL_GetCSIWinCSID(
INTL_CharSetInfo obj
);
/**
* Sets the window charset ID field of the given charset info object.
*
* @param obj Specifies the charset info object
* @param winCharSetID Specifies the window charset ID
* @see INTL_GetCSIWinCSID
*/
PUBLIC void INTL_SetCSIWinCSID(
INTL_CharSetInfo obj,
int16 winCharSetID
);
/**
* Returns the MIME charset field of the given charset info object.
*
* @param obj Specifies the charset info object
* @return The MIME charset
* @see INTL_SetCSIMimeCharset
*/
PUBLIC char *INTL_GetCSIMimeCharset(
INTL_CharSetInfo obj
);
/**
* Sets the MIME charset field of the given charset info object.
*
* If the charset info object already contains a pointer to a MIME charset,
* that charset is freed. Then the given charset is copied, and the copy is
* converted to lower case. The copy is then set in the MIME charset field.
*
* @param obj Specifies the charset info object
* @param mime_charset Specifies the MIME charset
* @see INTL_GetCSIMimeCharset
*/
PUBLIC void INTL_SetCSIMimeCharset(
INTL_CharSetInfo obj,
char *mime_charset
);
/**
* Returns the relayout field of the given charset info object.
*
* @param obj Specifies the charset info object
* @return The relayout field
* @see INTL_SetCSIRelayoutFlag
*/
PUBLIC int16 INTL_GetCSIRelayoutFlag(
INTL_CharSetInfo obj
);
/**
* Sets the relayout field of the given charset info object.
*
* @param obj Specifies the charset info object
* @param relayout Specifies the relayout field
* @see INTL_GetCSIRelayoutFlag
*/
PUBLIC void INTL_SetCSIRelayoutFlag(
INTL_CharSetInfo obj,
int16 relayout
);
/*@}*/
XP_END_PROTOS
#endif /* INTL_CSI_H */

View File

@ -1,176 +0,0 @@
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 ITAPEFS_H
#define ITAPEFS_H
#ifdef EDITOR
//
// Abstract output file stream.
//
class IStreamOut {
public:
IStreamOut();
virtual ~IStreamOut();
virtual void Write( char *pBuffer, int32 iCount )=0;
// NOTICE: the implementation is not pure. There is a default
// implementation that implements this function interms of
// 'Write'.
virtual int Printf( char * pFormat, ... );
enum EOutStreamStatus {
EOS_NoError,
EOS_DeviceFull,
EOS_FileError
};
virtual EOutStreamStatus Status(){ return EOS_NoError; }
// implemented in terms of the interface.
void WriteInt( int32 i ){ Write( (char*)&i, sizeof( int32 ) ); }
void WriteZString( char* pString);
void WritePartialZString( char* pString, int32 start, int32 end);
private:
char* stream_buffer; // used to implement Printf
};
//-----------------------------------------------------------------------
// Abstract File System
//-----------------------------------------------------------------------
typedef void
EDT_ITapeFileSystemComplete( XP_Bool bSuccess, void *pArg );
class ITapeFileSystem {
PRBool m_FirstBinary; // is the first file really binary, not text?
public:
ITapeFileSystem() { m_FirstBinary = PR_FALSE; }
// ITapeFileSystem::File, ITapeFileSystem::Publish, or
// ITapeFileSystem::MailSend,
enum {File,Publish,MailSend};
virtual intn GetType() = 0;
// This function is called before anything else. It tells the file
// system the base url for the URLs added in AddFile().
// An actual file, not a directory.
virtual void SetSourceBaseURL( char* pURL )=0;
// DESCRIPTION:
//
// Add a name to the file system. It is up to the file system to localize
// the name. For example, I could add 'http://home.netsacpe.com/
// and the file system might decide that it should be called 'index.html'
// if the file system were DOS, the url might be converted to INDEX.HTML
//
// pMIMEType may be NULL. In this case if the tape file system needs the
// MIME type, it must figure it out by itself.
//
// RETURNS: index of the file (0 based), OR
// ITapeFileSystem::Error if an error adding name, OR
// ITapeFileSystem::SourceDestSame if adding
// this name would result in the source and destination being the same, and thus
// no point in copying the file.
//
// The first file added must be the root HTML document. (It is ok for the root
// document to have the same source and dest URL).
//
virtual intn AddFile( char* pURL, char *pMIMEType, int16 iCharSetID)=0;
// Return the number of files added to the file system.
virtual intn GetNumFiles()=0;
// Returns the absolute version of the URL given in AddFile(), using the
// URL given in SetSourceBaseURL() as the base.
// Allocated with XP_STRDUP().
virtual char* GetSourceURL(intn iFileIndex)=0;
// Return the absolute destination of the HTML doc if meaningful, else return
// NULL. Almost the same as "GetDestPathURL()+GetDestURL(0)" except that this call
// will work before file 0 has been added to the file system.
virtual char* GetDestAbsURL()=0;
// Gets the name of the RELATIVE url to place in the file. String is
// allocated with XP_STRDUP();
//
virtual char* GetDestURL( intn iFileIndex )=0;
// Return the path URL associated with the ITapeFilesystem or NULL if there is none.
// If NULL is returned, all URLs returned by GetDestURL() must be absolute.
//
// i.e. for a file or remote HTTP based ITapeFileSystem, this is the directory where the images are
// stored. For a MHTML ITapeFileSystem this is NULL.
//
// String is allocated with XP_STRDUP().
virtual char* GetDestPathURL() = 0;
//
// Returns the name to display when saving the file, can be the same as
// GetURLName. String is allocated with XP_STRDUP();
//
virtual char* GetHumanName( intn iFileIndex )=0;
enum {
Error = -1, SourceDestSame = -2
};
// Does the file referenced by iFileIndex already exist?
// E.g. for the MHTML version, this will always return FALSE.
virtual XP_Bool FileExists(intn iFileIndex) = 0;
// Will we be creating a new non-temporary file on the local machine.
// Used to update SiteManager.
virtual XP_Bool IsLocalPersistentFile(intn iFileIndex) = 0;
// ### mwelch Added so that multipart/related message saver can properly construct
// messages using quoted/forwarded part data.
// Tell the tape file system the mime type of a particular part.
// Calling this overrides any previously determined mime type for this part.
virtual void CopyURLInfo(intn iFileIndex, const URL_Struct *pURL) = 0;
//
// Opens the output stream. Returns a stream that can be written to or NULL if error. All
// 'AddFile's occur before the first OpenStream.
// Do not delete the returned stream, just call CloseStream() when done.
//
virtual IStreamOut *OpenStream( intn iFileIndex )=0;
virtual void CloseStream( intn iFileIndex )=0;
// Called on completion, TRUE if completed successfully, FALSE if it failed.
// The caller should not reference the ITapeFileSystem after calling Complete().
// Caller does not free up memory for ITapeFileSystem, Complete() causes file system to delete itself.
//
// The tape file system will call pfComplete with pArg and with whether the ITapeFileSystem
// completed successfully. Note: the ITapeFileSystem may call pfComplete() with TRUE even if
// ITapeFileSystem::Complete() was given FALSE.
// pfComplete may be NULL. Call to pfComplete may be synchronous or asynchronous.
//
// The ITapeFileSystem will call pfComplete(success,pArg) before deleting itself. I.e. the ITapeFileSystem is still valid
// when it calls pfComplete().
virtual void Complete( Bool bSuccess, EDT_ITapeFileSystemComplete *pfComplete, void *pArg )=0;
inline PRBool IsFirstBinary(void) { return m_FirstBinary; }
inline void SetFirstBinary(void) { m_FirstBinary = PR_TRUE; }
inline void ResetFirstBinary(void) { m_FirstBinary = PR_FALSE; }
};
#endif // EDITOR
#endif

View File

@ -1,139 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/* libc_r.h -- macros, defines, etc. to make using reentrant libc calls */
/* a bit easier. This was initially done for AIX pthreads, */
/* but should be usable for anyone... */
/* Most of these use locally defined space instead of static library space. */
/* Because of this, we use the _INIT_R to declare/allocate space (stack), */
/* and the plain routines to actually do it..._WARNING_: avoid allocating */
/* memory wherever possible. Memory allocation is fairly expensive, at */
/* least on AIX...use arrays instead (which allocate from the stack.) */
/* I know the names are a bit strange, but I wanted to be fairly certain */
/* that we didn't have any namespace corruption...in general, the inits are */
/* R_<name>_INIT_R(), and the actual calls are R_<name>_R(). */
#ifndef _LIBC_R_H
#define _LIBC_R_H
/************/
/* strtok */
/************/
#define R_STRTOK_INIT_R() \
char *r_strtok_r=NULL
#define R_STRTOK_R(return,source,delim) \
return=strtok_r(source,delim,&r_strtok_r)
#define R_STRTOK_NORET_R(source,delim) \
strtok_r(source,delim,&r_strtok_r)
/**************/
/* strerror */
/**************/
#define R_MAX_STRERROR_LEN_R 8192 /* Straight from limits.h */
#define R_STRERROR_INIT_R() \
char r_strerror_r[R_MAX_STRERROR_LEN_R]
#define R_STRERROR_R(val) \
strerror_r(val,r_strerror_r,R_MAX_STRERROR_LEN_R)
/*****************/
/* time things */
/*****************/
#define R_ASCTIME_INIT_R() \
char r_asctime_r[26]
#define R_ASCTIME_R(val) \
asctime_r(val,r_asctime_r)
#define R_CTIME_INIT_R() \
char r_ctime_r[26]
#define R_CTIME_R(val) \
ctime_r(val,r_ctime_r)
#define R_GMTIME_INIT_R() \
struct tm r_gmtime_r
#define R_GMTIME_R(time) \
gmtime_r(time,&r_gmtime_r)
#define R_LOCALTIME_INIT_R() \
struct tm r_localtime_r
#define R_LOCALTIME_R(val) \
localtime_r(val,&r_localtime_r)
/***********/
/* crypt */
/***********/
#include <crypt.h>
#define R_CRYPT_INIT_R() \
CRYPTD r_cryptd_r; \
bzero(&r_cryptd_r,sizeof(CRYPTD))
#define R_CRYPT_R(pass,salt) \
crypt_r(pass,salt,&r_cryptd_r)
/**************/
/* pw stuff */
/**************/
#define R_MAX_PW_LEN_R 1024
/* The following must be after the last declaration, but */
/* before the first bit of code... */
#define R_GETPWNAM_INIT_R(pw_ptr) \
struct passwd r_getpwnam_pw_r; \
char r_getpwnam_line_r[R_MAX_PW_LEN_R]; \
pw_ptr = &r_getpwnam_pw_r
#define R_GETPWNAM_R(name) \
getpwnam_r(name,&r_getpwnam_pw_r,r_getpwnam_line_r,R_MAX_PW_LEN_R)
/*******************/
/* gethost stuff */
/*******************/
#define R_GETHOSTBYADDR_INIT_R() \
struct hostent r_gethostbyaddr_r; \
struct hostent_data r_gethostbyaddr_data_r
#define R_GETHOSTBYADDR_R(addr,len,type,xptr_ent) \
bzero(&r_gethostbyaddr_r,sizeof(struct hostent)); \
bzero(&r_gethostbyaddr_data_r,sizeof(struct hostent_data)); \
xptr_ent = &r_gethostbyaddr_r; \
if (gethostbyaddr_r(addr,len,type, \
&r_gethostbyaddr_r,&r_gethostbyaddr_data_r) == -1) { \
xptr_ent = NULL; \
}
#define R_GETHOSTBYNAME_INIT_R() \
struct hostent r_gethostbyname_r; \
struct hostent_data r_gethostbyname_data_r
#define R_GETHOSTBYNAME_R(name,xptr_ent) \
bzero(&r_gethostbyname_r,sizeof(struct hostent)); \
bzero(&r_gethostbyname_data_r,sizeof(struct hostent_data)); \
xptr_ent = &r_gethostbyname_r; \
if (gethostbyname_r(name, \
&r_gethostbyname_r,&r_gethostbyname_data_r) == -1) { \
xptr_ent = NULL; \
}
#endif /* _LIBC_R_H */

View File

@ -1,209 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
//"libcnv.h"
#ifndef _LIBCNV_H
#define _LIBCNV_H
#ifndef _IMAGE_CONVERT
#error _IMAGE_CONVERT SYMBOL NEEDED BEFORE INCLUSION
#endif /*_IMAGE_CONVERT*/
#ifndef __cplusplus
typedef unsigned char BYTE;
typedef uint32 DWORD;
#endif
#include "xp_core.h"/*defines of int32 ect*/
#include "xp_file.h"
#include "xp_mem.h"/*XP_HUGE*/
#define MAXIMAGEPATHLEN 255
typedef enum
{
CONV_CANCEL,
CONV_OK,
CONVERR_INVALIDSOURCE,
CONVERR_INVALIDDEST,
CONVERR_INVALIDFILEHEADER,
CONVERR_INVALIDIMAGEHEADER,
CONVERR_INVALIDBITDEPTH,
CONVERR_INVALIDCOLORMAP,
CONVERR_BADREAD,
CONVERR_OUTOFMEMORY,
CONVERR_JPEGERROR,
CONVERR_COMPRESSED,
CONVERR_BADPLANES,
CONVERR_BADWRITE,
CONVERR_INVALIDPARAMS,
CONVERR_UNKNOWN,
NUM_CONVERR
}CONVERT_IMAGERESULT;
typedef BYTE * CONVERT_IMG_ROW;
typedef CONVERT_IMG_ROW * CONVERT_IMG_ARRAY;
typedef enum
{
conv_unknown,
conv_png,
conv_jpeg,
conv_bmp,
conv_pict,
conv_xpm,
conv_rgb,
conv_plugin
}convimgenum;
typedef struct tagCONVERT_IMG_STREAM
{
XP_HUGE_CHAR_PTR m_mem;
FILE *m_file;/*used only with type 0 -must allready be opened for read or write does not use current index ect.*/
int16 m_type;/*0=CONVERT_FILE 1=CONVERT_MEMORY*/
DWORD m_streamsize;/* 0== unlimited */
DWORD m_currentindex;
}CONVERT_IMG_STREAM;
/*Sent in a BITMAP structure*/
#define CONVERT_MEMORY 1
#define CONVERT_FILE 0
typedef struct tagCONVERT_IMGCONTEXT CONVERT_IMGCONTEXT;
typedef struct tagCONVERT_IMG_INFO CONVERT_IMG_INFO;
typedef CONVERT_IMAGERESULT (*CONVERT_DIALOGIMAGECALLBACK)(CONVERT_IMGCONTEXT *input,
CONVERT_IMGCONTEXT *outputarray,
CONVERT_IMG_INFO *imginfo,
int16 numoutput,
CONVERT_IMG_ARRAY imagearray);
typedef CONVERT_IMAGERESULT (*CONVERT_COMPLETECALLBACK)(CONVERT_IMGCONTEXT *outputarray,int16 p_numoutputs,void *hook);
typedef void (*CONVERT_BUFFERCALLBACK)(void *);/*j_common_ptr);*/
typedef struct tagCONVERT_CALLBACKS
{
CONVERT_DIALOGIMAGECALLBACK m_dialogimagecallback;
CONVERT_BUFFERCALLBACK m_displaybuffercallback;
CONVERT_COMPLETECALLBACK m_completecallback;
}CONVERT_CALLBACKS;
typedef struct tagCONVERT_IMGCONTEXT
{
convimgenum m_imagetype;
CONVERT_IMG_STREAM m_stream;/*used with m_streamtype 1,2*/
int16 m_quality;
char m_filename[MAXIMAGEPATHLEN];/*will not be used to open FILE *. used for output. maybe in future will open file?*/
CONVERT_CALLBACKS m_callbacks;
#ifdef XP_OS2
XP_OS2_ARG(void *m_parentwindow);/*used for callbacks to bring up dialog boxes. void * = CWnd *for Windows*/
#else
XP_WIN_ARG(void *m_parentwindow);/*used for callbacks to bring up dialog boxes. void * = CWnd *for Windows*/
#endif
void *m_pMWContext;//used for callbacks to insert the image. and for plugins
}CONVERT_IMGCONTEXT;
typedef struct tagCONVERT_IMG_INFO
{
BYTE *m_colormap;
int16 m_numcolorentries;
uint16 m_X_density;
uint16 m_Y_density;
int16 m_density_unit;
int16 m_in_color_space;
int16 m_input_components;
int16 m_data_precision;
int16 m_image_width;/*pixel width*/
int16 m_image_height;/*pixel_height*/
int16 m_bitsperpixel;
int16 m_row_width;/*width in bytes*/
int16 m_stride; /*row_width-(pixel_width*bpp)/8 */
DWORD m_image_size; /*informational purposes*/
}CONVERT_IMG_INFO;
#ifdef __cplusplus
extern "C"
{
#endif
/****************************/
/*API CALLS AND DECLARATIONS*/
/****************************/
/*converts input to p_numoutput many outputs*/
/*p_outpuffilenames must be a PREALLOCATED array of char *s at least p_numoutputs char *s these pointers will
point to output filenames that YOU will be responsible to destroy!
you may pass in null for p_outputfilenames and it wil*/
CONVERT_IMAGERESULT convert_stream2image(CONVERT_IMGCONTEXT p_input,CONVERT_IMG_INFO *p_imageinfo,int16 p_numoutputs,char **p_outputfilenames);
/*quantize_pixels will change the imagearray to have only maxcolors distinct values*/
CONVERT_IMAGERESULT convert_quantize_pixels(CONVERT_IMG_ARRAY imagearray,int16 imagewidth,int16 imageheight,int16 maxcolorvalue);
/*given a imagecontext, it will tell you if it is a png,bmp,gif ect*/
convimgenum select_file_type (CONVERT_IMGCONTEXT * p_input);
/****************************/
/*END API CALLS AND DECLARATIONS*/
/****************************/
/****************************/
/*STREAM DECLARATIONS*/
/****************************/
/*CONV_IMG_FREAD taken from JPEG libraries for independence from common header file*/
#define CONV_IMG_FREAD(file,buf,sizeofbuf) \
((size_t) fread((void *) (buf), (size_t) 1, (size_t) (sizeofbuf), (file)))
#define ReadOK(file,buffer,len) (CONV_IMG_FREAD(file,buffer,len) == ((size_t) (len)))
int16 read_mem_stream(CONVERT_IMG_STREAM *p_stream,void *p_dest,uint16 p_bytecount);
BYTE read_mem_stream_byte(CONVERT_IMG_STREAM *p_stream);
int16 read_param(CONVERT_IMG_STREAM *p_input,void *p_dest,uint16 p_bytecount);
BYTE read_param_byte(CONVERT_IMG_STREAM *p_input);
/****************************/
/*END STREAM DECLARATIONS*/
/****************************/
#ifdef __cplusplus
}
#endif
#endif

View File

@ -1,779 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/*
* Header file for event passing between the mozilla thread and
* the mocha thread
*/
#ifndef libevent_h___
#define libevent_h___
#include "libmocha.h"
#include "prtypes.h"
#ifndef NSPR20
#include "prevent.h"
#else
#include "plevent.h"
#endif
#include "shist.h"
#include "fe_proto.h"
#include "lo_ele.h"
NSPR_BEGIN_EXTERN_C
extern PREventQueue * mozilla_event_queue;
/*
* XXX - should we use the same event values as layer events?
*/
/* Event bits stored in the low end of decoder->event_mask. */
#define EVENT_MOUSEDOWN 0x00000001
#define EVENT_MOUSEUP 0x00000002
#define EVENT_MOUSEOVER 0x00000004 /* user is mousing over a link */
#define EVENT_MOUSEOUT 0x00000008 /* user is mousing out of a link */
#define EVENT_MOUSEMOVE 0x00000010
#define EVENT_MOUSEDRAG 0x00000020
#define EVENT_CLICK 0x00000040 /* input element click in progress */
#define EVENT_DBLCLICK 0x00000080
#define EVENT_KEYDOWN 0x00000100
#define EVENT_KEYUP 0x00000200
#define EVENT_KEYPRESS 0x00000400
#define EVENT_DRAGDROP 0x00000800 /* not yet implemented */
#define EVENT_FOCUS 0x00001000 /* input focus event in progress */
#define EVENT_BLUR 0x00002000 /* loss of focus event in progress */
#define EVENT_SELECT 0x00004000 /* input field selection in progress */
#define EVENT_CHANGE 0x00008000 /* field value change in progress */
#define EVENT_RESET 0x00010000 /* form submit in progress */
#define EVENT_SUBMIT 0x00020000 /* form submit in progress */
#define EVENT_SCROLL 0x00040000 /* window is being scrolled */
#define EVENT_LOAD 0x00080000 /* layout parsed a loaded document */
#define EVENT_UNLOAD 0x00100000
#define EVENT_XFER_DONE 0x00200000 /* document has loaded */
#define EVENT_ABORT 0x00400000
#define EVENT_ERROR 0x00800000
#define EVENT_LOCATE 0x01000000
#define EVENT_MOVE 0x02000000
#define EVENT_RESIZE 0x04000000
#define EVENT_FORWARD 0x08000000
#define EVENT_HELP 0x10000000 /* for handling of help events */
#define EVENT_BACK 0x20000000
/* #define EVENT_PRINT 0x20000000 *//* To be removed per joki */
#define STATUS_STOP 0x00000001 /* stop processing */
#define STATUS_IGNORE 0x00000002 /* no new messages */
#define EVENT_ALT_MASK 0x00000001
#define EVENT_CONTROL_MASK 0x00000002
#define EVENT_SHIFT_MASK 0x00000004
#define EVENT_META_MASK 0x00000008
#define ARGTYPE_NULL 0x00000001
#define ARGTYPE_INT32 0x00000002
#define ARGTYPE_BOOL 0x00000004
#define ARGTYPE_STRING 0x00000008
#define SIZE_MAX 0x00000001
#define SIZE_MIN 0X00000002
/*
* When the event has been processed by the backend, there will be
* a front-end callback that gets called. If the event processed
* successfully, the callback will be passed EVENT_OK. If the
* event wasn't successful (i.e. the user canceled it) the return
* status will be EVENT_CANCEL. If something radical happened
* and the front-end should do nothing (i.e. mocha changed the
* underlying context) the status will be EVENT_PANIC and the
* front end should treat the context and element passed to the
* exit routine as bogus
*/
typedef enum {
EVENT_OK,
EVENT_CANCEL,
EVENT_PANIC
} ETEventStatus;
/*
* When a given event gets processed we may need to tell the front
* end about it so that they can update the UI / continue the
* operation. The context, lo_element, lType and whatever
* field are all supplied by the original ET_SendEvent() call.
* See ET_SendEvent() for a description of the values for
* the status parameter
*/
typedef void
(*ETClosureFunc)(MWContext * pContext, LO_Element * lo_element,
int32 lType, void * whatever, ETEventStatus status);
/*
* Someone has initiated a call to LM_EvaluateBuffer(). This function
* gets called back with the result
*/
typedef void
(*ETEvalAckFunc)(void * data, char * result_string, size_t result_length,
char * wysiwyg_url, char * base_href, Bool valid);
/*
* This function is called back after a layer's state has been restored
* in a resize_relayout.
*/
typedef void
(*ETRestoreAckFunc)(void * data, LO_BlockInitializeStruct *param);
/*
* Typedef for a function taking a void pointer and
* returning nothing
*/
typedef void
(*ETVoidPtrFunc)(void * data);
/*
* Typedef for a function taking a void pointer and
* returning a bool
*/
typedef PRBool
(*ETBoolPtrFunc)(void * data);
/*
* Typedef for a function taking a void pointer and
* returning a int32
*/
typedef int32
(*ETIntPtrFunc)(void * data);
/*
* Typedef for a function taking a void pointer and
* returning a char *
*/
typedef char *
(*ETStringPtrFunc)(void * data);
/*
* Struct for passing JS typed variable info through C interface calls
*/
typedef union ArgVal {
int32 intArg;
XP_Bool boolArg;
char * stringArg;
} ArgVal;
typedef struct {
uint8 type; /* arg type as defined at top of file */
ArgVal value;
} JSCompArg;
/*
* Typedef for a function used to verify installed components and
* get back components utility functions.
*/
typedef PRBool
(*ETVerifyComponentFunc)(void **active_callback, void **startup_callback);
/*
* Generic function for JS setting values with native calls.
*/
typedef void
(*ETCompPropSetterFunc)(char *name, void *value);
/*
* Generic function for JS getting values from native calls.
*/
typedef void*
(*ETCompPropGetterFunc)(char *name);
/*
* Generic function for JS calling native methods.
*/
typedef void*
(*ETCompMethodFunc)(int32 argc, JSCompArg *argv);
/* --------------------------------------------------------------------------
* Common prologue for talking between the mocha thread and the mozilla
* thread
*/
typedef struct {
PREvent event; /* the PREvent structure */
MWContext* context; /* context */
int32 doc_id; /* doc id of context when event launched */
PRPackedBool handle_eagerly;
} ETEvent;
/*
* Struct to send back from front end in order to get additional
* event information without having to initialize event object
* until necessary. Yow, there is a lot of junk in here now
* can we make a union out of some of these or are they always
* needed?
*/
typedef struct {
ETEvent ce;
MochaDecoder * decoder;
JSObject * object;
int32 type;
int32 layer_id;
int32 id;
LO_Element * lo_element;
ETClosureFunc fnClosure; /* event sender closure */
void * whatever; /* anything other state */
int32 x,y;
int32 docx,docy;
int32 screenx,screeny;
uint32 which;
uint32 modifiers;
void * data;
uint32 dataSize;
PRPackedBool saved;
PRPackedBool event_handled;
} JSEvent;
/*
* Tell the backend about a new event.
* The event is placed onto an event queue, it is not processed
* immediately. If the event is the type that can be cancelled
* by the backend (i.e. a button click or a submit) the front
* end must wait until the callback routine gets called before
* continuing with the operation. The ETEventStatus will be
* EVENT_OK if the operation is to continue or EVENT_CANCEL
* if it got cancelled.
*
* The processing of the event may cause the document to change
* or even the whole window to close. In those cases the callback
* will still get called in case there is any front-end cleanup
* to do but the ETEventStatus will be set to EVENT_PANIC
*
*/
extern JSBool
ET_SendEvent(MWContext * pContext, LO_Element *pElement, JSEvent *pEvent,
ETClosureFunc fnClosure, void * whatever);
/*
* Tell the backend about a new document load event. We need a
* closure so that libparse/layout knows when its safe to discard
* the old document when they were waiting for onunload events to
* finish processing
*/
extern void
ET_SendLoadEvent(MWContext * pContext, int32 type, ETVoidPtrFunc fnClosure,
NET_StreamClass *stream, int32 layer_id, Bool resize_reload);
/*
* Tell the backend about a new image event. Async. No closure
*/
extern void
ET_SendImageEvent(MWContext * pContext, LO_ImageStruct *image_data,
LM_ImageEvent event);
/*
* Send an interrupt event to the current context
* Remove all pending events for the event queue of the given context.
*/
extern void
ET_InterruptContext(MWContext * pContext);
extern JSBool
ET_ContinueProcessing(MWContext * pContext);
/*
* Tell mocha to destroy the given context's data. The callback
* function gets called when mocha is done with all of its data
* that was associated with the context
*/
extern void
ET_RemoveWindowContext(MWContext * context, ETVoidPtrFunc fn,
void * data);
typedef struct {
uint len, line_no;
char * scope_to;
void * data;
JSVersion version;
JSPrincipals * principals;
JSBool want_result;
JSBool unicode;
} ETEvalStuff;
/*
* Evaluate the mocha code in the given buffer
*/
extern void
ET_EvaluateBuffer(MWContext * context, char * buffer, uint buflen,
uint line_no, char * scope_to, JSBool want_result,
ETEvalAckFunc fn, void * data,
JSVersion ver, struct JSPrincipals *);
extern void
ET_EvaluateScript(MWContext * context, char * buffer, ETEvalStuff * stuff,
ETEvalAckFunc fn);
/*
* Ask Mocha to reflect the given object into JavaScript
*/
extern void
ET_ReflectObject(MWContext * pContext, void * lo_ele, void * tag,
int32 layer_id, uint index, ReflectedObject type);
void
ET_ReflectFormElement(MWContext * pContext, void * form,
LO_FormElementStruct * form_element, PA_Tag * tag);
extern void
ET_ReflectWindow(MWContext * pContext,
PA_Block onLoad, PA_Block onUnload,
PA_Block onFocus, PA_Block onBlur, PA_Block onHelp,
PA_Block onMouseOver, PA_Block onMouseOut, PA_Block onDragDrop,
PA_Block onMove, PA_Block onResize,
PA_Block id, char *all,
Bool bDelete, int newline_count);
/*
* Tell mocha we are processing a form
*/
extern void
ET_SetActiveForm(MWContext * pContext, struct lo_FormData_struct * loElement);
/*
* Tell mocha which layer we are processing
*/
void
ET_SetActiveLayer(MWContext * pContext, int32 layer_id);
/*
** Tell mocha where to send its output
*/
extern void
ET_ClearDecoderStream(MWContext * context, NET_StreamClass * old_stream);
extern void
ET_SetDecoderStream(MWContext * context, NET_StreamClass *stream,
URL_Struct *url_struct, JSBool free_stream_on_close);
/*
** Remember the current nesting URL in the MochaDecoder
*/
extern void
ET_SetNestingUrl(MWContext * context, char * szUrl);
/*
** Set up the principals for an upcoming softupdate script.
*/
extern void
ET_StartSoftUpdate(MWContext * pContext, char *codebase);
/*
** Remember the current language version in the MochaDecoder
*/
extern void
ET_SetVersion(MWContext * context, JSVersion version);
/*
* Tell mocha to trash the current document. around and around...
*/
extern void
ET_ReleaseDocument(MWContext * pContext, JSBool resize_reload);
/*
* Tell mocha to trash the layer's document.
*/
extern void
ET_DestroyLayer(MWContext * pContext, JSObject *layer_obj);
extern void
ET_MochaStreamComplete(MWContext * context, void * buf, int len,
char * content_type, Bool isUnicode);
extern void
ET_MochaStreamAbort(MWContext * context, int status);
/*
* Called when a layer's contents are changing and we want to create
* a new layer document.
*/
extern void
ET_NewLayerDocument(MWContext *pContext, int32 layer_id);
extern void
ET_DocWriteAck(MWContext *pContext, int status);
extern void
ET_RegisterComponent(char *name, void *active_callback, void *startup_callback);
extern void
ET_RegisterComponentProp(char *comp, char *name, uint8 retType, void *setter,
void *getter);
extern void
ET_RegisterComponentMethod(char *comp, char *name, uint8 retType, void *method,
int32 argc);
/* =============================================================== */
/*
* This event can be sent to both the mozilla thread and the moacha thread
*/
typedef struct {
ETEvent ce;
TimeoutCallbackFunction fnCallback;
void* pClosure;
uint32 ulTime;
void* pTimerId;
} MozillaEvent_Timeout;
/* =============================================================== */
/*
* Busy loop waiting for events to come along
*/
extern void PR_CALLBACK
lm_wait_for_events(void *);
/*
* global mocha event queues. It would be nice to not have these
* exported this globally
*/
extern PREventQueue *lm_InterpretQueue;
extern PREventQueue *lm_PriorityQueue;
/*
* Ways to send events to the front end
*/
extern JSBool
ET_PostMessageBox(MWContext* context, char* szMessage,
JSBool bConfirm);
extern void
ET_PostProgress(MWContext* context, const char* szMessage);
/* --- timeout routines --- */
/*
* Set (or clear) a timeout to go off. The timeout will go off in the
* mozilla thread so we will use the routine ET_FireTimeoutCallBack()
* to get back into our thread to actually run the closure
*/
extern void *
ET_PostSetTimeout(TimeoutCallbackFunction fnCallback,
void * pClosure, uint32 ulTime, int32 doc_id);
extern void
ET_PostClearTimeout(void * stuff);
extern void
ET_FireTimeoutCallBack(void *);
/* --- end of timeout routines --- */
extern void
ET_PostDestroyWindow(MWContext * context);
extern void
ET_PostManipulateForm(MWContext * context, LO_Element * pForm, int32 action);
extern void
ET_PostClearView(MWContext * context);
extern void
ET_PostFreeImageElement(MWContext * context, void * stuff);
extern void
ET_PostFreeImageContext(MWContext *context, IL_GroupContext *img_cx);
extern void
ET_PostFreeAnonImages(MWContext *context, IL_GroupContext *img_cx);
extern void
ET_PostDisplayImage(MWContext *, int, LO_ImageStruct *);
extern void
ET_PostGetUrl(MWContext *, URL_Struct * pUrl);
extern char *
ET_PostPrompt(MWContext* context, const char* szMessage,
const char * szDefault);
extern MWContext *
ET_PostNewWindow(MWContext* context, URL_Struct * pUrl,
char * szName, Chrome * pChrome);
extern void
ET_PostUpdateChrome(MWContext* context, Chrome * pChrome);
extern void
ET_PostQueryChrome(MWContext* context, Chrome * pChrome);
extern void
ET_PostGetScreenSize(MWContext* context, int32 *pX, int32 *pY);
extern void
ET_PostGetAvailScreenRect(MWContext* context, int32 *pX, int32 *pY,
int32 *pLeft, int32 *pTop);
extern void
ET_PostGetColorDepth(MWContext* context, int32 *pPixel, int32 *pPallette);
extern char *
ET_PostGetSelectedText(MWContext* context);
extern void
ET_PostScrollDocTo(MWContext* context, int loc, int32 x, int32 y);
extern void
ET_PostScrollDocBy(MWContext* context, int loc, int32 x, int32 y);
extern void
ET_PostBackCommand(MWContext* context);
extern void
ET_PostForwardCommand(MWContext* context);
extern void
ET_PostHomeCommand(MWContext* context);
extern JSBool
ET_PostFindCommand(MWContext* context, char * szName, JSBool matchCase,
JSBool searchBackward);
extern void
ET_PostPrintCommand(MWContext* context);
extern void
ET_PostOpenFileCommand(MWContext* context);
extern void
ET_MakeHTMLAlert(MWContext * context, const char * szString);
/* respond to events sent to the mocha thread by the mozilla thread */
extern void
ET_PostJsEventAck(MWContext* context, LO_Element * pEle, int type,
ETClosureFunc fnClosure, void * pStuff,
ETEventStatus status);
extern void
ET_PostEvalAck(MWContext * context, int doc_id, void * data,
char * str, size_t len, char * wysiwyg_url,
char * base_href, Bool valid, ETEvalAckFunc fn);
extern void
ET_PostRestoreAck(void *data, LO_BlockInitializeStruct *param,
ETRestoreAckFunc fn);
/* netlib events */
extern char *
ET_net_GetCookie(MWContext* context, int32 doc_id);
extern char *
ET_net_SetCookieString(MWContext* context, char * szCookie, int32 doc_id);
extern NET_StreamClass *
ET_net_CacheConverter(FO_Present_Types format, void * obj,
URL_Struct *pUrl, MWContext * pContext);
extern void
ET_net_FindURLInCache(URL_Struct * pUrl, MWContext * pContext);
extern NET_StreamClass *
ET_net_StreamBuilder(FO_Present_Types format, URL_Struct *pUrl,
MWContext * pContext);
/* layout events */
extern void
ET_lo_ResetForm(MWContext * pContext, LO_Element * ele);
void
ET_fe_SubmitInputElement(MWContext * pContext, LO_Element * ele);
/*
* Synchronously shove the given text down the parser's processing
* queue. If the currently loaded document is not equal to
* doc_id, this message should be ignored since it arrived too
* late for the intended document
*/
extern int
ET_lo_DoDocWrite(JSContext *cx, MWContext * context, NET_StreamClass * stream,
char * str, size_t len, int32 doc_id);
extern void
ET_il_GetImage(const char * str, MWContext * pContext, IL_GroupContext *img_cx,
LO_ImageStruct * image_data, NET_ReloadMethod how);
extern void
ET_il_SetGroupObserver(MWContext * pContext, IL_GroupContext *pImgCX, void *pDpyCX,
JSBool bAddObserver);
extern void
ET_InterruptImgCX(MWContext * pContext);
/*
* Tell layout to trash the current document.
*/
extern void
ET_lo_DiscardDocument(MWContext * pContext);
/*
* Tell layout to prepare a layer for writing.
*/
extern Bool
ET_lo_PrepareLayerForWriting(MWContext *context, int32 layer_id,
const char *referer);
/*
* Return a copy of the current history element. Caller must free
*/
extern History_entry *
ET_shist_GetCurrent(MWContext * pContext);
/*
* Return the current security status.
*/
extern int
ET_GetSecurityStatus(MWContext * pContext);
/*
* Make sure Mocha/Java glue is ready. Returns the same return code as
* LM_InitMoja.
*/
extern int
ET_InitMoja(MWContext * pContext);
/*
* Pack up toys and go home
*/
extern void
ET_FinishMocha(void);
/*
* Used to call a stream completion function in the mozilla
* thread
*/
extern void
ET_moz_CallFunction(ETVoidPtrFunc fn, void * data);
extern void
ET_moz_CallFunctionAsync(ETVoidPtrFunc fn, void * data);
extern PRBool
ET_moz_CallFunctionBool(ETBoolPtrFunc fn, void * data);
extern int32
ET_moz_CallFunctionInt(ETIntPtrFunc fn, void * data);
extern char *
ET_moz_CallFunctionString(ETStringPtrFunc fn, void * data);
extern void
ET_moz_CallAsyncAndSubEventLoop(ETVoidPtrFunc fn, void *data,
MWContext *context);
extern void
ET_moz_Abort(MKStreamAbortFunc fn, void * data, int status);
extern void
ET_moz_SetMochaWriteStream(MochaDecoder * decoder);
extern NET_StreamClass *
ET_moz_DocCacheConverter(MWContext * context, URL_Struct * pUrl,
char * wysiwyg_url, int32 layer_id);
extern PRBool
ET_moz_VerifyComponentFunction(ETVerifyComponentFunc fn, ETBoolPtrFunc *pActive_callback,
ETVoidPtrFunc *pStartup_callback);
extern void
ET_moz_CompSetterFunction(ETCompPropSetterFunc fn, char *name, void *data);
extern void *
ET_moz_CompGetterFunction(ETCompPropGetterFunc fn, char *name);
extern void *
ET_moz_CompMethodFunction(ETCompMethodFunc fn, int32 argc, JSCompArg *argv);
typedef enum {
CL_Move,
CL_MoveX,
CL_MoveY,
CL_Offset,
CL_Resize,
CL_SetBboxWidth,
CL_SetBboxHeight,
CL_SetBboxTop,
CL_SetBboxLeft,
CL_SetBboxBottom,
CL_SetBboxRight,
CL_SetHidden,
CL_MoveInZ,
CL_SetSrc,
CL_SetSrcWidth,
CL_SetZ,
CL_SetBgColor,
CL_SetBackdrop
} ETLayerOp;
extern int
ET_TweakLayer(MWContext * context, CL_Layer * layer, int32 x, int32 y,
void *param_ptr, int32 param_val, ETLayerOp op,
const char *referer, int32 doc_id);
extern void
ET_RestoreLayerState(MWContext *context, int32 layer_id,
LO_BlockInitializeStruct *param, ETRestoreAckFunc fn,
void *data);
extern int32
ET_npl_RefreshPluginList(MWContext* context, XP_Bool refreshInstances);
extern JSBool
ET_HandlePref(JSContext * cx, uint argc, jsval * argv, jsval * rval);
extern void
ET_SetPluginWindow(MWContext * pContext, void * app);
#ifdef DOM
typedef enum {
SP_SetColor,
SP_SetBackground,
SP_SetFontWeight,
SP_SetFontFamily,
SP_SetFontSize,
SP_SetFontSlant
} ETSpanOp;
extern int
ET_TweakSpan(MWContext * context, void *name_rec, void *param_ptr,
int32 param_val, ETSpanOp op, int32 doc_id);
typedef enum {
TR_SetHref,
TR_SetVisibility,
TR_SetData
} ETTransclusionOp;
extern int
ET_TweakTransclusion(MWContext * context, void *xmlFile, void *param_ptr,
int32 param_val, ETTransclusionOp op, int32 doc_id);
#endif
NSPR_END_EXTERN_C
#endif /* libevent_h___ */

File diff suppressed because it is too large Load Diff

View File

@ -1,538 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/* libmime.h --- external interface to libmime.a
Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96.
*/
#ifndef _LIBMIME_H_
#define _LIBMIME_H_
#include "xp.h"
#ifndef MOZILLA_30
# define MIME_DRAFTS
#endif
/* Opaque object describing a block of message headers, and a couple of
routines for extracting data from one.
*/
typedef struct MimeHeaders
{
char *all_headers; /* A char* of the entire header section. */
int32 all_headers_fp; /* The length (it is not NULL-terminated.) */
int32 all_headers_size; /* The size of the allocated block. */
XP_Bool done_p; /* Whether we've read the end-of-headers marker
(the terminating blank line.) */
char **heads; /* An array of length n_headers which points
to the beginning of each distinct header:
just after the newline which terminated
the previous one. This is to speed search.
This is not initialized until all the
headers have been read.
*/
int32 heads_size; /* The length (and consequently, how many
distinct headers are in here.) */
char *obuffer; /* This buffer is used for output. */
int32 obuffer_size;
int32 obuffer_fp;
char *munged_subject; /* What a hack. This is a place to write down
the subject header, after it's been
charset-ified and stuff. Remembered so that
we can later use it to generate the
<TITLE> tag. */
} MimeHeaders;
typedef struct MimeDisplayOptions MimeDisplayOptions;
typedef struct MimeParseStateObject MimeParseStateObject;
#ifndef MOZILLA_30
typedef struct MSG_AttachmentData MSG_AttachmentData;
#endif
XP_BEGIN_PROTOS
/* Given the name of a header, returns the contents of that header as
a newly-allocated string (which the caller must free.) If the header
is not present, or has no contents, NULL is returned.
If `strip_p' is TRUE, then the data returned will be the first token
of the header; else it will be the full text of the header. (This is
useful for getting just "text/plain" from "text/plain; name=foo".)
If `all_p' is FALSE, then the first header encountered is used, and
any subsequent headers of the same name are ignored. If TRUE, then
all headers of the same name are appended together (this is useful
for gathering up all CC headers into one, for example.)
*/
extern char *MimeHeaders_get(MimeHeaders *hdrs,
const char *header_name,
XP_Bool strip_p,
XP_Bool all_p);
/* Given a header of the form of the MIME "Content-" headers, extracts a
named parameter from it, if it exists. For example,
MimeHeaders_get_parameter("text/plain; charset=us-ascii", "charset")
would return "us-ascii".
Returns NULL if there is no match, or if there is an allocation failure.
*/
extern char *MimeHeaders_get_parameter (const char *header_value,
const char *parm_name);
extern MimeHeaders *MimeHeaders_copy (MimeHeaders *srcHeaders);
extern void MimeHeaders_free (MimeHeaders *hdrs);
/* Some defines for various standard header field names.
*/
#define HEADER_BCC "BCC"
#define HEADER_CC "CC"
#define HEADER_CONTENT_BASE "Content-Base"
#define HEADER_CONTENT_DESCRIPTION "Content-Description"
#define HEADER_CONTENT_DISPOSITION "Content-Disposition"
#define HEADER_CONTENT_ENCODING "Content-Encoding"
#define HEADER_CONTENT_LENGTH "Content-Length"
#define HEADER_CONTENT_NAME "Content-Name"
#define HEADER_CONTENT_TRANSFER_ENCODING "Content-Transfer-Encoding"
#define HEADER_CONTENT_TYPE "Content-Type"
#define HEADER_DATE "Date"
#define HEADER_DISTRIBUTION "Distribution"
#define HEADER_FCC "FCC"
#define HEADER_FOLLOWUP_TO "Followup-To"
#define HEADER_FROM "From"
#define HEADER_LINES "Lines"
#define HEADER_MESSAGE_ID "Message-ID"
#define HEADER_MIME_VERSION "MIME-Version"
#define HEADER_NEWSGROUPS "Newsgroups"
#define HEADER_ORGANIZATION "Organization"
#define HEADER_REFERENCES "References"
#define HEADER_REPLY_TO "Reply-To"
#define HEADER_RESENT_COMMENTS "Resent-Comments"
#define HEADER_RESENT_DATE "Resent-Date"
#define HEADER_RESENT_FROM "Resent-From"
#define HEADER_RESENT_MESSAGE_ID "Resent-Message-ID"
#define HEADER_RESENT_SENDER "Resent-Sender"
#define HEADER_RESENT_TO "Resent-To"
#define HEADER_RESENT_CC "Resent-CC"
#define HEADER_SENDER "Sender"
#define HEADER_SUBJECT "Subject"
#define HEADER_TO "To"
#define HEADER_X_MAILER "X-Mailer"
#define HEADER_X_NEWSREADER "X-Newsreader"
#define HEADER_X_POSTING_SOFTWARE "X-Posting-Software"
#define HEADER_X_MOZILLA_STATUS "X-Mozilla-Status"
#define HEADER_X_MOZILLA_NEWSHOST "X-Mozilla-News-Host"
#define HEADER_X_MOZILLA_DRAFT_INFO "X-Mozilla-Draft-Info"
#define HEADER_X_UIDL "X-UIDL"
#define HEADER_XREF "XREF"
#define HEADER_X_SUN_CHARSET "X-Sun-Charset"
#define HEADER_X_SUN_CONTENT_LENGTH "X-Sun-Content-Length"
#define HEADER_X_SUN_CONTENT_LINES "X-Sun-Content-Lines"
#define HEADER_X_SUN_DATA_DESCRIPTION "X-Sun-Data-Description"
#define HEADER_X_SUN_DATA_NAME "X-Sun-Data-Name"
#define HEADER_X_SUN_DATA_TYPE "X-Sun-Data-Type"
#define HEADER_X_SUN_ENCODING_INFO "X-Sun-Encoding-Info"
#define HEADER_X_PRIORITY "X-Priority"
#define HEADER_PARM_BOUNDARY "BOUNDARY"
#define HEADER_PARM_FILENAME "FILENAME"
#define HEADER_PARM_NAME "NAME"
#define HEADER_PARM_TYPE "TYPE"
typedef enum {
MimeHeadersAll, /* Show all headers */
MimeHeadersSome, /* Show all "interesting" headers */
MimeHeadersSomeNoRef, /* Same, but suppress the `References' header
(for when we're printing this message.) */
MimeHeadersMicro, /* Show a one-line header summary */
MimeHeadersMicroPlus, /* Same, but show the full recipient list as
well (To, CC, etc.) */
MimeHeadersCitation /* A one-line summary geared toward use in a
reply citation ("So-and-so wrote:") */
} MimeHeadersState;
/* The signature for various callbacks in the MimeDisplayOptions structure.
*/
typedef char *(*MimeHTMLGeneratorFunction) (const char *data, void *closure,
MimeHeaders *headers);
struct MimeDisplayOptions
{
const char *url; /* Base URL for the document. This string should
be freed by the caller, after the parser
completes (possibly at the same time as the
MimeDisplayOptions itself.) */
#ifndef MOZILLA_30
MSG_Pane* pane; /* The libmsg pane object that corresponds to
what we're showing. This is used by very
little... */
#endif /* !MOZILLA_30 */
MimeHeadersState headers; /* How headers should be displayed. */
XP_Bool fancy_headers_p; /* Whether to do clever formatting of headers
using tables, instead of spaces. */
#ifndef MOZILLA_30
XP_Bool output_vcard_buttons_p; /* Whether to output the buttons */
/* on vcards. */
#endif /* !MOZILLA_30 */
XP_Bool fancy_links_p; /* Whether to insert fancy links, so you can
do things like click on an email address to
add it to your address book. Something you
don't want to do while printing. */
XP_Bool variable_width_plaintext_p; /* Whether text/plain messages should
be in variable width, or fixed. */
XP_Bool wrap_long_lines_p; /* Whether to wrap long lines in text/plain
messages. */
XP_Bool rot13_p; /* Whether text/plain parts should be rotated
Set by "?rot13=true" */
XP_Bool no_inline_p; /* Whether inline display of attachments should
be suppressed. Set by "?inline=false" */
char *part_to_load; /* The particular part of the multipart which
we are extracting. Set by "?part=3.2.4" */
XP_Bool write_html_p; /* Whether the output should be HTML, or raw. */
XP_Bool decrypt_p; /* Whether all traces of encryption should be
eradicated -- this is only meaningful when
write_html_p is FALSE; we set this when
attaching a message for forwarding, since
forwarding someone else a message that wasn't
encrypted for them doesn't work. We have to
decrypt it before sending it.
*/
#ifndef MOZILLA_30
XP_Bool nice_html_only_p; /* If TRUE, then we only should write html if
it's pretty HTML (stuff that we're willing
to get shipped out in mail messages). If we
can't generate nice stuff for some part,
then don't say anything at all. */
XP_Bool dont_touch_citations_p; /* If TRUE, then we should leave citations
alone in plaintext parts. If FALSE, then
go ahead and tweak the fonts according
to preferences. */
#endif /* !MOZILLA_30 */
char *default_charset; /* If this is non-NULL, then it is the charset to
assume when no other one is specified via a
`charset' parameter.
*/
char *override_charset; /* If this is non-NULL, then we will assume that
all data is in this charset, regardless of what
the `charset' parameter of that part says.
This overrides `default_charset' as well.
(This is to cope with the fact that, in the
real world, many messages are mislabelled with
the wrong charset.)
*/
/* =======================================================================
Stream-related callbacks; for these functions, the `closure' argument
is what is found in `options->stream_closure'. (One possible exception
is for output_fn; see "output_closure" below.)
*/
void *stream_closure;
/* For setting up the display stream, so that the MIME parser can inform
the caller of the type of the data it will be getting. */
int (*output_init_fn) (const char *type,
const char *charset,
const char *name,
const char *x_mac_type,
const char *x_mac_creator,
void *stream_closure);
/* How the MIME parser feeds its output (HTML or raw) back to the caller. */
int (*output_fn) (char *buf, int32 size, void *closure);
/* Closure to pass to the above output_fn. If NULL, then the
stream_closure is used. */
void *output_closure;
/* A callback used to encapsulate an HTML section and to reset the
HTML parser to its default state at the end of a section.
start_p indicates whether this is being called just before the
start or immediately after the end of the encapsulated HTML.
layer_encapsulate_p indicates whether or not to put special
ILAYER container tags around the HTML -- Also, when start_p is
FALSE, this function should close off any tags we've left open,
reset the font size and face, etc. This may be called multiple
times -- in particular, it will be called at the end of each
message part which might contain human-generated (and thus
arbitrarily buggy) markup. The `abort_p' argument specifies
whether it's ok for data to be discarded.
*/
int (*set_html_state_fn) (void *stream_closure,
XP_Bool layer_encapsulate_p,
XP_Bool start_p,
XP_Bool abort_p);
/* A hook for the caller to perform charset-conversion before HTML is
returned. Each set of characters which originated in a mail message
(body or headers) will be run through this filter before being converted
into HTML. (This should return bytes which may appear in an HTML file,
ie, we must be able to scan through the string to search for "<" and
turn it in to "&lt;", and so on.)
`input' is a non-NULL-terminated string of a single line from the message.
`input_length' is how long it is.
`input_charset' is a string representing the charset of this string (as
specified by MIME headers.)
`output_charset' is the charset to which conversion is desired.
`output_ret' is where a newly-malloced string is returned. It may be
NULL if no translation is needed.
`output_size_ret' is how long the returned string is (it need not be
NULL-terminated.).
*/
int (*charset_conversion_fn) (const char *input_line, int32 input_length,
const char *input_charset,
const char *output_charset,
char **output_ret, int32 *output_size_ret,
void *stream_closure);
/* A hook for the caller to perform both charset-conversion and decoding of
MIME-2 header fields (using RFC-1522 encoding.) Arguments and returned
values are as for `charset_conversion_fn'.
*/
int (*rfc1522_conversion_fn) (const char *input_line, int32 input_length,
const char *input_charset,
const char *output_charset,
char **output_ret, int32 *output_size_ret,
void *stream_closure);
/* A hook for the caller to translate a time string into a prettier or more
compact or localized form. */
char *(*reformat_date_fn) (const char *old_date, void *stream_closure);
/* A hook for the caller to turn a file name into a content-type. */
char *(*file_type_fn) (const char *filename, void *stream_closure);
/* A hook for the caller to turn a content-type into descriptive text. */
char *(*type_description_fn) (const char *content_type,void *stream_closure);
/* A hook for the caller to turn a content-type into an image icon. */
char *(*type_icon_name_fn) (const char *content_type, void *stream_closure);
/* A hook by which the user may be prompted for a password by the security
library. (This is really of type `SECKEYGetPasswordKey'; see sec.h.) */
void *(*passwd_prompt_fn)(void *arg1, void *arg2);
void *passwd_prompt_fn_arg;
/* =======================================================================
Various callbacks; for all of these functions, the `closure' argument
is what is found in `html_closure'.
*/
void *html_closure;
/* For emitting some HTML before the start of the outermost message
(this is called before any HTML is written to layout.) */
MimeHTMLGeneratorFunction generate_header_html_fn;
/* For emitting some HTML after the outermost header block, but before
the body of the first message. */
MimeHTMLGeneratorFunction generate_post_header_html_fn;
/* For emitting some HTML at the very end (this is called after libmime
has written everything it's going to write.) */
MimeHTMLGeneratorFunction generate_footer_html_fn;
/* For turning a message ID into a loadable URL. */
MimeHTMLGeneratorFunction generate_reference_url_fn;
/* For turning a mail address into a mailto URL. */
MimeHTMLGeneratorFunction generate_mailto_url_fn;
/* For turning a newsgroup name into a news URL. */
MimeHTMLGeneratorFunction generate_news_url_fn;
/* =======================================================================
Callbacks to handle the backend-specific inlined image display
(internal-external-reconnect junk.) For `image_begin', the `closure'
argument is what is found in `stream_closure'; but for all of the
others, the `closure' argument is the data that `image_begin' returned.
*/
/* Begins processing an embedded image; the URL and content_type are of the
image itself. */
void *(*image_begin) (const char *image_url, const char *content_type,
void *stream_closure);
/* Stop processing an image. */
void (*image_end) (void *image_closure, int status);
/* Dump some raw image data down the stream. */
int (*image_write_buffer) (char *buf, int32 size, void *image_closure);
/* What HTML should be dumped out for this image. */
char *(*make_image_html) (void *image_closure);
/* =======================================================================
Other random opaque state.
*/
MimeParseStateObject *state; /* Some state used by libmime internals;
initialize this to 0 and leave it alone.
*/
#ifdef MIME_DRAFTS
/* =======================================================================
Mail Draft hooks -- 09-19-1996
*/
XP_Bool decompose_file_p; /* are we decomposing a mime msg
into separate files */
XP_Bool done_parsing_outer_headers; /* are we done parsing the outer message
headers; this is really useful when
we have multiple Message/RFC822
headers */
XP_Bool is_multipart_msg; /* are we decomposing a multipart
message */
int decompose_init_count; /* used for non multipart message only
*/
XP_Bool signed_p; /* to tell draft this is a signed
message */
/* Callback to gather the outer most headers so we could use the
information to initialize the addressing/subject/newsgroups fields
for the composition window. */
int (*decompose_headers_info_fn) (void *closure,
MimeHeaders *headers);
/* Callbacks to create temporary files for drafts attachments. */
int (*decompose_file_init_fn) (void *stream_closure,
MimeHeaders *headers );
int (*decompose_file_output_fn) (char *buf, int32 size,
void *stream_closure);
int (*decompose_file_close_fn) (void *stream_closure);
#endif /* MIME_DRAFTS */
int32 attachment_icon_layer_id; /* Hackhackhack. This is zero if we have
not yet emitted the attachment layer
stuff. If we have, then this is the
id number for that layer, which is a
unique random number every time, to keep
evil people from writing javascript code
to hack it. */
};
/* Mozilla-specific interfaces
*/
/* Given a URL, this might return a better suggested name to save it as.
When you have a URL, you can sometimes get a suggested name from
URL_s->content_name, but if you're saving a URL to disk before the
URL_Struct has been filled in by netlib, you don't have that yet.
So if you're about to prompt for a file name *before* you call FE_GetURL
with a format_out of FO_SAVE_AS, call this function first to see if it
can offer you advice about what the suggested name for that URL should be.
(This works by looking in a cache of recently-displayed MIME objects, and
seeing if this URL matches. If it does, the remembered content-name will
be used.)
*/
extern char *MimeGuessURLContentName(MWContext *context, const char *url);
/* Given a URL, return the content type for the mime part, if the passed context
recently parsed a message containing the part specified by the URL.
This is used to figure out if we need to open the url in a browser window,
or if we're just going to do a save as, anyay.
*/
extern char *MimeGetURLContentType(MWContext *context, const char *url);
/* Determines whether the given context is currently showing a text/html
message. (Used by libmsg to determine if replys should bring up the
text/html editor. */
extern XP_Bool MimeShowingTextHtml(MWContext* context);
/* Yeech, hack... Determine the URL to use to save just the HTML part of the
currently-displayed message to disk. If the current message doesn't have
a text/html part, returns NULL. Otherwise, the caller must free the
returned string using XP_FREE(). */
extern char* MimeGetHtmlPartURL(MWContext* context);
/* Return how many attachments are in the currently-displayed message. */
extern int MimeGetAttachmentCount(MWContext* context);
/* Returns what attachments are being viewed in the currently-displayed
message. The returned data must be free'd using
MimeFreeAttachmentList(). */
extern int MimeGetAttachmentList(MWContext* context,
MSG_AttachmentData** data);
extern void MimeFreeAttachmentList(MSG_AttachmentData* data);
/* Call this when destroying a context; this frees up some memory.
*/
extern void MimeDestroyContextData(MWContext *context);
/* After a message has been fully displayed (the document has finished
loading) FEs call this with a Mail or News window to determine how
the "security" toolbar button should be rendered.
The first two values are whether it was an encrypted and/or signed
message; the second two are whether it was *valid*.
*/
extern void MIME_GetMessageCryptoState(MWContext *context,
XP_Bool *signed_return,
XP_Bool *encrypted_return,
XP_Bool *signed_ok_return,
XP_Bool *encrypted_ok_return);
#ifndef MOZILLA_30
/* Used only by libnet, this indicates that the user bonked on the "show me
details about attachments" button. */
extern int MIME_DisplayAttachmentPane(MWContext* context);
#endif /* MOZILLA_30 */
XP_END_PROTOS
#endif /* _LIBMIME_H_ */

View File

@ -1,577 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/*
* Header file for Mocha in the Navigator (libmocha).
*/
#ifndef libmocha_h___
#define libmocha_h___
#include "ntypes.h"
#include "il_types.h"
#include "prtypes.h"
#include "plhash.h"
#include "prthread.h"
#include "jsapi.h"
/* enable JavaScript Debugger support */
#if defined (_WIN32) || defined(XP_UNIX) || defined(powerc) || defined(__powerc) || defined(XP_OS2)
#ifdef JAVA
#define JSDEBUGGER 1
#endif
#endif
NSPR_BEGIN_EXTERN_C
typedef struct JSTimeout JSTimeout;
typedef struct JSPrincipalsList JSPrincipalsList;
typedef struct JSNestingUrl JSNestingUrl;
/*
* There exists one MochaDecoder per top-level MWContext that decodes Mocha,
* either from an HTML page or from a "mocha:[expr]" URL.
*/
typedef struct MochaDecoder {
int32 forw_count; /* forward reference count */
int32 back_count; /* back (up the tree) count */
JSContext *js_context;
MWContext *window_context;
JSObject *window_object;
NET_StreamClass *stream;
int32 stream_owner; /* id of layer that's loading the stream */
URL_Struct *url_struct;
JSTimeout *timeouts;
JSTimeout *saved_timeouts;
uint16 signature_ordinal;
PRPackedBool replace_location;
PRPackedBool resize_reload;
PRPackedBool load_event_sent;
PRPackedBool visited;
PRPackedBool writing_input;
PRPackedBool free_stream_on_close;
PRPackedBool in_window_quota;
PRPackedBool called_win_close;
PRPackedBool principals_compromised;
const char *source_url;
JSNestingUrl *nesting_url;
uint32 error_count;
uint32 event_mask;
int32 active_layer_id;
uint32 active_form_id;
uint32 event_bit;
int32 doc_id;
/*
* Class prototype objects, in alphabetical order. Must be CLEARed (set
* to null) in LM_PutMochaDecoder, HELD (GC roots added) in lm_NewWindow,
* and DROPped (removed as GC roots) in lm_DestroyWindow.
* XXXbe clean up, clear via bzero, using a sub-structure.
*/
JSObject *anchor_prototype;
JSObject *bar_prototype;
JSObject *document_prototype;
JSObject *event_prototype;
JSObject *event_capturer_prototype;
JSObject *event_receiver_prototype;
JSObject *form_prototype;
JSObject *image_prototype;
JSObject *input_prototype;
JSObject *layer_prototype;
JSObject *option_prototype;
JSObject *rect_prototype;
JSObject *url_prototype;
#ifdef DOM
JSObject *span_prototype;
JSObject *transclusion_prototype;
#endif
/*
* Window sub-objects. These must also follow the CLEAR/HOLD/DROP
* protocol mentioned above.
*/
JSObject *document;
JSObject *history;
JSObject *location;
JSObject *navigator;
JSObject *components;
JSObject *screen;
JSObject *hardware;
JSObject *crypto;
JSObject *pkcs11;
/*
* Ad-hoc GC roots.
*/
JSObject *event_receiver;
JSObject *opener;
JSVersion firstVersion; /* First JS script tag version. */
/*
* Security info for all of this decoder's scripts, except those
* contained in layers.
*/
JSPrincipals *principals;
JSPrincipalsList*early_access_list;
IL_GroupContext *image_context; /* Image context for anonymous images */
/*
* Table that maintains an id to JS object mapping for reflected
* elements. This is used during resize to reestablish the connection
* between layout elements and their corresponding JS object.
* Form elements are special, since they can't use the same keying
*/
PRHashTable *id_to_object_map;
} MochaDecoder;
/*
* Number of buckets for the id-to-object hash table.
*/
#define LM_ID_TO_OBJ_MAP_SIZE 20
#define LM_FORM_ELEMENT_MAP_SIZE 10
/*
* Types of objects reflected into Mocha
*/
typedef enum {
LM_APPLETS = 0,
LM_FORMS,
LM_LINKS,
LM_NAMEDANCHORS,
LM_EMBEDS,
LM_IMAGES,
LM_FORMELEMENTS,
LM_LAYERS
#ifdef DOM
, LM_SPANS
, LM_TRANSCLUSIONS
#endif
} ReflectedObject;
/*
* Generates an id-to-object mapping key from the ReflectedObject
* type, the containing layer id and the id of the object itself.
* The key is 4 bits type, 14 bits layer_id and 14 bits id.
*/
#define LM_GET_MAPPING_KEY(obj_type, layer_id, id) \
(void *)(((((uint32)obj_type) << 28) & 0xF0000000UL) | \
((((uint32)layer_id) << 14) & 0x0FFFC000UL) | \
(((uint32)id) & 0x00003FFFUL))
/*
* Public, well-known string constants.
*/
extern char js_language_name[]; /* "JavaScript" */
extern char js_content_type[]; /* "application/x-javascript" */
/*
* Initialize and finalize Mocha-in-the-client.
*/
extern void LM_InitMocha(void);
extern void LM_FinishMocha(void);
/*
* Force mocha on in the given context, even if the user pref is set to
* disable mocha.
*/
extern void LM_ForceJSEnabled(MWContext *cx);
/*
* Initialize and finalize Mocha-Java connection
*/
#define LM_MOJA_UNINITIALIZED 0
#define LM_MOJA_OK 1
#define LM_MOJA_JAVA_FAILED 2
#define LM_MOJA_OUT_OF_MEMORY 3
extern int LM_InitMoja(void);
extern void LM_FinishMoja(void);
extern int LM_IsMojaInitialized(void);
/*
* Enter or leave the big mocha lock. Any thread which wants to
* preserve JavaScript run-to-completion semantics must bracket
* JavaScript evaluation with these calls.
*/
typedef void
(PR_CALLBACK *JSLockReleaseFunc)(void * data);
extern void PR_CALLBACK LM_LockJS(void);
extern void PR_CALLBACK LM_UnlockJS(void);
extern JSBool PR_CALLBACK LM_AttemptLockJS(JSLockReleaseFunc fn, void * data);
extern JSBool PR_CALLBACK LM_ClearAttemptLockJS(JSLockReleaseFunc fn, void * data);
extern PRBool PR_CALLBACK
LM_HandOffJSLock(PRThread * oldOwner, PRThread *newOwner);
/*
* For interruption purposes we will sometimes need to know the
* context who is holding the JS lock
*/
extern void LM_JSLockSetContext(MWContext * context);
extern MWContext * LM_JSLockGetContext(void);
/*
* Enable/disable for Mocha-in-the-client.
*/
#define LM_SwitchMocha(toggle) LM_SetMochaEnabled(toggle)
extern JSBool
LM_GetMochaEnabled(void);
/*
* Get (create if necessary) a MochaDecoder for context, adding a reference
* to its window_object. Put drops the reference, destroying window_object
* when the count reaches zero. These functions should only be called in
* the mocha thread or while holding the JS-lock
*/
extern MochaDecoder *
LM_GetMochaDecoder(MWContext *context);
extern void
LM_PutMochaDecoder(MochaDecoder *decoder);
/*
* Get the source URL for script being loaded by document. This URL will be
* the document's URL for inline script, or the SRC= URL for included script.
* The returned pointer is safe only within the extent of the function that
* calls LM_GetSourceURL().
*/
extern const char *
LM_GetSourceURL(MochaDecoder *decoder);
/*
* Set the current layer and hence the current scope for script evaluation.
*/
extern void
LM_SetActiveLayer(MWContext * context, int32 layer_id);
/*
* Get the current layer and hence the current scope for script evaluation.
*/
extern int32
LM_GetActiveLayer(MWContext * context);
/*
* Evaluate the contents of a SCRIPT tag. You can specify the JSObject
* to use as the base scope. Pass NULL to use the default window_object
*/
extern JSBool
LM_EvaluateBuffer(MochaDecoder *decoder, void *base, size_t length,
uint lineno, char * scope_to, struct JSPrincipals *principals,
JSBool unicode, jsval *result);
/*
* Evaluate an expression entity in an HTML attribute (WIDTH="&{height/2};").
* Returns null on error, otherwise a pointer to the malloc'd string result.
* The caller is responsible for freeing the string result.
*/
extern char *
LM_EvaluateAttribute(MWContext *context, char *expr, uint lineno);
/*
* Remove any MochaDecoder window_context pointer to an MWContext that's
* being destroyed.
*/
extern void
LM_RemoveWindowContext(MWContext *context, History_entry * he);
extern void
LM_DropSavedWindow(MWContext *context, void *window);
/*
* Set and clear the HTML stream and URL for the MochaDecoder
* associated with the given context
*/
extern JSBool
LM_SetDecoderStream(MWContext * context, NET_StreamClass *stream,
URL_Struct *url_struct, JSBool free_stream_on_close);
/*
* Start caching HTML or plain text generated by document.write() where the
* script is running on mc, the document is being generated into decoder's
* window, and url_struct tells about the generator.
*/
extern NET_StreamClass *
LM_WysiwygCacheConverter(MWContext *context, URL_Struct *url_struct,
const char * wysiwyg_url, const char * base_href);
/*
* Skip over the "wysiwyg://docid/" in url_string and return a pointer to the
* real URL hidden after the prefix. If url_string is not of "wysiwyg:" type,
* just return url_string. Never returns null.
*/
extern const char *
LM_StripWysiwygURLPrefix(const char *url_string);
/*
* This function works only on "wysiwyg:" type URLs -- don't call it unless
* you know that NET_URL_Type(url_string) is WYSIWYG_TYPE_URL. It'll return
* null if url_string seems too short, or if it can't find the third slash.
*/
extern const char *
LM_SkipWysiwygURLPrefix(const char *url_string);
/*
* Return a pointer to a malloc'd string of the form "<BASE HREF=...>" where
* the "..." URL is the directory of cx's origin URL. Such a base URL is the
* default base for relative URLs in generated HTML.
*/
extern char *
LM_GetBaseHrefTag(JSContext *cx, JSPrincipals *principals);
/*
* XXX Make these public LO_... typedefs in lo_ele.h/ntypes.h?
*/
struct lo_FormData_struct;
struct lo_NameList_struct;
extern struct lo_FormData_struct *
LO_GetFormDataByID(MWContext *context, int32 layer_id, intn form_id);
extern uint
LO_EnumerateForms(MWContext *context, int32 layer_id);
extern struct LO_ImageStruct_struct *
LO_GetImageByIndex(MWContext *context, int32 layer_id, intn image_id);
extern uint
LO_EnumerateImages(MWContext *context, int32 layer_id);
/*
* Reflect display layers into Mocha.
*/
extern JSObject *
LM_ReflectLayer(MWContext *context, int32 layer_id, int32 parent_layer_id,
PA_Tag *tag);
extern LO_FormElementStruct *
LO_GetFormElementByIndex(struct lo_FormData_struct *form_data, int32 index);
extern uint
LO_EnumerateFormElements(MWContext *context,
struct lo_FormData_struct *form_data);
/*
* Layout helper function to find a named anchor by its index in the
* document.anchors[] array.
*/
extern struct lo_NameList_struct *
LO_GetNamedAnchorByIndex(MWContext *context, int32 layer_id, uint index);
extern uint
LO_EnumerateNamedAnchors(MWContext *context, int32 layer_id);
#ifdef DOM
/*
* Layout helper function to find a span by its index in the
* document.spans[] array.
*/
extern struct lo_NameList_struct *
LO_GetSpanByIndex(MWContext *context, int32 layer_id, uint index);
extern uint
LO_EnumerateSpans(MWContext *context, int32 layer_id);
extern JSObject *
LO_GetMochaObjectOfParentSpan( LO_Element *ele);
#endif
/*
* Layout Mocha helper function to find an HREF Anchor by its index in the
* document.links[] array.
*/
extern LO_AnchorData *
LO_GetLinkByIndex(MWContext *context, int32 layer_id, uint index);
extern uint
LO_EnumerateLinks(MWContext *context, int32 layer_id);
extern LO_JavaAppStruct *
LO_GetAppletByIndex(MWContext *context, int32 layer_id, uint index);
extern uint
LO_EnumerateApplets(MWContext *context, int32 layer_id);
extern LO_EmbedStruct *
LO_GetEmbedByIndex(MWContext *context, int32 layer_id, uint index);
extern uint
LO_EnumerateEmbeds(MWContext *context, int32 layer_id);
/*
* Get and set a color attribute in the current document state.
*/
extern void
LO_GetDocumentColor(MWContext *context, int type, LO_Color *color);
extern void
LO_SetDocumentColor(MWContext *context, int type, LO_Color *color);
/*
* Layout function to reallocate the lo_FormElementOptionData array pointed at
* by lo_FormElementSelectData's options member to include space for the number
* of options given by selectData->option_cnt.
*/
extern XP_Bool
LO_ResizeSelectOptions(lo_FormElementSelectData *selectData);
/*
* Discard the current document and all its subsidiary objects.
*/
extern void
LM_ReleaseDocument(MWContext *context, JSBool resize_reload);
/*
* Search if a the event is being captured in the frame hierarchy.
*/
extern XP_Bool
LM_EventCaptureCheck(MWContext *context, uint32 current_event);
/*
* Scroll a window to the given point.
*/
extern void LM_SendOnScroll(MWContext *context, int32 x, int32 y);
/*
* Display a help topic.
*/
extern void LM_SendOnHelp(MWContext *context);
/*
* Send a load or abort event for an image to a callback.
*/
typedef enum LM_ImageEvent {
LM_IMGUNBLOCK = 0,
LM_IMGLOAD = 1,
LM_IMGABORT = 2,
LM_IMGERROR = 3,
LM_LASTEVENT = 3
} LM_ImageEvent;
extern void
LM_ProcessImageEvent(MWContext *context, LO_ImageStruct *image_data,
LM_ImageEvent event);
/* This should be called when a named anchor is located. */
extern JSBool
LM_SendOnLocate(MWContext *context, struct lo_NameList_struct *name_rec);
extern JSObject *
LM_ReflectApplet(MWContext *context, LO_JavaAppStruct *applet_data,
PA_Tag * tag, int32 layer_id, uint index);
extern JSObject *
LM_ReflectEmbed(MWContext *context, LO_EmbedStruct *lo_embed,
PA_Tag * tag, int32 layer_id, uint index);
struct lo_FormData_struct;
struct lo_NameList_struct;
extern JSObject *
LM_ReflectForm(MWContext *context, struct lo_FormData_struct *form_data,
PA_Tag * tag, int32 layer_id, uint index);
extern JSObject *
LM_ReflectFormElement(MWContext *context, int32 layer_id, int32 form_id,
int32 element_id, PA_Tag * tag);
extern JSObject *
LM_ReflectLink(MWContext *context, LO_AnchorData *anchor_data, PA_Tag * tag,
int32 layer_id, uint index);
extern JSObject *
LM_ReflectNamedAnchor(MWContext *context, struct lo_NameList_struct *name_rec,
PA_Tag * tag, int32 layer_id, uint index);
extern JSObject *
LM_ReflectImage(MWContext *context, LO_ImageStruct *image_data,
PA_Tag * tag, int32 layer_id, uint index);
#ifdef DOM
/* Function prototype to make JS know about <SPAN> elements */
extern JSObject *
LM_ReflectSpan(MWContext *context, struct lo_NameList_struct *name_rec,
PA_Tag *tag, int32 layer_id, uint index);
extern JSObject *
LM_ReflectTransclusion(MWContext *context, void *ele, int32 layer_id, uint index);
#endif
extern JSBool
LM_CanDoJS(MWContext *context);
extern JSBool
LM_IsActive(MWContext *context);
/*
* Security.
*/
extern JSPrincipals *
LM_NewJSPrincipals(URL_Struct *archive, char *name, const char *codebase);
extern char *
LM_ExtractFromPrincipalsArchive(JSPrincipals *principals, char *name,
uint *length);
extern JSBool
LM_SetUntransformedSource(JSPrincipals *principals, char *original,
char *transformed);
extern JSPrincipals * PR_CALLBACK
LM_GetJSPrincipalsFromJavaCaller(JSContext *cx, int callerDepth);
/*
* LM_RegisterPrincipals will verify and register a set of principals
* in the decoder, modifying decoder->principals in the process. It
* returns the modified decoder.
*
* The "name" parameter may be NULL if "principals" was created with a name.
*/
extern JSPrincipals *
LM_RegisterPrincipals(MochaDecoder *decoder, JSPrincipals *principals,
char *name, char *src);
/*
* JavaScript Debugger support
*/
#ifdef JSDEBUGGER
extern NET_StreamClass*
LM_StreamBuilder( int format_out,
void *data_obj,
URL_Struct *URL_s,
MWContext *mwcontext );
extern JSBool
LM_GetJSDebugActive(void);
extern void
LM_JamSourceIntoJSDebug( const char *filename,
const char *str,
int32 len,
MWContext *mwcontext );
#endif
NSPR_END_EXTERN_C
#endif /* libmocha_h___ */

View File

@ -1,29 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/*-----------------------------------------------------------------------------
Collection of all the public libnet functions
-----------------------------------------------------------------------------*/
#ifndef _libnet_
#define _libnet_
#include "mkutils.h"
#include "mkstream.h"
#include "mkgeturl.h"
#endif /* _libnet_ */

View File

@ -1,35 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/* libstyle.h --- Exported style sheet routines */
#ifndef __LIBSTYLE_H_
#define __LIBSTYLE_H_
#include "xp_core.h"
#include "libmocha.h"
XP_BEGIN_PROTOS
extern JSBool
JSS_ResolveDocName(JSContext *mc, MWContext *context, JSObject *obj, jsval id);
XP_END_PROTOS
#endif /* __LIBSTYLE_H_ */

File diff suppressed because it is too large Load Diff

View File

@ -1,93 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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_Convert_Stream.h
** --------------------
**
** The header file for the constructing functions of apple file
** encode/decode stream.
**
** 27sep95 mym created.
*/
#ifndef M_CVStrm_h
#define M_CVStrm_h
XP_BEGIN_PROTOS
PUBLIC NET_StreamClass *
fe_MakeBinHexEncodeStream (int format_out,
void *data_obj,
URL_Struct *URL_s,
MWContext *window_id,
char* dst_filename);
PUBLIC NET_StreamClass *
fe_MakeBinHexDecodeStream (int format_out,
void *data_obj,
URL_Struct *URL_s,
MWContext *window_id );
PUBLIC NET_StreamClass *
fe_MakeAppleDoubleDecodeStream (int format_out,
void *data_obj,
URL_Struct *URL_s,
MWContext *window_id,
XP_Bool write_as_binhex,
char *dst_filename);
PUBLIC NET_StreamClass *
fe_MakeAppleSingleDecodeStream (int format_out,
void *data_obj,
URL_Struct *URL_s,
MWContext *window_id,
XP_Bool write_as_binhex,
char *dst_filename);
#ifdef XP_MAC
PUBLIC NET_StreamClass *
fe_MakeAppleDoubleEncodeStream (int format_out,
void *data_obj,
URL_Struct *URL_s,
MWContext *window_id,
char* src_filename,
char* dst_filename,
char* separator);
XP_Bool isMacFile(char* filename);
#endif
PUBLIC NET_StreamClass *
fe_MakeAppleDoubleDecodeStream_1 (int format_out,
void *data_obj,
URL_Struct *URL_s,
MWContext *window_id);
PUBLIC NET_StreamClass *
fe_MakeAppleSingleDecodeStream_1 (int format_out,
void *data_obj,
URL_Struct *URL_s,
MWContext *window_id);
XP_END_PROTOS
#endif

View File

@ -1,56 +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.
#//------------------------------------------------------------------------
#//
#// Makefile to install NSPR/INCLUDE header files into the distribution
#// directory.
#//
#//------------------------------------------------------------------------
#//------------------------------------------------------------------------
#//
#// Specify the depth of the current directory relative to the
#// root of NS
#//
#//------------------------------------------------------------------------
DEPTH = ..
#//------------------------------------------------------------------------
#//
#// Specify any "command" targets. (ie. DIRS, INSTALL_FILES, ...)
#// (these must come before the common makefiles are included)
#//
#// DIRS - There is a subdirectory to process
#// INSTALL_FILES - Files to be installed in the distribution area
#//
#//------------------------------------------------------------------------
#INSTALL_FILE_LIST=*.h
#INSTALL_DIR=$(XPDIST)\public\coreincl
#//------------------------------------------------------------------------
#//
#// Include the common makefile rules
#//
#//------------------------------------------------------------------------
include <$(DEPTH)/config/rules.mak>
#export:: INSTALL_FILES

View File

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

View File

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

View File

@ -1,74 +0,0 @@
/* -*- Mode: C; tab-width: 8; 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.
*/
/* merrors.h --- error codes for netlib. */
#ifndef _MERRORS_H_
#define _MERRORS_H_
/*
* Return codes
*/
#define MK_INTERRUPTED -201
#define MK_UNABLE_TO_CONVERT -208
#define MK_UNABLE_TO_LOGIN -210
#define MK_NO_NEWS_SERVER -224
#define MK_USE_FTP_INSTEAD -225
#define MK_USE_COPY_FROM_CACHE -226
#define MK_EMPTY_NEWS_LIST -227
#define MK_MAILTO_NOT_READY -228
#define MK_OBJECT_NOT_IN_CACHE -239
#define MK_UNABLE_TO_LISTEN_ON_SOCKET -244
#define MK_WAITING_FOR_LOOKUP -248 /* response for async dns */
#define MK_DO_REDIRECT -249 /* tells mkgeturl to redirect */
#define MK_MIME_NEED_B64 -270 /* used internally */
#define MK_MIME_NEED_QP -271 /* used internally */
#define MK_MIME_NEED_TEXT_CONVERTER -272 /* used internally */
#define MK_MIME_NEED_PS_CONVERTER -273 /* used internally */
#define MK_IMAGE_LOSSAGE -277
#define MK_TOO_MANY_OPEN_FILES -310
#define MK_FILE_WRITE_ERROR -350
#define MK_GET_REST_OF_PARTIAL_FILE_FROM_NETWORK -399
#define MK_MULTIPART_MESSAGE_COMPLETED -437
#define MK_OFFLINE -438
/* success codes */
#define MK_DATA_LOADED 1
#define MK_NO_DATA 2
#define MK_NO_ACTION 3
#define MK_CHANGING_CONTEXT 4
#endif /* _MERRORS_H_ */

View File

@ -1,115 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 MIME_H
#define MIME_H
#include "ntypes.h"
#include "mimeenc.h"
XP_BEGIN_PROTOS
extern PUBLIC const char *FE_UsersOrganization(void);
/* Returns the appropriate contents of a From: field of a mail message
originating from the current user. This calls FE_UsersFullName()
and FE_UsersMailAddress() and correctly munges the values, using
MSG_MakeFullAddress()
A new string is returned, which you must free when you're done with it.
*/
extern PUBLIC char *MIME_MakeFromField (void);
extern PUBLIC void MISC_ValidateSignature (MWContext *context,
const char *sig);
/* This does a very rough sanity-check on the return email address specified
in preferences, and pops up a dialog and returns negative if there is
something obviously wrong. MSG_ComposeMessage() calls this, and won't
let messages be composed until the problem is corrected. The FEs should
call this after preferences have been edited as well.
The address should be just the email address, not including the real name.
*/
extern PUBLIC int MISC_ValidateReturnAddress (MWContext *context,
const char *addr);
/* Convert a block of text to the MIME quoted-printable encoding.
Returns a new string and its size, or NULL if it couldn't allocate.
*/
extern PUBLIC void MIME_EncodeQuotedPrintableString(const unsigned char *input,
uint32 input_size,
unsigned char **output,
uint32 *output_size);
/* Convert a block of text to the MIME base64 encoding.
Returns a new string and its size, or NULL if it couldn't allocate.
*/
extern PUBLIC void MIME_EncodeBase64String(const unsigned char *input,
uint32 input_size,
unsigned char **output,
uint32 *output_size);
/* build a mailto: url address given a to field
*
* returns a malloc'd string
*/
extern char *
MIME_BuildMailtoURLAddress(const char * to);
/* build a news: url address to post to, given a partial news-post
* URL and the newsgroups line
*
* returns a malloc'd string
*/
extern char *
MIME_BuildNewspostURLAddress(const char *partial_newspost_url,
const char *newsgroups);
/* If the argument is true, we use quoted-printable encoding on mail and
news messages which have 8bit characters in them. Otherwise, we assume
that the mail and news transport will not strip the eighth bit (a bad
assumption.) */
extern void MIME_ConformToStandard (XP_Bool conform_p);
/* Generate headers for a form post to a mailto: URL.
This lets the URL specify additional headers, but is careful to
ignore headers which would be dangerous. It may modify the URL
(because of CC) so a new URL to actually post to is returned.
*/
extern int MIME_GenerateMailtoFormPostHeaders (const char *old_post_url,
const char *referer,
char **new_post_url_return,
char **headers_return);
extern NET_StreamClass *
NET_MimeMakePartialEncodingConverterStream (int format_out,
void *data_obj,
URL_Struct *URL_s,
MWContext *window_id,
NET_StreamClass *next_stream);
extern int MIME_HasAttachments(MWContext *context);
XP_END_PROTOS
#endif /* mime.h */

View File

@ -1,85 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/* mimeenc.c --- MIME encoders and decoders, version 2 (see mimei.h)
Created: Jamie Zawinski <jwz@netscape.com>, 15-May-96.
*/
#ifndef _MIMEENC_H_
#define _MIMEENC_H_
#include "xp.h"
/* This file defines interfaces to generic implementations of Base64,
Quoted-Printable, and UU decoders; and of Base64 and Quoted-Printable
encoders.
*/
/* Opaque objects used by the encoder/decoder to store state. */
typedef struct MimeDecoderData MimeDecoderData;
typedef struct MimeEncoderData MimeEncoderData;
XP_BEGIN_PROTOS
/* functions for creating that opaque data.
*/
MimeDecoderData *MimeB64DecoderInit(int (*output_fn) (const char *buf,
int32 size,
void *closure),
void *closure);
MimeDecoderData *MimeQPDecoderInit (int (*output_fn) (const char *buf,
int32 size,
void *closure),
void *closure);
MimeDecoderData *MimeUUDecoderInit (int (*output_fn) (const char *buf,
int32 size,
void *closure),
void *closure);
MimeEncoderData *MimeB64EncoderInit(int (*output_fn) (const char *buf,
int32 size,
void *closure),
void *closure);
MimeEncoderData *MimeQPEncoderInit (int (*output_fn) (const char *buf,
int32 size,
void *closure),
void *closure);
MimeEncoderData *MimeUUEncoderInit (char *filename,
int (*output_fn) (const char *buf,
int32 size,
void *closure),
void *closure);
/* Push data through the encoder/decoder, causing the above-provided write_fn
to be called with encoded/decoded data. */
int MimeDecoderWrite (MimeDecoderData *data, const char *buffer, int32 size);
int MimeEncoderWrite (MimeEncoderData *data, const char *buffer, int32 size);
/* When you're done encoding/decoding, call this to free the data. If
abort_p is FALSE, then calling this may cause the write_fn to be called
one last time (as the last buffered data is flushed out.)
*/
int MimeDecoderDestroy(MimeDecoderData *data, XP_Bool abort_p);
int MimeEncoderDestroy(MimeEncoderData *data, XP_Bool abort_p);
XP_END_PROTOS
#endif /* _MIMEENC_H_ */

View File

@ -1,123 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/*******************************************************************************
* Mini Component Object Model
******************************************************************************/
#ifndef MINICOM_H
#define MINICOM_H
#ifdef __cplusplus
extern "C" {
#endif
/******************************************************************************/
#if defined(XP_PC) && !defined(XP_OS2)
#if defined(_WIN32)
#include "objbase.h"
#else
#include <windows.h>
#include "compobj.h"
#endif
#else /* !XP_PC or XP_OS2*/
#if defined(XP_OS2)
#define TID OS2TID /* global rename in OS2 H's! */
#include <os2.h>
#undef TID /* and restore */
#endif
typedef struct _GUID {
long Data1;
short Data2;
short Data3;
char Data4[8];
} GUID;
typedef GUID IID;
typedef GUID CLSID;
typedef IID* REFIID;
typedef GUID* REFGUID;
typedef CLSID* REFCLSID;
#ifdef __cplusplus
#define EXTERN_C extern "C"
#else
#define EXTERN_C
#endif /* cplusplus */
#ifndef INITGUID
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
EXTERN_C const GUID name
#else
#define DEFINE_GUID(name, l, w1, w2, b1, b2, b3, b4, b5, b6, b7, b8) \
EXTERN_C const GUID name \
= { l, w1, w2, { b1, b2, b3, b4, b5, b6, b7, b8 } }
#endif /* INITGUID */
#endif /* !XP_PC or XP_OS2*/
#define JRI_DEFINE_GUID(name, l, w1, w2) \
DEFINE_GUID(name, l, w1, w2, \
0xbb, 0x58, 0x00, 0x80, 0x5f, 0x74, 0x03, 0x79)
typedef long
(*MCOM_QueryInterface_t)(void* self, REFIID id, void* *result);
typedef long
(*MCOM_AddRef_t)(void* self);
typedef long
(*MCOM_Release_t)(void* self);
#if !defined(XP_PC) || defined(XP_OS2)
typedef struct IUnknown {
MCOM_QueryInterface_t QueryInterface;
MCOM_AddRef_t AddRef;
MCOM_Release_t Release;
} IUnknown;
#define IUnknown_QueryInterface(self, interfaceID, resultingInterface) \
(((*((IUnknown**)self))->QueryInterface)(self, interfaceID, resultingInterface))
#define IUnknown_AddRef(self) \
(((*((IUnknown**)self))->AddRef)(self))
#define IUnknown_Release(self) \
(((*((IUnknown**)self))->Release)(self))
#endif /* !XP_PC or XP_OS2*/
typedef long
(*MCOM_CreateInstance_t)(void* self, IUnknown* outer, REFIID interfaceID,
void** newInstance);
typedef long
(*MCOM_LockServer_t)(void* self, int doLock);
/******************************************************************************/
#ifdef __cplusplus
}
#endif
#endif /* MINICOM_H */
/******************************************************************************/

View File

@ -1,169 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 is Michael Toy's fault. If you hate it or have troubles figuring
** it out, you should bother him about it.
**
** This file generates both the fields of the front end structure, and the
** fe specific prototypes for your front end implementations, AND the
** the code to fill in the structure in your context initilization code
**
** To use it:
**
** #define MAKE_FE_FUNCS_STRUCT
** #include "mk_cx_fn.h"
** This will generate the field definitions for the structure.
**
** #define MAKE_FE_FUNCS_PREFIX(func) prefix_##func
** #define MAKE_FE_FUNCS_ASSIGN cx->
** #include "mk_cx_fn.h"
** Substitute your naming prefix for "prefix" (e.g XFE)
** This will generate the assignment statements to fill in the structure,
** the definition of MAKE_FE_FUNCS_ASSIGN will be the left hand side of the
** assignment statement.
**
** #define MAKE_FE_FUNCS_PREFIX(func) prefix_##func
** #define MAKE_FE_FUNCS_EXTERN
** #include "mk_cx_fn.h"
** This will generate the prototypes for all your front end functions.
*/
#if defined(MAKE_FE_FUNCS_TYPES)
#define FE_DEFINE(func, returns, args) typedef returns (*MAKE_FE_TYPES_PREFIX(func)) args;
#elif defined(MAKE_FE_FUNCS_STRUCT)
#define FE_DEFINE(func, returns, args) returns (*func) args;
#elif defined(MAKE_FE_FUNCS_EXTERN)
#define FE_DEFINE(func, returns, args) extern returns MAKE_FE_FUNCS_PREFIX(func) args;
#elif defined(MAKE_FE_FUNCS_ASSIGN)
#define FE_DEFINE(func, returns, args) MAKE_FE_FUNCS_ASSIGN func = MAKE_FE_FUNCS_PREFIX(func);
#elif !defined(FE_DEFINE)
You;Should;Read;The;Header;For;This;File;Before;Including;Error;Error;Error;
#endif
FE_DEFINE(CreateNewDocWindow, MWContext*, (MWContext * calling_context,URL_Struct * URL))
FE_DEFINE(LayoutNewDocument, void, (MWContext *context, URL_Struct *url_struct, int32 *iWidth, int32 *iHeight, int32 *mWidth, int32 *mHeight))
FE_DEFINE(SetDocTitle,void, (MWContext * context, char * title))
FE_DEFINE(FinishedLayout,void, (MWContext *context))
FE_DEFINE(TranslateISOText,char *, (MWContext * context, int charset, char *ISO_Text))
FE_DEFINE(GetTextInfo,int, (MWContext * context, LO_TextStruct *text, LO_TextInfo *text_info))
#ifdef XP_MAC
FE_DEFINE(MeasureText,int, (MWContext * context, LO_TextStruct *text, short *charLocs))
#endif
#ifndef MOZ_NGLAYOUT
FE_DEFINE(GetEmbedSize,void, (MWContext * context, LO_EmbedStruct *embed_struct, NET_ReloadMethod force_reload))
#endif
FE_DEFINE(GetJavaAppSize,void, (MWContext * context, LO_JavaAppStruct *java_struct, NET_ReloadMethod force_reload))
#ifndef MOZ_NGLAYOUT
FE_DEFINE(GetFormElementInfo,void, (MWContext * context, LO_FormElementStruct * form_element))
FE_DEFINE(GetFormElementValue,void, (MWContext * context, LO_FormElementStruct * form_element, XP_Bool hide))
FE_DEFINE(ResetFormElement,void, (MWContext * context, LO_FormElementStruct * form_element))
FE_DEFINE(SetFormElementToggle,void, (MWContext * context, LO_FormElementStruct * form_element, XP_Bool toggle))
FE_DEFINE(FreeEmbedElement,void, (MWContext *context, LO_EmbedStruct *))
#ifdef SHACK
FE_DEFINE(FreeBuiltinElement,void, (MWContext *context, LO_BuiltinStruct *))
#endif
#endif /* MOZ_NGLAYOUT */
FE_DEFINE(CreateEmbedWindow, void, (MWContext *context, NPEmbeddedApp *app))
FE_DEFINE(SaveEmbedWindow, void, (MWContext *context, NPEmbeddedApp *app))
FE_DEFINE(RestoreEmbedWindow, void, (MWContext *context, NPEmbeddedApp *app))
FE_DEFINE(DestroyEmbedWindow, void, (MWContext *context, NPEmbeddedApp *app))
FE_DEFINE(FreeJavaAppElement,void, (MWContext *context, struct LJAppletData *appletData))
FE_DEFINE(HideJavaAppElement,void, (MWContext *context, struct LJAppletData *))
#ifndef MOZ_NGLAYOUT
FE_DEFINE(FreeEdgeElement,void, (MWContext *context, LO_EdgeStruct *))
FE_DEFINE(FormTextIsSubmit,void, (MWContext * context, LO_FormElementStruct * form_element))
#endif /* MOZ_NGLAYOUT */
FE_DEFINE(DisplaySubtext,void, (MWContext * context, int iLocation, LO_TextStruct *text, int32 start_pos, int32 end_pos, XP_Bool need_bg))
FE_DEFINE(DisplayText,void, (MWContext * context, int iLocation, LO_TextStruct *text, XP_Bool need_bg))
#ifndef MOZ_NGLAYOUT
FE_DEFINE(DisplayEmbed,void, (MWContext * context, int iLocation ,LO_EmbedStruct *embed_struct))
#ifdef SHACK
FE_DEFINE(DisplayBuiltin,void, (MWContext * context, int iLocation ,LO_BuiltinStruct *builtin_struct))
#endif
#endif /* MOZ_NGLAYOUT */
FE_DEFINE(DisplayJavaApp,void, (MWContext * context, int iLocation ,LO_JavaAppStruct *java_struct))
#ifndef MOZ_NGLAYOUT
FE_DEFINE(DisplayEdge,void, (MWContext * context, int iLocation ,LO_EdgeStruct *edge_struct))
#endif
FE_DEFINE(DisplayTable,void, (MWContext * context, int iLocation ,LO_TableStruct *table_struct))
FE_DEFINE(DisplayCell,void, (MWContext * context, int iLocation ,LO_CellStruct *cell_struct))
#ifdef XP_MAC
FE_DEFINE(InvalidateEntireTableOrCell,void, (MWContext * context, LO_Element *element))
FE_DEFINE(DisplayAddRowOrColBorder,void, (MWContext * context, XP_Rect* r ,XP_Bool bErase))
#endif
FE_DEFINE(DisplaySubDoc,void, (MWContext * context, int iLocation ,LO_SubDocStruct *subdoc_struct))
FE_DEFINE(DisplayLineFeed,void, (MWContext * context, int iLocation , LO_LinefeedStruct *line_feed, XP_Bool need_bg))
FE_DEFINE(DisplayHR,void, (MWContext * context, int iLocation , LO_HorizRuleStruct *HR_struct))
FE_DEFINE(DisplayBullet,void, (MWContext *context, int iLocation, LO_BullettStruct *bullet))
#ifndef MOZ_NGLAYOUT
FE_DEFINE(DisplayFormElement,void, (MWContext * context, int iLocation, LO_FormElementStruct * form_element))
#endif
FE_DEFINE(DisplayBorder,void, (MWContext *context, int iLocation, int x, int y, int width, int height, int bw, LO_Color *color, LO_LineStyle style))
#ifdef XP_MAC
FE_DEFINE(UpdateEnableStates,void, (MWContext *context))
#endif
FE_DEFINE(DisplayFeedback,void, (MWContext *context, int iLocation, LO_Element *element))
FE_DEFINE(ClearView,void, (MWContext * context, int which))
FE_DEFINE(SetDocDimension,void, (MWContext *context, int iLocation, int32 iWidth, int32 iLength))
FE_DEFINE(SetDocPosition,void, (MWContext *context, int iLocation, int32 iX, int32 iY))
FE_DEFINE(GetDocPosition,void, (MWContext *context, int iLocation, int32 *iX, int32 *iY))
FE_DEFINE(BeginPreSection,void, (MWContext *context))
FE_DEFINE(EndPreSection,void, (MWContext *context))
FE_DEFINE(SetProgressBarPercent,void, (MWContext *context, int32 percent))
FE_DEFINE(SetBackgroundColor,void, (MWContext *context, uint8 red, uint8 green, uint8 blue))
FE_DEFINE(Progress, void, (MWContext * cx, const char *msg))
FE_DEFINE(Alert, void, (MWContext * cx, const char *msg))
FE_DEFINE(SetCallNetlibAllTheTime, void, (MWContext * win_id))
FE_DEFINE(ClearCallNetlibAllTheTime, void, (MWContext * win_id))
FE_DEFINE(GraphProgressInit, void, (MWContext *context, URL_Struct *URL_s, int32 content_length))
FE_DEFINE(GraphProgressDestroy, void, (MWContext *context, URL_Struct *URL_s, int32 content_length, int32 total_bytes_read))
FE_DEFINE(GraphProgress, void, (MWContext *context, URL_Struct *URL_s, int32 bytes_received, int32 bytes_since_last_time, int32 content_length))
FE_DEFINE(UseFancyFTP, XP_Bool, (MWContext * window_id))
FE_DEFINE(UseFancyNewsgroupListing, XP_Bool, (MWContext *window_id))
FE_DEFINE(FileSortMethod, int, (MWContext * window_id))
FE_DEFINE(ShowAllNewsArticles, XP_Bool, (MWContext *window_id))
FE_DEFINE(Confirm, XP_Bool,(MWContext * context, const char * Msg))
FE_DEFINE(Prompt,char*,(MWContext * context, const char * Msg, const char * dflt))
FE_DEFINE(PromptWithCaption,char*,(MWContext * context, const char *caption, const char * Msg, const char * dflt))
FE_DEFINE(PromptUsernameAndPassword, XP_Bool, (MWContext *,const char *,char **, char **))
FE_DEFINE(PromptPassword,char*,(MWContext * context, const char * Msg))
FE_DEFINE(EnableClicking,void,(MWContext*))
FE_DEFINE(AllConnectionsComplete,void,(MWContext * context))
#ifdef XP_OS2 /* performance */
FE_DEFINE(GetMaxWidth,int, (MWContext * context, LO_TextStruct *text))
#endif
#ifdef LAYERS
FE_DEFINE(EraseBackground, void, (MWContext *, int, int32, int32, uint32, uint32, LO_Color *))
FE_DEFINE(SetDrawable, void, (MWContext *, CL_Drawable *))
FE_DEFINE(GetTextFrame, void, (MWContext *, LO_TextStruct *, int32, int32, XP_Rect *))
#ifdef XP_MAC
FE_DEFINE(GetDefaultBackgroundColor, void, (MWContext* context, LO_Color* color))
#endif
#endif
#ifdef TRANSPARENT_APPLET
/* these functions are to allow dealyed native window applet creation and transparent applet */
FE_DEFINE(HandleClippingView, void, (MWContext *pContext, struct LJAppletData *appletD, int x, int y, int width, int height))
FE_DEFINE(DrawJavaApp, void, (MWContext *pContext, int iLocation, LO_JavaAppStruct *pJava))
#endif
#undef FE_DEFINE
#undef MAKE_FE_FUNCS_PREFIX
#undef MAKE_FE_FUNCS_ASSIGN
#undef MAKE_FE_FUNCS_EXTERN
#undef MAKE_FE_FUNCS_STRUCT

View File

@ -1,219 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/* foobar Public API for mail (and news?) filters */
#ifndef MSG_RULE_H
#define MSG_RULE_H
/*
Terminology - Filter - either a Rule (defined with GUI) or a (Java) Script
Rule -
*/
#include "msg_srch.h"
typedef enum
{
FilterError_Success = 0, /* no error */
FilterError_First = SearchError_Last + 1, /* no functions return this; just for bookkeeping */
FilterError_NotImplemented, /* coming soon */
FilterError_OutOfMemory, /* out of memory */
FilterError_FileError, /* error reading or writing the rules file */
FilterError_InvalidVersion, /* invalid filter file version */
FilterError_InvalidIndex, /* Invalid filter index */
FilterError_InvalidMotion, /* invalid filter move motion */
FilterError_InvalidFilterType, /* method doesn't accept this filter type */
FilterError_NullPointer, /* a required pointer parameter was null */
FilterError_NotRule, /* tried to get rule for non-rule filter */
FilterError_NotScript, /* tried to get a script name for a non-script filter */
FilterError_InvalidAction, /* invalid action */
FilterError_SearchError, /* error in search code */
FilterError_Last /* no functions return this; just for bookkeeping */
} MSG_FilterError;
typedef enum
{
acNone, /* uninitialized state */
acMoveToFolder,
acChangePriority,
acDelete,
acMarkRead,
acKillThread,
acWatchThread
} MSG_RuleActionType;
typedef enum
{
filterInboxRule = 0x1,
filterInboxJavaScript = 0x2,
filterInbox = 0x3,
filterNewsRule = 0x4,
filterNewsJavaScript = 0x8,
filterNews=0xb,
filterAll=0xf
} MSG_FilterType;
typedef enum
{
filterUp,
filterDown
} MSG_FilterMotion;
typedef int32 MSG_FilterIndex;
/* opaque struct defs - defined in libmsg/pmsgfilt.h */
#ifdef XP_CPLUSPLUS
struct MSG_Filter;
struct MSG_Rule;
struct MSG_RuleAction;
struct MSG_FilterList;
#else
typedef struct MSG_FilterList MSG_FilterList;
typedef struct MSG_Filter MSG_Filter;
typedef struct MSG_Rule MSG_Rule;
typedef struct MSG_RuleAction MSG_RuleAction;
#endif
XP_BEGIN_PROTOS
/* Front ends call MSG_OpenFilterList to get a handle to a FilterList, of existing MSG_Filter *.
These are manipulated by the front ends as a result of user interaction
with dialog boxes. To apply the new list, fe's call MSG_CloseFilterList.
For example, if the user brings up the rule management UI, deletes a rule,
and presses OK, the front end calls MSG_RemoveFilterListAt, and
then MSG_CloseFilterList.
*/
MSG_FilterError MSG_OpenFilterList(MSG_Master *master, MSG_FilterType type, MSG_FilterList **filterList);
MSG_FilterError MSG_OpenFolderFilterList(MSG_Pane *pane, MSG_FolderInfo *folder, MSG_FilterType type, MSG_FilterList **filterList);
MSG_FilterError MSG_CloseFilterList(MSG_FilterList *filterList);
MSG_FilterError MSG_SaveFilterList(MSG_FilterList *filterList); /* save without deleting */
MSG_FilterError MSG_CancelFilterList(MSG_FilterList *filterList);
MSG_FolderInfo *MSG_GetFolderInfoForFilterList(MSG_FilterList *filterList);
MSG_FilterError MSG_GetFilterCount(MSG_FilterList *filterList, int32 *pCount);
MSG_FilterError MSG_GetFilterAt(MSG_FilterList *filterList,
MSG_FilterIndex filterIndex, MSG_Filter **filter);
/* these methods don't delete filters - they just change the list. FE still must
call MSG_DestroyFilter to delete a filter.
*/
MSG_FilterError MSG_SetFilterAt(MSG_FilterList *filterList,
MSG_FilterIndex filterIndex, MSG_Filter *filter);
MSG_FilterError MSG_RemoveFilterAt(MSG_FilterList *filterList,
MSG_FilterIndex filterIndex);
MSG_FilterError MSG_MoveFilterAt(MSG_FilterList *filterList,
MSG_FilterIndex filterIndex, MSG_FilterMotion motion);
MSG_FilterError MSG_InsertFilterAt(MSG_FilterList *filterList,
MSG_FilterIndex filterIndex, MSG_Filter *filter);
MSG_FilterError MSG_EnableLogging(MSG_FilterList *filterList, XP_Bool enable);
XP_Bool MSG_IsLoggingEnabled(MSG_FilterList *filterList);
/* In general, any data gotten with MSG_*Get is good until the owning object
is deleted, or the data is replaced with a MSG_*Set call. For example, the name
returned in MSG_GetFilterName is valid until either the filter is destroyed,
or MSG_SetFilterName is called on the same filter.
*/
MSG_FilterError MSG_CreateFilter (MSG_FilterType type, char *name, MSG_Filter **result);
MSG_FilterError MSG_DestroyFilter(MSG_Filter *filter);
MSG_FilterError MSG_GetFilterType(MSG_Filter *, MSG_FilterType *filterType);
MSG_FilterError MSG_EnableFilter(MSG_Filter *, XP_Bool enable);
MSG_FilterError MSG_IsFilterEnabled(MSG_Filter *, XP_Bool *enabled);
MSG_FilterError MSG_GetFilterRule(MSG_Filter *, MSG_Rule ** result);
MSG_FilterError MSG_GetFilterName(MSG_Filter *, char **name);
MSG_FilterError MSG_SetFilterName(MSG_Filter *, const char *name);
MSG_FilterError MSG_GetFilterDesc(MSG_Filter *, char **description);
MSG_FilterError MSG_SetFilterDesc(MSG_Filter*, const char *description);
MSG_FilterError MSG_GetFilterScript(MSG_Filter *, char **name);
MSG_FilterError MSG_SetFilterScript(MSG_Filter *, const char *name);
MSG_FilterError MSG_RuleAddTerm(MSG_Rule *,
MSG_SearchAttribute attrib, /* attribute for this term */
MSG_SearchOperator op, /* operator e.g. opContains */
MSG_SearchValue *value, /* value e.g. "Dogbert" */
XP_Bool BooleanAND, /* TRUE if AND is the boolean operator. FALSE if OR is the boolean operators */
char * arbitraryHeader); /* arbitrary header specified by user. ignored unless attrib = attribOtherHeader */
MSG_FilterError MSG_RuleGetNumTerms(MSG_Rule *, int32 *numTerms);
MSG_FilterError MSG_RuleGetTerm(MSG_Rule *, int32 termIndex,
MSG_SearchAttribute *attrib, /* attribute for this term */
MSG_SearchOperator *op, /* operator e.g. opContains */
MSG_SearchValue *value, /* value e.g. "Dogbert" */
XP_Bool *BooleanAnd, /* TRUE if AND is the boolean operator. FALSE if OR is the boolean operator */
char ** arbitraryHeader); /* arbitrary header specified by user. ignore unless attrib = attribOtherHeader */
MSG_FilterError MSG_RuleSetScope(MSG_Rule *, MSG_ScopeTerm *scope);
MSG_FilterError MSG_RuleGetScope(MSG_Rule *, MSG_ScopeTerm **scope);
/* if type is acChangePriority, value is a pointer to priority.
If type is acMoveToFolder, value is pointer to folder name.
Otherwise, value is ignored.
*/
MSG_FilterError MSG_RuleSetAction(MSG_Rule *, MSG_RuleActionType type, void *value);
MSG_FilterError MSG_RuleGetAction(MSG_Rule *, MSG_RuleActionType *type, void **value);
/* help FEs manage menu choices in Filter dialog box */
/* Use this to help build menus in the filter dialogs. See APIs below */
typedef struct MSG_RuleMenuItem
{
int16 attrib;
char name[32];
} MSG_RuleMenuItem;
MSG_FilterError MSG_GetRuleActionMenuItems (
MSG_FilterType type, /* type of filter */
MSG_RuleMenuItem *items, /* array of caller-allocated structs */
uint16 *maxItems); /* in- max array size; out- num returned */
MSG_FilterError MSG_GetFilterWidgetForAction( MSG_RuleActionType action,
MSG_SearchValueWidget *widget );
MSG_SearchError MSG_GetValuesForAction( MSG_RuleActionType action,
MSG_SearchMenuItem *items,
uint16 *maxItems);
void MSG_ViewFilterLog(MSG_Pane *pane);
/*
** Adding/editting javascript filters.
**
** The FE calls one of the below functions, along with a callback and some closure
** data. This callback is invoked when the user clicks OK in the JS filter dialog.
** If CANCEL is pressed, the callback is not invoked.
**
** If the user called MSG_EditJSFilter, the filter_index parameter of the callback
** is the same one passed in. If the user called MSG_NewJSFilter, the filter_index
** parameter is -1.
**
** The filter_changed parameter is TRUE if the user modified any of the fields of
** the javascript filter, and FALSE otherwise.
*/
typedef void (*JSFilterCallback)(void* arg, MSG_FilterIndex filter_index, XP_Bool filter_changed);
void MSG_EditJSFilter(MWContext *context, MSG_FilterList *filter_list,
MSG_FilterIndex filter_index,
JSFilterCallback cb, void *arg);
void MSG_NewJSFilter(MWContext *context, MSG_FilterList *filter_list,
MSG_FilterType filter_type, JSFilterCallback cb, void *arg);
XP_END_PROTOS
#endif

View File

@ -1,447 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/*
* Public API for searching mail, news, and LDAP
* pieces of this API are also used by filter rules and address book
*
*/
#ifndef _MSG_SRCH_H
#define _MSG_SRCH_H
#include "msgcom.h" /* for MSG_PRIORITY, MessageKey */
#include "dirprefs.h" /* for DIR_AttributeId */
#define FE_IMPLEMENTS_BOOLEAN_OR
#define B3_SEARCH_API
typedef enum
{
SearchError_First, /* no functions return this; just for bookkeeping */
SearchError_Success, /* no error */
SearchError_NotImplemented, /* coming soon */
SearchError_OutOfMemory, /* can't allocate required memory */
SearchError_NullPointer, /* a req'd pointer parameter was null */
SearchError_ScopeAgreement, /* attr or op not supp in this scope */
SearchError_ListTooSmall, /* menu item array not big enough */
SearchError_ResultSetEmpty, /* search done, no matches found */
SearchError_ResultSetTooBig, /* too many matches to get them all */
SearchError_InvalidAttribute, /* specified attrib not in enum */
SearchError_InvalidScope, /* specified scope not in enum */
SearchError_InvalidOperator, /* specified op not in enum */
SearchError_InvalidSearchTerm, /* cookie for search term is bogus */
SearchError_InvalidScopeTerm, /* cookie for scope term is bogus */
SearchError_InvalidResultElement, /* cookie for result element is bogus */
SearchError_InvalidPane, /* context probably bogus */
SearchError_InvalidStream, /* in strm bad (too short? bad magic?) */
SearchError_InvalidFolder, /* given folderInfo isn't searchable */
SearchError_InvalidIndex, /* the passed index is invalid */
SearchError_HostNotFound, /* couldn't connect to server */
SearchError_Timeout, /* network didn't respond */
SearchError_DBOpenFailed, /* couldn't open off-line msg db */
SearchError_NotAMatch, /* used internally for term eval */
SearchError_ScopeDone, /* used internally for scope list eval */
SearchError_Unknown, /* some random error */
SearchError_Last /* no functions return this; just for bookkeeping */
} MSG_SearchError;
typedef enum
{
scopeMailFolder,
scopeNewsgroup,
scopeLdapDirectory,
scopeOfflineNewsgroup,
scopeAllSearchableGroups
} MSG_ScopeAttribute;
/* NB: If you add elements to this enum, add only to the end, since
* RULES.DAT stores enum values persistently
*/
typedef enum
{
attribSender = 0, /* mail and news */
attribSubject,
attribBody,
attribDate,
attribPriority, /* mail only */
attribMsgStatus,
attribTo,
attribCC,
attribToOrCC,
attribCommonName, /* LDAP only */
attrib822Address,
attribPhoneNumber,
attribOrganization,
attribOrgUnit,
attribLocality,
attribStreetAddress,
attribSize,
attribAnyText, /* any header or body */
attribKeywords,
attribDistinguishedName, /* LDAP result elem only */
attribObjectClass,
attribJpegFile,
attribLocation, /* result list only */
attribMessageKey, /* message result elems */
attribAgeInDays, /* for purging old news articles */
attribGivenName, /* for sorting LDAP results */
attribSurname,
attribFolderInfo, /* for "view thread context" from result */
attribCustom1, /* custom LDAP attributes */
attribCustom2,
attribCustom3,
attribCustom4,
attribCustom5,
attribMessageId,
attribOtherHeader, /* for mail and news. MUST ALWAYS BE LAST attribute since we can have an arbitrary # of these...*/
kNumAttributes /* must be last attribute */
} MSG_SearchAttribute;
/* NB: If you add elements to this enum, add only to the end, since
* RULES.DAT stores enum values persistently
*/
typedef enum
{
opContains = 0, /* for text attributes */
opDoesntContain,
opIs, /* is and isn't also apply to some non-text attrs */
opIsnt,
opIsEmpty,
opIsBefore, /* for date attributes */
opIsAfter,
opIsHigherThan, /* for priority. opIs also applies */
opIsLowerThan,
opBeginsWith,
opEndsWith,
opSoundsLike, /* for LDAP phoenetic matching */
opLdapDwim, /* Do What I Mean for simple search */
opIsGreaterThan,
opIsLessThan,
kNumOperators /* must be last operator */
} MSG_SearchOperator;
/* FEs use this to help build the search dialog box */
typedef enum
{
widgetText,
widgetDate,
widgetMenu,
widgetInt, /* added to account for age in days which requires an integer field */
widgetNone
} MSG_SearchValueWidget;
/* Use this to specify the value of a search term */
typedef struct MSG_SearchValue
{
MSG_SearchAttribute attribute;
union
{
char *string;
MSG_PRIORITY priority;
time_t date;
uint32 msgStatus; /* see MSG_FLAG in msgcom.h */
uint32 size;
MessageKey key;
uint32 age; /* in days */
MSG_FolderInfo *folder;
} u;
} MSG_SearchValue;
/* Use this to help build menus in the search dialog. See APIs below */
#define kSearchMenuLength 64
typedef struct MSG_SearchMenuItem
{
int16 attrib;
char name[kSearchMenuLength];
XP_Bool isEnabled;
} MSG_SearchMenuItem;
#ifdef XP_CPLUSPLUS
struct MSG_ScopeTerm;
struct MSG_ResultElement;
struct DIR_Server;
#else
#include "dirprefs.h"
typedef struct MSG_ScopeTerm MSG_ScopeTerm;
typedef struct MSG_ResultElement MSG_ResultElement;
#endif
XP_BEGIN_PROTOS
/* manage lifetime of internal search memory */
MSG_SearchError MSG_SearchAlloc (MSG_Pane *); /* alloc memory in context */
MSG_SearchError MSG_SearchFree (MSG_Pane *); /* free memory in context */
MSG_SearchError MSG_AddSearchTerm (
MSG_Pane *searchPane, /* ptr to pane to add criteria */
MSG_SearchAttribute attrib, /* attribute for this term */
MSG_SearchOperator op, /* operator e.g. opContains */
MSG_SearchValue *value, /* value e.g. "Dogbert" */
XP_Bool BooleanAND, /* set to true if associated boolean operator is AND */
char * arbitraryHeader); /* user defined arbitrary header. ignored unless attrib = attribOtherHeader */
/* It's generally not necessary for the FE to read the list of terms after
* the list has been built. However, in our Basic/Advanced LDAP search dialogs
* the FE is supposed to remember the criteria, and since that information is
* lying around in the backend anyway, we'll just make it available to the FE
*/
MSG_SearchError MSG_CountSearchTerms (
MSG_Pane *searchPane,
int *numTerms);
MSG_SearchError MSG_GetNthSearchTerm (
MSG_Pane *searchPane,
int whichTerm,
MSG_SearchAttribute *attrib,
MSG_SearchOperator *op,
MSG_SearchValue *value);
MSG_SearchError MSG_CountSearchScopes (
MSG_Pane *searchPane,
int *numScopes);
MSG_SearchError MSG_GetNthSearchScope (
MSG_Pane *searchPane,
int which,
MSG_ScopeAttribute *scopeId,
void **scope);
/* add a scope (e.g. a mail folder) to the search */
MSG_SearchError MSG_AddScopeTerm (
MSG_Pane *searchPane, /* ptr to pane to add search scope */
MSG_ScopeAttribute attrib, /* what kind of scope term is this */
MSG_FolderInfo *folder); /* which folder to search */
/* special cases for LDAP since LDAP isn't really a folderInfo */
MSG_SearchError MSG_AddLdapScope (
MSG_Pane *searchPane,
DIR_Server *server);
MSG_SearchError MSG_AddAllLdapScopes (
MSG_Pane *searchPane,
XP_List *dirServerList);
/* Call this function everytime the scope changes! It informs the FE if
the current scope support custom header use. FEs should not display the
custom header dialog if custom headers are not supported */
XP_Bool MSG_ScopeUsesCustomHeaders(
MSG_Master * master,
MSG_ScopeAttribute scope,
void * selection, /* could be a folder or server based on scope */
XP_Bool forFilters); /* is this a filter we are talking about? */
XP_Bool MSG_IsStringAttribute( /* use this to determine if your attribute is a string attrib */
MSG_SearchAttribute);
/* add all scopes of a given type to the search */
MSG_SearchError MSG_AddAllScopes (
MSG_Pane *searchPane, /* ptr to pane to add scopes */
MSG_Master *master, /* mail or news scopes */
MSG_ScopeAttribute attrib); /* what kind of scopes to add */
/* begin execution of the search */
MSG_SearchError MSG_Search (
MSG_Pane *searchPane); /* So we know how to work async */
/* manage elements in list of search hits */
MSG_SearchError MSG_GetResultElement (
MSG_Pane *searchPane, /* ptr to pane containing results */
MSG_ViewIndex idx, /* zero-based index of result to get */
MSG_ResultElement **result); /* filled in resultElement. NOT allocated */
MSG_SearchError MSG_GetResultAttribute (
MSG_ResultElement *elem, /* which result elem to get value for */
MSG_SearchAttribute attrib, /* which attribute to get value for */
MSG_SearchValue **result); /* filled in value */
MSG_SearchError MSG_OpenResultElement (
MSG_ResultElement *elem, /* which result elem to open */
void *window); /* MSG_Pane* for mail/news, contxt for LDAP */
MWContextType MSG_GetResultElementType (
MSG_ResultElement *elem); /* context type needed for this elem */
MWContext *MSG_IsResultElementOpen (
MSG_ResultElement *elem); /* current context if open, NULL if not */
MSG_SearchError MSG_SortResultList (
MSG_Pane *searchPane, /* ptr to pane containing results */
MSG_SearchAttribute sortKey, /* which attribute is the sort key */
XP_Bool descending); /* T- sort descending, F- sort ascending */
MSG_SearchError MSG_DestroySearchValue (
MSG_SearchValue *value); /* free struct and heap-based struct elems */
MSG_SearchError MSG_ModifyLdapResult (
MSG_ResultElement *elem, /* which result element to modify */
MSG_SearchValue *val); /* new value to stuff in */
MSG_SearchError MSG_AddLdapResultsToAddressBook(
MSG_Pane *searchPane, /* ptr to pane containing results */
MSG_ViewIndex *indices, /* selection array */
int count); /* size of array */
MSG_SearchError MSG_ComposeFromLdapResults(
MSG_Pane *searchPane, /* ptr to pane containing results */
MSG_ViewIndex *indices, /* selection array */
int count); /* size of array */
/* help FEs manage menu selections in Search dialog box */
MSG_SearchError MSG_GetSearchWidgetForAttribute (
MSG_SearchAttribute attrib, /* which attr to get UI widget type for */
MSG_SearchValueWidget *widget); /* what kind of UI widget specifies attr */
/* For referring to DIR_Servers and MSG_FolderInfos polymorphically */
typedef struct MSG_ScopeUnion
{
MSG_ScopeAttribute *attribute;
union
{
DIR_Server *server;
MSG_FolderInfo *folder;
} u;
} MSG_ScopeUnion;
/* always call this routine b4 calling MSG_GetAttributesForSearchScopes to
determine how many elements your MSG_SearchMenuItem array needs to be */
MSG_SearchError MSG_GetNumAttributesForSearchScopes(
MSG_Master *master,
MSG_ScopeAttribute scope,
void ** selArray, /* selected items for LCD calculation */
uint16 selCount, /* number of selected items */
uint16 *numItems); /* out - number of attribute items for scope */
MSG_SearchError MSG_GetAttributesForSearchScopes (
MSG_Master *master,
MSG_ScopeAttribute scope,
void **selArray, /* selected items for LCD calculation */
uint16 selCount, /* number of selected items */
MSG_SearchMenuItem *items, /* array of caller-allocated structs */
uint16 *maxItems); /* in- max array size; out- num returned */
MSG_SearchError MSG_GetOperatorsForSearchScopes (
MSG_Master *master,
MSG_ScopeAttribute scope,
void **selArray, /* selected items for LCD calculation */
uint16 selCount, /* number of selected items */
MSG_SearchAttribute attrib, /* return available ops for this attrib */
MSG_SearchMenuItem *items, /* array of caller-allocated structs */
uint16 *maxItems); /* in- max array size; out- num returned */
MSG_SearchError MSG_GetScopeMenuForSearchMessages (
MSG_Master *master,
MSG_FolderInfo **selArray,
uint16 selCount,
MSG_SearchMenuItem *items,
uint16 *maxItems);
/* always call this routine b4 calling MSG_GetAttributesForFilterScopes to
determine how many elements your MSG_SearchMenuItem array needs to be */
MSG_SearchError MSG_GetNumAttributesForFilterScopes(
MSG_Master *master,
MSG_ScopeAttribute scope,
void ** selArray, /* selected items for LCD calculation */
uint16 selCount, /* number of selected items */
uint16 *numItems); /* out - number of attribute items for scope */
MSG_SearchError MSG_GetAttributesForFilterScopes (
MSG_Master *master,
MSG_ScopeAttribute scope,
void **selArray, /* selected items for LCD calculation */
uint16 selCount, /* number of selected items */
MSG_SearchMenuItem *items, /* array of caller-allocated structs */
uint16 *maxItems); /* in- max array size; out- num returned */
MSG_SearchError MSG_GetOperatorsForFilterScopes (
MSG_Master *master,
MSG_ScopeAttribute scope,
void **selArray, /* selected items for LCD calculation */
uint16 selCount, /* number of selected items */
MSG_SearchAttribute attrib, /* return available ops for this attrib */
MSG_SearchMenuItem *items, /* array of caller-allocated structs */
uint16 *maxItems); /* in- max array size; out- num returned */
/*****************************************************************************
These two functions have been added to the search APIs to help support Arbitrary
Headers. In particular, the FEs need to be able to grab a semaphore when they
create an edit headers dialog (we only want to allow 1 dialog to be open at a time).
AcquireEditHeadersSemaphore returns TRUE if the FE successfully acquired the semaphore
and FALSE if someone else acquired it. ReleaseEditHeaderSemaphore returns TRUE if you
were the original holder of the semaphore and the semaphore was released. FALSE if you
were not the original holder
**********************************************************************************/
XP_Bool MSG_AcquireEditHeadersSemaphore (MSG_Master * master, void * holder);
XP_Bool MSG_ReleaseEditHeadersSemaphore (MSG_Master * master, void * holder);
MSG_SearchError MSG_SearchAttribToDirAttrib (
MSG_SearchAttribute searchAttrib,
DIR_AttributeId *dirAttrib);
MSG_SearchError MSG_GetBasicLdapSearchAttributes (
DIR_Server *server,
MSG_SearchMenuItem *items,
int *maxItems);
/* maybe these belong in msgcom.h? */
void MSG_GetPriorityName (MSG_PRIORITY priority, char *name, uint16 max);
void MSG_GetUntranslatedPriorityName (MSG_PRIORITY priority,
char *name, uint16 max);
void MSG_GetStatusName (uint32 status, char *name, uint16 max);
MSG_PRIORITY MSG_GetPriorityFromString(const char *priority);
/* support for profile searching in Dredd */
MSG_SearchError MSG_SaveProfileStatus (MSG_Pane *searchPane, XP_Bool *enabled);
MSG_SearchError MSG_SaveProfile (MSG_Pane *searchPane, const char *profileName);
/* support for searching all Dredd groups + all subscribed groups */
MSG_SearchError MSG_AddAllSearchableGroupsStatus(MSG_Pane *searchPane, XP_Bool *enabled);
/* support for opening a search result in its thread pane context */
XP_Bool MSG_GoToFolderStatus (MSG_Pane *searchPane,
MSG_ViewIndex *indices,
int32 numIndices);
/* used between libnet and libmsg to allow searching for characters which
* are otherwise significant in news: URLs
*/
extern char *MSG_EscapeSearchUrl (const char *value);
extern char *MSG_UnEscapeSearchUrl (const char *value);
/* This is how "search:" of different mail/news folder types works */
extern int MSG_ProcessSearch (MWContext *context);
extern int MSG_InterruptSearch (MWContext *context);
XP_END_PROTOS
#endif /* _MSG_SRCH_H */

File diff suppressed because it is too large Load Diff

View File

@ -1,80 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/*
** msgmapi.h -- implements XP mail/news support for the Microsoft Mail API (MAPI)
**
*/
#ifndef _MSGMAPI_H
#define _MSGMAPI_H
#ifdef XP_WIN
#include "msgcom.h"
#include "abcom.h"
// rhp - to fix the problem caused by MSFT...grrrrr...
#ifndef MAPI_OLE // Because MSFT doesn't do this for us :-(
#include <mapi.h> // for MAPI specific types...
#endif
#ifdef XP_CPLUSPLUS
class MSG_MapiListContext;
#else
typedef struct MSG_MapiListContext MSG_MapiListContext;
#endif
XP_BEGIN_PROTOS
MessageKey MSG_GetFirstKeyInFolder (MSG_FolderInfo *folder, MSG_MapiListContext **cookie);
MessageKey MSG_GetNextKeyInFolder (MSG_MapiListContext *cookie);
XP_Bool MSG_GetMapiMessageById (MSG_FolderInfo *folder, MessageKey key, lpMapiMessage *message);
XP_Bool MSG_MarkMapiMessageRead (MSG_FolderInfo *folder, MessageKey key, XP_Bool read);
void MSG_FreeMapiMessage (lpMapiMessage msg);
/* Address Book Specific APIs to support MAPI calls for MAPIDetails and MAPIResolveName */
int AB_MAPI_ResolveName(
char * string,
AB_ContainerInfo ** ctr, /* caller allocates ptr to ctr, BE fills. Caller must close the ctr when done */
ABID * id);
/* Caller must free the character strings returned by these functions using XP_FREE */
char * AB_MAPI_GetEmailAddress(AB_ContainerInfo * ctr,ABID id);
char * AB_MAPI_GetFullName(AB_ContainerInfo * ctr, ABID id);
char * AB_MAPI_ConvertToDescription(AB_ContainerInfo * ctr);
AB_ContainerInfo * AB_MAPI_ConvertToContainer(char * description);
int AB_MAPI_CreatePropertySheetPane(
MWContext * context,
MSG_Master * master,
AB_ContainerInfo * ctr,
ABID id,
MSG_Pane ** personPane); /* BE fills the ptr with a person pane */
void AB_MAPI_CloseContainer(AB_ContainerInfo ** ctr);
XP_END_PROTOS
#endif /* XP_WIN */
#endif /* _MSGMAPI_H */

View File

@ -1,491 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/* msgnet.h --- prototypes for API's between libmsg and libnet.
*/
#ifndef _MSGNET_H_
#define _MSGNET_H_
#include "msgcom.h"
XP_BEGIN_PROTOS
/* so libnet can mark expired articles as read. */
extern int MSG_MarkMessageKeyRead (MSG_Pane *pane, MessageKey key, const char *xref);
/* record imap message flags in the db of the current pane (message or thread panes) */
extern void MSG_RecordImapMessageFlags(MSG_Pane* pane,
MessageKey msgKey,
imapMessageFlagsType flags);
/* notify libmsg of deleted messages */
extern void MSG_ImapMsgsDeleted(MSG_Pane *urlPane,
const char *onlineMailboxName,
XP_Bool deleteAllMsgs,
const char *doomedKeyString);
/* called to setup state before a copy download */
extern void MSG_StartImapMessageToOfflineFolderDownload(MWContext* context);
/* notify libmsg that inbox filtering is complete */
extern void MSG_ImapInboxFilteringComplete(MSG_Pane *urlPane);
/* notify libmsg that the online/offline synch is complete */
extern void MSG_ImapOnOffLineSynchComplete(MSG_Pane *urlPane);
/* notify libmsg that an imap folder load was interrupted */
extern void MSG_InterruptImapFolderLoad(MSG_Pane *urlPane, const char *hostName, const char *onlineFolderPath);
/* find a reference or NULL to the specified imap folder */
extern MSG_FolderInfo* MSG_FindImapFolder(MSG_Pane *urlPane, const char *hostName, const char *onlineFolderPath);
/* If there is a cached connection, for this folder, uncache it and return it */
extern TNavigatorImapConnection* MSG_UnCacheImapConnection(MSG_Master* master, const char *host, const char *folderName);
/* Cache this connection and return TRUE if there is not one there already, else false */
extern XP_Bool MSG_TryToCacheImapConnection(MSG_Master* master, const char *host, const char *folderName, TNavigatorImapConnection *connection);
extern void MSG_SetIMAPMessageUID (MessageKey key,
void *state);
extern const char *MSG_GetMessageIdFromState (void *state);
extern XP_Bool MSG_IsSaveDraftDeliveryState (void *state);
extern void MSG_SetUserAuthenticated (MSG_Master* master, XP_Bool bAuthenticated);
extern XP_Bool MSG_IsUserAuthenticated (MSG_Master* master);
extern void MSG_SetMailAccountURL(MSG_Master* master, const char *urlString);
extern const char *MSG_GetMailAccountURL(MSG_Master* master);
extern void MSG_SetNewsgroupUsername(MSG_Pane* pane, const char *username);
extern const char *MSG_GetNewsgroupUsername(MSG_Pane *pane);
extern void MSG_SetNewsgroupPassword(MSG_Pane* pane, const char *password);
extern const char *MSG_GetNewsgroupPassword(MSG_Pane *pane);
extern const char* MSG_GetPopHost(MSG_Prefs* prefs);
extern XP_Bool MSG_GetUseSSLForIMAP4(MSG_Pane *pane);
extern int32 MSG_GetIMAPSSLPort(MSG_Pane *pane);
/* called from libnet to clean up state from mailbox:copymessages */
extern void MSG_MessageCopyIsCompleted (struct MessageCopyInfo**);
/* called from libnet to determine if the current copy is finished */
extern XP_Bool MSG_IsMessageCopyFinished(struct MessageCopyInfo*);
/* called from mailbox and url libnet modules */
extern
int MSG_BeginCopyingMessages(MWContext *context);
extern
int MSG_FinishCopyingMessages(MWContext *context);
extern const char *MSG_GetIMAPHostUsername(MSG_Master *master, const char *hostName);
extern const char *MSG_GetIMAPHostPassword(MSG_Master *master, const char *hostName);
extern void MSG_SetIMAPHostPassword(MSG_Master *master, const char *hostName, const char *password);
extern int MSG_GetIMAPHostIsUsingSubscription(MSG_Master *master, const char *hostName, XP_Bool *usingSubscription);
extern XP_Bool MSG_GetIMAPHostDeleteIsMoveToTrash(MSG_Master *master, const char *hostName);
extern int IMAP_AddIMAPHost(const char *hostName, XP_Bool usingSubscription, XP_Bool overrideNamespaces,
const char *personalNamespacePrefix, const char *publicNamespacePrefixes, const char *otherUsersNamespacePrefixes);
typedef enum
{ MSG_NotRunning = 0x00000000
, MSG_RunningOnline = 0x00000001
, MSG_RunningOffline = 0x00000002
} MSG_RunningState;
extern MSG_FolderInfo *MSG_SetFolderRunningIMAPUrl(MSG_Pane *urlPane, const char *hostName, const char *onlineFolderPath, MSG_RunningState runningState);
extern void MSG_IMAPUrlFinished(MSG_FolderInfo *folder, URL_Struct *URL_s);
/* ===========================================================================
OFFLINE IMAP
===========================================================================
*/
extern uint32 MSG_GetImapMessageFlags(MSG_Pane *urlPane,
const char *hostName,
const char *onlineBoxName,
uint32 key);
extern void MSG_StartOfflineImapRetrieval(MSG_Pane *urlPane,
const char *hostName,
const char *onlineBoxName,
uint32 key,
void **offLineRetrievalData);
extern uint32 MSG_GetOfflineMessageSize(void *offLineRetrievalData);
extern int MSG_ProcessOfflineImap(void *offLineRetrievalData, char *socketBuffer, uint32 read_size);
extern int MSG_InterruptOfflineImap(void *offLineRetrievalData);
extern void MSG_GetNextURL(MSG_Pane *pane);
/* Returns the original pane that a progress pane was associated with. If
the given pane is not a progresspane, returns NULL. */
extern MSG_Pane* MSG_GetParentPane(MSG_Pane* progresspane);
/* do an imap biff of the imap inbox */
extern void MSG_ImapBiff(MWContext* context, MSG_Prefs* prefs);
/* The NNTP module of netlib calls these to feed XOVER data to the message
library, in response to a news:group.name URL having been opened.
If MSG_FinishXOVER() returns a message ID, that message will be loaded
next (used for selecting the first unread message in a group after
listing that group.)
The "out" arguments are (if non-NULL) a file descriptor to write the XOVER
line to, followed by a "\n". This is used by the XOVER-caching code.
*/
extern int MSG_InitXOVER (MSG_Pane* pane,
MSG_NewsHost* host,
const char* group_name,
uint32 first_msg, uint32 last_msg,
uint32 oldest_msg, uint32 youngest_msg,
void **data);
extern int MSG_ProcessXOVER (MSG_Pane* pane, char *line, void **data);
extern int MSG_ProcessNonXOVER (MSG_Pane* pane, char *line, void **data);
extern int MSG_FinishXOVER (MSG_Pane* pane, void **data, int status);
/* In case of XOVER failed due to the authentication process, we need to
do some clean up. So that we could have a fresh start once we pass the
authentication check.
*/
extern int MSG_ResetXOVER (MSG_Pane* pane, void **data);
/* These calls are used by libnet to determine which articles it ought to
get in a big newsgroup. */
extern int
MSG_GetRangeOfArtsToDownload(MSG_Pane* pane, void** data, MSG_NewsHost* host,
const char* group_name,
int32 first_possible, /* Oldest article available
from newsserver*/
int32 last_possible, /* Newest article available
from newsserver*/
int32 maxextra,
int32* first,
int32* last);
extern int
MSG_AddToKnownArticles(MSG_Pane *pane, MSG_NewsHost* host,
const char* groupname, int32 first, int32 last);
extern int MSG_InitAddArticleKeyToGroup(MSG_Pane *pane, MSG_NewsHost* host,
const char* groupName, void **parseState);
extern int MSG_AddArticleKeyToGroup(void *parse_state, int32 first);
extern int MSG_FinishAddArticleKeyToGroup(MSG_Pane *pane, void **parse_state);
/* After displaying a list of newsgroups, we need the NNTP module to go and
run "GROUP" commands for the ones for which we don't know the unread
article count. This function returns a count of how many groups we think
we're going to need this for (so we can display progress in a reasonable
way).
*/
extern int32 MSG_GetNewsRCCount(MSG_Pane* pane, MSG_NewsHost* host);
/* Gets the name of the next group that we want to get article counts for.
The caller must free the given name using XP_FREE().
MSG_DisplaySubscribedGroup() should get called with this group before
this call happens again. */
extern char* MSG_GetNewsRCGroup(MSG_Pane* pane, MSG_NewsHost* host);
/* In response to a "news://host/" URL; this is called once for each group
that was returned by MSG_GetNewsRCGroup(), after the NNTP GROUP command has
been run. It's also called whenever we actually visit the group (the user
clicks on the newsgroup line), in case the data has changed since the
initial passthrough. The "nowvisiting" parameter is TRUE in the latter
case, FALSE otherwise. */
extern int MSG_DisplaySubscribedGroup(MSG_Pane* pane,
MSG_NewsHost* host,
const char *group,
int32 oldest_message,
int32 youngest_message,
int32 total_messages,
XP_Bool nowvisiting);
/* In response to an NNTP GROUP command, the server said the group doesn't exist */
extern int MSG_GroupNotFound(MSG_Pane* pane,
MSG_NewsHost* host,
const char *group,
XP_Bool opening);
/* In response to a "news://host/?newgroups" URL, to ask the server for a
list of recently-added newsgroups. Similar to MSG_DisplaySubscribedGroup,
except that in this case, the group is not already in the list. */
extern int MSG_DisplayNewNewsGroup (MWContext *context,
MSG_NewsHost* host, const char *group_name,
int32 oldest_message,
int32 youngest_message);
/* News servers work better if you ask for message numbers instead of IDs.
So, the NNTP module asks us what the group and number of an ID is with
this. If we don't know, we return 0 for both. If the pane is not a
thead or message pane, this routine will fail.
*/
extern void MSG_NewsGroupAndNumberOfID (MSG_Pane *pane,
const char *message_id,
const char **group_return,
uint32 *message_number_return);
/* This routine is used by netlib to see if we have this article off-line
It might be combined with the above routine, but I'm not sure if this
is the way we're ultimately going to do this.
*/
extern XP_Bool MSG_IsOfflineArticle (MSG_Pane *pane,
const char *message_id,
const char **group_return,
uint32 *message_number_return);
extern int MSG_StartOfflineRetrieval(MSG_Pane *pane,
const char *group,
uint32 message_number,
void **offlineState);
extern int MSG_ProcessOfflineNews(void *offlineState, char *outputBuffer, int outputBufSize);
extern int MSG_InterruptOfflineNews(void *offlineState);
/* libnet callbacks for Dredd NNTP extensions */
extern void MSG_SupportsNewsExtensions (MSG_NewsHost *host, XP_Bool supports);
extern void MSG_AddNewsExtension (MSG_NewsHost *host, const char *ext);
extern XP_Bool MSG_QueryNewsExtension (MSG_NewsHost *host, const char *ext);
extern XP_Bool MSG_NeedsNewsExtension (MSG_NewsHost *host, const char *ext);
extern void MSG_AddSearchableGroup (MSG_NewsHost *host, const char *group);
extern void MSG_AddSearchableHeader (MSG_NewsHost *host, const char *header);
extern int MSG_AddProfileGroup (MSG_Pane *pane,
MSG_NewsHost* host,
const char *groupName);
extern int MSG_AddPrettyName(MSG_NewsHost* host,
const char *groupName, const char *prettyName);
extern int MSG_SetXActiveFlags(MSG_Pane *pane, char *groupName,
int32 firstPossibleArt,
int32 lastPossibleArt,
char *flags);
extern int MSG_AddSubscribedGroup (MSG_Pane *pane, const char *groupUrl);
extern void MSG_AddPropertyForGet (MSG_NewsHost *host, const char *property,
const char *value);
/* libnet calls this if it got an error 441 back from the newsserver. That
error almost certainly means that the newsserver already has a message
with the same message id. If this routine returns TRUE, then we were
pretty much expecting that error code, because we know we tried twice to
post the same message, and we can just ignore it. */
extern XP_Bool MSG_IsDuplicatePost(MSG_Pane* comppane);
/* libnet uses this on an error condition to tell libmsg to generate a new
message-id for the given composition. */
extern void MSG_ClearCompositionMessageID(MSG_Pane* comppane);
/* libnet uses this to determine the message-id for the given composition (so
it can test if this message was already posted.) */
extern const char* MSG_GetCompositionMessageID(MSG_Pane* comppane);
/* The "news:" and "mailbox:" protocol handlers call this when a message is
displayed, so that we can use the contents of the headers when composing
replies.
*/
extern void
MSG_ActivateReplyOptions(MSG_Pane* messagepane, MimeHeaders *headers);
/* Tell the subscribe pane about a new newsgroup we noticed. */
extern int
MSG_AddNewNewsGroup(MSG_Pane* pane, MSG_NewsHost* host,
const char* groupname, int32 oldest, int32 youngest,
const char *flag, XP_Bool bXactiveFlags);
/* tell the host info database that we're going to need to get the extra info
for this new newsgroup
*/
extern int MSG_SetGroupNeedsExtraInfo(MSG_NewsHost *host,
const char* groupname, XP_Bool needsExtra);
/* returns the name of the first group which needs extra info */
extern char *MSG_GetFirstGroupNeedingExtraInfo(MSG_NewsHost *host);
/* Find out from libmsg when we last checked for new newsgroups (so we know
what date to give the "newgroups" command.) */
extern time_t
MSG_NewsgroupsLastUpdatedTime(MSG_NewsHost* host);
/* The "mailbox:" protocol module uses these routines to invoke the mailbox
parser in libmsg.
*/
extern int MSG_BeginOpenFolderSock (MSG_Pane* pane,
const char *folder_name,
const char *message_id, int32 msgnum,
void **folder_ptr);
extern int MSG_FinishOpenFolderSock (MSG_Pane* pane,
const char *folder_name,
const char *message_id, int32 msgnum,
void **folder_ptr);
extern void MSG_CloseFolderSock (MSG_Pane* pane, const char *folder_name,
const char *message_id, int32 msgnum,
void *folder_ptr);
extern int MSG_OpenMessageSock (MSG_Pane* messagepane, const char *folder_name,
const char *msg_id, int32 msgnum,
void *folder_ptr, void **message_ptr,
int32 *content_length);
extern int MSG_ReadMessageSock (MSG_Pane* messagepane, const char *folder_name,
void *message_ptr, const char *message_id,
int32 msgnum, char *buffer, int32 buffer_size);
extern void MSG_CloseMessageSock (MSG_Pane* messagepane,
const char *folder_name,
const char *message_id, int32 msgnum,
void *message_ptr);
extern void MSG_PrepareToIncUIDL(MSG_Pane* messagepane, URL_Struct* url,
const char* uidl);
/* This is how "mailbox:?empty-trash" works
*/
extern int MSG_BeginEmptyTrash(MSG_Pane* folderpane, URL_Struct* url,
void** closure);
extern int MSG_FinishEmptyTrash(MSG_Pane* folderpane, URL_Struct* url,
void* closure);
extern int MSG_CloseEmptyTrashSock(MSG_Pane* folderpane, URL_Struct* url,
void* closure);
/* This is how "mailbox:?compress-folder" and
"mailbox:/foo/baz/nsmail/inbox?compress-folder" works. */
extern int MSG_BeginCompressFolder(MSG_Pane* pane, URL_Struct* url,
const char* foldername, void** closure);
extern int MSG_FinishCompressFolder(MSG_Pane* pane, URL_Struct* url,
const char* foldername, void* closure);
extern int MSG_CloseCompressFolderSock(MSG_Pane* pane, URL_Struct* url,
void* closure);
/* This is how "mailbox:?deliver-queued" works
*/
extern int MSG_BeginDeliverQueued(MSG_Pane* pane, URL_Struct* url,
void** closure);
extern int MSG_FinishDeliverQueued(MSG_Pane* pane, URL_Struct* url,
void* closure);
extern int MSG_CloseDeliverQueuedSock(MSG_Pane* pane, URL_Struct* url,
void* closure);
/* This is how "mailbox:?background" works */
extern int MSG_ProcessBackground(URL_Struct* urlstruct);
/* libnet --> libmsg glue for newsgroup searching */
extern void MSG_AddNewsXpatHit (MWContext *context, uint32 artNum);
extern void MSG_AddNewsSearchHit (MWContext *context, const char *resultLine);
/* libnet --> libmsg glue for imap mail folder searching */
extern void MSG_AddImapSearchHit (MWContext *context, const char *resultLine);
/* The POP3 protocol module uses these routines to hand us new messages.
*/
extern XP_Bool MSG_BeginMailDelivery (MSG_Pane* folderpane);
extern void MSG_AbortMailDelivery (MSG_Pane* folderpane);
extern void MSG_EndMailDelivery (MSG_Pane* folderpane);
extern void *MSG_IncorporateBegin (MSG_Pane* folderpane,
FO_Present_Types format_out,
char *pop3_uidl,
URL_Struct *url,
uint32 flags);
extern int MSG_IncorporateWrite (MSG_Pane* folderpane, void *closure,
const char *block, int32 length);
extern int MSG_IncorporateComplete(MSG_Pane* folderpane, void *closure);
extern int MSG_IncorporateAbort (MSG_Pane* folderpane, void *closure,
int status);
extern void MSG_ClearSenderAuthedFlag(MSG_Pane* folderpane, void *closure);
/* This is how the netlib registers the converters relevant to MIME message
display and composition.
*/
void MSG_RegisterConverters (void);
extern void
MSG_StartMessageDelivery (MSG_Pane *pane,
void *fe_data,
MSG_CompositionFields *fields,
XP_Bool digest_p,
XP_Bool dont_deliver_p,
const char *attachment1_type,
const char *attachment1_body,
uint32 attachment1_body_length,
const struct MSG_AttachmentData *attachments,
void *mimeRelatedPart, /* only used in compose pane */
void (*message_delivery_done_callback)
(MWContext *context,
void *fe_data,
int status,
const char *error_message));
/* When a message which has the `partial' bit set, meaning we only downloaded
the first 20 lines because it was huge, this function will be called to
return some HTML to tack onto the end of the message to explain that it
is truncated, and provide a clickable link which will download the whole
message.
*/
extern char *MSG_GeneratePartialMessageBlurb (MSG_Pane* messagepane,
URL_Struct *url, void *closure,
MimeHeaders *headers);
extern int MSG_GetUrlQueueSize (const char *url, MWContext *context);
extern XP_Bool MSG_RequestForReturnReceipt(MSG_Pane* pane);
extern XP_Bool MSG_SendingMDNInProgress(MSG_Pane* pane);
extern uint32 MSG_GetIMAPMessageSizeFromDB(MSG_Pane *masterPane, const char *hostName, char *folderName, char *id, XP_Bool idIsUid);
extern void MSG_RefreshFoldersForUpdatedIMAPHosts(MWContext *context);
extern XP_Bool MSG_MailCheck(MWContext *context, MSG_Prefs *prefs);
extern void MSG_Pop3MailCheck(MWContext *context);
extern int NET_parse_news_url (const char *url,
char **host_and_portP,
XP_Bool *securepP,
char **groupP,
char **message_idP,
char **command_specific_dataP);
extern char *MSG_GetArbitraryHeadersForHost(MSG_Master *master, const char *hostName);
XP_END_PROTOS
#endif

View File

@ -1,45 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/* msgtypes.h --- types for the mail/news reader module.
*/
#ifndef _MSGTYPES_H_
#define _MSGTYPES_H_
/* This file defines types that are used by libmsg. Actually, it's rather
underpopulated right now; much more should be moved here from msgcom.h. */
/* Instances of MSG_Pane are used to represent the various panes in the user
interfaces. The FolderPanes and MessagePanes must have a context associated
with them, but the ThreadPane generally does not. MSG_Pane is deliberately
an opaque type; FE's can't manipulate them except via the calls defined
here. */
#ifdef XP_CPLUSPLUS
class MSG_Pane;
#else
typedef struct MSG_Pane MSG_Pane;
#endif
#endif /* _MSGTYPES_H_ */

View File

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

View File

@ -1,134 +0,0 @@
/* -*- Mode: C; tab-width: 8; 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.
*/
/*
* np.h $Revision: 3.2 $
* Prototypes for functions exported by libplugin and called by the FEs or other XP libs.
* Prototypes for functions exported by the FEs and called by libplugin are in nppg.h.
*/
#ifndef _NP_H
#define _NP_H
#include "lo_ele.h"
#include "npapi.h"
#include "net.h"
#ifdef XP_UNIX
/* Aaagh. npapi.h include Xlib.h. Bool is being #defined by Xlib and
we are typedeffing it in the navigator. */
#ifdef Bool
#undef Bool
#endif /* Bool */
#endif
typedef enum { NP_Untyped = 0, NP_OLE, NP_Plugin } NPAppType;
typedef enum { NP_FullPage = 1, NP_Embedded } NPPageType;
typedef void* NPReference;
#define NPRefFromStart ((NPReference)NULL)
/* it's lame that this is supposed to support more than plugins but
it has plugin specific junk (wdata) in it -jg */
struct _NPEmbeddedApp {
struct _NPEmbeddedApp *next;
NPAppType type;
void *fe_data;
void *np_data;
NPWindow *wdata;
NPPageType pagePluginType;
};
/* Uncomment this to enable ANTHRAX. .c files affected: npglue.c, layembed.c, layobj.c */
/* amusil 1.8.98 */
/* #define ANTHRAX */
XP_BEGIN_PROTOS
extern void NPL_Init(void);
extern void NPL_Shutdown(void);
extern void NPL_RegisterDefaultConverters(void);
extern NPError NPL_RegisterPluginFile(const char* pluginname, const char* filename,
const char* description, void* pd);
extern NPError NPL_RegisterPluginType(NPMIMEType type, const char *extentstring,
const char* description, void* fileType, void* pd, XP_Bool enabled);
extern NPError NPL_RefreshPluginList(XP_Bool reloadPages);
extern NPBool NPL_IteratePluginFiles(NPReference* ref, char** name, char** filename, char** description);
extern NPBool NPL_IteratePluginTypes(NPReference* ref, NPReference plugin, NPMIMEType* type,
char*** extents, char** description, void** fileType);
extern char** NPL_FindPluginsForType(const char* typeToFind);
extern char* NPL_FindPluginEnabledForType(const char* typeToFind);
extern NPError NPL_EnablePlugin(NPMIMEType type,
const char* pluginname,
XP_Bool enabled);
extern NPError NPL_EnablePluginType(NPMIMEType type, void* pdesc, XP_Bool enabled);
extern NPError NPL_DisablePlugin(NPMIMEType type);
extern NPEmbeddedApp* NPL_EmbedCreate(MWContext *context, LO_EmbedStruct *embed_struct);
extern NPError NPL_EmbedStart(MWContext* cx, LO_EmbedStruct* embed_struct, NPEmbeddedApp* app);
extern void NPL_EmbedSize(NPEmbeddedApp *app);
/* ~~av the following is used in CGenericDoc::FreeEmbedElement */
extern int32 NPL_GetEmbedReferenceCount(NPEmbeddedApp *app);
extern void NPL_EmbedDelete(MWContext *context, LO_EmbedStruct *embed_struct);
extern XP_Bool NPL_IsLiveConnected(LO_EmbedStruct *embed);
extern int NPL_HandleEvent(NPEmbeddedApp *app, void *event, void* window); /* window may be NULL */
extern void NPL_Print(NPEmbeddedApp *app, void *printData);
extern void NPL_SamePage(MWContext *context);
extern void NPL_SameElement(LO_EmbedStruct *embed);
extern void NPL_DeleteSessionData(MWContext* context, void* sessionData);
extern XP_Bool NPL_HandleURL(MWContext *pContext, FO_Present_Types iFormatOut, URL_Struct *pURL,
Net_GetUrlExitFunc *pExitFunc);
#ifndef XP_MAC
extern void NPL_DisplayPluginsAsHTML(FO_Present_Types format_out, URL_Struct *urls, MWContext *cx);
#endif
extern void NPL_PreparePrint(MWContext* context, SHIST_SavedData* savedData);
extern NET_StreamClass* NPL_NewEmbedStream(FO_Present_Types format_out, void *type, URL_Struct *urls, MWContext *cx);
extern NET_StreamClass* NPL_NewPresentStream(FO_Present_Types format_out, void *type, URL_Struct *urls, MWContext *cx);
extern unsigned int NPL_WriteReady(NET_StreamClass *stream);
extern int NPL_Write(NET_StreamClass *stream, const unsigned char *str, int32 len);
extern void NPL_Complete(NET_StreamClass *stream);
extern void NPL_Abort(NET_StreamClass *stream, int status);
extern XP_Bool NPL_IsEmbedWindowed(NPEmbeddedApp *app);
extern void NPL_URLExit(URL_Struct *urls, int status, MWContext *cx);
#ifdef ANTHRAX
extern char** NPL_FindAppletsForType(const char* typeToFind);
extern char* NPL_FindAppletEnabledForMimetype(const char* mimetype);
extern NPError NPL_RegisterAppletType(NPMIMEType type);
#endif /* ANTHRAX */
PR_EXTERN(void) NPL_SetPluginWindow(void *data);
PR_EXTERN(struct NPIPlugin*) NPL_LoadPluginByType(const char* typeAttribute);
XP_END_PROTOS
#endif /* _NP_H */

View File

@ -1,570 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/*
* npapi.h $Revision: 3.2 $
* Netscape client plug-in API spec
*/
#ifndef _NPAPI_H_
#define _NPAPI_H_
#ifdef __OS2__
#pragma pack(1)
#endif
#include "jri.h" /* Java Runtime Interface */
#if defined (__OS2__ ) || defined (OS2)
# ifndef XP_OS2
# define XP_OS2 1
# endif /* XP_OS2 */
#endif /* __OS2__ */
#ifdef _WINDOWS
# ifndef XP_WIN
# define XP_WIN 1
# endif /* XP_WIN */
#endif /* _WINDOWS */
#ifdef __MWERKS__
# define _declspec __declspec
# ifdef macintosh
# ifndef XP_MAC
# define XP_MAC 1
# endif /* XP_MAC */
# endif /* macintosh */
# ifdef __INTEL__
# undef NULL
# ifndef XP_WIN
# define XP_WIN 1
# endif /* __INTEL__ */
# endif /* XP_PC */
#endif /* __MWERKS__ */
#ifdef XP_MAC
#include <Quickdraw.h>
#include <Events.h>
#endif
#ifdef XP_UNIX
#include <X11/Xlib.h>
#include <X11/Xutil.h>
#endif
/*----------------------------------------------------------------------*/
/* Plugin Version Constants */
/*----------------------------------------------------------------------*/
#define NP_VERSION_MAJOR 0
#define NP_VERSION_MINOR 12
/* The OS/2 version of Netscape uses RC_DATA to define the
mime types, file extentions, etc that are required.
Use a vertical bar to seperate types, end types with \0.
FileVersion and ProductVersion are 32bit ints, all other
entries are strings the MUST be terminated wwith a \0.
AN EXAMPLE:
RCDATA NP_INFO_ProductVersion { 1,0,0,1,}
RCDATA NP_INFO_MIMEType { "video/x-video|",
"video/x-flick\0" }
RCDATA NP_INFO_FileExtents { "avi|",
"flc\0" }
RCDATA NP_INFO_FileOpenName{ "MMOS2 video player(*.avi)|",
"MMOS2 Flc/Fli player(*.flc)\0" }
RCDATA NP_INFO_FileVersion { 1,0,0,1 }
RCDATA NP_INFO_CompanyName { "Netscape Communications\0" }
RCDATA NP_INFO_FileDescription { "NPAVI32 Extension DLL\0"
RCDATA NP_INFO_InternalName { "NPAVI32\0" )
RCDATA NP_INFO_LegalCopyright { "Copyright Netscape Communications \251 1996\0"
RCDATA NP_INFO_OriginalFilename { "NVAPI32.DLL" }
RCDATA NP_INFO_ProductName { "NPAVI32 Dynamic Link Library\0" }
*/
/* RC_DATA types for version info - required */
#define NP_INFO_ProductVersion 1
#define NP_INFO_MIMEType 2
#define NP_INFO_FileOpenName 3
#define NP_INFO_FileExtents 4
/* RC_DATA types for version info - used if found */
#define NP_INFO_FileDescription 5
#define NP_INFO_ProductName 6
/* RC_DATA types for version info - optional */
#define NP_INFO_CompanyName 7
#define NP_INFO_FileVersion 8
#define NP_INFO_InternalName 9
#define NP_INFO_LegalCopyright 10
#define NP_INFO_OriginalFilename 11
#ifndef RC_INVOKED
/*----------------------------------------------------------------------*/
/* Definition of Basic Types */
/*----------------------------------------------------------------------*/
#ifndef _UINT16
typedef unsigned short uint16;
#endif
#ifndef _UINT32
#if defined(__alpha)
typedef unsigned int uint32;
#else /* __alpha */
typedef unsigned long uint32;
#endif /* __alpha */
#endif
#ifndef _INT16
typedef short int16;
#endif
#ifndef _INT32
#if defined(__alpha)
typedef int int32;
#else /* __alpha */
typedef long int32;
#endif /* __alpha */
#endif
#ifndef FALSE
#define FALSE (0)
#endif
#ifndef TRUE
#define TRUE (1)
#endif
#ifndef NULL
#define NULL (0L)
#endif
typedef unsigned char NPBool;
typedef int16 NPError;
typedef int16 NPReason;
typedef char* NPMIMEType;
/*----------------------------------------------------------------------*/
/* Structures and definitions */
/*----------------------------------------------------------------------*/
#ifdef XP_MAC
#pragma options align=mac68k
#endif
/*
* NPP is a plug-in's opaque instance handle
*/
typedef struct _NPP
{
void* pdata; /* plug-in private data */
void* ndata; /* netscape private data */
} NPP_t;
typedef NPP_t* NPP;
typedef struct _NPStream
{
void* pdata; /* plug-in private data */
void* ndata; /* netscape private data */
const char* url;
uint32 end;
uint32 lastmodified;
void* notifyData;
} NPStream;
typedef struct _NPByteRange
{
int32 offset; /* negative offset means from the end */
uint32 length;
struct _NPByteRange* next;
} NPByteRange;
typedef struct _NPSavedData
{
int32 len;
void* buf;
} NPSavedData;
typedef struct _NPRect
{
uint16 top;
uint16 left;
uint16 bottom;
uint16 right;
} NPRect;
typedef struct _NPSize
{
int32 width;
int32 height;
} NPSize;
#ifdef XP_UNIX
/*
* Unix specific structures and definitions
*/
/*
* Callback Structures.
*
* These are used to pass additional platform specific information.
*/
enum {
NP_SETWINDOW = 1,
NP_PRINT
};
typedef struct
{
int32 type;
} NPAnyCallbackStruct;
typedef struct
{
int32 type;
Display* display;
Visual* visual;
Colormap colormap;
unsigned int depth;
} NPSetWindowCallbackStruct;
typedef struct
{
int32 type;
FILE* fp;
} NPPrintCallbackStruct;
#endif /* XP_UNIX */
/*
* List of variable names for which NPP_GetValue shall be implemented
*/
typedef enum {
NPPVpluginNameString = 1,
NPPVpluginDescriptionString,
NPPVpluginWindowBool,
NPPVpluginTransparentBool,
NPPVjavaClass,
NPPVpluginWindowSize,
NPPVpluginTimerInterval
} NPPVariable;
/*
* List of variable names for which NPN_GetValue is implemented by Mozilla
*/
typedef enum {
NPNVxDisplay = 1,
NPNVxtAppContext,
NPNVnetscapeWindow,
NPNVjavascriptEnabledBool,
NPNVasdEnabledBool,
NPNVisOfflineBool
} NPNVariable;
/*
* The type of a NPWindow - it specifies the type of the data structure
* returned in the window field.
*/
typedef enum {
NPWindowTypeWindow = 1,
NPWindowTypeDrawable
} NPWindowType;
typedef struct _NPWindow
{
void* window; /* Platform specific window handle */
/* OS/2: x - Position of bottom left corner */
/* OS/2: y - relative to visible netscape window */
uint32 x; /* Position of top left corner relative */
uint32 y; /* to a netscape page. */
uint32 width; /* Maximum window size */
uint32 height;
NPRect clipRect; /* Clipping rectangle in port coordinates */
/* Used by MAC only. */
#ifdef XP_UNIX
void * ws_info; /* Platform-dependent additonal data */
#endif /* XP_UNIX */
NPWindowType type; /* Is this a window or a drawable? */
} NPWindow;
typedef struct _NPFullPrint
{
NPBool pluginPrinted; /* Set TRUE if plugin handled fullscreen */
/* printing */
NPBool printOne; /* TRUE if plugin should print one copy */
/* to default printer */
void* platformPrint; /* Platform-specific printing info */
} NPFullPrint;
typedef struct _NPEmbedPrint
{
NPWindow window;
void* platformPrint; /* Platform-specific printing info */
} NPEmbedPrint;
typedef struct _NPPrint
{
uint16 mode; /* NP_FULL or NP_EMBED */
union
{
NPFullPrint fullPrint; /* if mode is NP_FULL */
NPEmbedPrint embedPrint; /* if mode is NP_EMBED */
} print;
} NPPrint;
#ifdef XP_MAC
typedef EventRecord NPEvent;
#elif defined(XP_WIN)
typedef struct _NPEvent
{
uint16 event;
uint32 wParam;
uint32 lParam;
} NPEvent;
#elif defined(XP_OS2)
typedef struct _NPEvent
{
uint32 event;
uint32 wParam;
uint32 lParam;
} NPEvent;
#elif defined (XP_UNIX)
typedef XEvent NPEvent;
#else
typedef void* NPEvent;
#endif /* XP_MAC */
#ifdef XP_MAC
typedef RgnHandle NPRegion;
#elif defined(XP_WIN)
typedef HRGN NPRegion;
#elif defined(XP_UNIX)
typedef Region NPRegion;
#else
typedef void *NPRegion;
#endif /* XP_MAC */
#ifdef XP_MAC
/*
* Mac-specific structures and definitions.
*/
typedef struct NP_Port
{
CGrafPtr port; /* Grafport */
int32 portx; /* position inside the topmost window */
int32 porty;
} NP_Port;
/*
* Non-standard event types that can be passed to HandleEvent
*/
#define getFocusEvent (osEvt + 16)
#define loseFocusEvent (osEvt + 17)
#define adjustCursorEvent (osEvt + 18)
#endif /* XP_MAC */
/*
* Values for mode passed to NPP_New:
*/
#define NP_EMBED 1
#define NP_FULL 2
/*
* Values for stream type passed to NPP_NewStream:
*/
#define NP_NORMAL 1
#define NP_SEEK 2
#define NP_ASFILE 3
#define NP_ASFILEONLY 4
#define NP_MAXREADY (((unsigned)(~0)<<1)>>1)
#ifdef XP_MAC
#pragma options align=reset
#endif
/*----------------------------------------------------------------------*/
/* Error and Reason Code definitions */
/*----------------------------------------------------------------------*/
/*
* Values of type NPError:
*/
#define NPERR_BASE 0
#define NPERR_NO_ERROR (NPERR_BASE + 0)
#define NPERR_GENERIC_ERROR (NPERR_BASE + 1)
#define NPERR_INVALID_INSTANCE_ERROR (NPERR_BASE + 2)
#define NPERR_INVALID_FUNCTABLE_ERROR (NPERR_BASE + 3)
#define NPERR_MODULE_LOAD_FAILED_ERROR (NPERR_BASE + 4)
#define NPERR_OUT_OF_MEMORY_ERROR (NPERR_BASE + 5)
#define NPERR_INVALID_PLUGIN_ERROR (NPERR_BASE + 6)
#define NPERR_INVALID_PLUGIN_DIR_ERROR (NPERR_BASE + 7)
#define NPERR_INCOMPATIBLE_VERSION_ERROR (NPERR_BASE + 8)
#define NPERR_INVALID_PARAM (NPERR_BASE + 9)
#define NPERR_INVALID_URL (NPERR_BASE + 10)
#define NPERR_FILE_NOT_FOUND (NPERR_BASE + 11)
#define NPERR_NO_DATA (NPERR_BASE + 12)
#define NPERR_STREAM_NOT_SEEKABLE (NPERR_BASE + 13)
/*
* Values of type NPReason:
*/
#define NPRES_BASE 0
#define NPRES_DONE (NPRES_BASE + 0)
#define NPRES_NETWORK_ERR (NPRES_BASE + 1)
#define NPRES_USER_BREAK (NPRES_BASE + 2)
/*
* Don't use these obsolete error codes any more.
*/
#define NP_NOERR NP_NOERR_is_obsolete_use_NPERR_NO_ERROR
#define NP_EINVAL NP_EINVAL_is_obsolete_use_NPERR_GENERIC_ERROR
#define NP_EABORT NP_EABORT_is_obsolete_use_NPRES_USER_BREAK
/*
* Version feature information
*/
#define NPVERS_HAS_STREAMOUTPUT 8
#define NPVERS_HAS_NOTIFICATION 9
#define NPVERS_HAS_LIVECONNECT 9
#define NPVERS_WIN16_HAS_LIVECONNECT 9
#define NPVERS_68K_HAS_LIVECONNECT 11
#define NPVERS_HAS_WINDOWLESS 11
/*----------------------------------------------------------------------*/
/* Function Prototypes */
/*----------------------------------------------------------------------*/
#if defined(_WINDOWS) && !defined(WIN32)
#define NP_LOADDS _loadds
#else
#if defined(__OS2__)
#define NP_LOADDS _System
#else
#define NP_LOADDS
#endif
#endif
#ifdef __cplusplus
extern "C" {
#endif
/*
* NPP_* functions are provided by the plugin and called by the navigator.
*/
#ifdef XP_UNIX
char* NPP_GetMIMEDescription(void);
#endif /* XP_UNIX */
NPError NP_LOADDS NPP_Initialize(void);
void NP_LOADDS NPP_Shutdown(void);
NPError NP_LOADDS NPP_New(NPMIMEType pluginType, NPP instance,
uint16 mode, int16 argc, char* argn[],
char* argv[], NPSavedData* saved);
NPError NP_LOADDS NPP_Destroy(NPP instance, NPSavedData** save);
NPError NP_LOADDS NPP_SetWindow(NPP instance, NPWindow* window);
NPError NP_LOADDS NPP_NewStream(NPP instance, NPMIMEType type,
NPStream* stream, NPBool seekable,
uint16* stype);
NPError NP_LOADDS NPP_DestroyStream(NPP instance, NPStream* stream,
NPReason reason);
int32 NP_LOADDS NPP_WriteReady(NPP instance, NPStream* stream);
int32 NP_LOADDS NPP_Write(NPP instance, NPStream* stream, int32 offset,
int32 len, void* buffer);
void NP_LOADDS NPP_StreamAsFile(NPP instance, NPStream* stream,
const char* fname);
void NP_LOADDS NPP_Print(NPP instance, NPPrint* platformPrint);
int16 NP_LOADDS NPP_HandleEvent(NPP instance, void* event);
void NP_LOADDS NPP_URLNotify(NPP instance, const char* url,
NPReason reason, void* notifyData);
jref NP_LOADDS NPP_GetJavaClass(void);
NPError NP_LOADDS NPP_GetValue(void *instance, NPPVariable variable,
void *value);
NPError NP_LOADDS NPP_SetValue(void *instance, NPNVariable variable,
void *value);
/*
* NPN_* functions are provided by the navigator and called by the plugin.
*/
void NP_LOADDS NPN_Version(int* plugin_major, int* plugin_minor,
int* netscape_major, int* netscape_minor);
NPError NP_LOADDS NPN_GetURLNotify(NPP instance, const char* url,
const char* target, void* notifyData);
NPError NP_LOADDS NPN_GetURL(NPP instance, const char* url,
const char* target);
NPError NP_LOADDS NPN_PostURLNotify(NPP instance, const char* url,
const char* target, uint32 len,
const char* buf, NPBool file,
void* notifyData);
NPError NP_LOADDS NPN_PostURL(NPP instance, const char* url,
const char* target, uint32 len,
const char* buf, NPBool file);
NPError NP_LOADDS NPN_RequestRead(NPStream* stream, NPByteRange* rangeList);
NPError NP_LOADDS NPN_NewStream(NPP instance, NPMIMEType type,
const char* target, NPStream** stream);
int32 NP_LOADDS NPN_Write(NPP instance, NPStream* stream, int32 len,
void* buffer);
NPError NP_LOADDS NPN_DestroyStream(NPP instance, NPStream* stream,
NPReason reason);
void NP_LOADDS NPN_Status(NPP instance, const char* message);
const char* NP_LOADDS NPN_UserAgent(NPP instance);
void* NP_LOADDS NPN_MemAlloc(uint32 size);
void NP_LOADDS NPN_MemFree(void* ptr);
uint32 NP_LOADDS NPN_MemFlush(uint32 size);
void NP_LOADDS NPN_ReloadPlugins(NPBool reloadPages);
JRIEnv* NP_LOADDS NPN_GetJavaEnv(void);
jref NP_LOADDS NPN_GetJavaPeer(NPP instance);
NPError NP_LOADDS NPN_GetValue(NPP instance, NPNVariable variable,
void *value);
NPError NP_LOADDS NPN_SetValue(NPP instance, NPPVariable variable,
void *value);
void NP_LOADDS NPN_InvalidateRect(NPP instance, NPRect *invalidRect);
void NP_LOADDS NPN_InvalidateRegion(NPP instance, NPRegion invalidRegion);
void NP_LOADDS NPN_ForceRedraw(NPP instance);
#ifdef __cplusplus
} /* end extern "C" */
#endif
#endif /* RC_INVOKED */
#ifdef __OS2__
#pragma pack()
#endif
#endif /* _NPAPI_H_ */

View File

@ -1,52 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/*
* npassoc.h $Revision: 3.1 $
* xp filetype associations
*/
#ifndef _NPASSOC_H
#define _NPASSOC_H
#include "xp_core.h"
typedef struct _NPFileTypeAssoc {
char* type; /* a MIME type */
char* description; /* Intelligible description */
char** extentlist; /* a NULL-terminated list of file extensions */
char* extentstring; /* the same extensions, as a single string */
void* fileType; /* platform-specific file selector magic */
struct _NPFileTypeAssoc* pNext;
} NPFileTypeAssoc;
XP_BEGIN_PROTOS
extern NPFileTypeAssoc* NPL_NewFileAssociation(const char *type, const char *extensions,
const char *description, void *fileType);
extern void* NPL_DeleteFileAssociation(NPFileTypeAssoc *fassoc);
extern void NPL_RegisterFileAssociation(NPFileTypeAssoc *fassoc);
extern NPFileTypeAssoc* NPL_RemoveFileAssociation(NPFileTypeAssoc *fassoc);
extern NPFileTypeAssoc* NPL_GetFileAssociation(const char *type);
XP_END_PROTOS
#endif /* _NPASSOC_H */

View File

@ -1,19 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/* blank ldap header just to satisfy MSVC dependency generator */

View File

@ -1,54 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 nspr_locks_h___
#define nspr_locks_h___
/* many people in libnet [mkautocf.c ...] (and possibly others) get
* NSPR20 for free by including nslocks.h. To minimize changes during
* the javaectomy effort, we are including this file (where previously
* it was only included if java was included.
*/
#include "prmon.h"
#ifdef NSPR20
#ifdef XP_MAC
#include "prpriv.h" /* for MonitorEntryCount */
#else
#include "private/prpriv.h"
#endif
#endif /* NSPR20 */
#if defined(JAVA)
XP_BEGIN_PROTOS
extern PRMonitor* libnet_asyncIO;
XP_END_PROTOS
#define LIBNET_LOCK() PR_EnterMonitor(libnet_asyncIO)
#define LIBNET_UNLOCK() PR_ExitMonitor(libnet_asyncIO)
#define LIBNET_IS_LOCKED() PR_InMonitor(libnet_asyncIO)
#else /* !JAVA */
#define LIBNET_LOCK()
#define LIBNET_UNLOCK()
#define LIBNET_IS_LOCKED() 1
#endif /* JAVA */
#endif /* nspr_locks_h___ */

View File

@ -1,120 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/**********************************************************************
* ntOS.h - functionality used bt NT Operating System
*
**********************************************************************/
#ifndef _ntos_h
#define _ntos_h
#ifdef __cplusplus
extern "C" { /* Assume C declarations for C++ */
#endif /* __cplusplus */
/* prototypes for info.c */
typedef enum {
OS_WIN95,
OS_WINNT,
OS_WIN32S,
OS_UNKNOWN
} OS_TYPE;
typedef enum {
PROCESSOR_I386,
PROCESSOR_ALPHA,
PROCESSOR_MIPS,
PROCESSOR_PPC,
PROCESSOR_UNKNOWN
} PROCESSOR_TYPE;
OS_TYPE INFO_GetOperatingSystem ();
DWORD INFO_GetOperatingSystemMajorVersion ();
DWORD INFO_GetOperatingSystemMinorVersion ();
void OS_GetComputerName (LPTSTR computerName, int nComputerNameLength );
PROCESSOR_TYPE OS_GetProcessor ();
/* prototypes for path.c */
DWORD WINAPI PATH_RemoveRelative ( char * path );
DWORD WINAPI PATH_ConvertNtSlashesToUnix( LPCTSTR lpszNtPath, LPSTR lpszUnixPath );
/* prototypes for registry.c */
BOOL REG_CheckIfKeyExists( HKEY hKey, LPCTSTR registryKey );
BOOL REG_CreateKey( HKEY hKey, LPCTSTR registryKey );
BOOL REG_DeleteKey( HKEY hKey, LPCTSTR registryKey );
BOOL
REG_GetRegistryParameter(
HKEY hKey,
LPCTSTR registryKey,
LPTSTR QueryValueName,
LPDWORD ValueType,
LPBYTE ValueBuffer,
LPDWORD ValueBufferSize
);
BOOL
REG_SetRegistryParameter(
HKEY hKey,
LPCTSTR registryKey,
LPTSTR valueName,
DWORD valueType,
LPCTSTR ValueString,
DWORD valueStringLength
);
BOOL
REG_GetSubKeysInfo(
HKEY hKey,
LPCTSTR registryKey,
LPDWORD lpdwNumberOfSubKeys,
LPDWORD lpdwMaxSubKeyLength
);
BOOL
REG_GetSubKey( HKEY hKey,
LPCTSTR registryKey,
DWORD nSubKeyIndex,
LPTSTR registrySubKeyBuffer,
DWORD subKeyBufferSize
);
/* prototypes for service.c */
#define SERVRET_ERROR 0
#define SERVRET_INSTALLED 1
#define SERVRET_STARTING 2
#define SERVRET_STARTED 3
#define SERVRET_STOPPING 4
#define SERVRET_REMOVED 5
DWORD SERVICE_GetNTServiceStatus(LPCTSTR serviceName, LPDWORD lpLastError );
DWORD SERVICE_InstallNTService(LPCTSTR serviceName, LPCTSTR serviceExe );
DWORD SERVICE_RemoveNTService(LPCTSTR serviceName);
DWORD SERVICE_StartNTService(LPCTSTR serviceName);
DWORD SERVICE_StopNTService(LPCTSTR serviceName);
#ifdef __cplusplus
}
#endif /* __cplusplus */
#endif

View File

@ -1,207 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 _NetscapeTypes_
#define _NetscapeTypes_
#include "xp_core.h"
/*
netlib
*/
typedef int FO_Present_Types;
typedef struct URL_Struct_ URL_Struct;
typedef struct _NET_StreamClass NET_StreamClass;
/*
* libi18n
*/
typedef struct OpaqueCCCDataObject *CCCDataObject;
typedef struct OpaqueINTL_CharSetInfo *INTL_CharSetInfo;
/* How to refill when there's a cache miss */
typedef enum NET_ReloadMethod
{
NET_DONT_RELOAD, /* use the cache */
NET_RESIZE_RELOAD, /* use the cache -- special for resizing */
NET_NORMAL_RELOAD, /* use IMS gets for reload */
NET_SUPER_RELOAD, /* retransfer everything */
NET_CACHE_ONLY_RELOAD /* Don't do anything if we miss in the cache.
(For the image library) */
} NET_ReloadMethod;
/*
plugins
*/
typedef struct _NPEmbeddedApp NPEmbeddedApp;
/*
history
*/
typedef struct _History_entry History_entry;
typedef struct History_ History;
/*
bookmarks (so shist.h doesn't have to include all of bkmks.h.)
Note, BM_Entry_struct is defined in bkmks.c. Not good practice
since this hides dependency info about the struct i.e., if you
change the struct, clients of the struct in other source files
will not indirectly recompile.
*/
typedef struct BM_Entry_struct BM_Entry;
/*
parser
*/
typedef struct _PA_Functions PA_Functions;
typedef struct PA_Tag_struct PA_Tag;
/*
layout
*/
typedef union LO_Element_struct LO_Element;
typedef struct LO_AnchorData_struct LO_AnchorData;
typedef struct LO_Color_struct LO_Color;
typedef struct LO_TextAttr_struct LO_TextAttr;
typedef struct LO_TextInfo_struct LO_TextInfo;
typedef struct LO_TextStruct_struct LO_TextStruct;
typedef struct LO_ImageAttr_struct LO_ImageAttr;
typedef struct LO_ImageStruct_struct LO_ImageStruct;
typedef struct LO_SubDocStruct_struct LO_SubDocStruct;
typedef struct LO_CommonPluginStruct_struct LO_CommonPluginStruct;
typedef struct LO_EmbedStruct_struct LO_EmbedStruct;
#ifdef SHACK
typedef struct LO_BuiltinStruct_struct LO_BuiltinStruct;
#endif /* SHACK */
typedef struct LO_JavaAppStruct_struct LO_JavaAppStruct;
typedef struct LO_EdgeStruct_struct LO_EdgeStruct;
typedef struct LO_ObjectStruct_struct LO_ObjectStruct;
typedef union LO_FormElementData_struct LO_FormElementData;
typedef struct lo_FormElementOptionData_struct lo_FormElementOptionData;
typedef struct lo_FormElementSelectData_struct lo_FormElementSelectData;
typedef struct lo_FormElementTextData_struct lo_FormElementTextData;
typedef struct lo_FormElementTextareaData_struct lo_FormElementTextareaData;
typedef struct lo_FormElementMinimalData_struct lo_FormElementMinimalData;
typedef struct lo_FormElementToggleData_struct lo_FormElementToggleData;
typedef struct lo_FormElementObjectData_struct lo_FormElementObjectData;
typedef struct lo_FormElementKeygenData_struct lo_FormElementKeygenData;
typedef struct LO_Any_struct LO_Any;
typedef struct LO_FormSubmitData_struct LO_FormSubmitData;
typedef struct LO_FormElementStruct_struct LO_FormElementStruct;
typedef struct LO_LinefeedStruct_struct LO_LinefeedStruct;
typedef struct LO_HorizRuleStruct_struct LO_HorizRuleStruct;
typedef struct LO_BulletStruct_struct LO_BulletStruct;
/* was misspelled as LO_BullettStruct */
#define LO_BullettStruct LO_BulletStruct
typedef struct LO_TableStruct_struct LO_TableStruct;
typedef struct LO_CellStruct_struct LO_CellStruct;
typedef struct LO_Position_struct LO_Position;
typedef struct LO_Selection_struct LO_Selection;
typedef struct LO_HitLineResult_struct LO_HitLineResult;
typedef struct LO_HitElementResult_struct LO_HitElementResult;
typedef union LO_HitResult_struct LO_HitResult;
/* Line style parameter for displaying borders */
typedef enum {
LO_SOLID,
LO_DASH,
LO_BEVEL
} LO_LineStyle;
typedef struct LO_tabFocus_struct LO_TabFocusData;
/*
XLation
*/
typedef struct PrintInfo_ PrintInfo;
typedef struct PrintSetup_ PrintSetup;
/*
mother of data structures
*/
#ifndef OPAQUE_MWCONTEXT
typedef struct MWContext_ MWContext;
#else
typedef void MWContext;
#endif
/*
Chrome structure
*/
typedef struct _Chrome Chrome;
/*
Editor
*/
#include "edttypes.h"
typedef enum
{
MWContextAny = -1, /* Used as a noopt when searching for a context of a particular type */
MWContextBrowser, /* A web browser window */
MWContextMail, /* A mail reader window */
MWContextNews, /* A news reader window */
MWContextMailMsg, /* A window to display a mail msg */
MWContextNewsMsg, /* A window to display a news msg */
MWContextMessageComposition, /* A news-or-mail message editing window */
MWContextSaveToDisk, /* The placeholder window for a download */
MWContextText, /* non-window context for text conversion */
MWContextPostScript, /* non-window context for PS conversion */
MWContextBiff, /* non-window context for background mail
notification */
MWContextJava, /* non-window context for Java */
MWContextBookmarks, /* Context for the bookmarks */
MWContextAddressBook, /* Context for the addressbook */
MWContextOleNetwork, /* non-window context for the OLE network1 object */
MWContextPrint, /* non-window context for printing */
MWContextDialog, /* non-browsing dialogs. view-source/security */
MWContextMetaFile, /* non-window context for Windows metafile support */
MWContextEditor, /* An Editor Window */
MWContextSearch, /* a window for modeless search dialog */
MWContextSearchLdap, /* a window for modeless LDAP search dialog */
MWContextHTMLHelp, /* HTML Help context to load map files */
MWContextMailFilters, /* Mail filters context */
MWContextHistory, /* A history window */
MWContextMailNewsProgress, /* a progress pane for mail/news URLs */
MWContextPane, /* Misc browser pane/window in weird parts of
* the UI, such as the navigation center */
MWContextRDFSlave, /* Slave context for RDF network loads */
MWContextProgressModule, /* Progress module (PW_ functions) */
MWContextIcon /* Context for loading images as icons */
} MWContextType;
#define MAIL_NEWS_TYPE(x) ( \
((x) == MWContextMail) || \
((x) == MWContextNews) || \
((x) == MWContextMailMsg) || \
((x) == MWContextNewsMsg) )
struct LJAppletData;
#endif /* _NetscapeTypes_ */

View File

@ -1,73 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/* ---------------------------------------------------------------------------
Stuff to fake unix file I/O on os2 boxes
------------------------------------------------------------------------*/
#ifndef OS2FILE_H
#define OS2FILE_H
#if defined(XP_OS2)
/* 32-bit stuff here */
#define INCL_DOSPROCESS
#define INCL_DOS
#define INCL_DOSERRORS
#define INCL_DOSFILEMGR
#define INCL_DOSMODULEMGR
#define INCL_PM
#define INCL_WIN
#define INCL_WINATOM
#define INCL_GPI
#define TID OS2TID /* global rename in OS2 H's! */
#include <os2.h>
#undef TID /* and restore */
/*DAK these are empty.. #include <windef.h> */
/*DAK these are empty.. #include <winbase.h>*/
#include <stdlib.h>
#include <sys\types.h>
#include <sys\stat.h>
#include "dirent.h"
/*DSR020697 - now using dirent.h for DIR...*/
#define _ST_FSTYPSZ 16
typedef unsigned long mode_t;
typedef long uid_t;
typedef long gid_t;
#ifndef XP_OS2
typedef long off_t;
#endif
typedef unsigned long nlink_t;
typedef struct timestruc {
time_t tv_sec; /* seconds */
long tv_nsec; /* and nanoseconds */
} timestruc_t;
/*DSR020697 - now using dirent.h for dirent, S_ISDIR...*/
#endif /* XP_OS2 */
#define CONST const
#endif /* OS2FILE_H */

View File

@ -1,68 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/* New file created by IBM-VPB050196 */
#ifndef _OS2SOCK_H
#define _OS2SOCK_H
#if !defined(RC_INVOKED)
#include "mcom_db.h"
#endif
/*DSR050297 - this is based on types.h in the TCP/IP headers... */
/*I'm not including types.h because that causes all sorts of damage... */
#define MAXHOSTNAMELEN 120
#if defined(XP_OS2_DOUGSOCK)
#ifndef BSD_SELECT
#error you need BSD_SELECT defined in your command line for all files
#endif
#include <nerrno.h>
#include <sys\socket.h>
#include <sys\select.h>
#include <sys\time.h>
#include <sys\ioctl.h>
#include <netdb.h>
#include <utils.h>
#else
/*DSR072196 - replaced many files with pmwsock.h...*/
#include <pmwsock.h>
#ifndef IP_MULTICAST_IF
#define IP_MULTICAST_IF 2 /* set/get IP multicast interface*/
#define IP_MULTICAST_TTL 3 /* set/get IP multicast timetolive*/
#define IP_MULTICAST_LOOP 4 /* set/get IP multicast loopback */
#define IP_ADD_MEMBERSHIP 5 /* add an IP group membership */
#define IP_DROP_MEMBERSHIP 6 /* drop an IP group membership */
#define IP_DEFAULT_MULTICAST_TTL 1 /* normally limit m'casts to 1 hop */
#define IP_DEFAULT_MULTICAST_LOOP 1 /* normally hear sends if a member */
#define IP_MAX_MEMBERSHIPS 20 /* per socket; must fit in one mbuf*/
/*
* Argument structure for IP_ADD_MEMBERSHIP and IP_DROP_MEMBERSHIP.
*/
struct ip_mreq {
struct in_addr imr_multiaddr; /* IP multicast address of group */
struct in_addr imr_interface; /* local IP address of interface */
};
#endif
#endif
#endif

View File

@ -1,66 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 PICS_H
#define PICS_H
typedef struct {
char *service;
XP_Bool generic;
char *fur; /* means 'for' */
XP_List *ratings;
} PICS_RatingsStruct;
typedef struct {
char *name;
double value;
} PICS_RatingValue;
typedef enum {
PICS_RATINGS_PASSED,
PICS_RATINGS_FAILED,
PICS_NO_RATINGS
} PICS_PassFailReturnVal;
void PICS_FreeRatingsStruct(PICS_RatingsStruct *rs);
/* return NULL or ratings struct */
PICS_RatingsStruct * PICS_ParsePICSLable(char * label);
/* returns TRUE if page should be censored
* FALSE if page is allowed to be shown
*/
PICS_PassFailReturnVal PICS_CompareToUserSettings(PICS_RatingsStruct *rs, char *cur_page_url);
XP_Bool PICS_IsPICSEnabledByUser(void);
XP_Bool PICS_AreRatingsRequired(void);
/* returns a URL string from a RatingsStruct
* that includes the service URL and rating info
*/
char * PICS_RStoURL(PICS_RatingsStruct *rs, char *cur_page_url);
void PICS_Init(MWContext *context);
XP_Bool PICS_CanUserEnableAdditionalJavaCapabilities(void);
XP_Bool PICS_CheckForValidTreeRating(char *url_address);
#endif /* PICS_H */

View File

@ -1,26 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/* Prefetching H file */
#ifndef PREFETCH_H
#define PREFETCH_H
extern void PRE_AddToList(MWContext* context, char* url, double value);
extern void PRE_Fetch(MWContext* context);
extern void PRE_Enable(XP_Bool enabled);
#endif /* PREFETCH_H */

View File

@ -1,452 +0,0 @@
/* -*- Mode: C; tab-width: 8; 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 should contain prototypes of all public functions for all
modules in the client library.
This file will be included automatically when source includes "client.h".
By the time this file is included, all global typedefs have been executed.
*/
/* make sure we only include this once */
#ifndef _PROTO_H_
#define _PROTO_H_
#include "ntypes.h"
#include "lo_ele.h"
#ifndef NSPR20
#if defined(__sun)
# include "sunos4.h"
#endif /* __sun */
#endif /* NSPR20 */
XP_BEGIN_PROTOS
/* put your prototypes here..... */
/* --------------------------------------------------------------------------
* Parser stuff
*/
extern intn PA_ParserInit(PA_Functions *);
extern NET_StreamClass *PA_BeginParseMDL(FO_Present_Types, void *,
URL_Struct *, MWContext *);
extern intn PA_ParseBlock(NET_StreamClass *, const char *, int);
extern void PA_MDLComplete(NET_StreamClass *);
extern void PA_MDLAbort(NET_StreamClass *, int);
extern Bool PA_HasMocha(PA_Tag *tag);
extern PA_Tag * PA_CloneMDLTag(PA_Tag * src);
extern intn PA_ParseStringToTags(MWContext *, char *, int32, void *);
extern const char *PA_TagString(int32);
extern int32 PA_TagIndex(char *);
/* --------------------------------------------------------------------------
* Layout stuff
*/
/*#ifndef NO_TAB_NAVIGATION */
extern Bool LO_isTabableElement(MWContext *context, LO_TabFocusData *pCurrentFocus );
extern Bool LO_isTabableFormElement( LO_FormElementStruct * next_ele );
extern Bool LO_isFormElementNeedTextTabFocus( LO_FormElementStruct *pElement );
extern LO_Element * LO_getFirstLastElement(MWContext *context, int wantFirst );
extern Bool LO_getNextTabableElement( MWContext *context, LO_TabFocusData *currentFocus, int forward );
/* NO_TAB_NAVIGATION */
extern LO_FormElementStruct *
LO_ReturnNextFormElement(MWContext *context,
LO_FormElementStruct *current_element);
extern LO_FormElementStruct *
LO_ReturnPrevFormElement(MWContext *context,
LO_FormElementStruct *current_element);
/* NO_TAB_NAVIGATION,
LO_ReturnNextFormElementInTabGroup() is used to tab through form elements.
Since the winfe now has TAB_NAVIGATION, it is not used any more.
If mac and Unix don't use it either, it can be removed.
*/
extern LO_FormElementStruct *
LO_ReturnNextFormElementInTabGroup(MWContext *context,
LO_FormElementStruct *current_element,
XP_Bool go_backwards);
extern intn LO_ProcessTag(void *, PA_Tag *, intn);
extern void LO_RefreshArea(MWContext *context, int32 left, int32 top,
uint32 width, uint32 height);
extern Bool LO_CheckForUnload(MWContext *context);
#ifdef LAYERS
extern void LO_MoveLayer(CL_Layer *layer, int32 x, int32 y);
extern int32 LO_GetLayerXOffset(CL_Layer *layer);
extern int32 LO_GetLayerYOffset(CL_Layer *layer);
extern int32 LO_GetLayerWrapWidth(CL_Layer *layer);
extern int32 LO_GetLayerScrollWidth(CL_Layer *layer);
extern int32 LO_GetLayerScrollHeight(CL_Layer *layer);
extern void LO_SetLayerScrollWidth(CL_Layer *layer, uint32 width);
extern void LO_SetLayerScrollHeight(CL_Layer *layer, uint32 height);
extern void LO_SetLayerBbox(CL_Layer *layer, XP_Rect *bbox);
#ifdef DOM
/* Setters for span contents */
extern void LO_SetSpanColor(MWContext *context, void *span, LO_Color *color);
extern void LO_SetSpanBackground(MWContext *context, void *span, LO_Color *color);
extern void LO_SetSpanFontFamily(MWContext* context, void *span, char *family);
extern void LO_SetSpanFontWeight(MWContext* context, void *span, char *weight);
extern void LO_SetSpanFontSize(MWContext* context, void *span, int32 size);
extern void LO_SetSpanFontSlant(MWContext* context, void *span, char *slant);
#endif
extern void LO_SetLayerBgColor(CL_Layer *layer, LO_Color *color);
extern LO_Color * LO_GetLayerBgColor(CL_Layer *layer);
extern void LO_SetLayerBackdropURL(CL_Layer *layer, const char *url);
extern const char *LO_GetLayerBackdropURL(CL_Layer *layer);
extern LO_ImageStruct *LO_GetLayerBackdropImage(CL_Layer *layer);
extern void LO_SetImageURL(MWContext *context, IL_GroupContext *mocha_img_cx,
LO_ImageStruct *image, const char *url,
NET_ReloadMethod reload_policy);
extern void LO_SetDocBgColor(MWContext *context, LO_Color *rgb);
extern void
lo_SetLayerClipExpansionPolicy(CL_Layer *layer, int policy);
extern int
lo_GetLayerClipExpansionPolicy(CL_Layer *layer);
#ifdef JAVA
/* Java Applet layer code */
extern void LO_SetJavaAppTransparent(LO_JavaAppStruct *javaData);
#endif
extern void LO_SetEmbedType(LO_EmbedStruct *embed, PRBool is_windowed);
extern void LO_SetEmbedSize( MWContext *context, LO_EmbedStruct *embed, int32 width, int32 height );
#ifdef JAVA
extern void LO_SetJavaAppTransparent(LO_JavaAppStruct *javaData);
#endif
extern void *LO_GetLayerMochaObjectFromId(MWContext *context, int32 layer_id);
extern void *LO_GetLayerMochaObjectFromLayer(MWContext *context,
CL_Layer *layer);
extern void LO_SetLayerMochaObject(MWContext *context, int32 layer_id,
void *mocha_object);
extern CL_Layer *LO_GetLayerFromId(MWContext *context, int32 layer_id);
extern int32 LO_GetIdFromLayer(MWContext *context, CL_Layer *layer);
extern int32 LO_GetNumberOfLayers(MWContext *context);
#endif
extern NET_ReloadMethod LO_GetReloadMethod(MWContext *context);
#ifdef LAYERS
extern LO_Element *LO_XYToElement(MWContext *, int32, int32, CL_Layer *);
extern LO_Element *LO_XYToNearestElement(MWContext *, int32, int32,
CL_Layer *);
#else
extern LO_Element *LO_XYToElement(MWContext *, int32, int32);
extern LO_Element *LO_XYToNearestElement(MWContext *, int32, int32);
#endif /* LAYERS */
extern void LO_MoveGridEdge(MWContext *context, LO_EdgeStruct *edge,
int32 x, int32 y);
extern void LO_SetImageInfo(MWContext *context, int32 ele_id,
int32 width, int32 height);
extern void LO_SetForceLoadImage(char *url, XP_Bool all_images);
extern void LO_SetUserOverride(Bool override);
extern void LO_SetDefaultBackdrop(char *url);
extern void LO_SetDefaultColor(intn type, uint8 red, uint8 green, uint8 blue);
extern Bool LO_ParseRGB(char *rgb, uint8 *red, uint8 *green, uint8 *blue);
extern Bool LO_ParseStyleSheetRGB(char *rgb, uint8 *red, uint8 *green, uint8 *blue);
extern void LO_ClearBackdropBlock(MWContext *context,
LO_ImageStruct *image, Bool fg_ok);
extern void LO_ClearEmbedBlock(MWContext *context, LO_EmbedStruct *embed);
extern Bool LO_BlockedOnImage(MWContext *, LO_ImageStruct *image);
extern void LO_CloseAllTags(MWContext *);
extern void LO_DiscardDocument(MWContext *);
extern LO_FormSubmitData *LO_SubmitForm(MWContext *context,
LO_FormElementStruct *form_element);
extern LO_FormSubmitData *LO_SubmitImageForm(MWContext *context,
LO_ImageStruct *image, int32 x, int32 y);
extern void LO_ResetForm(MWContext *context,
LO_FormElementStruct *form_element);
extern LO_FormElementStruct *
LO_FormRadioSet(MWContext *context, LO_FormElementStruct *form_element);
extern void LO_SaveFormData(MWContext *context);
extern void LO_CloneFormData(SHIST_SavedData *, MWContext *context,
URL_Struct *url_struct);
extern void LO_HighlightAnchor(MWContext *context, LO_Element *element,Bool on);
#ifdef OLD_POS_HIST
extern void LO_SetDocumentPosition(MWContext *context, int32 x, int32 y);
#endif /* OLD_POS_HIST */
extern void LO_SetDocumentDimensions(MWContext *context,
int32 width, int32 height);
#ifdef LAYERS
extern void LO_StartSelection(MWContext *context, int32 x, int32 y,
CL_Layer *layer);
#else
extern void LO_StartSelection(MWContext *context, int32 x, int32 y);
#endif /* LAYERS */
typedef enum {
SMALL_BM_ICON,
LARGE_BM_ICON
} BMIconType;
extern char * LO_GetBookmarkIconURLForPage(MWContext *context, BMIconType type);
/* Re-layout layout elements on resize without destroying them and reloading page
from scratch */
extern void LO_RelayoutOnResize(MWContext *context, int32 width, int32 height, int32 leftMargin, int32 topMargin);
/* Re-layout layout elements when one changes size. */
extern void LO_RelayoutFromElement(MWContext *context, LO_Element *element);
extern void LO_ExtendSelection(MWContext *context, int32 x, int32 y);
extern void LO_EndSelection(MWContext *context);
extern void LO_ClearSelection(MWContext *context);
extern XP_Block LO_GetSelectionText(MWContext *context);
extern Bool LO_FindText(MWContext *context, char *text,
LO_Element **start_ele_loc, int32 *start_position,
LO_Element **end_ele_loc, int32 *end_position,
Bool use_case, Bool forward);
extern Bool LO_FindGridText(MWContext *context, MWContext **ret_context,
char *text,
LO_Element **start_ele_loc, int32 *start_position,
LO_Element **end_ele_loc, int32 *end_position,
Bool use_case, Bool forward);
extern Bool LO_SelectAll(MWContext *context);
extern void LO_SelectText(MWContext *context, LO_Element *start,int32 start_pos,
LO_Element *end, int32 end_pos, int32 *x, int32 *y);
extern void LO_RefreshAnchors(MWContext *context);
extern Bool LO_HaveSelection(MWContext *context);
extern void LO_GetSelectionEndpoints(MWContext *context,
LO_Element **start, LO_Element **end, int32 *start_pos, int32 *end_pos, CL_Layer **sel_layer);
extern void LO_FreeSubmitData(LO_FormSubmitData *submit_data);
extern void LO_FreeDocumentFormListData(MWContext *context, void *form_data);
extern void LO_FreeDocumentEmbedListData(MWContext *context, void *embed_data);
extern void LO_FreeDocumentGridData(MWContext *context, void *grid_data);
extern void LO_FreeDocumentAppletData(MWContext *context, void *applet_data);
extern void LO_RedoFormElements(MWContext *context);
extern void LO_InvalidateFontData(MWContext *context);
extern void LO_GetDocumentMargins(MWContext *context,
int32 *margin_width, int32 *margin_height);
extern Bool LO_HasBGImage(MWContext *context);
extern Bool LO_LocateNamedAnchor(MWContext *context, URL_Struct *url_struct,
int32 *xpos, int32 *ypos);
extern int32 LO_EmptyRecyclingBin(MWContext *context);
extern LO_AnchorData *LO_MapXYToAreaAnchor(MWContext *context,
LO_ImageStruct *image, int32 x, int32 y);
extern intn LO_DocumentInfo(MWContext *context, NET_StreamClass *stream);
extern intn LO_ChangeFontSize(intn size, char *size_str);
extern double LO_GetScalingFactor(int32 scaler);
extern int16 LO_WindowWidthInFixedChars(MWContext *context);
extern void LO_CleanupGridHistory(MWContext *context);
extern void LO_UpdateGridHistory(MWContext *context);
extern Bool LO_BackInGrid(MWContext *context);
extern Bool LO_ForwardInGrid(MWContext *context);
extern Bool LO_GridCanGoForward(MWContext *context);
extern Bool LO_GridCanGoBackward(MWContext *context);
#if defined(SingleSignon)
extern void SI_RememberSignonData
(MWContext *context, LO_FormSubmitData *submit);
extern void SI_RestoreOldSignonData
(MWContext *context, LO_FormElementStruct *form_element, char *URLName);
extern int SI_LoadSignonData(char *filename);
extern int SI_SaveSignonData(char *filename);
extern void SI_RemoveAllSignonData();
extern Bool SI_RemoveUser(char *URLName, char *userName, Bool save);
extern int SI_PromptUsernameAndPassword
(MWContext *context, char *buf,
char **username, char **password, char *URLName);
extern char *SI_PromptPassword
(MWContext *context, char *prompt, char *URLName,
Bool pickFirstUser, Bool useLastPassword);
extern char * SI_Prompt
(MWContext *context, char *prompt, char* defaultUsername, char *URLName);
extern void SI_StartOfForm();
#endif
#ifdef LAYERS
extern Bool LO_Click( MWContext *context, int32 x, int32 y,
Bool requireCaret, CL_Layer *layer );
extern void LO_Hit(MWContext *context, int32 x, int32 y,
Bool requireCaret, LO_HitResult *result, CL_Layer *layer);
#else
extern Bool LO_Click( MWContext *context, int32 x, int32 y, Bool requireCaret );
extern void LO_Hit(MWContext *context, int32 x, int32 y,
Bool requireCaret, LO_HitResult *result);
#endif /* LAYERS */
extern int32 LO_TextElementWidth(MWContext *context, LO_TextStruct *text_ele, int charOffset);
extern void LO_AddEmbedData(MWContext* context, LO_EmbedStruct* embed, void* data);
extern void LO_CopySavedEmbedData(MWContext* context, SHIST_SavedData* newdata);
extern NET_StreamClass* LO_NewObjectStream(FO_Present_Types format_out, void* type,
URL_Struct* urls, MWContext* context);
extern void LO_CreateReblockTag(MWContext* context, LO_Element* element);
extern void LO_LockLayout(void);
extern void LO_UnlockLayout(void);
extern Bool LO_VerifyUnlockedLayout();
extern void LO_NetlibComplete(MWContext * context);
extern void LO_UpdateTextData(lo_FormElementTextData * textData, const char * text);
#ifdef EDITOR
/* --------------------------------------------------------------------------
* Layout stuff specific to the editor
*/
#ifdef LAYERS
extern void LO_PositionCaret( MWContext *context, int32 x, int32 y,
CL_Layer *layer);
extern void LO_DoubleClick( MWContext *context, int32 x, int32 y,
CL_Layer *layer );
#else
extern void LO_PositionCaret( MWContext *context, int32 x, int32 y );
extern void LO_DoubleClick( MWContext *context, int32 x, int32 y );
#endif /* LAYERS */
void LO_PositionCaretBounded(MWContext *context, int32 x, int32 y,
int32 minY, int32 maxY );
extern ED_Buffer* LO_GetEDBuffer( MWContext *context);
extern void LO_GetEffectiveCoordinates( MWContext *pContext, LO_Element *pElement, int32 position,
int32* pX, int32* pY, int32* pWidth, int32* pHeight );
extern void LO_UpDown( MWContext *pContext, LO_Element *pElement, int32 position, int32 iDesiredX, Bool bSelect, Bool bForward );
extern Bool LO_PreviousPosition( MWContext *pContext,LO_Element *pElement, intn iOffset,
ED_Element **ppEdElement, intn* pOffset);
extern Bool LO_NextPosition( MWContext *pContext,LO_Element *pElement, intn iOffset,
ED_Element **ppEdElement, intn* pOffset);
extern Bool LO_NavigateChunk( MWContext *pContext, intn chunkType, Bool bSelect, Bool bForward );
extern Bool LO_ComputeNewPosition( MWContext *context, intn chunkType,
Bool bSelect, Bool bDeselecting, Bool bForward,
LO_Element** pElement, int32* pPosition );
extern LO_Element* LO_BeginOfLine( MWContext *pContext, LO_Element *pElement );
extern LO_Element* LO_EndOfLine( MWContext *pContext, LO_Element *pElement);
extern LO_Element* LO_FirstElementOnLine( MWContext *pContext,
int32 x, int32 y, int32 *pLineNum);
#ifdef LAYERS
extern void LO_StartSelectionFromElement( MWContext *context, LO_Element *eptr,
int32 new_pos, CL_Layer *layer );
#else
extern void LO_StartSelectionFromElement( MWContext *context, LO_Element *eptr,
int32 new_pos );
#endif /* LAYERS */
extern void LO_ExtendSelectionFromElement( MWContext *context, LO_Element *eptr,
int32 position, Bool bFromStart );
extern Bool LO_SelectElement( MWContext *context, LO_Element *eptr,
int32 position, Bool bFromStart );
extern void LO_SelectRegion( MWContext *context, LO_Element *begin,
int32 beginPosition, LO_Element *end, int32 endPosition,
Bool fromStart, Bool forward );
extern Bool LO_IsSelected( MWContext *context );
extern Bool LO_IsSelectionStarted( MWContext *context );
extern void LO_GetSelectionEndPoints( MWContext *context,
LO_Element **ppStart, intn *pStartOffset, LO_Element **ppEnd,
intn *pEndOffset, Bool *pbFromStart, Bool *pbSingleElementSelection );
extern void LO_GetSelectionNewPoint( MWContext *context,
LO_Element **ppNew, intn *pNewOffset);
extern LO_Element* LO_PreviousEditableElement( LO_Element *pElement );
extern LO_Element* LO_NextEditableElement( LO_Element *pElement );
extern LO_ImageStruct* LO_NewImageElement( MWContext* context );
extern void LO_SetBackgroundImage( MWContext *context, char *pUrl );
extern void LO_RefetchWindowDimensions( MWContext *pContext );
extern void LO_Relayout( MWContext *context, ED_TagCursor *pCursor,
int32 iLine, int iStartEditOffset, XP_Bool bDisplayTables );
#endif /*EDITOR*/
extern void LO_SetBaseURL( MWContext *pContext, char *pURL );
extern char* LO_GetBaseURL( MWContext *pContext );
#if 0
extern Bool LO_Click( MWContext *context, int32 x, int32 y, Bool requireCaret );
extern void LO_Hit(MWContext *context, int32 x, int32 y, Bool requireCaret, LO_HitResult *result);
#endif
#ifdef LAYERS
extern void LO_SelectObject( MWContext *context, int32 x, int32 y,
CL_Layer *layer );
#else
extern void LO_SelectObject( MWContext *context, int32 x, int32 y );
#endif /* LAYERS */
#ifdef LAYERS
extern LO_LayerType LO_GetLayerType(CL_Layer *layer);
extern Bool LO_PrepareLayerForWriting(MWContext *context, int32 layer_id,
const char *referer, int32 width);
extern Bool LO_SetLayerSrc(MWContext *context, int32 layer_id, char *str,
const char *referer, int32 width);
extern int32 LO_CreateNewLayer(MWContext *context, int32 wrap_width, int32 parent_layer_id);
#endif /* LAYERS */
#ifdef XP_UNIX
extern void LO_DisplayFormElement(LO_FormElementStruct *form);
#endif /* XP_UNIX */
/* Allows front ends to test for empty cell.
* Used in Composer to display "zero width border"
* in cells that layout would normally not display
*/
XP_Bool LO_IsEmptyCell(LO_CellStruct *cell);
Bool LO_LayingOut(MWContext * context);
#ifdef DOM
/* Returns true if the layout element is enclosed
in <SPAN> </SPAN> */
Bool LO_IsWithinSpan( LO_Element *ele );
#endif
/*
* This is probably the wrong place to add this, but tough,
* this stuff shouldn't have to exist anyways.
*/
extern void XP_InitializeContext(MWContext *context);
extern MWContext *XP_NewContext(void);
extern void XP_DeleteContext(MWContext *context);
extern XP_List *XP_GetGlobalContextList(void);
extern void XP_AddContextToList(MWContext *context);
extern Bool XP_IsContextInList(MWContext *context);
extern void XP_RemoveContextFromList(MWContext *context);
extern MWContext *XP_GetNonGridContext(MWContext *context);
extern Bool XP_IsChildContext(MWContext* parent, MWContext* child);
extern MWContext *XP_FindNamedContextInList(MWContext * context, char *name);
extern MWContext *XP_FindContextOfType(MWContext *, MWContextType);
extern MWContext *XP_FindSomeContext(void);
extern Bool XP_FindNamedAnchor(MWContext * context, URL_Struct * url,
int32 *xpos, int32 *ypos);
extern void XP_RefreshAnchors(void);
extern void XP_InterruptContext(MWContext * context);
extern Bool XP_IsContextBusy(MWContext * context);
extern Bool XP_IsContextStoppable(MWContext * context);
extern void XP_UpdateParentContext(MWContext * context);
extern int XP_GetSecurityStatus(MWContext *pContext);
extern int XP_ContextCount(MWContextType cxType, XP_Bool bTopLevel);
XP_END_PROTOS
# endif /* _PROTO_H_ */

View File

@ -1,99 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 PWCACAPI_H
#define PWCACAPI_H
/* contains a null terminated array of name and value stings
*
* end index of name should always be equal to the end index of value
*
*/
typedef struct _PCNameValuePair PCNameValuePair;
typedef struct _PCNameValueArray PCNameValueArray;
typedef void PCDataInterpretFunc (
char *module,
char *key,
char *data, int32 data_size,
char *type_buffer, int32 type_buffer_size,
char *url_buffer, int32 url_buffer_size,
char *username_buffer, int32 username_buffer_size,
char *password_buffer, int32 password_buffer_size);
/* returns 0 on success -1 on error
*/
extern int PC_RegisterDataInterpretFunc(char *module,
PCDataInterpretFunc *func);
extern int PC_PromptUsernameAndPassword(MWContext *context,
char *prompt,
char **username,
char **password,
XP_Bool *remember_password,
XP_Bool is_secure);
extern char *PC_PromptPassword(MWContext *context,
char *prompt,
XP_Bool *remember_password,
XP_Bool is_secure);
extern char *PC_Prompt(MWContext *context,
char *prompt,
char *deft,
XP_Bool *remember,
XP_Bool is_secure);
void PC_FreeNameValueArray(PCNameValueArray *array);
PCNameValueArray * PC_NewNameValueArray(void);
uint32 PC_ArraySize(PCNameValueArray *array);
char * PC_FindInNameValueArray(PCNameValueArray *array, char *name);
int PC_DeleteNameFromNameValueArray(PCNameValueArray *array, char *name);
void PC_EnumerateNameValueArray(PCNameValueArray *array, char **name, char **value, XP_Bool beginning);
int PC_AddToNameValueArray(PCNameValueArray *array, char *name, char *value);
void PC_CheckForStoredPasswordData(char *module, char *key, char **data, int32 *len);
int PC_DeleteStoredPassword(char *module, char *key);
PCNameValueArray * PC_CheckForStoredPasswordArray(char *module, char *key);
int PC_StoreSerializedPassword(char *module, char *key, char *data, int32 len);
int PC_StorePasswordNameValueArray(char *module, char *key, PCNameValueArray *array);
void PC_SerializeNameValueArray(PCNameValueArray *array, char **data, int32 *len);
PCNameValueArray * PC_CharToNameValueArray(char *data, int32 len);
/*, returns status
*/
int PC_DisplayPasswordCacheAsHTML(URL_Struct *URL_s,
FO_Present_Types format_out,
MWContext *context);
void PC_Shutdown();
#endif /* PWCACAPI_H */

View File

@ -1,101 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 _RESDEF_H_
#define _RESDEF_H_
#include "xp_core.h"
#define RES_OFFSET 7000
#ifndef RESOURCE_STR
#ifdef WANT_ENUM_STRING_IDS
#define RES_START
#if defined(XP_WIN) && _MSC_VER == 1100
/* VC50 has a bug, where large enumerations cause an
* internal compiler error. Do some hack here to fix without
* breaking the other platforms.
*/
#define BEGIN_STR(arg)
#define ResDef(name,id,msg) enum { name=id };
#define END_STR(arg)
#else /* XP_WIN _MSC_VER */
#define BEGIN_STR(arg) enum {
#define ResDef(name,id,msg) name=id,
#if defined(XP_WIN)
#define END_STR(arg) };
#else
#define END_STR(arg) arg=0 };
#endif
#endif /* XP_WIN _MSC_VER */
#else /* WANT_ENUM_STRING_IDS */
#define RES_START
#define BEGIN_STR(arg)
#ifdef XP_WIN16
/* Get these ints out of DGROUP (/Gt3 compiler switch)
* so we can increase the stack size
*/
#define ResDef(name,id,msg) int __far name = (id);
#else
#define ResDef(name,id,msg) int name = (id);
#endif
#define END_STR(arg)
#endif /* WANT_ENUM_STRING_IDS */
#else /* RESOURCE_STR, the definition here is for building resources */
#if defined(XP_WIN) || defined(XP_OS2)
#ifndef MOZILLA_CLIENT
#define RES_START
#define BEGIN_STR(arg) static char * (arg) (int16 i) { switch (i) {
#define ResDef(name,id,msg) case (id)+RES_OFFSET: return (msg);
#define END_STR(arg) } return NULL; }
#else /* MOZILLA_CLIENT */
#define RES_START STRINGTABLE DISCARDABLE
#define BEGIN_STR(arg) BEGIN
#define ResDef(name,id,msg) id+RES_OFFSET msg
#define END_STR(arg) END
#endif /* not MOZILLA_CLIENT */
#elif defined(XP_MAC)
/* Do nothing -- leave ResDef() to be perl'ized via MPW */
#define ResDef(name,id,msg) ResDef(name,id,msg)
#elif defined(XP_UNIX)
#ifdef RESOURCE_STR_X
#define RES_START
#define BEGIN_STR(arg) static char *(arg)(void) {
#define ResDef(name,id,msg) output((id)+RES_OFFSET, (msg));
#define END_STR(arg) }
#else
#define RES_START
#define BEGIN_STR(arg) static char *(arg)(int16 i) { switch (i) {
#define ResDef(name,id,msg) case (id)+RES_OFFSET: return (msg);
#define END_STR(arg) } return NULL; }
#endif /* RESOURCE_STR_X */
#endif /* XP_WIN */
#endif /* RESOURCE_STR */
#endif /* _RESDEF_H_ */

View File

@ -1,163 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 SHIST_H
#define SHIST_H
#include "xp_list.h"
#include "ntypes.h"
#include "hotlist.h"
/* see shistele.h for the structure definitions. :(
*/
/* --------------------------------------------------------------------------
* Session history module routines
*/
struct MWContext_;
struct URL_Struct_;
#define HIST_NEW_OBJECT 0
#define HIST_MOVE_FORWARD 1
#define HIST_MOVE_BACK 2
/* Max length of the URL when title is unknown */
#define HIST_MAX_URL_LEN 30
XP_BEGIN_PROTOS
/* Front-End Specialized Functions */
extern void SHIST_InitSession(struct MWContext_ * ctxt);
extern void SHIST_EndSession(MWContext * ctxt);
/* copys all the session data from the old context into the
* new context. Does not effect data in old_context session history
*
* if new_context has not had SHIST_InitSession called for it
* it will be called to initalize it.
*/
extern void
SHIST_CopySession(MWContext * new_context, MWContext * old_context);
/* make a new copy of the given history entry */
extern History_entry * SHIST_CloneEntry(History_entry * old_entry);
/*
* someone (like another thread) needs to keep this entry around for
* a while, increase the reference count so it doesn't disappear
* on us. Return the held reference to entry. Tolerate NULL entry.
*/
extern History_entry * SHIST_HoldEntry(History_entry * entry);
#define SHIST_DropEntry SHIST_FreeHistoryEntry
/* these update position and buttons! */
extern void SHIST_AddDocument(struct MWContext_ * ctxt, History_entry * entry);
extern History_entry * SHIST_GetPrevious(struct MWContext_ * ctxt);
extern History_entry * SHIST_GetNext(struct MWContext_ * ctxt);
/* convenience functions */
extern char* SHIST_StripProtocol ( char* inURL ) ;
extern History_entry * SHIST_CreateHistoryEntry (struct URL_Struct_ * URL_s, char * title);
extern URL_Struct * SHIST_CreateURLStructFromHistoryEntry(struct MWContext_ * ctxt,
History_entry * entry);
extern URL_Struct * SHIST_CreateWysiwygURLStruct(struct MWContext_ * ctxt,
History_entry * entry);
extern BM_Entry* SHIST_CreateHotlistStructFromHistoryEntry(History_entry * h);
extern void SHIST_FreeHistoryEntry (MWContext * ctxt, History_entry * entry);
/* Standard History Functions */
extern int SHIST_CanGoBack(MWContext * ctxt);
extern int SHIST_CanGoForward(MWContext * ctxt);
extern History_entry * SHIST_GetEntry(History * hist, int entry_number);
extern History_entry * SHIST_GetCurrent(History * hist);
extern XP_List * SHIST_GetList(MWContext * ctxt);
/* Functions to handle Page Services functionality */
extern int SHIST_CurrentHandlesPageServices(MWContext * ctxt);
extern char * SHIST_GetCurrentPageServicesURL(MWContext * ctxt);
/* sets the current doc pointer to the index specified in the call
*
* entry numbering begins at one.
*/
extern void SHIST_SetCurrent(History * hist, int entry_number);
/* set the title of the current document
*
* TODO: All FEs should use the XP_WIN version asap.
*/
#if defined(XP_WIN) || defined(XP_MAC) || defined(XP_OS2)
extern void SHIST_SetTitleOfCurrentDoc(MWContext * context);
#else
extern void SHIST_SetTitleOfCurrentDoc(History * hist, char * title);
#endif
/* set the layout specific form data neccessary to recreate the user settable
* entries within a form
*/
PUBLIC void
SHIST_SetCurrentDocFormListData(MWContext * context, void * form_data);
/* set the layout-plugin specific embed data neccessary to recreate the
* last session state within the embedded object.
*/
PUBLIC void
SHIST_SetCurrentDocEmbedListData(MWContext * context, void * embed_data);
/* set the layout grid data neccessary to recreate the
* grid when revisited through history.
*/
PUBLIC void
SHIST_SetCurrentDocGridData(MWContext * context, void * grid_data);
/* set the window object for a grid being resized.
*/
PUBLIC void
SHIST_SetCurrentDocWindowData(MWContext * context, void * window_data);
/* set the layout applet data neccessary to recreate the
* applet when revisited through history.
*/
PUBLIC void
SHIST_SetCurrentDocAppletData(MWContext * context, void * applet_data);
/* set the position of the current document
*/
extern void SHIST_SetPositionOfCurrentDoc(History * hist, int32 position_tag);
/* gets an index associated with the entry
*
* entry numbering begins at one.
*
* zero is returned if object not found
*/
extern int SHIST_GetIndex(History * hist, History_entry * entry);
/* return the n'th object
*/
extern History_entry * SHIST_GetObjectNum(History * hist, int n);
XP_END_PROTOS
#endif /* SHIST_H */

View File

@ -1,129 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 SHISTELE_H
#define SHISTELE_H
#include "xp_list.h"
/*
** This structure holds pointer so all saved data in the history. It is
** also used by URL_Structs and is ultimately fed to layout.
**
** Warning: Don't change the names of the fields because they're used by
** macros.
*/
typedef struct SHIST_SavedData {
void* FormList; /* layout data to recreate forms */
void* EmbedList; /* layout data to recreate embeds and applets */
void* Grid; /* layout data to recreate grids */
#ifdef MOCHA
void* Window; /* window object for grid being resized */
/* XXX none of this would be necessary if frameset docs were reparsed */
void* OnLoad; /* JavaScript onload event handler source */
void* OnUnload; /* JavaScript onunload event handler source */
void* OnFocus; /* JavaScript onfocus event handler source */
void* OnBlur; /* JavaScript onblur event handler source */
void* OnHelp; /* JavaScript onhelp event handler source */
void* OnMouseOver; /* JavaScript onmouseover event handler source */
void* OnMouseOut; /* JavaScript onmouseout event handler source */
void* OnDragDrop; /* JavaScript ondragdrop event handler source */
void* OnMove; /* JavaScript onmove event handler source */
void* OnResize; /* JavaScript onresize event handler source */
void* style_stack; /* JSSS style stack info */
#endif
} SHIST_SavedData;
/*
This structure encapsulates all of the information needed for the
session history. It should contain stuff like a list of all of the
documents in the current history and a pointer to where the currently
viewed document sits in the chain.
WARNING!! Some slots of this structure are shared with URL_Struct and
net_CacheObject. If you add a slot, decide whether it needs to be
shared as well.
*/
struct _History_entry {
char * title; /* title for this entry */
char * address; /* URL address string */
char * content_name; /* Server-provided "real name", used for
default file name when saving. */
int method; /* method of acessing URL */
char * referer; /* What document points to this url */
char * post_data; /* post data */
int32 post_data_size; /* post data size */
Bool post_data_is_file; /* is the post data a filename? */
char * post_headers; /* content type for posted data */
int32 position_tag; /* layout specific data for determining
* where in the document the user was
*/
time_t last_modified; /* time of last modification */
time_t last_access; /* time of last access */
int history_num; /* special hack to add navigation */
SHIST_SavedData savedData; /* layout data */
PRPackedBool
is_binary, /* is this a binary object pretending
* to be HTML?
*/
is_active, /* is it an active stream? */
is_netsite, /* did it come from netsite? */
replace; /* did it come from netsite? */
int transport_method; /* network, disk cache, memory cache */
uint32 refresh; /* refresh interval */
char *refresh_url; /* URL to refresh */
char *wysiwyg_url; /* URL for WYSIWYG printing/saving */
/* Security information */
int security_on; /* is security on? */
/* Security info on a connection is opaque */
unsigned char *sec_info;
/* Unique identifier */
int32 unique_id;
int32 ref_count;
/* Page services*/
char *page_services_url; /* If it supports services, what link is used */
/* HTTP_11 support*/
char *etag; /* Unique entity tag */
char *origin_url; /* original referrer of javascript: URL */
};
#define SHIST_CAME_FROM_NETWORK 0
#define SHIST_CAME_FROM_DISK_CACHE 1
#define SHIST_CAME_FROM_MEMORY_CACHE 2
struct History_ {
XP_List * list_ptr; /* pointer to linked list */
int cur_doc; /* an index into the list that points to the current document */
History_entry *cur_doc_ptr; /* a ptr to the current doc entry */
int32 num_entries; /* size of the history list */
int32 max_entries; /* maximum size of list; -1 == no limit */
};
#endif /* SHISTELE_H */

View File

@ -1,70 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/*
* shr_str.h
* ---------
*
* Error codes that are shared by more than one module of
* Netscape Navigator. This file is probably a temporary
* workaround until we can get a more sophisticated sharing
* mechanism in place.
*
* Codes are represented as fixed numbers, not offsets off
* of a base, to avoid namespace collision.
*
*/
#ifndef SHR_STR_H
#define SHR_STR_H
#define MK_OUT_OF_MEMORY -207
#define MK_UNABLE_TO_OPEN_FILE -223
#define MK_DISK_FULL -250
#define MK_UNABLE_TO_OPEN_TMP_FILE -253
#define MK_MIME_NO_RECIPIENTS -267
#define MK_NNTP_SERVER_NOT_CONFIGURED -307
#define MK_UNABLE_TO_DELETE_FILE -327
#define MK_MSG_DELIV_MAIL 15412
#define MK_MSG_DELIV_NEWS 15414
#define MK_MSG_SAVE_AS 15483
#define MK_MSG_NO_HEADERS 15528
#define MK_MSG_MIME_MAC_FILE 15530
#define MK_MSG_CANT_OPEN 15540
#define XP_MSG_UNKNOWN 15572
#define XP_EDIT_NEW_DOC_NAME 15629
#define XP_ALERT_TITLE_STRING -7956
#define XP_SEC_SHOWCERT -7963
#define XP_SEC_SHOWORDER -7962
#ifdef XP_WIN
/* for Winsock defined error codes */
#include "winsock.h"
#define XP_ERRNO_ECONNREFUSED WSAECONNREFUSED
#define XP_ERRNO_EIO WSAECONNREFUSED
#define XP_ERRNO_EISCONN WSAEISCONN
#define XP_ERRNO_EWOULDBLOCK EWOULDBLOCK
#endif /* XP_WIN */
#endif

View File

@ -1,199 +0,0 @@
/* -*- Mode: C++; tab-width: 8; 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.
*/
/* *
*
*
***************************************************************************
* spellchk.h
* Public header file for the Spell Checker library.
****************************************************************************/
#ifndef _SPELLCHK_H_
#define _SPELLCHK_H_
/* In WIN16 DLL exported functions require __loadds keywords for the DS
* register to be set to the DLL's data-segment value and restored on return
* from the function.
*/
#ifdef WINDOWS
#define SCAPI __loadds
#elif defined(WIN32)
#define SCAPI __cdecl
#else
#define SCAPI
#endif
#ifdef MAC
#include <Files.h>
#endif
/* Language and Dialect codes. */
#define L_AFRIKAANS 101
#define L_CATALAN 102
#define L_CZECH 103
#define L_DANISH 104
#define L_DUTCH 105
#define L_ENGLISH 106
#define L_FINNISH 107
#define L_FRENCH 108
#define L_GERMAN 109
#define L_GREEK 110
#define L_HUNGARIAN 111
#define L_ITALIAN 112
#define L_NORWEGIAN 113
#define L_POLISH 114
#define L_PORTUGUESE 115
#define L_RUSSIAN 116
#define L_SPANISH 117
#define L_SWEDISH 118
#define D_DEFAULT 0xFFFF
#define D_AUS_ENGLISH 0x1001
#define D_US_ENGLISH 0x1010
#define D_UK_ENGLISH 0x1100
#define D_DOPPEL 0x2001 /* German */
#define D_SCHARFES 0x2010
#define D_BRAZILIAN 0x4001 /* Portuguese */
#define D_EUROPEAN 0x4010
#define D_BOKMAL 0x8001 /* Norwegian */
#define D_NYNORSK 0x8010
/* ISpellChecker - This class specifies the interface to the Spell Checker. A client
* application instatiates a spell checker object using the exported function SC_Create().
* The client application then performs spell checking using the member functions of this
* class. The spell checker object is destroyed by using the exported function SC_Destroy().
*/
class ISpellChecker
{
public:
/* Needs to be called by the client app once before calling any other functions.
* Return: 0 = success, non-zero = error
*/
#ifdef MAC
virtual int SCAPI Initialize(int LangCode, int DialectCode,
FSSpec *DbPath, FSSpec *PersonalDbFile) = 0;
#else
virtual int SCAPI Initialize(int LangCode, int DialectCode,
const char *DbPath, const char *PersonalDbFile) = 0;
#endif
/* Functions to set and get the current language and dialect settings.
* Returns: 0 = success, non-zero = failure
*/
virtual int SCAPI SetCurrentLanguage(int LangCode, int DialectCode) = 0;
virtual int SCAPI GetCurrentLanguage(int &LangCode, int &DialectCode) = 0;
/* Get the list of dictionaries available */
virtual int SCAPI GetNumOfDictionaries() = 0;
/* Get the language and dialect id for an available dictionary.
* Index = 0-based index into the list of available dictionaries.
* Returns: 0 = success, non-zero = failure.
*/
virtual int SCAPI GetDictionaryLanguage(int Index, int &LangCode, int &DialectCode) = 0;
/* Called by the client application to initialize a buffer for spell checking.
* It returns immediately without parsing the buffer. The client controls parsing of
* the buffer by calling GetNextMisspelledWord() and SetNewBuf().
* Return: 0 = success, non-zero = error
*/
virtual int SCAPI SetBuf(const char *pBuf) = 0;
/* Initialize a buffer with selection */
virtual int SCAPI SetBuf(const char *pBuf, unsigned long SelStart, unsigned long SelEnd) = 0;
/* Replace the current mispelled word with a new word */
virtual int SCAPI ReplaceMisspelledWord(const char *NewWord, int AllInstances) = 0;
/* Get the size of the current buffer */
virtual unsigned long SCAPI GetBufSize() = 0;
/* Copy the current buffer */
virtual int SCAPI GetBuf(char *pBuf, unsigned long BufSize) = 0;
/* Called by the client application to parse the buffer and return the next misspelled
* word in the buffer.
* Return: 0 = found a misspelled word.
* *Offset = Offset of the word from the beginning of the buffer
* *Len = Length of the word
* non-zero = no more misspelled word
*/
virtual int SCAPI GetNextMisspelledWord(unsigned long &Offset, unsigned long &Len) = 0;
/* The orginal buffer was changed by the client.
* ReparseFromStart = 1 - reparse the new buffer from the beginning
* = 0 - parse from the last offset into the original buffer
*/
virtual void SCAPI SetNewBuf(const char *pBuf, int ReparseFromStart) = 0;
/* Called by the client application to spell check a work.
* Return: 1 = valid word, 0 = not in dictionary
*/
virtual int SCAPI CheckWord(const char *pWord) = 0;
/* Get the number of possible alternatives found in the dictionary for the input word. */
virtual int SCAPI GetNumAlternatives(const char *pWord) = 0;
/* Get an alternative string. The "Index" is zero based.
* Return: 0 = success, -1 = error(bad Index),
* +ve value = BufSize too small, size needed
*/
virtual int SCAPI GetAlternative(int Index, char *pBuf, unsigned int BufSize) = 0;
/* The following functions interact with the personal database */
/* Add a word to the personal dictionary */
virtual int SCAPI AddWordToPersonalDictionary(const char *pWord) = 0;
/* Remove a word from the personal dictionary */
virtual int SCAPI RemoveWordFromPersonalDictionary(const char *pWord) = 0;
/* Ignore all references to a word in the current session */
virtual int SCAPI IgnoreWord(const char *pWord) = 0;
/* GetFirstPersonalDictionaryWord & GetNextPersonalDictionaryWord
* These functions retrieve words in the personal dictionary
* Returns: 0 = success, pBuf contains the next word
* -1 = no more words
* +ve = required buffer size. Size passed is too small.
*/
virtual int SCAPI GetFirstPersonalDictionaryWord(char *pBuf, int BufSize) = 0;
virtual int SCAPI GetNextPersonalDictionaryWord(char *pBuf, int BufSize) = 0;
/* Resets the contents of the personal dictionary */
virtual int SCAPI ResetPersonalDictionary() = 0;
/* destructor */
virtual ~ISpellChecker() {};
};
/* Exported library functions to create and destroy ISpellChecker objects. */
extern "C"
{
ISpellChecker * SCAPI SC_Create();
void SCAPI SC_Destroy(ISpellChecker *pSpellChecker);
}
#endif

View File

@ -1,462 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 is included by client.h
*
* It can be included by hand after mcom.h
*
* All intermodule data structures (i.e. MWContext, etc) should be included
* in this file
*/
#ifndef _STRUCTS_H_
#define _STRUCTS_H_
#include "ntypes.h"
#include "xp_mcom.h"
#include "il_types.h"
#include "lo_ele.h"
#include "shistele.h"
#include "edttypes.h"
#ifdef JAVA
#include "prlong.h"
#include "prclist.h"
#endif /* JAVA */
/* ------------------------------------------------------------------------ */
/* ============= Typedefs for the global context structure ================ */
/* will come out of the ctxtfunc.h file eventually
*/
typedef struct _ContextFuncs ContextFuncs;
/*
* This stuff is front end specific. Add whatever you need.
*/
#if defined(OSF1) && defined(__cplusplus)
struct fe_ContextData;
#endif
#if defined(XP_MAC) && defined(__cplusplus)
class NetscapeContext;
class CHyperView;
class CNSContext;
class CHTMLView;
#endif
#if ( defined(XP_WIN) || defined(XP_OS2) ) && defined(__cplusplus)
class CAbstractCX;
class CEditView;
class CSaveProgress;
#endif
typedef struct FEstruct_ {
#ifndef MOZILLA_CLIENT
void * generic_data;
#elif defined(XP_WIN) || defined(XP_OS2)
#ifdef __cplusplus
CAbstractCX *cx;
#else
void *cx;
#endif
#elif defined(XP_TEXT)
int doc_cols;
int doc_lines;
int cur_top_line;
int num_anchors;
int cur_anchor;
#elif defined(XP_UNIX)
struct fe_ContextData *data;
#elif defined(XP_MAC)
#ifdef __cplusplus
class NetscapeContext* realContext;
class CHyperView* view;
class CNSContext* newContext;
class CHTMLView* newView;
#else
void* realContext;
void* view;
void* newContext;
void* newView;
#endif
/*
** These members are only used by the EDITOR... However, if they
** are removed for non-editor builds the MWContext structure
** becomes skewed for java (and the rest of DIST)...
*/
#ifdef __cplusplus
class CEditView* editview;
class CSaveProgress* savedialog;
#else
void* editview;
void* savedialog;
#endif
#endif
#ifdef MOZILLA_CLIENT
void* webWidget; /* Really a nsIWebWidget */
#endif
} FEstruct;
#define FEUNITS_X(x,context) ((int32) ((MWContext *)context)->convertPixX * (x))
#define FEUNITS_Y(y,context) ((int32) ((MWContext *)context)->convertPixY * (y))
struct MessageCopyInfo;
/*
This is a generic context structure. There should be one context
per document window. The context will allow assorted modules to
pull out things like the URL of the current document as well as
giving them a place to hand their window specific stuff.
*/
#if defined (OSF1)
/* Forward declaration to make compiler happy on OSF1 */
struct MSG_SearchFrame;
#ifdef XP_CPLUSPLUS
class MSG_IMAPFolderInfoMail;
class MSG_Master;
class MSG_Pane;
class TImapServerState;
#endif
#endif
struct MWContext_ {
MWContextType type;
char *url; /* URL of current document */
char * name; /* name of this context */
History hist; /* Info needed for the window history module */
FEstruct fe; /* Front end specific stuff */
PRPackedBool fancyFTP; /* use fancy ftp ? */
PRPackedBool fancyNews; /* use fancy news ? */
PRPackedBool intrupt; /* the user just interrupted things */
PRPackedBool graphProgress; /* should the user get visual feedback */
PRPackedBool waitingMode; /* Has a transfer been initiated? Once a */
/* transfer is started, the user cannot select another */
/* anchor until either the transfer is aborted, has */
/* started to layout, or has been recognized as a */
/* separate document handled through an external stream/viewer */
PRPackedBool reSize; /* the user wants to resize the window once the */
/* current transfer is over */
int fileSort; /* file sorting method */
char * save_as_name; /* name to save current file as */
char * title; /* title (if supplied) of current document */
Bool is_grid_cell; /* Is this a grid cell */
struct MWContext_ *grid_parent; /* pointer to parent of grid cell */
XP_List * grid_children; /* grid children of this context */
int convertPixX; /* convert from pixels to fe-specific coords */
int convertPixY; /* convert from pixels to fe-specific coords */
ContextFuncs * funcs; /* function table of display routines */
PrintSetup *prSetup; /* Info about print job */
PrintInfo *prInfo; /* State information for printing process */
/* XXXM12N Stuff for the new, modular Image Library. *********************/
IL_GroupContext *img_cx; /* Created by Front Ends. Passed into Image
Library function calls. */
IL_ColorSpace *color_space; /* Colorspace information for images. This
should become a part of the FE's display
context when MWContext goes away. */
IL_IRGB *transparent_pixel; /* Background color to be passed into
IL_GetImage. Set by Front Ends (?) */
/*************************************************************************/
int32 images; /* # of distinct images on this page */
/* ! do not use these ! */
/* ! these are going away soon ! */
/* instead see intl_csi.h for the i18n accessor functions */
int16 do_not_use_win_csid; /* code set ID of current window */
int16 do_not_use_doc_csid; /* code set ID of current document */
int16 do_not_use_relayout; /* tell conversion to treat relayout case */
char *do_not_use_mime_charset; /* MIME charset from URL */
struct MSG_CompositionFrame *msg_cframe; /* ditto. */
struct MSG_SearchFrame *msg_searchFrame; /*state for search, for search contexts*/
struct MSG_BiffFrame *biff_frame; /* Biff info for this context, if any. */
struct BM_Frame *bmframe; /* Bookmarks info for this context, if any. */
/* for now, add IMAP mail stuff here */
#ifdef XP_CPLUSPLUS
class MSG_IMAPFolderInfoMail *currentIMAPfolder;
class MSG_Pane *imapURLPane; /* used when updated folders */
class MSG_Master *mailMaster;
class TNavigatorImapConnection *imapConnection;
#else
struct MSG_IMAPFolderInfoMail *currentIMAPfolder;
struct MSG_Pane *imapURLPane; /* used when updated folders */
struct MSG_Master *mailMaster;
struct TNavigatorImapConnection *imapConnection;
#endif
/* for now, add message copy info stuff here */
struct MessageCopyInfo *msgCopyInfo;
NPEmbeddedApp *pluginList; /* plugins on this page */
void *pluginReconnect; /* yet another full screen hack */
struct MimeDisplayData *mime_data; /* opaque data used by MIME message
parser (not Mail/News specific,
since MIME objects can show up
in Browser windows too.) */
/* Also overloaded by progress module to hold private crap! */
#ifdef MOCHA
struct JSContext *mocha_context; /* opaque handle to Mocha state */
uint32 event_bit; /* sum of all event capturing objects */
XP_Bool js_drag_enabled; /* indicates JS drag enabled */
int8 js_dragging; /* indicates which button has JS drag in process */
XP_List * js_dependent_list; /* lifetime-linked children of this context */
MWContext *js_parent;
int32 js_timeouts_pending; /* Number of pending JavaScript timeouts */
#endif
XP_Bool restricted_target; /* TRUE if window is off-limits for opening links into
from mail or other window-grabbing functions.*/
NPEmbeddedApp *pEmbeddedApp; /* yet another full screen hack */
char * defaultStatus; /* What string to show in the status area
whenever there's nothing better to show.
FE's should implement FE_Progress so that
if it is passed NULL or "" it will instead
display this string. libmsg changes this
string all the time for mail and news
contexts. */
#ifdef LAYERS
CL_Compositor *compositor; /* The compositor associated with this context */
XP_Bool blink_hidden; /* State of blink layers */
void *blink_timeout; /* Timeout used for blink hiding/unhiding */
#endif /* LAYERS */
int32 doc_id; /* unique identifier for generated documents */
int32 context_id; /* unique identifier for context */
void *pHelpInfo; /* pointer to additional help information;
see ns/lib/libnet/mkhelp.c [EA] */
#ifdef JAVA
/* See ns/sun-java/netscape/net/netStubs.c for the next 2 items: */
/*
** This mysterious list is used in two ways: (1) If you're a real
** window context, it's a list of all dummy java contexts that were
** created for java's network connections. (2) If you're a dummy java
** context, it's where you're linked into the list of connections for
** the real context:
*/
PRCList javaContexts;
/*
** Second, if you're a dummy java context, you'll need a pointer to
** the stream data so that you can shut down the netlib connection:
*/
struct nsn_JavaStreamData* javaContextStreamData;
/*
** Stuff for GraphProgress. See lj_embed.c
*/
Bool displayingMeteors;
int64 timeOfFirstMeteorShower;
int16 numberOfSimultaneousShowers;
#endif /* JAVA */
/*
** Put the editor stuff at the end so that people can still use the
** the Java DLL from the 2.0 dist build with Navigator Gold.
*/
PRPackedBool is_editor; /* differentiates between Editor and Browser modes */
PRPackedBool is_new_document; /* quick access to new doc state (unsaved-no file yet)*/
PRPackedBool display_paragraph_marks; /* True if we should display paragraph and hard-return symbols. */
PRPackedBool display_table_borders; /* True if we should display dotted lines around tables with invisible borders. */
PRPackedBool edit_view_source_hack;
PRPackedBool edit_loading_url; /* Hack to let us run the net while in a modal dialog */
PRPackedBool edit_saving_url; /* " */
PRPackedBool edit_has_backup; /* Editor has made a session backup */
PRPackedBool bIsComposeWindow; /* Editor is a compose window */
/*
* Webfonts that were loaded by this context
*/
void *webfontsList;
/* web font stuff */
/* On Windows, they are initialized to 0 in cxdc.cpp */
int16 WebFontDownLoadCount; /* # of download for this doc( one download can have multiple fonts) */
int16 MissedFontFace; /* have we missed any font? */
/* number of pixels per point-size */
double XpixelsPerPoint;
double YpixelsPerPoint;
Bool bJavaScriptCalling;
/* Allow JavaScript in certain internally generated contexts even
* when the "enable javascript" pref is turned off.
* This flag will also be inherited by child grid cells.
*/
PRPackedBool forceJSEnabled;
/* For increase and decrease font */
double fontScalingPercentage;
int INTL_tag; /* used to tell that we have a valid INTL_CSIInfo */
INTL_CharSetInfo INTL_CSIInfo; /* new home of private i18n data */
/* the current tab focused data */
LO_TabFocusData *tab_focus_data;
void *ncast_channel_context;
/* if the window is displaying an XML file, keep a pointer to the XML file structure here */
void* xmlfile;
};
/* This tells libmime.a whether it has the mime_data slot in MWContext
(which should always be true eventually, but having this #define here
makes life easier for me today.) -- jwz */
#define HAVE_MIME_DATA_SLOT
/* this is avialible even in non GOLD builds. */
#define EDT_IS_EDITOR(context) (context != NULL && context->is_editor)
#define EDT_DISPLAY_PARAGRAPH_MARKS(context) (context && context->is_editor && context->display_paragraph_marks)
#define EDT_DISPLAY_TABLE_BORDERS(context) (context && context->is_editor && context->display_table_borders)
#define EDT_RELAYOUT_FLAG (0x2)
#define EDT_IN_RELAYOUT(context) (context != NULL && ((context->is_editor & EDT_RELAYOUT_FLAG) != 0))
#ifdef JAVA
/*
** This macro is used to recover the MWContext* from the javaContexts
** list pointer:
*/
#define MWCONTEXT_PTR(context) \
((MWContext*) ((char*) (context) - offsetof(MWContext,javaContexts)))
#endif /* JAVA */
/* ------------------------------------------------------------------------ */
/* ====================== NASTY UGLY SHORT TERM HACKS ===================== */
#define XP_CONTEXTID(ctxt) ((ctxt)->context_id)
#define XP_DOCID(ctxt) ((ctxt)->doc_id)
#define XP_SET_DOCID(ctxt, id) ((ctxt)->doc_id = (id))
/* ------------------------------------------------------------------------ */
/* ============= Typedefs for the parser module structures ================ */
/*
* I *think* (but am unsure) that these should be forked off into a
* parser specific client level include file
*
*/
typedef int8 TagType;
struct PA_Tag_struct {
TagType type;
PRPackedBool is_end;
uint16 newline_count;
#if defined(XP_WIN) || defined(XP_OS2)
union { /* use an anonymous union for debugging purposes*/
PA_Block data;
char* data_str;
};
#else
PA_Block data;
#endif
int32 data_len;
int32 true_len;
void *lo_data;
struct PA_Tag_struct *next;
ED_Element *edit_element;
};
#define PA_HAS_PDATA( tag ) (tag->pVoid != 0 )
#ifdef XP_UNIX
typedef char *PAAllocate (intn byte_cnt);
typedef void PAFree (char *ptr);
#else
typedef void *PAAllocate (unsigned int byte_cnt);
typedef void PAFree (void *ptr);
#endif
typedef intn PA_OutputFunction (void *data_object, PA_Tag *tags, intn status);
struct _PA_Functions {
PAAllocate *mem_allocate;
PAFree *mem_free;
PA_OutputFunction *PA_ParsedTag;
};
typedef struct PA_InitData_struct {
PA_OutputFunction *output_func;
} PA_InitData;
/* Structure that defines the characteristics of a new window.
* Each entry should be structured so that 0 should be the
* default normal value. Currently all 0 values
* bring up a chromeless MWContextBrowser type window of
* arbitrary size.
*/
struct _Chrome {
MWContextType type; /* Must be set to the correct type you want,
* if doesn't exist, define one!!!
*/
Bool show_button_bar; /* TRUE to display button bar */
Bool show_url_bar; /* TRUE to show URL entry area */
Bool show_directory_buttons; /* TRUE to show directory buttons */
Bool show_bottom_status_bar; /* TRUE to show bottom status bar */
Bool show_menu; /* TRUE to show menu bar */
Bool show_security_bar; /* TRUE to show security bar */
Bool hide_title_bar; /* TRUE to hide title bar and window controls */
int32 w_hint, h_hint; /* hints for width and height */
int32 outw_hint, outh_hint; /* hints for outer window width and height */
int32 l_hint, t_hint; /* hints for left and top window positioning */
Bool topmost; /* TRUE for window alwaysOnTop */
Bool bottommost; /* TRUE for 'desktop' window */
Bool z_lock; /* TRUE for window which cannot move within z-order */
Bool is_modal; /* TRUE to make window be modal */
Bool show_scrollbar; /* TRUE to show scrollbars on window */
Bool location_is_chrome; /* TRUE if top or left is specified */
Bool allow_resize; /* TRUE to allow resize of windows */
Bool allow_close; /* TRUE to allow window to be closed */
Bool copy_history; /* TRUE to copy history of prototype context*/
Bool dependent; /* TRUE if this window is to be closed with its parent*/
Bool disable_commands; /* TRUE if user has set hot-keys / menus off */
Bool restricted_target; /* TRUE if window is off-limits for opening links into
from mail or other window-grabbing functions.*/
void (* close_callback)(void *close_arg); /* called on window close */
void *close_arg; /* passed to close_callback */
};
#endif /* _STRUCTS_H_ */

View File

@ -1,126 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/*
undo.h --- creating and maintaining an undo list.
Created: Terry Weissman <terry@netscape.com>, 9-Sept-95.
*/
#ifndef _UNDO_H_
#define _UNDO_H_
typedef struct UndoState UndoState;
XP_BEGIN_PROTOS
/* Create a new undo state. (Returns NULL if no memory available). State will
be saved to execute up to "maxdepth" undos in a row.*/
extern UndoState* UNDO_Create(int maxdepth);
/* Throw away the undo state. */
extern void UNDO_Destroy(UndoState* state);
/* Throw away all the queued events in the undo state. If we are in the middle
of a batch (there are outstanding calls to UNDO_StartBatch()), then future
events in the batch are also thrown away. */
extern void UNDO_DiscardAll(UndoState* state);
/* Mark the beginning of a bunch of actions that should be undone as one user
action. Should always be matched by a later call to UNDO_EndBatch().
These calls can nest. They fail only if running out of memory, in which
case they will call UNDO_DiscardAll(). */
/* Note you can use the tag arguments to associate a batch of events with
some user defined tag e.g., a name or object identifying the batch of events */
extern int UNDO_StartBatch(UndoState* state);
extern int UNDO_EndBatch(UndoState* state, void (*freetag)(void*), void* tag);
/* Returns TRUE if undoing will do something (i.e., the menu item for "Undo"
should be selectable). */
extern XP_Bool UNDO_CanUndo(UndoState* state);
/* Returns TRUE if redoing will do something (i.e., the menu item for "Redo"
should be selectable). */
extern XP_Bool UNDO_CanRedo(UndoState* state);
/* Actually do an undo. Should only be called if UNDO_CanUndo returned TRUE.
May not be called if there are any pending calls to UNDO_StartBatch. */
extern int UNDO_DoUndo(UndoState* state);
/* Actually do an redo. Should only be called if UNDO_CanRedo returned TRUE.
May not be called if there are any pending calls to UNDO_StartBatch. */
extern int UNDO_DoRedo(UndoState* state);
/* Log an event. The "undoit" function is to be called with the closure to
undo an event that just happened. It returns a success code; if negative,
the code will be propagated up to the call to UNDO_DoUndo and UNDO_DoRedo,
and UNDO_DiscardAll will be called. Note that the undoit function almost
always ends up calling UNDO_LogEvent again, to log the function to undo thie
undoing of this action. If you get my drift.
The "freeit" function is called when the undo library decides it will never
ever call undoit function. It is called with the closure to free storage
used by the closure.
If this fails (we ran out of memory), then it will return a negative failure
code, and call UNDO_DiscardAll() and the freeit func. */
/* Note you can use the tag arguments to associate the event with
some user defined tag e.g., a name or object identifying the event. */
#ifdef XP_OS2
typedef int (*PNSLUFN)(void *);
typedef void (*PNSLFFN)(void *);
extern int UNDO_LogEvent(UndoState* state, PNSLUFN undoit,
PNSLFFN freeit, void* closure,
PNSLFFN freetag, void* tag);
#else
extern int UNDO_LogEvent(UndoState* state, int (*undoit)(void*),
void (*freeit)(void*), void* closure,
void (*freetag)(void*), void* tag);
#endif
/* Retrieve the undo/redo tag from the top of the corresponding stack. The
tag is the "thing" YOU assigned during either an UNDO_EndBatch() or
UNDO_LogEvent call. You most likely use the tag to identify the event[s]
that can be undone/redone.
e.g., Label the Edit|Undo menu item with, say, Edit|Undo Delete. */
extern void *UNDO_PeekUndoTag(UndoState* state);
extern void *UNDO_PeekRedoTag(UndoState* state);
XP_END_PROTOS
#endif /* !_UNDO_H_ */

View File

@ -1,71 +0,0 @@
/* -*- Mode: C; tab-width: 8; 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.
*/
/*
* dns.h --- portable nonblocking DNS for Unix
* Created: Jamie Zawinski <jwz@netscape.com>, 19-Dec-96.
*/
#ifndef __UNIX_DNS_H__
#define __UNIX_DNS_H__
/* Kick off an async DNS lookup;
The returned value is an id representing this transaction;
the result_callback will be run (in the main process) when we
have a result. Returns negative if something went wrong.
If `status' is negative,`result' is an error message.
If `status' is positive, `result' is a 4-character string of
the IP address.
If `status' is 0, then the lookup was prematurely aborted
via a call to DNS_AbortHostLookup().
*/
extern int DNS_AsyncLookupHost(const char *name,
int (*result_callback) (void *id,
void *closure,
int status,
const char *result),
void *closure,
void **id_return);
/* Prematurely give up on the given host-lookup transaction.
The `id' is what was returned by DNS_AsyncLookupHost.
This causes the result_callback to be called with a negative
status.
*/
extern int DNS_AbortHostLookup(void *id);
/* Call this from main() to initialize the async DNS library.
Returns a file descriptor that should be selected for, or
negative if something went wrong. Pass it the argc/argv
that your `main' was called with (it needs these pointers
in order to give its forked subprocesses sensible names.)
*/
extern int DNS_SpawnProcess(int argc, char **argv);
/* The main select() loop of your program should call this when the fd
that was returned by DNS_SpawnProcess comes active. This may cause
some of the result_callback functions to run.
If this returns negative, then a fatal error has happened, and you
should close `fd' and not select() for it again. Call gethostbyname()
in the foreground or something.
*/
extern int DNS_ServiceProcess(int fd);
#endif /* __UNIX_DNS_H__ */

View File

@ -1,76 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/***************************************************************************
(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International
Business Machines Corporation and Siemens Rolm Communications Inc.
For purposes of this license notice, the term Licensors shall mean,
collectively, Apple Computer, Inc., AT&T Corp., International
Business Machines Corporation and Siemens Rolm Communications Inc.
The term Licensor shall mean any of the Licensors.
Subject to acceptance of the following conditions, permission is hereby
granted by Licensors without the need for written agreement and without
license or royalty fees, to use, copy, modify and distribute this
software for any purpose.
The above copyright notice and the following four paragraphs must be
reproduced in all copies of this software and any software including
this software.
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE
ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR
MODIFICATIONS.
IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT,
INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT
OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.
The software is provided with RESTRICTED RIGHTS. Use, duplication, or
disclosure by the government are subject to restrictions set forth in
DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable.
***************************************************************************/
#ifndef __VCC_H__
#define __VCC_H__ 1
XP_BEGIN_PROTOS
#include "vobject.h"
VObject* Parse_MIME(const char *input, unsigned long len);
VObject* Parse_MIME_FromFile(XP_File file);
VObject* Parse_MIME_FromFileName(char* fname);
typedef void (*MimeErrorHandler)(char *);
void registerMimeErrorHandler(MimeErrorHandler);
XP_END_PROTOS
#endif /* __VCC_H__ */

View File

@ -1,424 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/***************************************************************************
(C) Copyright 1996 Apple Computer, Inc., AT&T Corp., International
Business Machines Corporation and Siemens Rolm Communications Inc.
For purposes of this license notice, the term Licensors shall mean,
collectively, Apple Computer, Inc., AT&T Corp., International
Business Machines Corporation and Siemens Rolm Communications Inc.
The term Licensor shall mean any of the Licensors.
Subject to acceptance of the following conditions, permission is hereby
granted by Licensors without the need for written agreement and without
license or royalty fees, to use, copy, modify and distribute this
software for any purpose.
The above copyright notice and the following four paragraphs must be
reproduced in all copies of this software and any software including
this software.
THIS SOFTWARE IS PROVIDED ON AN "AS IS" BASIS AND NO LICENSOR SHALL HAVE
ANY OBLIGATION TO PROVIDE MAINTENANCE, SUPPORT, UPDATES, ENHANCEMENTS OR
MODIFICATIONS.
IN NO EVENT SHALL ANY LICENSOR BE LIABLE TO ANY PARTY FOR DIRECT,
INDIRECT, SPECIAL OR CONSEQUENTIAL DAMAGES OR LOST PROFITS ARISING OUT
OF THE USE OF THIS SOFTWARE EVEN IF ADVISED OF THE POSSIBILITY OF SUCH
DAMAGE.
EACH LICENSOR SPECIFICALLY DISCLAIMS ANY WARRANTIES, EXPRESS OR IMPLIED,
INCLUDING BUT NOT LIMITED TO ANY WARRANTY OF NONINFRINGEMENT OR THE
IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
PURPOSE.
The software is provided with RESTRICTED RIGHTS. Use, duplication, or
disclosure by the government are subject to restrictions set forth in
DFARS 252.227-7013 or 48 CFR 52.227-19, as applicable.
***************************************************************************/
/*
The vCard/vCalendar C interface is implemented in the set
of files as follows:
vcc.y, yacc source, and vcc.c, the yacc output you will use
implements the core parser
vobject.c implements an API that insulates the caller from
the parser and changes in the vCard/vCalendar BNF
port.h defines compilation environment dependent stuff
vcc.h and vobject.h are header files for their .c counterparts
vcaltmp.h and vcaltmp.c implement vCalendar "macro" functions
which you may find useful.
test.c is a standalone test driver that exercises some of
the features of the APIs provided. Invoke test.exe on a
VCARD/VCALENDAR input text file and you will see the pretty
print output of the internal representation (this pretty print
output should give you a good idea of how the internal
representation looks like -- there is one such output in the
following too). Also, a file with the .out suffix is generated
to show that the internal representation can be written back
in the original text format.
For more information on this API see the readme.txt file
which accompanied this distribution.
Also visit:
http://www.versit.com
http://www.ralden.com
*/
#ifndef __VOBJECT_H__
#define __VOBJECT_H__ 1
#include "xp.h"
#include "xp_file.h"
/*
Unfortunately, on the Mac (and possibly other platforms) with our current, out-dated
libraries (Plauger), |wchar_t| is defined incorrectly, which breaks vcards.
We can't fix Plauger because it doesn't come with source. Later, when we
upgrade to MSL, we can make this evil hack go away. In the mean time,
vcards are not allowed to use the (incorrectly defined) |wchar_t| type. Instead,
they will use an appropriately defined local type |vwchar_t|.
*/
#ifdef XP_MAC
typedef uint16 vwchar_t;
#else
typedef wchar_t vwchar_t;
#endif
XP_BEGIN_PROTOS
#define VC7bitProp "7bit"
#define VC8bitProp "8bit"
#define VCAAlarmProp "aalarm"
#define VCAdditionalNamesProp "addn"
#define VCAdrProp "adr"
#define VCAgentProp "agent"
#define VCAIFFProp "aiff"
#define VCAOLProp "aol"
#define VCAppleLinkProp "applelink"
#define VCAttachProp "attach"
#define VCAttendeeProp "attendee"
#define VCATTMailProp "attmail"
#define VCAudioContentProp "audiocontent"
#define VCAVIProp "avi"
#define VCBase64Prop "base64"
#define VCBBSProp "bbs"
#define VCBirthDateProp "bday"
#define VCBMPProp "bmp"
#define VCBodyProp "body"
#define VCBusinessRoleProp "role"
#define VCCalProp "vcalendar"
#define VCCaptionProp "cap"
#define VCCardProp "vcard"
#define VCCarProp "car"
#define VCCategoriesProp "categories"
#define VCCellularProp "cell"
#define VCCGMProp "cgm"
#define VCCharSetProp "cs"
#define VCCIDProp "cid"
#define VCCISProp "cis"
#define VCCityProp "l"
#define VCClassProp "class"
#define VCCommentProp "note"
#define VCCompletedProp "completed"
#define VCContentIDProp "content-id"
#define VCCountryNameProp "c"
#define VCDAlarmProp "dalarm"
#define VCDataSizeProp "datasize"
#define VCDayLightProp "daylight"
#define VCDCreatedProp "dcreated"
#define VCDeliveryLabelProp "label"
#define VCDescriptionProp "description"
#define VCDIBProp "dib"
#define VCDisplayStringProp "displaystring"
#define VCDomesticProp "dom"
#define VCDTendProp "dtend"
#define VCDTstartProp "dtstart"
#define VCDueProp "due"
#define VCEmailAddressProp "email"
#define VCEncodingProp "encoding"
#define VCEndProp "end"
#define VCEventProp "vevent"
#define VCEWorldProp "eworld"
#define VCExNumProp "exnum"
#define VCExpDateProp "exdate"
#define VCExpectProp "expect"
#define VCExtAddressProp "ext add"
#define VCFamilyNameProp "f"
#define VCFaxProp "fax"
#define VCFullNameProp "fn"
#define VCGeoProp "geo"
#define VCGeoLocationProp "geo"
#define VCGIFProp "gif"
#define VCGivenNameProp "g"
#define VCGroupingProp "grouping"
#define VCHomeProp "home"
#define VCIBMMailProp "ibmmail"
#define VCInlineProp "inline"
#define VCInternationalProp "intl"
#define VCInternetProp "internet"
#define VCISDNProp "isdn"
#define VCJPEGProp "jpeg"
#define VCLanguageProp "lang"
#define VCLastModifiedProp "last-modified"
#define VCLastRevisedProp "rev"
#define VCLocationProp "location"
#define VCLogoProp "logo"
#define VCMailerProp "mailer"
#define VCMAlarmProp "malarm"
#define VCMCIMailProp "mcimail"
#define VCMessageProp "msg"
#define VCMETProp "met"
#define VCModemProp "modem"
#define VCMPEG2Prop "mpeg2"
#define VCMPEGProp "mpeg"
#define VCMSNProp "msn"
#define VCNamePrefixesProp "npre"
#define VCNameProp "n"
#define VCNameSuffixesProp "nsuf"
#define VCNoteProp "note"
#define VCOrgNameProp "orgname"
#define VCOrgProp "org"
#define VCOrgUnit2Prop "oun2"
#define VCOrgUnit3Prop "oun3"
#define VCOrgUnit4Prop "oun4"
#define VCOrgUnitProp "oun"
#define VCPagerProp "pager"
#define VCPAlarmProp "palarm"
#define VCParcelProp "parcel"
#define VCPartProp "part"
#define VCPCMProp "pcm"
#define VCPDFProp "pdf"
#define VCPGPProp "pgp"
#define VCPhotoProp "photo"
#define VCPICTProp "pict"
#define VCPMBProp "pmb"
#define VCPostalBoxProp "box"
#define VCPostalCodeProp "pc"
#define VCPostalProp "postal"
#define VCPowerShareProp "powershare"
#define VCPreferredProp "pref"
#define VCPriorityProp "priority"
#define VCProcedureNameProp "procedurename"
#define VCProdIdProp "prodid"
#define VCProdigyProp "prodigy"
#define VCPronunciationProp "sound"
#define VCPSProp "ps"
#define VCPublicKeyProp "key"
#define VCQPProp "qp"
#define VCQuickTimeProp "qtime"
#define VCQuotedPrintableProp "quoted-printable"
#define VCRDateProp "rdate"
#define VCRegionProp "r"
#define VCRelatedToProp "related-to"
#define VCRepeatCountProp "repeatcount"
#define VCResourcesProp "resources"
#define VCRNumProp "rnum"
#define VCRoleProp "role"
#define VCRRuleProp "rrule"
#define VCRSVPProp "rsvp"
#define VCRunTimeProp "runtime"
#define VCSequenceProp "sequence"
#define VCSnoozeTimeProp "snoozetime"
#define VCStartProp "start"
#define VCStatusProp "status"
#define VCStreetAddressProp "street"
#define VCSubTypeProp "subtype"
#define VCSummaryProp "summary"
#define VCTelephoneProp "tel"
#define VCTIFFProp "tiff"
#define VCTimeZoneProp "tz"
#define VCTitleProp "title"
#define VCTLXProp "tlx"
#define VCTodoProp "vtodo"
#define VCTranspProp "transp"
#define VCUniqueStringProp "uid"
#define VCURLProp "url"
#define VCURLValueProp "urlval"
#define VCValueProp "value"
#define VCVersionProp "version"
#define VCVideoProp "video"
#define VCVoiceProp "voice"
#define VCWAVEProp "wave"
#define VCWMFProp "wmf"
#define VCWorkProp "work"
#define VCX400Prop "x400"
#define VCX509Prop "x509"
#define VCXRuleProp "xrule"
#define VCCooltalk "x-mozilla-cpt"
#define VCCooltalkAddress "x-moxilla-cpadr"
#define VCUseServer "x-mozilla-cpsrv"
#define VCUseHTML "x-mozilla-html"
/* return type of vObjectValueType: */
#define VCVT_NOVALUE 0
/* if the VObject has no value associated with it. */
#define VCVT_STRINGZ 1
/* if the VObject has value set by setVObjectStringZValue. */
#define VCVT_USTRINGZ 2
/* if the VObject has value set by setVObjectUStringZValue. */
#define VCVT_UINT 3
/* if the VObject has value set by setVObjectIntegerValue. */
#define VCVT_ULONG 4
/* if the VObject has value set by setVObjectLongValue. */
#define VCVT_RAW 5
/* if the VObject has value set by setVObjectAnyValue. */
#define VCVT_VOBJECT 6
/* if the VObject has value set by setVObjectVObjectValue. */
#define NAME_OF(o) o->id
#define VALUE_TYPE(o) o->valType
#define STRINGZ_VALUE_OF(o) o->val.strs
#define USTRINGZ_VALUE_OF(o) o->val.ustrs
#define INTEGER_VALUE_OF(o) o->val.i
#define LONG_VALUE_OF(o) o->val.l
#define ANY_VALUE_OF(o) o->val.any
#define VOBJECT_VALUE_OF(o) o->val.vobj
typedef struct VObject VObject;
typedef union ValueItem {
const char *strs;
const vwchar_t *ustrs;
unsigned int i;
unsigned long l;
void *any;
VObject *vobj;
} ValueItem;
struct VObject {
VObject *next;
const char *id;
VObject *prop;
unsigned short valType;
ValueItem val;
};
typedef struct StrItem StrItem;
struct StrItem {
StrItem *next;
const char *s;
unsigned int refCnt;
};
typedef struct OFile {
XP_File fp;
char *s;
int len;
int limit;
int alloc:1;
int fail:1;
} OFile;
typedef struct VObjectIterator {
VObject* start;
VObject* next;
} VObjectIterator;
VObject* newVObject(const char *id);
void deleteVObject(VObject *p);
char* dupStr(const char *s, unsigned int size);
void deleteStr(const char *p);
void unUseStr(const char *s);
void setVObjectName(VObject *o, const char* id);
void setVObjectStringZValue(VObject *o, const char *s);
void setVObjectStringZValue_(VObject *o, const char *s);
void setVObjectUStringZValue(VObject *o, const vwchar_t *s);
void setVObjectUStringZValue_(VObject *o, const vwchar_t *s);
void setVObjectIntegerValue(VObject *o, unsigned int i);
void setVObjectLongValue(VObject *o, unsigned long l);
void setVObjectAnyValue(VObject *o, void *t);
VObject* setValueWithSize(VObject *prop, void *val, unsigned int size);
VObject* setValueWithSize_(VObject *prop, void *val, unsigned int size);
const char* vObjectName(VObject *o);
const char* vObjectStringZValue(VObject *o);
const vwchar_t* vObjectUStringZValue(VObject *o);
unsigned int vObjectIntegerValue(VObject *o);
unsigned long vObjectLongValue(VObject *o);
void* vObjectAnyValue(VObject *o);
VObject* vObjectVObjectValue(VObject *o);
void setVObjectVObjectValue(VObject *o, VObject *p);
VObject* addVObjectProp(VObject *o, VObject *p);
VObject* addProp(VObject *o, const char *id);
VObject* addProp_(VObject *o, const char *id);
VObject* addPropValue(VObject *o, const char *p, const char *v);
VObject* addPropSizedValue_(VObject *o, const char *p, const char *v, unsigned int size);
VObject* addPropSizedValue(VObject *o, const char *p, const char *v, unsigned int size);
VObject* addGroup(VObject *o, const char *g);
void addList(VObject **o, VObject *p);
VObject* isAPropertyOf(VObject *o, const char *id);
VObject* nextVObjectInList(VObject *o);
void initPropIterator(VObjectIterator *i, VObject *o);
int moreIteration(VObjectIterator *i);
VObject* nextVObject(VObjectIterator *i);
extern void printVObject(XP_File fp,VObject *o);
void printVObject_(XP_File fp, VObject *o, int level);
extern void writeVObject(XP_File fp, VObject *o);
void writeVObject_(OFile *fp, VObject *o, XP_Bool expandSpaces);
char* writeMemVObject(char *s, int *len, VObject *o);
char* writeMemVObjects(char *s, int *len, VObject *list, XP_Bool expandSpaces);
const char* lookupStr(const char *s);
void cleanStrTbl();
void cleanVObject(VObject *o);
void cleanVObjects(VObject *list);
const char* lookupProp(const char* str);
const char* lookupProp_(const char* str);
vwchar_t* fakeUnicode(const char *ps, int *bytes);
int uStrLen(const vwchar_t *u);
char* fakeCString(const vwchar_t *u);
void printVObjectToFile(char *fname,VObject *o);
void printVObjectsToFile(char *fname,VObject *list);
void writeVObjectToFile(char *fname, VObject *o);
void writeVObjectsToFile(char *fname, VObject *list);
#define MAXPROPNAMESIZE 256
#define MAXMOZPROPNAMESIZE 16
XP_END_PROTOS
#endif /* __VOBJECT_H__ */

View File

@ -1,117 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/* ---------------------------------------------------------------------------
Stuff to fake unix file I/O on windows boxes
------------------------------------------------------------------------*/
#ifndef WINFILE_H
#define WINFILE_H
#ifdef _WINDOWS
#if defined(XP_WIN32) || defined(_WIN32)
/* 32-bit stuff here */
#include <windows.h>
#include <stdlib.h>
#include <sys\types.h>
#include <sys\stat.h>
typedef struct DIR_Struct {
void * directoryPtr;
WIN32_FIND_DATA data;
} DIR;
#define _ST_FSTYPSZ 16
#ifndef __BORLANDC__
typedef unsigned long mode_t;
typedef long uid_t;
typedef long gid_t;
typedef long off_t;
typedef unsigned long nlink_t;
#endif
typedef struct timestruc {
time_t tv_sec; /* seconds */
long tv_nsec; /* and nanoseconds */
} timestruc_t;
struct dirent { /* data from readdir() */
ino_t d_ino; /* inode number of entry */
off_t d_off; /* offset of disk direntory entry */
unsigned short d_reclen; /* length of this record */
char d_name[_MAX_FNAME]; /* name of file */
};
#ifndef __BORLANDC__
#define S_ISDIR(s) ((s) & _S_IFDIR)
#endif
#else /* _WIN32 */
/* 16-bit windows stuff */
#include <sys\types.h>
#include <sys\stat.h>
#include <dos.h>
/* Getting cocky to support multiple file systems */
typedef struct dirStruct_tag {
struct _find_t file_data;
char c_checkdrive;
} dirStruct;
typedef struct DIR_Struct {
void * directoryPtr;
dirStruct data;
} DIR;
#define _ST_FSTYPSZ 16
typedef unsigned long mode_t;
typedef long uid_t;
typedef long gid_t;
typedef long off_t;
typedef unsigned long nlink_t;
typedef struct timestruc {
time_t tv_sec; /* seconds */
long tv_nsec; /* and nanoseconds */
} timestruc_t;
struct dirent { /* data from readdir() */
ino_t d_ino; /* inode number of entry */
off_t d_off; /* offset of disk direntory entry */
unsigned short d_reclen; /* length of this record */
#ifdef XP_WIN32
char d_name[_MAX_FNAME]; /* name of file */
#else
char d_name[20]; /* name of file */
#endif
};
#define S_ISDIR(s) ((s) & _S_IFDIR)
#endif /* 16-bit windows */
#define CONST const
#endif /* _WINDOWS */
#endif /* WINFILE_H */

View File

@ -1,179 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/*
** External points of interest for the translation library
*/
#ifndef XLATE_H
#define XLATE_H
typedef void (*XL_CompletionRoutine)(PrintSetup*);
typedef void* XL_TextTranslation;
typedef void* XL_PostscriptTranslation;
XP_BEGIN_PROTOS
extern void XL_InitializePrintSetup(PrintSetup *p);
extern void XL_InitializeTextSetup(PrintSetup *p);
extern void XL_TranslatePostscript(MWContext*, URL_Struct *u,
SHIST_SavedData *sd, PrintSetup*p);
extern XL_TextTranslation
XL_TranslateText(MWContext *, URL_Struct *u, PrintSetup*p);
extern void XL_GetTextImage(LO_ImageStruct *image);
extern void
XL_DisplayTextImage(MWContext *cx, int iLocation, LO_ImageStruct *img);
extern XP_Bool XP_CheckElementSpan(MWContext*, int top, int height);
extern void XP_InitializePrintInfo(MWContext *);
extern void XP_CleanupPrintInfo(MWContext *);
extern void XP_DrawForPrint(MWContext *, int );
extern void XP_LayoutForPrint(MWContext *cx, int32 doc_height);
XP_END_PROTOS
typedef struct LineRecord_struct LineRecord;
/*
** PAGE coordinates are 720/inch, layout happens in this space
** POINT coordinates are 72/inch, the printer wants these
*/
#define INCH_TO_PAGE(f) ((int) (.5 + (f)*720))
#define PAGE_TO_POINT_I(f) ((int) ((f) / 10.0))
#define PAGE_TO_POINT_F(f) ((f) / 10.0)
#define POINT_TO_PAGE(p) ((p)*10)
/*
** Used to pass info into text and/or postscript translation
*/
struct PrintSetup_ {
int top; /* Margins (PostScript Only) */
int bottom;
int left;
int right;
int width; /* Paper size, # of cols for text xlate */
int height;
char* header;
char* footer;
int *sizes;
XP_Bool reverse; /* Output order */
XP_Bool color; /* Image output */
XP_Bool deep_color; /* 24 bit color output */
XP_Bool landscape; /* Rotated output */
XP_Bool underline; /* underline links */
XP_Bool scale_images; /* Scale unsized images which are too big */
XP_Bool scale_pre; /* do the pre-scaling thing */
float dpi; /* dpi for externally sized items */
float rules; /* Scale factor for rulers */
int n_up; /* cool page combining */
int bigger; /* Used to init sizes if sizesin NULL */
char* prefix; /* For text xlate, prepended to each line */
char* eol; /* For text translation, line terminator */
char* bullet; /* What char to use for bullets */
struct URL_Struct_ *url; /* url of doc being translated */
XP_File out; /* Where to send the output */
char *filename; /* output file name, if any */
XL_CompletionRoutine completion; /* Called when translation finished */
void* carg; /* Data saved for completion routine */
int status; /* Status of URL on completion */
/* "other" font is typically East Asian */
char *otherFontName; /* name of "other" PostScript font */
int16 otherFontCharSetID; /* charset ID of "other" font */
int otherFontWidth; /* width of "other" font (square) */
int otherFontAscent; /* Ascent of "other" font (square) */
MWContext *cx; /* original context, if available */
};
#define XL_LOADING_PHASE 1
#define XL_LAYOUT_PHASE 2
#define XL_DRAW_PHASE 3
typedef struct page_breaks {
int32 y_top;
int32 y_break;
} PageBreaks;
/*
** Used to store state needed while translation is in progress
*/
struct PrintInfo_ {
/*
** BEGIN SPECIAL
** If using the table print code, the following fields must
** be properly set up.
*/
int32 page_height; /* Size of printable area on page */
int32 page_width; /* Size of printable area on page */
int32 page_break; /* Current page bottom */
int32 page_topy; /* Current page top */
int phase;
/*
** CONTINUE SPECIAL
** The table print code maintains these
*/
PageBreaks *pages; /* Contains extents of each page */
int pt_size; /* Size of above table */
int n_pages; /* # of valid entries in above table */
/*
** END SPECIAL
*/
/*
** AAAOOOGAH
**
** These are used to cache values from the originating context's
** function table
*/
void (*scnatt)(MWContext*); /* SetCallNetlibAllTheTime */
void (*ccnatt)(MWContext*); /* CLearCallNetlibAllTheTime */
char* doc_title; /* best guess at title */
int32 doc_width; /* Total document width */
int32 doc_height; /* Total document height */
#ifdef LATER
float scale; /* for shrinking pre areas */
int32 pre_start; /* First y of current pre section */
int32 pre_end; /* Last y of current pre section */
XP_List *interesting; /* List of pre's about which I care */
XP_Bool in_pre; /* True when inside a <pre> section */
#endif
/*
** These fields are used only by the text translator
*/
char *line; /* Pointer to data for the current line */
XP_Bool in_table; /* True when caching lines in a table */
XP_Bool first_line_p; /* true when the first line has not yet been
output - this is a kludge for the mail
citation code. */
int table_top, /* Size of the table being cached */
table_bottom;
LineRecord *saved_lines; /* cached lines for tables */
int last_y; /* Used to track blank lines */
};
#endif /* XLATE_H */

View File

@ -1,43 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/*
xp.h
This file is left around for backwards compatability. Nothing new should
be added to this file. Rather, add it to the client specific section or
the cross-platform specific area depending on what is appropriate.
-------------------------------------------------------------------------*/
#ifndef _XP_H_
#define _XP_H_
#include "xp_mcom.h"
#include "client.h"
#ifdef HEAPAGENT
#define MEM_DEBUG 1
#define DEFINE_NEW_MACRO 1
#include <heapagnt.h>
#endif /* HEAPAGENT */
#endif /* !_XP_H_ */

View File

@ -1,315 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/*-----------------------------------------------------------------------------
xp_core.h
Cross-Platform Core Types
-----------------------------------------------------------------------------*/
/*-----------------------------------------------------------------------------
Platform-specific defines
XP_WIN XP_IS_WIN XP_WIN_ARG(X)
XP_MAC XP_IS_MAC XP_MAC_ARG(X)
XP_UNIX XP_IS_UNIX XP_UNIX_ARG(X)
XP_CPLUSPLUS XP_IS_CPLUSPLUS
XP_OS2 XP_IS_OS2 XP_OS2_ARG(X) IBM-LTB added these
defined iff always defined defined to nothing
on that platform as 0 or 1 or X
Also Bool, Int32, Int16, Int, Uint32, Uint16, Uint, and nil
And TRUE, FALSE, ON, OFF, YES, NO
-----------------------------------------------------------------------------*/
#ifdef NSPR20
#include "prtypes.h" /* for intn, etc. */
#ifdef XP_MAC
#include "prosdep.h"
#else
#include "md/prosdep.h"
#endif
#include "prlog.h"
#endif /* NSPR20 */
#ifndef _XP_Core_
#define _XP_Core_
/* which system are we on, get the base macro defined */
#if defined(macintosh) || defined(__MWERKS__) || defined(applec)
#ifndef macintosh
#define macintosh 1
#endif
#endif
#if defined(__unix) || defined(unix) || defined(UNIX) || defined(XP_UNIX)
#ifndef unix
#define unix 1
#endif
#endif
#if !defined(macintosh) && !defined(_WINDOWS) && !defined(unix)
/* #error xp library can't determine system type */
#endif
/* flush out all the system macros */
#ifdef macintosh
# ifndef XP_MAC
# define XP_MAC 1
# endif
# define XP_IS_MAC 1
# define XP_MAC_ARG(x) x
#else
# define XP_IS_MAC 0
# define XP_MAC_ARG(x)
#endif
#ifdef _WINDOWS
# ifndef XP_WIN
# define XP_WIN
# endif
# define XP_IS_WIN 1
# define XP_WIN_ARG(x) x
#if defined(_WIN32) || defined(WIN32)
# ifndef XP_WIN32
# define XP_WIN32
# endif
#else
# ifndef XP_WIN16
# define XP_WIN16
# endif
#endif
#else
# define XP_IS_WIN 0
# define XP_WIN_ARG(x)
#endif
#ifdef unix
# ifndef XP_UNIX
# define XP_UNIX
# endif
# define XP_IS_UNIX 1
# define XP_UNIX_ARG(x) x
#else
# define XP_IS_UNIX 0
# define XP_UNIX_ARG(x)
#endif
/* IBM-LTB Setup system macros for OS/2 */
#if defined (__OS2__)
# ifndef XP_OS2
# define XP_OS2
# endif
# define XP_IS_OS2 1
# define XP_OS2_ARG(x) x
#else
# define XP_IS_OS2 0
# define XP_OS2_ARG(x)
#endif
/* what language do we have? */
#if defined(__cplusplus)
# define XP_CPLUSPLUS
# define XP_IS_CPLUSPLUS 1
#else
# define XP_IS_CPLUSPLUS 0
#endif
#if defined(DEBUG) || !defined(XP_CPLUSPLUS)
#define XP_REQUIRES_FUNCTIONS
#endif
/*
language macros
If C++ code includes a prototype for a function *compiled* in C, it needs to be
wrapped in extern "C" for the linking to work properly. On the Mac, all code is
being compiled in C++ so this isn't necessary, and Unix compiles it all in C. So
only Windows actually will make use of the defined macros.
*/
#if defined(XP_CPLUSPLUS)
# define XP_BEGIN_PROTOS extern "C" {
# define XP_END_PROTOS }
#else
# define XP_BEGIN_PROTOS
# define XP_END_PROTOS
#endif
/* simple common types */
#if defined(XP_WIN) || defined(XP_OS2)
#ifndef RESOURCE_STR
#include "prtypes.h"
#endif /* RESOURCE_STR */
#else /* XP_WIN */
#include "prtypes.h"
#endif /* XP_WIN */
#ifdef XP_MAC
#include <Types.h>
#if __option(bool)
typedef bool BOOL;
typedef bool Bool;
typedef bool XP_Bool;
#else
typedef char BOOL;
typedef char Bool;
typedef char XP_Bool;
#endif
#elif defined(XP_WIN)
typedef int Bool;
typedef int XP_Bool;
#elif defined(XP_OS2) && !defined(RC_INVOKED)
#include "prosdep.h"
typedef unsigned long Bool;
typedef unsigned long XP_Bool;
#else
/* XP_UNIX: X11/Xlib.h "define"s Bool to be int. This is really lame
* (that's what typedef is for losers). So.. in lieu of a #undef Bool
* here (Xlib still needs ints for Bool-typed parameters) people have
* been #undef-ing Bool before including this file.
* Can we just #undef Bool here? <mailto:mcafee> (help from djw, converse)
*/
typedef char Bool;
typedef char XP_Bool;
#endif
#if defined(XP_WIN)
#ifndef BOOL
#define BOOL Bool
#endif
#define MIN(a, b) min((a), (b))
#endif
#if defined(XP_OS2)
#ifndef MIN
#define MIN(a, b) min((a), (b))
#endif
#endif
#if defined(XP_UNIX) && !defined(MIN)
#define MIN(a,b) (((a)<(b))?(a):(b))
#endif
#ifndef FALSE
#define FALSE 0
#endif
/* disable the TRUE redefinition warning
* TRUE is defined by windows.h in the MSVC
* development environment, and creates a
* nasty warning for every file. The only
* way to turn it off is to disable all
* macro redefinition warnings or to not
* define TRUE here
*/
#if !defined(TRUE) && !defined(XP_WIN)
#define TRUE !FALSE
#endif
#define YES 1
#define NO 0
#define ON 1
#define OFF 0
#ifndef nil
#define nil 0
#endif
#ifndef NULL
#define NULL 0
#endif
#ifndef TRACEMSG
#ifdef DEBUG
#define TRACEMSG(msg) do { if(MKLib_trace_flag) XP_Trace msg; } while (0)
#else
#define TRACEMSG(msg)
#endif /* DEBUG */
#endif /* TRACEMSG */
#define _INT16
#define _UINT16
#define _INT32
#define _UINT32
#ifndef NSPR20
typedef int intn;
#endif /* NSPR20 */
/* function classifications */
#define PUBLIC
#define MODULE_PRIVATE
#if defined(XP_UNIX) && defined(PRIVATE)
#undef PRIVATE
#endif
#define PRIVATE static
/* common typedefs */
typedef struct _XP_List XP_List;
/* standard system headers */
#if !defined(RC_INVOKED)
#include <assert.h>
#include <ctype.h>
#ifdef __sgi
# include <float.h>
# include <sys/bsd_types.h>
#endif
#ifdef XP_UNIX
#include <stdarg.h>
#endif
#include <limits.h>
#include <locale.h>
#if defined(XP_WIN) && defined(XP_CPLUSPLUS) && defined(_MSC_VER) && _MSC_VER >= 1020
/* math.h under MSVC 4.2 needs C++ linkage when C++. */
extern "C++" {
#include <math.h>
}
#elif (defined(__hpux) || defined(SCO)) && defined(__cplusplus)
extern "C++" {
#include <math.h>
}
#else
#include <math.h>
#endif
#ifdef XP_OS2
/*DSR021097 - on OS/2 we have conflicts over jmp_buf & HW_THREADS */
#ifdef SW_THREADS
#include <setjmp.h>
#endif
#else /*!XP_OS2*/
#include <setjmp.h>
#endif
#include <stddef.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <time.h>
#endif
#endif /* _XP_Core_ */

View File

@ -1,56 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/*-----------------------------------------------------------------------------
XPUtil.h
Cross-Platform Debugging
These routines are NOT for handling expected error conditions! They are
for detecting *program logic* errors. Error conditions (such as running
out of memory) cannot be predicted at compile-time and must be handled
gracefully at run-time.
-----------------------------------------------------------------------------*/
#ifndef _XPDebug_
#define _XPDebug_
#include "xp_core.h"
#include "xpassert.h"
#include "xp_trace.h"
/*-----------------------------------------------------------------------------
DEBUG (macro)
-----------------------------------------------------------------------------*/
#ifdef DEBUG
/*
* MSVC seems to have a problem with Debug as an int (it was probably
* previously defined as a macro).
*/
#ifdef __cplusplus
#ifndef Debug
#define Debug 1
#endif
#else
extern int Debug;
#endif
#else
#define Debug 0
#endif
#endif /* _XPDebug_ */

View File

@ -1,53 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 __XP_ERROR_h_
#define __XP_ERROR_h_
#include "xp_core.h"
#include <errno.h>
XP_BEGIN_PROTOS
extern int xp_errno;
/*
** Return the most recent set error code.
*/
#ifdef XP_WIN
#define XP_GetError() xp_errno
#else
#define XP_GetError() xp_errno
#endif
/*
** Set the error code
*/
#ifdef DEBUG
extern void XP_SetError(int value);
#else
#define XP_SetError(v) xp_errno = (v)
#endif
XP_END_PROTOS
#endif /* __XP_ERROR_h_ */

View File

@ -1,524 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 _XP_File_
#define _XP_File_
#define XP_FILE_NATIVE_PATH char *
#define XP_FILE_URL_PATH char*
/*-----------------------------------------------------------------------------
XP_File.h
Cross-Platform File API
XP_File INTERFACE IS A COMMONLY MISUNDERSTOOD API.PLEASE READ THESE
DOCS BEFORE USING THE API. The API is not self-documenting in any way,
and broken in many.
XP_File mimics the stdio file interface (fopen, fread & friends...).
The main difference is that to specify a file location, XP_File
uses a name in combination with an enum XP_FileType instead of full path.
For example :
stdio: fopen(filename, permissions)
maps to xp_file: XP_FileOpen (name, XP_FileType type, XP_FilePerm permissions);
Meaning of the name argument depends on the XP_FileType it is used with.
For example:
A) XP_FileOpen(name, xpURL)
name is the URL path to the file (/Drive/file.html)
B) XP_FileOpen(name, xpCache)
name is the partial path from cache directory (expands to cache-directory/name)
C) XP_FileOpen(name, xpTemporary)
name is the partial path from temporary directory (expands to cache-directory/name)
Corollary: YOU CANNOT MIX AND MATCH NAMES AND TYPES
For example:
newTempFile = XP_TempName(name, xpTemporary);
file = XP_FileOpen(newTempFile, xpURL, "r+w"); // BAD!, you've just mixed xpURL and xpTemporary
This is a very common error. It might work on some platforms, but it'll break others.
FILE NAME MADNESS
There are 3 basic ways to specify a file in the XP_File interface:
TheXP_FileSpec
char* - XP_FileType pair: used in most XP_File calls. the meaning of the name
depends on the enum. Common ones are:
XP_FileType / name means:
xpTemporary partial path relative to temporary directory
xpURL full path in the standard URL format (file://)
xpGlobalHistory name is ignored.
XP_FILE_NATIVE_PATH
char * used in platform-specific code, platform-specific full path
Windows: "C:\Windows\regedit.exe"
X: "/h/users/atotic/home.html"
Mac: "Macintosh HD:System Folder:System"
XP_FILE_URL_PATH used in cross-platform code, when you need to manipulate the full path.
It is a full path in the standard URL format: (file://<path>, but just the <path> part)
XP_FILE_NATIVE_PATH and XP_FILE_URL_PATH are often confused
To convert between these types:
Conversion: TheXP_FileSpec -> XP_FILE_NATIVE_PATH
Call: WH_FileName(name, type)
Example: WH_FileName("myName", xpTemporary) -> "/u/tmp/myName" on Unix
-> "C:\tmp\myName" on Windows
-> "Mac HD:Temporary folder:myName" on Mac
Conversion: XP_FILE_NATIVE_PATH -> XP_FILE_URL_PATH
Call: XP_PlatformFileToURL(name)
Example: Windows: XP_PlatformFileToURL("C:\tmp\myName") -> "C|/tmp/myName"
Unix: XP_PlatformFileToURL(/u/tmp/myName") -> "/u/tmp/myName"
Mac: XP_PlatformFileToURL("Mac HD:Temporary folder:myName") -> "Mac%20HD/Temporary%20folder/myName"
You cannot convert anything into arbitrary TheXP_FileSpec, but you can use the XP_FILE_URL_PATH
in combination with xpURL enum.
Example: XP_FileOpen("C|/tmp/myName", xpURL) works
COMMONLY USED CALLS NOT IN STDIO:
WH_FileName(name, XP_FileType) - maps TheXP_FileSpec pair to XP_FILE_NATIVE_PATH.
Use it when you need access to full paths in platform-specific code. For example:
For example:
cacheName = XP_FileName("", xpCacheFAT);
fopen(cacheName);
EXTENSIONS TO STDIO API:
- XP_FileRename also moves files accross file systems (copy + delete)
MISC API NOTES:
The names of most of the calls are derived by prepending stdio call name
with XP_File. (open -> XP_FileOpen, opendir -> XP_FileOpenDir). But warren
was fixing up some bugs near the end of 3.0, and in his infinite wisdom renamed
a few of them to WH_ instead of XP_. So, XP_FileName became WH_FileName. WH_ stands
for Warren Harris. Whatever...
Calls are not documented well. Most of the docs are in this header file. You
can usually get a hint about what the call should do by looking up the man
pages of the equivalent stdio call.
OLD DOCS (May mislead you, read at your peril!):
Macintosh file system is not organized in the same hierarchy as UNIX and PC
':' is a separator character instead of '/', '~', '/../' constructs do not
work. Basically, you cannot easily open a file using a pathname.
Because different types of files need to be stored in different
directories, the XP_FileOpen API takes a file type and file name as an
argument. Semantics of how file is opened vary with type.
"Personal" files are stored in the user's "home" directory (~ on unix,
launch point or system folder on Mac, dunno about Windows). File names
may be ignored since there's no reason for multiple personal files.
"Temporary" files are stored in /tmp or the equivalent
"URL" is the only type that allows access to anywhere on the disk
File Type File name Semantics
xpURL url part after file:/// Platform specific
without #aklsdf
xpGlobalHistory - Opens personal global history
xpKeyChain - Opens personal key chain
xpUserPrefs - Opens personal prefs file
xpJSMailFilters - Opens personal js mail filters
xpJSHTMLFilters - Opens personal js HTML filters
xpCache name without path Opens a cache file
xpExtCache Fully qualified path Opens an external cache file
xpTemporary local filename Opens a temporary file
xpNewsrc - Opens a .newsrc file
xpSignature - Opens a .signature file
xpCertDB - Opens cert DB
xpCertDBNameIDX - Opens cert name index
xpKeyDB - Opens key DB
xpSignedAppletDB - Signed applets DB filename
xpJSCookieFilters - Opens personal js cookie filters
-----------------------------------------------------------------------------*/
#ifdef XP_UNIX
# include <dirent.h>
# include <sys/stat.h>
#endif /* XP_UNIX */
#ifdef XP_MAC
# ifndef _UNIX
# include <unix.h>
# endif
# include <Types.h>
# include <Files.h>
#endif /* XP_MAC */
#ifdef XP_WIN
# include "winfile.h"
#endif /* XP_WIN */
#ifdef XP_OS2
# include "dirent.h"
# include "sys/stat.h"
#endif /* XP_OS2 */
/*-----------------------------------------------------------------------------
Types - NOT prototypes
Protoypes go further down.
-----------------------------------------------------------------------------*/
typedef enum XP_FileType {
xpAddrBookNew,
xpAddrBook,
xpUserPrefs,
xpKeyChain,
xpGlobalHistory,
xpGlobalHistoryList,
xpHotlist,
xpTemporary,
xpURL,
xpCache,
xpSARCache, /* larubbio location independent cache */
xpMimeTypes,
xpCacheFAT,
xpSARCacheIndex, /* larubbio location independent cache */
xpNewsRC,
xpSNewsRC,
xpTemporaryNewsRC,
xpNewsgroups,
xpSNewsgroups,
xpNewsHostDatabase,
xpHTTPCookie,
xpProxyConfig,
xpSocksConfig,
xpSignature,
xpNewsrcFileMap,
xpFileToPost,
xpMailFolder,
xpMailFolderSummary,
xpJSMailFilters,
xpJSHTMLFilters,
xpMailSort, /* File that specifies which mail folders
to file which messages. */
xpNewsSort,
xpMailFilterLog, /* log files for mail/news filters */
xpNewsFilterLog,
xpMailPopState,
xpMailSubdirectory,
xpBookmarks,
xpCertDB,
xpCertDBNameIDX,
xpKeyDB,
xpSecModuleDB,
xpExtCache,
xpExtCacheIndex, /* index of external indexes */
xpRegistry,
xpXoverCache, /* Cache of XOVER files. This
filename always takes the form
"hostname/groupname" (except for calls
to XP_MakeDirectory, where it is just
"hostname").*/
xpEditColorScheme, /* ifdef EDITOR Families of "good" color combinations */
xpJPEGFile, /* used for pictures in LDAP directory */
xpVCardFile, /* used for versit vCards */
xpLDIFFile, /* used for LDIF (LDAP Interchange format files */
xpImapRootDirectory,
xpImapServerDirectory,
xpHTMLAddressBook, /* old (HTML) address book */
xpSignedAppletDB, /* filename of signed applets DB */
xpCryptoPolicy, /* Export Policy control file */
xpFolderCache, /* for caching mail/news folder info */
xpPKCS12File, /* used for PKCS 12 certificate transport */
xpJSCookieFilters, /* Opens personal js cookie filters */
#if defined(CookieManagement)
xpHTTPCookiePermission,
#endif
#if defined(SingleSignon)
xpHTTPSingleSignon,
#endif
xpLIClientDB,
xpLIPrefs
} XP_FileType;
#define XP_FILE_READ "r"
#define XP_FILE_READ_BIN "rb"
#define XP_FILE_WRITE "w"
#define XP_FILE_WRITE_BIN "wb"
#define XP_FILE_APPEND "a"
#define XP_FILE_APPEND_BIN "ab"
#define XP_FILE_UPDATE "r+"
#define XP_FILE_TRUNCATE "w+"
#ifdef SUNOS4
/* XXX SunOS4 hack -- make this universal by using r+b and w+b */
#define XP_FILE_UPDATE_BIN "r+"
#define XP_FILE_TRUNCATE_BIN "w+"
#else
#define XP_FILE_UPDATE_BIN "rb+"
#define XP_FILE_TRUNCATE_BIN "wb+"
#endif
#ifdef __BORLANDC__
#define _stat stat
#endif
#ifdef XP_MAC
#define XP_STAT_READONLY( statinfo ) (0)
#else
#define XP_STAT_READONLY( statinfo ) ((statinfo.st_mode & S_IWRITE) == 0)
#endif
typedef FILE * XP_File;
typedef char * XP_FilePerm;
#ifdef XP_WIN
typedef struct _stat XP_StatStruct;
#endif
#if defined(XP_OS2)
typedef struct stat XP_StatStruct;
#endif
#ifdef XP_UNIX
typedef struct stat XP_StatStruct;
#endif
#if defined (XP_MAC)
typedef struct stat XP_StatStruct;
#endif
#if defined(XP_UNIX) || defined(XP_WIN) || defined(XP_OS2)
typedef DIR * XP_Dir;
typedef struct dirent XP_DirEntryStruct;
#endif
#ifdef XP_MAC
/* Mac has non-stdio definitions of XP_Dir and XP_DirEntryStruct */
typedef struct macdstat {
char d_name[300];
} XP_DirEntryStruct;
typedef struct dirstruct {
XP_DirEntryStruct dirent;
FSSpec dirSpecs;
short index; /* Index for looping in XP_OpenDir */
XP_FileType type;
} *XP_Dir;
#endif /* XP_MAC */
/*-----------------------------------------------------------------------------
Prototypes
-----------------------------------------------------------------------------*/
XP_BEGIN_PROTOS
/*
* Given TheXP_FileSpec returns XP_FILE_NATIVE_PATH.
* See docs on top for more info
*/
PUBLIC XP_FILE_NATIVE_PATH WH_FileName (const char *name, XP_FileType type);
/*
* Given XP_FILE_URL_PATH, returns XP_FILE_NATIVE_PATH
* See docs on top for more info
*/
PUBLIC XP_FILE_NATIVE_PATH WH_FilePlatformName(const char * name);
/*
* Given XP_FILE_NATIVE_PATH, returns XP_FILE_URL_PATH
* See docs on top for more info
*/
PUBLIC XP_FILE_URL_PATH XP_PlatformFileToURL (const XP_FILE_NATIVE_PATH platformName);
/* takes a portion of a local path and returns an allocated portion
* of an XP path. This function was initially created to translate
* imap server folder names to xp names.
*/
PUBLIC char *XP_PlatformPartialPathToXPPartialPath (const char *platformPath);
/* Returns a pathname of a file suitable for use as temporary storage
* Warning: you can only use the returned pathname in other XP_File calls
* with the same enum.
*/
extern char * WH_TempName(XP_FileType type, const char * prefix);
/* Returns the path to the temp directory. */
extern char* XP_TempDirName(void);
/* Various other wrappers for stdio.h
*/
extern XP_File XP_FileOpen (const char* name, XP_FileType type,
const XP_FilePerm permissions);
extern int XP_Stat(const char * name, XP_StatStruct * outStat,
XP_FileType type);
extern XP_Dir XP_OpenDir(const char * name, XP_FileType type);
extern void XP_CloseDir(XP_Dir dir);
extern XP_DirEntryStruct *XP_ReadDir(XP_Dir dir);
extern int XP_FileRename(const char * from, XP_FileType fromtype,
const char * to, XP_FileType totype);
extern int XP_FileRemove(const char * name, XP_FileType type);
extern int XP_MakeDirectory(const char* name, XP_FileType type);
/* XP_MakeDirectoryR recursively creates all the directories needed */
extern int XP_MakeDirectoryR(const char* name, XP_FileType type);
extern int XP_RemoveDirectory(const char *name, XP_FileType type);
extern int XP_RemoveDirectoryRecursive(const char *name, XP_FileType type);
/* Truncate a file to be a given length. It is important (especially on the
Mac) to make sure not to ever call this if you have the file opened. */
extern int XP_FileTruncate(const char* name, XP_FileType type, int32 length);
extern int XP_FileWrite (const void* source, int32 count, XP_File file);
extern char * XP_FileReadLine(char * dest, int32 bufferSize, XP_File file);
extern long XP_FileTell( XP_File file );
extern int XP_FileFlush( XP_File file );
extern int XP_FileClose(XP_File file);
/* Defines */
#define XP_Fileno fileno
#define XP_FileSeek(file,offset,whence) fseek ((file), (offset), (whence))
#define XP_FileRead(dest,count,file) fread ((dest), 1, (count), (file))
#define XP_FileTell(file) ftell(file)
#define XP_FileFlush(file) fflush(file)
/* varargs make it impossible to do any other way */
#define XP_FilePrintf fprintf
/* XP_GetNewsRCFiles returns a null terminated array of pointers to malloc'd
* filename's. Each filename represents a different newsrc file.
*
* return only the filename since the path is not needed or wanted.
*
* Netlib is expecting a string of the form:
* [s]newsrc-host.name.domain[:port]
*
* examples:
* newsrc-news.mcom.com
* snewsrc-flop.mcom.com
* newsrc-news.mcom.com:118
* snewsrc-flop.mcom.com:1191
*
* the port number is optional and should only be
* there when different from the default.
* the "s" in front of newsrc signifies that
* security is to be used.
*
* return NULL on critical error or no files
*/
extern char ** XP_GetNewsRCFiles(void);
/* #ifdef EDITOR */
/* If pszLocalName is not NULL, we return the full pathname
* in local platform syntax. Caller must free this string.
* Returns TRUE if file already exists
* Windows version implemented in winfe\fegui.cpp
*/
extern Bool XP_ConvertUrlToLocalFile(const char * szURL, char **pszLocalName);
/* Construct a temporary filename in same directory as supplied "file:///" type URL
* Used as write destination for saving edited document
* User must free string.
* Windows version implemented in winfe\fegui.cpp
*/
extern char * XP_BackupFileName( const char * szURL );
extern XP_Bool XP_FileIsFullPath(const char * name);
extern XP_Bool XP_FileNameContainsBadChars(const char *name);
#ifdef XP_MAC
/* XP_FileNumberOfFilesInDirectory returns the number of files in the specified
* directory
*/
extern int XP_FileNumberOfFilesInDirectory(const char * dir_name, XP_FileType type);
#endif /* XP_MAC */
XP_END_PROTOS
#if defined(XP_UNIX) || defined(XP_WIN) || defined(XP_OS2)
/* Unix and Windows preferences communicate with the netlib through these
global variables. Netlib does "something sensible" if they are NULL.
*/
extern char *FE_SARCacheDir;
extern char *FE_UserNewsHost;
extern char *FE_UserNewsRC;
extern char *FE_TempDir;
extern char *FE_CacheDir;
extern char *FE_DownloadDir;
extern char *FE_GlobalHist;
#endif /* XP_UNIX || XP_WIN */
/* Each of the three patforms seem to have subtly different opinions
about which functions should be aliases for their stdio counterparts,
and which should be real functions.
Note that on the platform in question, these #defines will override
the prototypes above.
*/
#if defined(XP_UNIX) || defined(XP_WIN) || defined(XP_OS2)
# define XP_FileReadLine(destBuffer, bufferSize, file) \
fgets(destBuffer, bufferSize, file)
#endif /* XP_UNIX || XP_WIN */
#if defined(XP_UNIX) || defined(XP_OS2)
# define XP_ReadDir(DirPtr) readdir((DirPtr))
# define XP_CloseDir(DirPtr) closedir((DirPtr))
#endif /* XP_UNIX */
#if defined(XP_MAC) || defined(XP_WIN) || defined(XP_OS2)
/* #### Note! This defn is dangerous because `count' is evaluated twice! */
# define XP_FileWrite(source, count, file) \
fwrite((void*)(source), 1, \
(size_t) ((count) == -1 ? strlen((char*)source) : (count)), \
(file))
# define XP_FileClose(file) fclose ((file))
#endif /* XP_MAC || XP_WIN */
#endif /* _XP_File_ */

View File

@ -1,154 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 _XP_HASH_
#define _XP_HASH_
#include "xp_list.h"
XP_BEGIN_PROTOS
typedef uint32 (*XP_HashingFunction) (const void *ele);
/* A hash compare function is like strcmp - it should return negative, zero,
or positive depending on the ordering and equality of its arguments.
*/
typedef int (*XP_HashCompFunction) (const void *ele1, const void *ele2);
/* get hash number from a string */
extern uint32 XP_StringHash (const void *xv);
/* Phong's linear congruential hash */
extern uint32 XP_StringHash2 (const char *ubuf);
/* Hash Tables.
*/
typedef struct xp_HashTable *XP_HashTable; /* opaque */
typedef XP_Bool (*XP_HashTableMapper) (XP_HashTable table,
const void *key, void *value,
void *closure);
/* Create a new, empty hash table object.
SIZE should be your best guess at how many items will go into this
table; if SIZE is too small, that's ok, but there will be a small
performance hit. The size need not be prime.
*/
extern XP_HashTable XP_HashTableNew (uint32 size,
XP_HashingFunction hash_fn,
XP_HashCompFunction compare_fn);
/* Clear and free the hash table.
*/
extern void XP_HashTableDestroy (XP_HashTable table);
/* Remove all entries from the hash table.
*/
extern void XP_Clrhash (XP_HashTable table);
/* Add an association between KEY and VALUE to the hash table.
An existing association will be replaced.
(Note that 0 is a legal value.)
This can only fail if we run out of memory.
*/
extern int XP_Puthash (XP_HashTable table, const void *key, void *value);
/* Remove the for KEY in the table, if it exists.
Returns FALSE if the key wasn't in the table.
*/
extern XP_Bool XP_Remhash (XP_HashTable table, const void *key);
/* Looks up KEY in the table and returns the corresponding value.
If KEY is not in the table, `default_value' will be returned instead.
(This is necessary since 0 is a valid value with which a key can be
associated.)
*/
extern void *XP_Gethash (XP_HashTable table, const void *key,
void *default_value);
/* Apply a function to each pair of elements in the hash table.
If that function returns FALSE, then the mapping stops prematurely.
The mapping function may call XP_Remhash() on the *current* key, but
not on any other key in this table. It also may not clear or destroy
the table.
*/
extern void XP_Maphash (XP_HashTable table, XP_HashTableMapper mapper,
void *closure);
/* Apply a function to each pair of elements in the hash table.
After calling the function, that pair will be removed from the table.
If the function returns FALSE, then the mapping stops prematurely.
Any items which were not mapped over will still remain in the table,
but those items which were mapped over will have been freed.
This could also be done by having the mapper function unconditionally
call XP_Remhash(), but using this function will be slightly more efficient.
*/
extern void XP_MapRemhash (XP_HashTable table, XP_HashTableMapper mapper,
void *closure);
/* ===========================================================================
Hash Lists, which aren't really hash tables.
*/
#define XP_HASH_DUPLICATE_OBJECT -99
typedef struct _XP_HashList {
XP_List **list;
int size;
XP_HashingFunction hash_func;
XP_HashCompFunction comp_func;
} XP_HashList;
/* create a hash list
*/
extern XP_HashList *
XP_HashListNew (int size, XP_HashingFunction hash_func, XP_HashCompFunction comp_func);
/* free a hash list
*/
extern void
XP_HashListDestroy (XP_HashList * hash_struct);
/* add an element to a hash list
*
* returns positive on success and negative on failure
*
* ERROR return codes
*
* XP_HASH_DUPLICATE_OBJECT
*/
extern int
XP_HashListAddObject (XP_HashList * hash_struct, void * new_ele);
/* finds an object by name in the hash list
*/
extern void *
XP_HashListFindObject (XP_HashList * hash_struct, void * ele);
/* removes an object by name from the hash list
* and returns the object if found
*/
extern void *
XP_HashListRemoveObject (XP_HashList * hash_struct, void * ele);
XP_END_PROTOS
#endif /* _XP_HASH_ */

View File

@ -1,264 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/* xp_help.h */
/*
* *
* Revision history: *
* Author: Edwin Aoki *
* Extensive Revision: Kevin Driscoll 3/19/97 *
* Updated ONLY Mail/News entries: Kevin Driscoll 3/21/97 *
* Updated to add discussion IDs: Kevin Driscoll 4/22/97 *
* Added missing/modified IDs: Gina Cariga 4/22/97 *
* Added offline & help_edit_dict IDs: Kevin Driscoll 4/28/97 *
* Added 2 HELP_HTML_MAIL IDs: Kevin Driscoll 4/29/97 *
* Fixed 5 wrong component names in helpIDs: Kevin Driscoll 5/7/97*
* Fixed 1 and added 1 ID: Kevin Driscoll 5/9/97 *
* Corrected 7 helpside IDs as per Melton: Kevin Driscoll 5/12/97 *
* Added 1 new ID for conference: Kevin Driscoll 5/12/97 *
* Corrected 2 IDs for offine download: Kevin Driscoll 5/21/97 *
*******************************************************************/
#ifndef XP_HELP_H
#define XP_HELP_H
/* The main entry point into help for most folks. This function takes a string
which represents the component and topic name for a Communicator help topic.
It prepends the netscape vendor to create a fully-qualified topic name. If
an MWContext which represents the current window is available, pass that in,
otherwise, specify NULL and NetHelp will locate an appropriate context to use.
In either event, XP_NetHelp then calls NET_LoadNetHelpTopic, below. */
extern void
XP_NetHelp(MWContext *pContext, const char *topic);
/* Called by FEs to load a fully-qualified topic. This function is implemented in
libnet/mkhelp.c, but it's extracted here so unrelated FE parts don't have
to include mkhelp.h */
extern void
NET_LoadNetHelpTopic(MWContext *pContext, const char *topic);
/* These defines correspond to help tags that can be passed to
XP_NetHelp, above, to invoke nethelp. */
/* Main product help */
#define HELP_COMMUNICATOR "home:start_here"
/* Address Book Dialogs */
#define HELP_ADDRESS_BOOK "messengr:ADDRESS_BOOK"
#define HELP_ADD_LIST_MAILING_LIST "messengr:ADD_LIST_MAILING_LIST"
#define HELP_ADD_USER_NETSCAPE_COOLTALK "messengr:ADD_USER_NETSCAPE_COOLTALK"
#define HELP_ADD_USER_PROPS "messengr:ADD_USER_PROPERTIES"
#define HELP_ADD_USER_SECURITY "messengr:ADD_USER_SECURITY"
#define HELP_ADD_USER_CONTACT "messengr:ADD_USER_CONTACT"
#define HELP_ADD_USER_NETSCAPE_COOLTALK "messengr:ADD_USER_NETSCAPE_COOLTALK"
#define HELP_LDAP_SERVER_PROPS "messengr:LDAP_SERVER_PROPERTIES"
#define HELP_EDIT_USER_CALLPOINT "messengr:ADD_USER_NETSCAPE_COOLTALK"
#define HELP_EDIT_USER_CONTACT "messengr:ADD_USER_CONTACT"
#define HELP_EDIT_USER "messengr:ADD_USER_PROPERTIES"
#define HELP_EDIT_USER_SECURITY "messengr:EDIT_USER_SECURITY"
#define HELP_MAIL_LIST_PROPS "messengr:ADD_LIST_MAILING_LIST"
#define HELP_SEARCH_MAILNEWS "messengr:SEARCH_MAILNEWS"
#define HELP_SEARCH_LDAP "messengr:SEARCH_LDAP"
#define HELP_SELECT_ADDRESSES "messengr:SELECT_ADDRESSES"
#define HELP_SEARCH_ADDRESS_BOOKS "messengr:SEARCH_ADDRESS_BOOKS"
/* Bookmark Dialogs */
#define HELP_BOOKMARK_PROPERTIES "navigatr:BOOKMARK_PROPERTIES"
#define HELP_FIND_IN_BOOKMARKS "navigatr:FIND_IN_BOOKMARKS"
/* Browser Dialogs */
#define HELP_OPEN_PAGE "navigatr:OPEN_PAGE"
#define HELP_SEARCH_HISTORY_LIST "navigatr:SEARCH_HISTORY_LIST"
/* Conference Dialogs */
#define HELP_ADD_TO_SENDLIST "confernc:ADD_TO_SENDLIST"
#define HELP_CANVAS_SIZE "confernc:CANVAS_SIZE"
#define HELP_CHAT_FILE_SAVE "confernc:CHAT_FILE_SAVE"
#define HELP_COLLAB_BROWSER "confernc:COLLAB_BROWSER"
#define HELP_CHAT_ABOUT "confernc:CONF_CHAT_ABOUT"
#define HELP_CHAT_EDITLOG "confernc:CONF_CHAT_EDITLOG"
#define HELP_CHAT_EDITPAD "confernc:CONF_CHAT_EDITPAD"
#define HELP_CONF_FILEX "confernc:CONF_FILEX_ABOUT"
#define HELP_CONF_FILERCV "confernc:CONF_FILEX_FILERCV"
#define HELP_CONF_FILESND "confernc:CONF_FILEX_FILESND"
#define HELP_CONF_WB_ABOUT "confernc:CONF_WB_ABOUT"
#define HELP_DIRECT_CALL "confernc:DIRECT_CALL"
#define HELP_FILE_INCLUDE "confernc:FILE_INCLUDE"
#define HELP_FILE_OPEN "confernc:FILE_OPEN"
#define HELP_PROPS_AUDIO "confernc:PROPERTIES_AUDIO"
#define HELP_PROPS_AUDIO_ADVANCED "confernc:PROPERTIES_AUDIO_ADVANCED"
#define HELP_PROPS_BUSINESS_CARD "confernc:PROPERTIES_BUSINESS_CARD"
#define HELP_PROPS_CALL "confernc:PROPERTIES_CALL"
#define HELP_PROPS_SPEED_DIAL "confernc:PROPERTIES_SPEED_DIAL"
#define HELP_RECORD_VOICEMAIL "confernc:RECORD_VOICEMAIL"
#define HELP_SEND_VOICEMAIL "confernc:SEND_VOICEMAIL"
#define HELP_WB_FILE_SAVE "confernc:WB_FILE_SAVE"
/* Editor Dialogs */
#define HELP_DOC_PROPS_ADVANCED "composer:DOCUMENT_PROPERTIES_ADVANCED"
#define HELP_DOC_PROPS_APPEARANCE "composer:DOCUMENT_PROPERTIES_APPEARANCE"
#define HELP_DOC_PROPS_GENERAL "composer:DOCUMENT_PROPERTIES_GENERAL"
#define HELP_HTML_TAG "composer:HTML_TAG"
#define HELP_NEW_TABLE_PROPS "composer:NEW_TABLE_PROPERTIES"
#define HELP_PROPS_CHARACTER "composer:PROPERTIES_CHARACTER"
#define HELP_PROPS_HRULE "composer:PROPERTIES_HRULE"
#define HELP_PROPS_IMAGE "composer:PROPERTIES_IMAGE"
#define HELP_PROPS_IMAGE_ALT "composer:PROPERTIES_IMAGE_ALT"
#define HELP_PROPS_LINK "composer:PROPERTIES_LINK"
#define HELP_PROPS_PARAGRAPH "composer:PROPERTIES_PARAGRAPH"
#define HELP_PROPS_TARGET "composer:PROPERTIES_TARGET"
#define HELP_PUBLISH_FILES "composer:PUBLISH_FILES"
#define HELP_TABLE_PROPS_CELL "composer:TABLE_PROPERTIES_CELL"
#define HELP_TABLE_PROPS_ROW "composer:TABLE_PROPERTIES_ROW"
#define HELP_TABLE_PROPS_TABLE "composer:TABLE_PROPERTIES_TABLE"
#define HELP_SPELL_CHECK "composer:SPELL_CHECK"
#define HELP_IMAGE_CONVERSION "composer:IMAGE_CONVERSION"
#define HELP_EXTRA_HTML "composer:EXTRA_HTML"
#define HELP_COLOR_PICKER "composer:COLOR_PICKER"
/* Mail Dialogs */
#define HELP_FILTER_RULES "messengr:FILTER_RULES"
#define HELP_MAIL_FILTERS "messengr:MAIL_FILTERS"
#define HELP_MAIL_FOLDER_PROPS_GENERAL "messengr:MAIL_FOLDER_PROPERTIES_GENERAL"
#define HELP_MAIL_FOLDER "messengr:MAIL_FOLDER"
#define HELP_MAIL_NEWS_WIZARD "messengr:MAIL_NEWS_WIZARD"
#define HELP_MESSAGE_LIST_WINDOW "messengr:MESSAGE_LIST_WINDOW"
#define HELP_MAIL_MESSAGE_WINDOW "messengr:MAIL_MESSAGE_WINDOW"
#define HELP_HTML_MAIL_QUESTION "messengr:HTML_MAIL_QUESTION"
#define HELP_HTML_MAIL_QUESTION_RECIPIENT "messengr:HTML_MAIL_QUESTION_RECIPIENT"
/* Main Preferences: Appearance */
#define HELP_PREFS_APPEARANCE "navigatr:PREFERENCES_APPEARANCE"
#define HELP_PREFS_APPEARANCE_FONTS "navigatr:PREFERENCES_APPEARANCE_FONTS"
#define HELP_PREFS_APPEARANCE_COLORS "navigatr:PREFERENCES_APPEARANCE_COLORS"
/* Main Preferences: Browser */
#define HELP_PREFS_BROWSER "navigatr:PREFERENCES_NAVIGATOR"
#define HELP_PREFS_BROWSER_LANGUAGES "navigatr:PREFERENCES_NAVIGATOR_LANGUAGES"
#define HELP_PREFS_BROWSER_APPLICATIONS "navigatr:PREFERENCES_NAVIGATOR_APPLICATIONS"
/* Main Preferences: Mail and Groups */
#define HELP_PREFS_MAILNEWS_MAIN_PANE "messengr:PREFERENCES_MAILNEWS_MAIN_PANE"
#define HELP_PREFS_MAILNEWS_IDENTITY "messengr:PREFERENCES_MAILNEWS_IDENTITY"
#define HELP_PREFS_MAILNEWS_MESSAGES "messengr:PREFERENCES_MAILNEWS_MESSAGES"
#define HELP_PREFS_MAILNEWS_MAILSERVER "messengr:PREFERENCES_MAILNEWS_MAILSERVER"
#define HELP_PREFS_MAILNEWS_GROUPSERVER "messengr:PREFERENCES_MAILNEWS_GROUPSERVER"
#define HELP_PREFS_MAILNEWS_DIRECTORY "messengr:PREFERENCES_MAILNEWS_DIRECTORY"
#define HELP_MAILNEWS_EDIT_CARD "messengr:MAILNEWS_EDIT_CARD"
#define HELP_MAILNEWS_EDIT_CARD_NAME_TAB "messengr:ADD_USER_PROPERTIES"
#define HELP_MAILNEWS_EDIT_CARD_CONTACT_TAB "messengr:ADD_USER_CONTACT"
#define HELP_MAILNEWS_EDIT_CARD_CONFERENCE_CARD "messengr:ADD_USER_NETSCAPE_COOLTALK"
/* Main Preferences: LI */
#define HELP_PREFS_LI_LOGIN "navigatr:PREFERENCES_NAVIGATOR"
#define HELP_PREFS_LI_SERVER "navigatr:PREFERENCES_NAVIGATOR_LANGUAGES"
#define HELP_PREFS_LI_FILES "navigatr:PREFERENCES_NAVIGATOR_APPLICATIONS"
#ifndef MOZ_MAIL_NEWS
#define HELP_PREFS_IDENTITY "navigatr:PREFERENCES_IDENTITY"
#endif /* MOZ_MAIL_NEWS */
/* Main Preferences: Composer */
#ifdef XP_MAC
#define HELP_PREFS_COMPOSER "composer:PREFERENCES_EDITOR_GENERAL"
#define HELP_PREFS_COMPOSER_PUBLISHING "composer:PREFERENCES_EDITOR_PUBLISH"
#else
#define HELP_PREFS_COMPOSER "messengr:PREFERENCES_COMPOSER"
#define HELP_PREFS_COMPOSER_PUBLISHING "messengr:PREFERENCES_COMPOSER_PUBLISHING"
#endif
/* Main Preferences: Offline */
#define HELP_PREFS_OFFLINE "navigatr:PREFERENCES_OFFLINE"
#define HELP_PREFS_OFFLINE_GROUPS "navigatr:PREFERENCES_OFFLINE_GROUPS"
/* Main Preferences: Advanced */
#define HELP_PREFS_ADVANCED "navigatr:PREFERENCES_ADVANCED"
#define HELP_PREFS_ADVANCED_CACHE "navigatr:PREFERENCES_ADVANCED_CACHE"
#define HELP_PREFS_ADVANCED_PROXIES "navigatr:PREFERENCES_ADVANCED_PROXIES"
#define HELP_PREFS_ADVANCED_DISK_SPACE "navigatr:PREFERENCES_ADVANCED_DISK_SPACE"
#define HELP_PREFS_ADVANCED_SMARTUPDATE "navigatr:PREFERENCES_ADVANCED_SMARTUPDATE"
/* Main Preferences: Conference */
#define HELP_CONF_PREFS_PROPS_CALL "home:PROPERTIES_CALL"
#define HELP_CONF_PREFS_PROPS_AUDIO "home:PROPERTIES_AUDIO"
#define HELP_CONF_PREFS_PROPS_BUSINESS_CARD "home:PROPERTIES_BUSINESS_CARD"
/* Editor Preferences */
#define HELP_EDIT_PREFS_EDITOR_APPEARANCE "composer:PREFERENCES_EDITOR_APPEARANCE"
#define HELP_EDIT_PREFS_EDITOR_GENERAL "composer:PREFERENCES_EDITOR_GENERAL"
#define HELP_EDIT_PREFS_EDITOR_PUBLISH "composer:PREFERENCES_EDITOR_PUBLISH"
#define HELP_EDIT_DICTIONARY "composer:EDIT_DICTIONARY"
/* Security Preferences */
#define HELP_SEC_PREFS_SEC_GENERAL "home:PREFERENCES_SECURITY_GENERAL"
#define HELP_SEC_PREFS_SEC_PASSWORDS "home:PREFERENCES_SECURITY_PASSWORDS"
#define HELP_SEC_PREFS_SEC_PERSONAL_CERTIFICATES "home:PREFERENCES_SECURITY_PERSONAL_CERTIFICATES"
#define HELP_SEC_PREFS_SEC_SITE_CERTIFICATES "home:PREFERENCES_SECURITY_SITE_CERTIFICATES"
/* Security Advisor Dialogs */
#define HELP_SEC_PASS "home:SECURITY_ADVISOR_PASSWORDS"
#define HELP_SEC_PCERT "home:SECURITY_ADVISOR_PERSONAL_CERTIFICATES"
#define HELP_SEC_ADV "home:SECURITY_ADVISOR_SECURITY_ADVISOR"
#define HELP_SEC_SCERT "home:SECURITY_ADVISOR_SITE_CERTIFICATES"
/* Discussion Dialogs */
#define HELP_NEWS_DISCUSION_GENERAL "collabra:NEWS_DISCUSSION_GENERAL"
#define HELP_NEWS_DISCUSION_DOWNLOAD "collabra:NEWS_DISCUSSION_DOWNLOAD"
#define HELP_NEWS_DISCUSION_DISKSPACE "collabra:NEWS_DISCUSSION_DISKSPACE"
#define HELP_NEWS_NEW_GROUP_SERVER "collabra:NEWS_NEW_GROUP_SERVER"
#define HELP_NEWS_ADD_DIRECTORY_SERVER "collabra:NEWS_ADD_DIRECTORY_SERVER"
#define HELP_NEWS_DIRECTORY_SERVER_PROPERTY "collabra:NEWS_DIRECTORY_SERVER_PROPERTY"
#define HELP_DISCUSSION_HOST_PROPERTIES "collabra:DISCUSSION_HOST_PROPERTIES"
#define HELP_SUBSCRIBE_SEARCH "collabra:SUBSCRIBE_SEARCH"
#define HELP_SUBSCRIBE_LIST_NEW "collabra:SUBSCRIBE_LIST_NEW"
#define HELP_SUBSCRIBE_LIST_ALL "collabra:SUBSCRIBE_LIST_ALL"
#define HELP_ADD_SERVER "collabra:ADD_SERVER"
#define HELP_OFFLINE_DOWNLOAD "collabra:NEWS_DISCUSSION_DOWNLOAD_OFFLINE"
#define HELP_OFFLINE_DISCUSSION_GROUPS "collabra:NEWS_DISCUSSION_GROUPS"
#endif

View File

@ -1,81 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 XPLIST_H
#define XPLIST_H
#include "xp_core.h"
/* generic list structure
*/
struct _XP_List {
void * object;
struct _XP_List * next;
struct _XP_List * prev;
};
XP_BEGIN_PROTOS
extern XP_List * XP_ListNew (void);
extern void XP_ListDestroy (XP_List *list);
extern void XP_ListAddObject (XP_List *list, void *newObject);
extern void XP_ListAddObjectToEnd (XP_List *list, void *newObject);
extern void XP_ListInsertObject (XP_List *list, void *insert_before, void *newObject);
extern void XP_ListInsertObjectAfter (XP_List *list, void *insert_after, void *newObject);
/* returns the list node of the specified object if it was
* in the list
*/
extern XP_List * XP_ListFindObject (XP_List *list, void * obj);
extern Bool XP_ListRemoveObject (XP_List *list, void *oldObject);
extern void * XP_ListRemoveTopObject (XP_List *list);
extern void * XP_ListPeekTopObject (XP_List *list);
extern void * XP_ListRemoveEndObject (XP_List *list);
#define XP_ListIsEmpty(list) (list ? list->next == NULL : TRUE)
extern int XP_ListCount (XP_List *list);
#define XP_ListTopObject(list) (list && list->next ? list->next->object : NULL)
extern void * XP_ListGetEndObject (XP_List *list);
extern void * XP_ListGetObjectNum (XP_List *list, int num);
extern int XP_ListGetNumFromObject (XP_List *list, void * object);
/* move the top object to the bottom of the list
* this function is useful for reordering the list
* so that a round robin ordering can occur
*/
extern void XP_ListMoveTopToBottom (XP_List *list);
XP_END_PROTOS
/* traverse the list in order
*
* make a copy of the list pointer and point it at the list object head.
* the first call the XP_ListNextObject will return the first object
* and increment the copy of the list pointer. Subsequent calls
* will continue to increment the copy of the list pointer and return
* objects
*/
#define XP_ListNextObject(list) \
(list && ((list = list->next)!=0) ? list->object : NULL)
#endif /* XPLIST_H */

View File

@ -1,196 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 should be the first Mcom file included
*
* All cross-platform definitions, regardless of project, should be
* contained in this file or its includes
*/
#ifndef _MCOM_H_
#define _MCOM_H_
#include "xp_core.h"
#include "xp_mem.h"
#include "xp_debug.h"
#include "xp_str.h"
#include "xp_list.h"
/* platform-specific types */
/* include header files needed for prototypes/etc */
#include "xp_file.h"
XP_BEGIN_PROTOS
/* XXX where should this kind of junk go? */
unsigned char *XP_WordWrap(int charset, unsigned char *string, int maxColumn,
int checkQuoting);
XP_END_PROTOS
/* --------------------------------------------------------------------- */
/*
Define the hooks for cross-platform string + memory functions
*/
#ifdef DEBUG
XP_BEGIN_PROTOS
extern char * NOT_NULL (const char *x);
XP_END_PROTOS
#else
# define NOT_NULL(X) X
#endif
#include <string.h>
#define XP_STRLEN(s) strlen(NOT_NULL(s))
#define XP_STRCMP(a, b) strcmp(NOT_NULL(a), NOT_NULL(b))
#define XP_STRNCMP(a, b, n) strncmp(NOT_NULL(a), NOT_NULL(b), (n))
#define XP_STRCPY(d, s) strcpy(NOT_NULL(d), NOT_NULL(s))
#define XP_STRCHR strchr
#define XP_STRRCHR strrchr
#define XP_STRTOK strtok
#define XP_STRCAT strcat
#define XP_STRNCAT strncat
#define XP_STRSTR strstr
#define XP_STRTOUL strtoul
/* XP_FILENAMECMP compares two filenames, treating case differences
appropriately for this OS. */
#if defined(XP_WIN) || defined(XP_OS2)
#define XP_FILENAMECMP stricmp
#else
#define XP_FILENAMECMP XP_STRCMP
#endif
#if !defined(XP_WIN) && !defined(XP_OS2)
/* strdup is not an ANSI function */
XP_BEGIN_PROTOS
extern char * strdup (const char * s);
XP_END_PROTOS
#endif
#include <memory.h>
#define XP_STRDUP(s) strdup((s))
#define XP_MEMCPY(d, s, n) memcpy((d), (s), (n))
/* NOTE: XP_MEMMOVE gurantees that overlaps will be properly handled */
#if defined( __sun) && !defined(__svr4__)
#define XP_MEMMOVE(Dest,Src,Len) bcopy((Src),(Dest),(Len))
#else
#define XP_MEMMOVE(Dest,Src,Len) memmove((Dest),(Src),(Len))
#endif /* __sun */
#define XP_MEMSET memset
#define XP_SPRINTF sprintf
/* should I really include this here or what? */
#ifdef XP_MAC
#include "prprf.h"
#else
#include "prprf.h"
#endif
#define XP_SAFE_SPRINTF PR_snprintf
#define XP_MEMCMP memcmp
#define XP_VSPRINTF vsprintf
#define XP_IS_SPACE(VAL) \
(((((intn)(VAL)) & 0x7f) == ((intn)(VAL))) && isspace((intn)(VAL)) )
#define XP_IS_CNTRL(i) ((((unsigned int) (i)) > 0x7f) ? (int) 0 : iscntrl(i))
#define XP_IS_DIGIT(i) ((((unsigned int) (i)) > 0x7f) ? (int) 0 : isdigit(i))
#if defined(XP_WIN) || defined(XP_OS2)
#define XP_IS_ALPHA(VAL) (isascii((int)(VAL)) && isalpha((int)(VAL)))
#else
#define XP_IS_ALPHA(VAL) ((((unsigned int) (VAL)) > 0x7f) ? FALSE : isalpha((int)(VAL)))
#endif
#define XP_ATOI(PTR) (atoi((PTR)))
/* NOTE: XP_BCOPY gurantees that overlaps will be properly handled */
#ifdef XP_WIN16
XP_BEGIN_PROTOS
extern void WIN16_bcopy(char *, char *, unsigned long);
XP_END_PROTOS
#define XP_BCOPY(PTR_FROM, PTR_TO, LEN) \
(WIN16_bcopy((char *) (PTR_FROM), (char *)(PTR_TO), (LEN)))
#else
#define XP_BCOPY(Src,Dest,Len) XP_MEMMOVE((Dest),(Src),(Len))
#endif
#define XP_BZERO(a,b) memset(a,0,b)
#ifdef XP_WIN
#define XP_RANDOM rand
#define XP_SRANDOM(seed) srand((seed))
#endif
#ifdef XP_OS2
#define XP_RANDOM rand
#define XP_SRANDOM(seed) srand((seed))
#endif
#ifdef XP_MAC
#define XP_RANDOM rand
#define XP_SRANDOM(seed) srand((seed))
#endif
#ifdef XP_UNIX
#if !defined(XP_RANDOM) || !defined(XP_SRANDOM) /* defined in both xp_mcom.h and xp_str.h */
#if defined(UNIXWARE) || defined(_INCLUDE_HPUX_SOURCE) || (defined(__sun) && defined(__svr4__)) || defined(SNI) || defined(NCR)
#define XP_RANDOM rand
#define XP_SRANDOM(seed) srand((seed))
#else
#define XP_RANDOM random
#define XP_SRANDOM(seed) srandom((seed))
#endif
#endif
#endif
#ifdef XP_MAC
XP_BEGIN_PROTOS
extern time_t GetTimeMac();
extern time_t Mactime(time_t *timer);
extern struct tm *Macgmtime(const time_t *timer);
extern time_t Macmktime (struct tm *timeptr);
extern char * Macctime(const time_t *);
extern struct tm *Maclocaltime(const time_t *);
XP_END_PROTOS
#define XP_TIME() GetTimeMac()
#define time(t) Mactime(t)
#define gmtime(t) Macgmtime(t)
#define mktime(t) Macmktime(t)
#define ctime(t) Macctime(t)
#define localtime(t) Maclocaltime(t)
#define UNIXMINUSMACTIME 2082844800UL
#else
#define XP_TIME() time(0)
#endif
#endif /* _MCOM_H_ */

View File

@ -1,284 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/*-----------------------------------------------------------------------------
XPMem.h
Cross-Platform Memory API
-----------------------------------------------------------------------------*/
#ifndef _XP_MEM_
#define _XP_MEM_
#include "xp_core.h"
#ifdef XP_MAC
#include "FlushAllocator.h"
#endif
#ifdef XP_WIN16
#include <malloc.h>
#endif
/* global free routine */
#define XP_FREEIF(obj) do { if(obj) { XP_FREE(obj); obj = 0; }} while(0)
/*-----------------------------------------------------------------------------
Allocating Structures
-----------------------------------------------------------------------------*/
#define XP_NEW( x ) (x*)malloc( sizeof( x ) )
#define XP_DELETE( p ) free( p )
/*-----------------------------------------------------------------------------
Mallocs
NOTE: this uses the same malloc as the structure allocator so it is
ok and safe to use XP_DELETE or XP_FREE interchangeably!
-----------------------------------------------------------------------------*/
#ifdef XP_MAC
#define XP_ALLOC( s ) malloc( s )
#define XP_FREE( p ) free( p )
#define XP_REALLOC( p , s ) realloc( p, s )
#define XP_CALLOC( n, s ) calloc( (n), (s) )
#define XP_NEW_ZAP( t ) ((t*)calloc( 1, sizeof(t) ) )
#else /* !XP_MAC */
/* normal win and unix */
#ifdef XP_WIN16
XP_BEGIN_PROTOS
extern void * WIN16_realloc(void * ptr, unsigned long size);
extern void * WIN16_malloc(unsigned long size);
XP_END_PROTOS
#define XP_REALLOC(ptr, size) WIN16_realloc(ptr, size)
#define XP_ALLOC(size) WIN16_malloc(size)
#else
#if defined(DEBUG) && defined(MOZILLA_CLIENT)
/* Check that we never allocate anything greater than 64K. If we ever tried,
Win16 would choke, and we'd like to find out about it on some other platform
(like, one where we have a working debugger). */
/* This code used to call abort. Unfortunately, on Windows, abort() doesn't
* go to the debugger. Instead, it silently quits the program.
* So use XP_ASSERT(FALSE) instead.
*/
#define XP_CHECK_ALLOC_SIZE(size) ((size) <= 0xFFFF ? size : (XP_ASSERT(FALSE), (size)))
#else
#define XP_CHECK_ALLOC_SIZE(size) size
#endif
#define XP_REALLOC(ptr, size) realloc(ptr, XP_CHECK_ALLOC_SIZE(size))
#define XP_ALLOC(size) malloc(XP_CHECK_ALLOC_SIZE(size))
#endif
#ifdef DEBUG
#define XP_CALLOC(num, sz) (((num)*(sz))<64000 ? calloc((num),(sz)) : (XP_ASSERT(FALSE), calloc((num),(sz))))
#else
#define XP_CALLOC(num, sz) calloc((num), (sz))
#endif
#define XP_FREE(ptr) free(ptr)
#define XP_NEW_ZAP(TYPE) ( (TYPE*) calloc (1, sizeof (TYPE) ) )
#endif /* !XP_MAC */
/* --------------------------------------------------------------------------
16-bit windows requires space allocated bigger than 32K to be of
type huge. For example:
int HUGE * foo = halloc(100000);
-----------------------------------------------------------------------------*/
/* There's no huge realloc because win16 doesn't have a hrealloc,
* and there's no API to discover the original buffer's size.
*/
#ifdef XP_WIN16
#define XP_HUGE __huge
#define XP_HUGE_ALLOC(SIZE) halloc(SIZE,1)
#define XP_HUGE_FREE(SIZE) hfree(SIZE)
#define XP_HUGE_MEMCPY(DEST, SOURCE, LEN) hmemcpy(DEST, SOURCE, LEN)
#else
#define XP_HUGE
#define XP_HUGE_ALLOC(SIZE) malloc(SIZE)
#define XP_HUGE_FREE(SIZE) free(SIZE)
#define XP_HUGE_MEMCPY(DEST, SOURCE, LEN) memcpy(DEST, SOURCE, LEN)
#endif
#define XP_HUGE_CHAR_PTR char XP_HUGE *
/*-----------------------------------------------------------------------------
Allocating Large Buffers
NOTE: this does not interchange with XP_ALLOC/XP_NEW/XP_FREE/XP_DELETE
-----------------------------------------------------------------------------*/
#if defined(XP_UNIX) || defined(XP_WIN32)
/* don't typedef this to void* unless you want obscure bugs... */
typedef unsigned long * XP_Block;
#define XP_ALLOC_BLOCK(SIZE) malloc ((SIZE))
#define XP_FREE_BLOCK(BLOCK) free ((BLOCK))
#ifdef XP_UNIXu
/* On SunOS, realloc(0,n) ==> 0 */
# define XP_REALLOC_BLOCK(BLOCK,SIZE) ((BLOCK) \
? realloc ((BLOCK), (SIZE)) \
: malloc ((SIZE)))
#else /* !XP_UNIX */
# define XP_REALLOC_BLOCK(BLOCK,SIZE) realloc ((BLOCK), (SIZE))
#endif /* !XP_UNIX */
#define XP_LOCK_BLOCK(PTR,TYPE,BLOCK) PTR = ((TYPE) (BLOCK))
#ifdef DEBUG
#define XP_UNLOCK_BLOCK(BLOCK) (void)BLOCK
#else
#define XP_UNLOCK_BLOCK(BLOCK)
#endif
#endif /* XP_UNIX || XP_WIN32 */
#if defined(XP_OS2)
/* don't typedef this to void* unless you want obscure bugs... */
typedef unsigned long * XP_Block;
#define XP_ALLOC_BLOCK(SIZE) malloc ((SIZE))
#define XP_FREE_BLOCK(BLOCK) free ((BLOCK))
# define XP_REALLOC_BLOCK(BLOCK,SIZE) realloc ((BLOCK), (SIZE))
#define XP_LOCK_BLOCK(PTR,TYPE,BLOCK) PTR = ((TYPE) (BLOCK))
#ifdef DEBUG
#define XP_UNLOCK_BLOCK(BLOCK) (void)BLOCK
#else
#define XP_UNLOCK_BLOCK(BLOCK)
#endif
#ifdef MCW_DEBUG
#include <stdlib.h>
#include <shmalloc.h>
#endif
#endif /* XP_OS2 */
#ifdef XP_WIN16
typedef unsigned char * XP_Block;
#define XP_ALLOC_BLOCK(SIZE) WIN16_malloc((SIZE))
#define XP_FREE_BLOCK(BLOCK) free ((BLOCK))
#define XP_REALLOC_BLOCK(BLOCK,SIZE) ((BLOCK) \
? WIN16_realloc ((BLOCK), (SIZE)) \
: WIN16_malloc ((SIZE)))
#define XP_LOCK_BLOCK(PTR,TYPE,BLOCK) PTR = ((TYPE) (BLOCK))
#ifdef DEBUG
#define XP_UNLOCK_BLOCK(BLOCK) (void)BLOCK
#else
#define XP_UNLOCK_BLOCK(BLOCK)
#endif
#endif /* XP_WIN16 */
#ifdef XP_MAC
typedef float* XP_Block;
#define XP_ALLOC_BLOCK( s ) ((XP_Block)malloc( s ) )
#define XP_FREE_BLOCK( b ) free( b )
#define XP_REALLOC_BLOCK( b, s ) ((XP_Block)realloc( b, s ) )
#define XP_LOCK_BLOCK( p, t, b ) (p = ( t )( b ))
#define XP_UNLOCK_BLOCK( b )
#endif /* XP_MAC */
#define PA_Block XP_Block
#define PA_ALLOC(S) XP_ALLOC_BLOCK(S)
#define PA_FREE(B) XP_FREE_BLOCK(B)
#define PA_REALLOC(B,S) XP_REALLOC_BLOCK(B,S)
#define PA_LOCK(P,T,B) XP_LOCK_BLOCK(P,T,B)
#define PA_UNLOCK(B) XP_UNLOCK_BLOCK(B)
/*-----------------------------------------------------------------------------
Allocating many small structures.
If allocating many small structures, it is often more efficient to allocate
an array of a bunch of them, and maintain a free list of them. These
utilities do that for you.
You must provide a XP_AllocStructInfo structure which describes what
it is you are trying to allocate it. If statically defined, use the
XP_INITIALIZE_ALLOCSTRUCTINFO macro to initialize it; if you prefer to
initialize it at runtime, use the XP_InitAllocStructInfo() routine.
If you free everything you've ever allocated for a given
XP_AllocStructInfo, all the memory used will be freed. Or, if you're
*really sure* you're done with everything you've allocated for a given
XP_AllocStructInfo, you can just call the scary XP_FreeAllStructs() routine.
Don't mix calls to XP_AllocStruct/XP_FreeStruct and XP_ALLOC/XP_FREE !!!
XP_AllocStructZero is the same as XP_AllocStruct, but it also zeros out
the allocated memory.
An example:
struct foo {
int a;
int b;
};
static XP_AllocStructInfo FooAlloc =
{ XP_INITIALIZE_ALLOCSTRUCTINFO(sizeof(struct foo)) };
.
.
.
struct foo* ptr = (struct foo*) XP_AllocStruct(&FooAlloc);
.
.
.
XP_FreeStruct(FooAlloc, ptr);
-----------------------------------------------------------------------------*/
typedef struct XP_AllocStructInfo {
int size;
void* curchunk;
int leftinchunk;
void* firstfree;
void* firstchunk;
int numalloced;
} XP_AllocStructInfo;
#define XP_INITIALIZE_ALLOCSTRUCTINFO(size) ((size + sizeof(void*) - 1) / sizeof(void*)) * sizeof(void*)
XP_BEGIN_PROTOS
void XP_InitAllocStructInfo(XP_AllocStructInfo* info, int size);
void* XP_AllocStruct(XP_AllocStructInfo* info);
void* XP_AllocStructZero(XP_AllocStructInfo* info);
void XP_FreeStruct(XP_AllocStructInfo* info, void* ptr);
void XP_FreeAllStructs(XP_AllocStructInfo* info); /* Danger! Use with care! */
XP_END_PROTOS
#endif /* _XP_MEM_ */

View File

@ -1,58 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/*-----------------------------------------------------------------------------
Position String Formatting
%ns argument n is a string
%ni argument n is an integer
%% literal %
n must be from 1 to 9
XP_MessageLen returns the length of the formatted message, including
the terminating NULL.
XP_Message formats the message into the given buffer, not exceeding
bufferLen (which includes the terminating NULL). If there isn't enough
space, XP_Message will truncate the text and terminate it (unlike
strncpy, which will truncate but not terminate).
XP_StaticMessage is like XP_Message but maintains a private buffer
which it resizes as necessary.
-----------------------------------------------------------------------------*/
#ifndef _XP_Message_
#define _XP_Message_
#include "xp_core.h"
XP_BEGIN_PROTOS
int
XP_MessageLen (const char * format, ...);
void
XP_Message (char * buffer, int bufferLen, const char * format, ...);
const char *
XP_StaticMessage (const char * format, ...);
XP_END_PROTOS
#endif /* _XP_Message_ */

View File

@ -1,64 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 __XP_NavCenter_H
#define __XP_NavCenter_H
#ifdef MOZILLA_CLIENT
#include "xp_core.h"
#include "htrdf.h"
XP_BEGIN_PROTOS
/* Callback function, allows consumer of the list to specialize search
* via a callback. This is needed because of different components
* that hide under MWContextBrowser, when they really should be
* something like MWContextEditor or MWContextNetcaster.
* The callback allows you to decide the details to match by.
* Return TRUE if the context is suitable, FALSE if it is not.
* The varargs will match the paramaters of the find function up to
* the callback exactly.
*/
typedef XP_Bool (*ContextMatch)(MWContext *pCX);
extern MWContext *XP_GetLastActiveContext(ContextMatch cxFilter);
extern void XP_SetLastActiveContext(MWContext *pCX);
extern void XP_RemoveContextFromLastActiveStack(MWContext *pCX);
extern void XP_RegisterNavCenter(HT_Pane htPane, MWContext *pDocked);
extern void XP_UnregisterNavCenter(HT_Pane htPane);
extern void XP_DockNavCenter(HT_Pane htPane, MWContext *pContext);
extern void XP_UndockNavCenter(HT_Pane htPane);
extern XP_Bool XP_IsNavCenterDocked(HT_Pane htPane);
extern MWContext *XP_GetNavCenterContext(HT_Pane htPane);
extern void XP_SetNavCenterUrl(MWContext *pContext, char *pUrl);
extern void XP_AddNavCenterSitemap(MWContext *pContext, char *pSitemap, char* name);
extern void XP_RemoveNavCenterInfo(MWContext *pContext);
extern void XP_RegisterViewHTMLPane(HT_View htView, MWContext *pContext);
extern int XP_GetURLForView(HT_View htView, char *pAddress);
XP_END_PROTOS
#endif /* MOZILLA_CLIENT */
#endif /* __XP_NavCenter_H */

View File

@ -1,48 +0,0 @@
/* -*- Mode: C; tab-width: 8; 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.
*/
/* We need this because Solaris' version of qsort is broken and
* causes array bounds reads.
*/
#ifndef xp_qsort_h___
#define xp_qsort_h___
/* Had to pull the following define out of xp_core.h
* to avoid including xp_core.h.
* That brought in too many header file dependencies.
*/
#if defined(__cplusplus)
extern "C" {
#endif
#if defined(SOLARIS) || defined(XP_MAC)
extern void XP_QSORT(void *, size_t, size_t,
int (*)(const void *, const void *));
#elif defined(XP_OS2)
#define XP_QSORT(base, nel, width, compar) qsort((base),(nel),(width),(int(_Optlink*)(const void*,const void*))(compar))
#else
#define XP_QSORT(base, nel, width, compar) qsort((base),(nel),(width),(compar))
#endif
#if defined(__cplusplus)
}
#endif
#endif /* xp_qsort_h___ */

View File

@ -1,36 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/*
xp_rgb.c --- parsing color names to RGB triplets.
Created: John Giannandrea <jg@netscape.com>, 28-Sep-95
*/
#include "xp.h"
XP_BEGIN_PROTOS
/* Looks up the passed name via a caseless compare in a static table
of color names. If found it sets the passed pointers to contain
the red, green, and blue values for that color. On success the return
code is 0. Returns 1 if no match is found for the color.
*/
extern intn XP_ColorNameToRGB(char *name, uint8 *r, uint8 *g, uint8 *b);
XP_END_PROTOS

View File

@ -1,236 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 XPSTRING_H
#define XPSTRING_H
#include <string.h>
#define XP_STRCASECMP strcasecomp
#define XP_STRNCASECMP strncasecomp
#define XP_STRCASESTR strcasestr
#define XP_STRNCHR strnchr
#define XP_TO_UPPER(i) xp_toupper(i)
#define XP_TO_LOWER(i) xp_tolower(i)
#ifdef XP_UNIX /* because I can't verify yet.. */
#ifdef DEBUG
XP_BEGIN_PROTOS
extern char * NOT_NULL (const char *x);
XP_END_PROTOS
#else
# define NOT_NULL(X) X
#endif
#define XP_STRLEN(s) strlen(NOT_NULL(s))
#define XP_STRCMP(a, b) strcmp(NOT_NULL(a), NOT_NULL(b))
#define XP_STRNCMP(a, b, n) strncmp(NOT_NULL(a), NOT_NULL(b), (n))
#define XP_STRCPY(d, s) strcpy(NOT_NULL(d), NOT_NULL(s))
#define XP_STRCHR strchr
#define XP_STRRCHR strrchr
#define XP_STRTOK strtok
#define XP_STRCAT strcat
#define XP_STRNCAT strncat
#define XP_STRSTR strstr
#define XP_STRTOUL strtoul
/*
XP_FILENAMECMP compares two filenames, treating case differences
appropriately for this OS.
*/
#ifdef XP_WIN
#define XP_FILENAMECMP stricmp
#else
#define XP_FILENAMECMP XP_STRCMP
#endif
#if !defined(XP_WIN) && !defined(XP_OS2)
/* strdup is not an ANSI function */
XP_BEGIN_PROTOS
extern char * strdup (const char * s);
XP_END_PROTOS
#endif
#define XP_STRDUP(s) strdup((s))
#define XP_MEMCPY(d, s, n) memcpy((d), (s), (n))
/* NOTE: XP_MEMMOVE gurantees that overlaps will be properly handled */
#if defined( __sun) && !defined(__svr4__)
#define XP_MEMMOVE(Dest,Src,Len) bcopy((Src),(Dest),(Len))
#else
#define XP_MEMMOVE(Dest,Src,Len) memmove((Dest),(Src),(Len))
#endif /* __sun */
#define XP_MEMSET memset
#define XP_SPRINTF sprintf
#define XP_SAFE_SPRINTF PR_snprintf
#define XP_MEMCMP memcmp
#define XP_VSPRINTF vsprintf
#define XP_IS_SPACE(VAL) \
(((((intn)(VAL)) & 0x7f) == ((intn)(VAL))) && isspace((intn)(VAL)) )
#define XP_IS_CNTRL(i) ((((unsigned int) (i)) > 0x7f) ? (int) 0 : iscntrl(i))
#define XP_IS_DIGIT(i) ((((unsigned int) (i)) > 0x7f) ? (int) 0 : isdigit(i))
#ifdef XP_WIN
#define XP_IS_ALPHA(VAL) (isascii((int)(VAL)) && isalpha((int)(VAL)))
#else
#define XP_IS_ALPHA(VAL) ((((unsigned int) (VAL)) > 0x7f) ? FALSE : isalpha((int)(VAL)))
#endif
#define XP_ATOI(PTR) (atoi((PTR)))
#define XP_BZERO(a,b) memset(a,0,b)
/* NOTE: XP_BCOPY gurantees that overlaps will be properly handled */
#ifdef XP_WIN16
XP_BEGIN_PROTOS
extern void WIN16_bcopy(char *, char *, unsigned long);
XP_END_PROTOS
#define XP_BCOPY(PTR_FROM, PTR_TO, LEN) \
(WIN16_bcopy((char *) (PTR_FROM), (char *)(PTR_TO), (LEN)))
#else
#define XP_BCOPY(Src,Dest,Len) XP_MEMMOVE((Dest),(Src),(Len))
#endif /* XP_WIN16 */
/*
Random stuff in a random place
*/
#if defined (XP_WIN) || defined (XP_OS2)
#define XP_RANDOM rand
#define XP_SRANDOM(seed) srand((seed))
#endif
#ifdef XP_MAC
#define XP_RANDOM rand
#define XP_SRANDOM(seed) srand((seed))
#endif
#ifdef XP_UNIX
#if !defined(XP_RANDOM) || !defined(XP_SRANDOM) /* defined in both xp_mcom.h and xp_str.h */
#if defined(UNIXWARE) || defined(_INCLUDE_HPUX_SOURCE) || (defined(__sun) && defined(__svr4__)) || defined(SNI) || defined(NCR)
#define XP_RANDOM rand
#define XP_SRANDOM(seed) srand((seed))
#else
#define XP_RANDOM random
#define XP_SRANDOM(seed) srandom((seed))
#endif
#endif
#endif
#endif /* XP_UNIX -- ifdef'd because I can't yet verify */
XP_BEGIN_PROTOS
/*
** Some basic string things
*/
/*
** Concatenate s1 to s2. If s1 is NULL then a copy of s2 is
** returned. Otherwise, s1 is realloc'd and s2 is concatenated, with the
** new value of s1 being returned.
*/
extern char *XP_AppendStr(char *s1, const char *s2);
/*
** Concatenate a bunch of strings. The variable length argument list must
** be terminated with a NULL. This result is a DS_Alloc'd string.
*/
extern char *XP_Cat(char *s1, ...);
/* Fast table driven tolower and toupper functions.
**
** Only works on first 128 ascii
*/
int xp_tolower(int c);
int xp_toupper(int c);
/*
* Case-insensitive string comparison
*/
extern int strcasecomp (const char *a, const char *b);
extern int strncasecomp (const char *a, const char *b, int n);
/* find a char within a specified length string
*/
extern char * strnchr (const char * str, const char single, int32 len);
/* find a substring within a string with a case insensitive search
*/
extern char * strcasestr (const char * str, const char * substr);
/* find a substring within a specified length string with a case
* insensitive search
*/
extern char * strncasestr (const char * str, const char * substr, int32 len);
/* thread safe version of strtok. placeHolder contains the remainder of the
string being tokenized and is used as the starting point of the next search */
/* example: (1st call) token = XP_STRTOK_R(tokenString, "<token>", &placeHolder);
(2nd call) token = XP_STRTOK_R(nil, "<token>", &placeHolder);*/
extern char * XP_STRTOK_R(char *s1, const char *s2, char **placeHolder);
/*
* Malloc'd string manipulation
*
* notice that they are dereferenced by the define!
*/
#define StrAllocCopy(dest, src) NET_SACopy (&(dest), src)
#define StrAllocCat(dest, src) NET_SACat (&(dest), src)
extern char * NET_SACopy (char **dest, const char *src);
extern char * NET_SACat (char **dest, const char *src);
/*
* Malloc'd block manipulation
*
* Lengths are necessary here :(
*
* notice that they are dereferenced by the define!
*/
#define BlockAllocCopy(dest, src, src_length) NET_BACopy((char**)&(dest), src, src_length)
#define BlockAllocCat(dest, dest_length, src, src_length) NET_BACat(&(dest), dest_length, src, src_length)
extern char * NET_BACopy (char **dest, const char *src, size_t src_length);
extern char * NET_BACat (char **dest, size_t dest_length, const char *src, size_t src_length);
extern char * XP_StripLine (char *s);
/* Match = 0, NoMatch = 1, Abort = -1 */
/* Based loosely on sections of wildmat.c by Rich Salz */
extern int xp_RegExpSearch(char *str, char *exp);
/*
* These are "safe" versions of the runtime library routines. The RTL
* versions do not null-terminate dest IFF strlen(src) >= destLength.
* These versions always null-terminate, which is why they're safe.
*/
extern char *XP_STRNCAT_SAFE (char *dest, const char *src, size_t len);
extern char *XP_STRNCPY_SAFE (char *dest, const char *src, size_t len);
XP_END_PROTOS
#endif /* XPSTRING_H */

View File

@ -1,35 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/* xp_thrmo.h --- Status message text for the thermometer. */
#ifndef _XP_THRMO_
#define _XP_THRMO_
#include "xp_core.h"
XP_BEGIN_PROTOS
extern const char *
XP_ProgressText (unsigned long total_bytes,
unsigned long bytes_received,
unsigned long start_time_secs,
unsigned long now_secs);
XP_END_PROTOS
#endif /* _XP_THRMO_ */

View File

@ -1,66 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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.
*/
/*
xp_time.c --- parsing dates and timzones and stuff
Created: Jamie Zawinski <jwz@netscape.com>, 3-Aug-95
*/
#include "xp.h"
#include <time.h>
XP_BEGIN_PROTOS
/* Returns the number of minutes difference between the local time and GMT.
This takes into effect daylight savings time. This is the value that
should show up in outgoing mail headers, etc.
*/
extern int XP_LocalZoneOffset (void);
/* This parses a time/date string into a time_t
(seconds after "1-Jan-1970 00:00:00 GMT")
If it can't be parsed, 0 is returned.
Many formats are handled, including:
14 Apr 89 03:20:12
14 Apr 89 03:20 GMT
Fri, 17 Mar 89 4:01:33
Fri, 17 Mar 89 4:01 GMT
Mon Jan 16 16:12 PDT 1989
Mon Jan 16 16:12 +0130 1989
6 May 1992 16:41-JST (Wednesday)
22-AUG-1993 10:59:12.82
22-AUG-1993 10:59pm
22-AUG-1993 12:59am
22-AUG-1993 12:59 PM
Friday, August 04, 1995 3:54 PM
06/21/95 04:24:34 PM
20/06/95 21:07
95-06-08 19:32:48 EDT
If the input string doesn't contain a description of the timezone,
we consult the `default_to_gmt' to decide whether the string should
be interpreted relative to the local time zone (FALSE) or GMT (TRUE).
The correct value for this argument depends on what standard specified
the time string which you are parsing.
*/
extern time_t XP_ParseTimeString (const char *string, XP_Bool default_to_gmt);
XP_END_PROTOS

View File

@ -1,70 +0,0 @@
/* -*- Mode: C; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 2 -*-
*
* The contents of this file are subject to the Netscape Public License
* Version 1.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 _XP_Trace_
#define _XP_Trace_
#include <stdarg.h>
#ifdef __cplusplus
#if defined(_WINDOWS) && !defined(DEBUG)
inline void FE_Trace( const char *msg ) {} /* implemented by the platform */
inline void XP_Trace( const char *format, ... ) {}
inline void XP_Trace1( const char *format, ... ) {} /* XP_Trace without the newline */
inline void XP_TraceV( const char *msg, va_list args ) {} /* varargs XP_Trace without the newline */
#else
extern "C" void FE_Trace( const char * ); /* implemented by the platform */
extern "C" void XP_Trace( const char *, ... );
extern "C" void XP_Trace1( const char *, ... ); /* XP_Trace without the newline */
extern "C" void XP_TraceV( const char *msg, va_list args ); /* varargs XP_Trace without the newline */
#if defined(XP_MAC)
extern "C" void XP_TraceInit(void);
#endif /* XP_MAC */
#endif /* _WINDOWS && !DEBUG */
#else
void FE_Trace( const char * ); /* implemented by the platform */
void XP_Trace( const char *, ... );
void XP_Trace1( const char *, ... ); /* XP_Trace without the newline */
void XP_TraceV( const char *msg, va_list args ); /* varargs XP_Trace without the newline */
#if defined(XP_MAC)
extern void XP_TraceInit(void);
#endif
#endif /* __cplusplus */
#ifdef DEBUG
#define XP_TRACE(MESSAGE) XP_Trace MESSAGE
#define XP_TRACE1(MESSAGE) XP_Trace1 MESSAGE
#define XP_LTRACE(FLAG,LEVEL,MESSAGE) \
do { if (FLAG >= (LEVEL)) XP_Trace MESSAGE; } while (0)
#else
#define XP_TRACE(MESSAGE) ((void) (MESSAGE))
#define XP_TRACE1(MESSAGE) ((void) (MESSAGE))
#define XP_LTRACE(FLAG,LEVEL,MESSAGE) ((void) (MESSAGE))
#endif
#endif /* _XP_Trace_ */

View File

@ -1,184 +0,0 @@
/* -*- Mode: C; tab-width: 8; 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 _XP_Assert_
#define _XP_Assert_
#include "xp_trace.h"
/*include <stdlib.h>*/
/*-----------------------------------------------------------------------------
abort
For debug builds...
XP_ABORT(X), unlike abort(), takes a text string argument. It will print
it out and then call abort (to drop you into your debugger).
For release builds...
XP_ABORT will call abort(). Whether you #define NDEBUG or not is up
to you.
-----------------------------------------------------------------------------*/
#define XP_ABORT(MESSAGE) (XP_TRACE(MESSAGE),abort())
/*-----------------------------------------------------------------------------
XP_ASSERT is just like "assert" but calls XP_ABORT if it fails the test.
I need this (on a Mac) because "assert" and "abort" are braindead,
whereas my XP_Abort function will invoke the debugger. It could
possibly have been easier to just #define assert to be something decent.
-----------------------------------------------------------------------------*/
#if defined (XP_UNIX)
#if !defined(NO_UNIX_SKIP_ASSERTS)
/* Turning UNIX_SKIP_ASSERTS on by default. */
/* (Solaris 2.x) on Sol2.5, assert() does not work. Too bad... */
/* Therefore, we print the line where assert happened instead. */
/* Print out a \007 to sound the bell. -mcafee */
#define XP_AssertAtLine() fprintf(stderr, "assert: line %d, file %s%c\n", __LINE__, __FILE__, 7)
#ifdef DEBUG
#define XP_ASSERT(X) ( (((X))!=0)? (void)0: (void)XP_AssertAtLine() )
#else
#define XP_ASSERT(X) (void)0
#endif
#else
#include <assert.h>
#define XP_ASSERT(X) assert(X) /* are we having fun yet? */
#endif
#elif defined (XP_WIN)
#ifdef DEBUG
/* LTNOTE: I got tired of seeing all asserts at FEGUI.CPP. This should
* Fix the problem. I intentionally left out Win16 because strings are stuffed
* into the datasegment we probably couldn't build.
*/
#ifdef WIN32
XP_BEGIN_PROTOS
extern void XP_AssertAtLine( char *pFileName, int iLine );
XP_END_PROTOS
#define XP_ASSERT(X) ( ((X)!=0)? (void)0: XP_AssertAtLine(__FILE__,__LINE__))
#else /* win16 */
#define XP_ASSERT(X) ( ((X)!=0)? (void)0: XP_Assert((X) != 0) )
XP_BEGIN_PROTOS
void XP_Assert(int);
XP_END_PROTOS
#endif
#else
#define XP_ASSERT(X) ((void) 0)
#endif
#elif defined (XP_OS2)
#ifdef DEBUG
#include <assert.h>
#define XP_ASSERT(X) assert(X) /* IBM-DAK same as UNIX */
#else
#define XP_ASSERT(X)
#endif
#elif defined(XP_MAC)
#ifdef DEBUG
#ifdef __cplusplus
#ifdef __MWERKS__
/*
** See the comment above: XP_ASSERT is supposed to abort!
** The MacFE_Signal is actually not in the spirit of the creator of XP_Assert.
** Also, the previous version was annoying (always seen in uapp.cp)
** The Metrowerks Assert_ macro is much more helpful...
*/
#include <UException.h>
#define XP_ASSERT(X) Assert_(X)
#else
extern "C" void debugstr(const char* s);
#endif
#else
extern void debugstr(const char* s);
#endif
#ifndef XP_ASSERT
/* The following is wrong... because it will cause
the use of an XP_ASSERT within an if ... else ...
construct to match incorrectly with the "last prior if" :-/
XXX
*/
#define XP_ASSERT(X) if (!(X)) debugstr(#X)
#endif
#else
#define XP_ASSERT(X)
#endif
#endif /* XP_MAC */
/*-----------------------------------------------------------------------------
assert variants
XP_WARN_ASSERT if defined to nothing for release builds. This means
that instead of
#ifdef DEBUG
assert (X);
#endif
you can just do
XP_WARN_ASSERT(X);
Of course when asserts fail that means something is going wrong and you
*should* have normal code to deal with that.
I frequently found myself writing code like this:
#ifdef DEBUG
assert (aPtr);
#endif
if (!aPtr)
return error_something_has_gone_wrong;
so I just combined them into a macro that can be used like this:
if (XP_FAIL_ASSERT(aPtr))
return; // or whatever else you do when things go wrong
What this means is it will return if X *fails* the test. Essentially
the XP_FAIL_ASSERT bit replaces the "!" in the if test.
XP_OK_ASSERT is the opposite. If if you want to do something only if
something is OK, then use it. For example:
if (XP_OK_ASSERT(aPtr))
aPtr->aField = 25;
Use this if you are 99% sure that aPtr will be valid. If it ever is not,
you'll drop into the debugger. For release builds, it turns into an
if statement, so it's completely safe to execute.
You can also do XP_VERIFY, which essentially will throw an assert if a
condition fails in debug mode, but just do whatever at runtime. For
example:
XP_VERIFY(PR_LoadLibrary("foo") == 0);
This will trigger an XP_ASSERT if the condition fails during debug, bug
just run the PR_LoadLibrary in release. Kind of the same as XP_WARN_ASSERT,
but the "verbiage" is a bit clearer (to me, anyway).
-----------------------------------------------------------------------------*/
#ifdef DEBUG
# define XP_WARN_ASSERT(X) ( ((X)!=0)? (void)0: XP_ABORT((#X)) )
# define XP_OK_ASSERT(X) (((X)!=0)? 1: (XP_ABORT((#X)),0))
# define XP_FAIL_ASSERT(X) (((X)!=0)? 0: (XP_ABORT((#X)),1))
# define XP_VERIFY(X) ( (X)? (void)0: XP_ASSERT(0) )
#else
# define XP_WARN_ASSERT(X) (void)((X)!=0)
# define XP_OK_ASSERT(X) (((X)!=0)? 1: 0)
# define XP_FAIL_ASSERT(X) (((X)!=0)? 0: 1)
# define XP_VERIFY(X) ( (void)(X) )
#endif
#endif /* _XP_Assert_ */

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