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:
parent
ace27f0975
commit
11f241c065
@ -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);
|
|
||||||
@ -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
|
|
||||||
@ -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 = ..
|
|
||||||
@ -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 */
|
|
||||||
@ -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
|
|
||||||
@ -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
@ -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 */
|
|
||||||
@ -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_ */
|
|
||||||
@ -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_ */
|
|
||||||
@ -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_ */
|
|
||||||
|
|
||||||
@ -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_ */
|
|
||||||
@ -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_ */
|
|
||||||
|
|
||||||
@ -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 */
|
|
||||||
@ -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 */
|
|
||||||
@ -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_ */
|
|
||||||
@ -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
@ -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
|
|
||||||
@ -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
@ -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_ */
|
|
||||||
@ -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 */
|
|
||||||
@ -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
|
|
||||||
|
|
||||||
@ -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 */
|
|
||||||
@ -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_ */
|
|
||||||
@ -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 */
|
|
||||||
|
|
||||||
|
|
||||||
@ -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
|
|
||||||
@ -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 */
|
|
||||||
@ -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
|
|
||||||
@ -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 */
|
|
||||||
@ -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
|
|
||||||
|
|
||||||
|
|
||||||
@ -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
@ -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 "<", 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_ */
|
|
||||||
@ -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___ */
|
|
||||||
@ -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_ */
|
|
||||||
|
|
||||||
@ -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
@ -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
|
|
||||||
@ -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
|
|
||||||
|
|
||||||
@ -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_ */
|
|
||||||
@ -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_ */
|
|
||||||
@ -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_ */
|
|
||||||
@ -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 */
|
|
||||||
@ -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_ */
|
|
||||||
@ -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 */
|
|
||||||
/******************************************************************************/
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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
@ -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 */
|
|
||||||
@ -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
|
|
||||||
@ -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_ */
|
|
||||||
@ -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_ */
|
|
||||||
@ -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 */
|
|
||||||
|
|
||||||
|
|
||||||
@ -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_ */
|
|
||||||
@ -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 */
|
|
||||||
|
|
||||||
@ -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 */
|
|
||||||
@ -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___ */
|
|
||||||
@ -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
|
|
||||||
@ -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_ */
|
|
||||||
|
|
||||||
@ -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 */
|
|
||||||
@ -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
|
|
||||||
|
|
||||||
@ -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 */
|
|
||||||
@ -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 */
|
|
||||||
@ -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_ */
|
|
||||||
@ -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 */
|
|
||||||
@ -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_ */
|
|
||||||
@ -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 */
|
|
||||||
@ -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 */
|
|
||||||
@ -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
|
|
||||||
@ -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
|
|
||||||
@ -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_ */
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
@ -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_ */
|
|
||||||
@ -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__ */
|
|
||||||
@ -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__ */
|
|
||||||
@ -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__ */
|
|
||||||
|
|
||||||
|
|
||||||
@ -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 */
|
|
||||||
@ -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 */
|
|
||||||
|
|
||||||
@ -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_ */
|
|
||||||
|
|
||||||
@ -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_ */
|
|
||||||
@ -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_ */
|
|
||||||
|
|
||||||
@ -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_ */
|
|
||||||
@ -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_ */
|
|
||||||
@ -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_ */
|
|
||||||
@ -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
|
|
||||||
@ -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 */
|
|
||||||
@ -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_ */
|
|
||||||
@ -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_ */
|
|
||||||
|
|
||||||
|
|
||||||
@ -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_ */
|
|
||||||
|
|
||||||
@ -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 */
|
|
||||||
@ -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___ */
|
|
||||||
@ -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
|
|
||||||
@ -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 */
|
|
||||||
@ -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_ */
|
|
||||||
@ -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
|
|
||||||
@ -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_ */
|
|
||||||
@ -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
Loading…
x
Reference in New Issue
Block a user