home *** CD-ROM | disk | FTP | other *** search
- /* -*- 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 contain prototypes of all public functions for
- the network module in the client library. Also all NET lib
- related public data structures should be in here.
-
- This file will be included automatically when source includes "xp.h".
- By the time this file is included, all global typedefs have been
- executed.
- */
-
- /* make sure we only include this once */
- #ifndef _NET_PROTO_H_
- #define _NET_PROTO_H_
-
- #include "xp_core.h"
- #include "ntypes.h"
- #include "shistele.h"
- #include "xp_list.h"
- #include "msgtypes.h"
-
- #include "xp_error.h"
-
- #ifdef XP_UNIX
- #include <sys/param.h> /* for MAXPATHLEN */
- #endif
-
- /* larubbio */
- #include "mcom_db.h"
- /* #include "jri.h" */
-
- /*
- prototypes for external structures
- */
-
- typedef struct _net_MemoryCacheObject net_MemoryCacheObject;
-
- /* ------------------------------------------------------------------------ */
- /* ============= Typedefs for the network module structures =============== */
-
- #define VIEW_SOURCE_URL_PREFIX "view-source:"
- #define NETHELP_URL_PREFIX "nethelp:"
-
- /* spider begin */
- #define MARIMBA_URL_PREFIX "castanet:"
- /* spider end */
-
- /* Format out codes
- *
- * Notice that there is no wildcard for format out.
- * you must register a wildcard format_in and
- * regular format_out pair for every format_out
- * listed or used in the application. That way
- * there can never be a mime pair that doesn't
- * match.
- */
- #define SET_PRESENT_BIT(X,B) ((FO_Present_Types) ( (int)X | B ))
- #define CLEAR_PRESENT_BIT(X,B) ((FO_Present_Types) ( (int)X & ~(B) ))
- #define CLEAR_CACHE_BIT(X) CLEAR_PRESENT_BIT(X,FO_CACHE_ONLY)
-
- /* If you add a FO_TYPE below for the client, please tell a windows
- * front end person that is working on your product immediately.
- * GAB
- */
- #define FO_PRESENT 1
- #define FO_INTERNAL_IMAGE 2
- #define FO_OUT_TO_PROXY_CLIENT 3
- #define FO_VIEW_SOURCE 4
- #define FO_SAVE_AS 5
- #define FO_SAVE_AS_TEXT 6
- #define FO_SAVE_AS_POSTSCRIPT 7
- #define FO_QUOTE_MESSAGE 8 /* very much like FO_SAVE_AS_TEXT */
- #define FO_MAIL_TO 9
- #define FO_OLE_NETWORK 10
- #define FO_MULTIPART_IMAGE 11
- #define FO_EMBED 12
- #define FO_PRINT 13
- #define FO_PLUGIN 14
- #define FO_APPEND_TO_FOLDER 15 /* used by the mail/news code */
- #define FO_DO_JAVA 16
- #define FO_BYTERANGE 17
- #define FO_EDT_SAVE_IMAGE 18
- #define FO_EDIT 19
- #define FO_LOAD_HTML_HELP_MAP_FILE 20
- #define FO_SAVE_TO_NEWS_DB 21 /* used by off-line news for art. caching */
- #define FO_OPEN_DRAFT 22 /* used by the mail/news code */
- #define FO_PRESENT_INLINE 23 /* like FO_PRESENT, but doesn't blow away */
- #define FO_OBJECT 24 /* see layobj.c */
- #define FO_FONT 25 /* Downloadable Fonts */
- #define FO_SOFTWARE_UPDATE 26 /* Software updates */
- #define FO_JAVASCRIPT_CONFIG 27
- #define FO_QUOTE_HTML_MESSAGE 28
- #define FO_CMDLINE_ATTACHMENTS 29 /* for initializing compose window with attachments via commandline */
- #define FO_MAIL_MESSAGE_TO 30 /* for S/MIME */
- #define FO_LOCATION_INDEPENDENCE 31 /* Location independence stuff */
- #define FO_RDF 32
- #define FO_CRAWL_PAGE 33 /* for crawling HTML pages */
- #define FO_CRAWL_RESOURCE 34 /* for crawling images and resources */
- #define FO_ROBOTS_TXT 35 /* web robots control */
- #define FO_XMLCSS 36 /* CSS for formatting XML */
- #define FO_XMLHTML 37 /* HTML inclusions in XML */
-
- /* bitfield detectable CACHE FO's
- */
- #define FO_CACHE_ONLY 64
- #define FO_CACHE_AND_PRESENT (FO_CACHE_ONLY | FO_PRESENT)
- #define FO_CACHE_AND_INTERNAL_IMAGE (FO_CACHE_ONLY | FO_INTERNAL_IMAGE)
- #define FO_CACHE_AND_OUT_TO_PROXY_CLIENT (FO_CACHE_ONLY | \
- FO_OUT_TO_PROXY_CLIENT)
- #define FO_CACHE_AND_VIEW_SOURCE (FO_CACHE_ONLY | FO_VIEW_SOURCE)
- #define FO_CACHE_AND_SAVE_AS (FO_CACHE_ONLY | FO_SAVE_AS)
- #define FO_CACHE_AND_SAVE_AS_TEXT (FO_CACHE_ONLY | FO_SAVE_AS_TEXT)
- #define FO_CACHE_AND_SAVE_AS_POSTSCRIPT (FO_CACHE_ONLY | FO_SAVE_AS_POSTSCRIPT)
- #define FO_CACHE_AND_QUOTE_MESSAGE (FO_CACHE_ONLY | FO_QUOTE_MESSAGE)
- #define FO_CACHE_AND_MAIL_TO (FO_CACHE_ONLY | FO_MAIL_TO)
- #define FO_CACHE_AND_MAIL_MESSAGE_TO (FO_CACHE_ONLY | FO_MAIL_MESSAGE_TO)
- #define FO_CACHE_AND_OLE_NETWORK (FO_CACHE_ONLY | FO_OLE_NETWORK)
- #define FO_CACHE_AND_MULTIPART_IMAGE (FO_CACHE_ONLY | FO_MULTIPART_IMAGE)
- #define FO_CACHE_AND_EMBED (FO_CACHE_ONLY | FO_EMBED)
- #define FO_CACHE_AND_PRINT (FO_CACHE_ONLY | FO_PRINT)
- #define FO_CACHE_AND_PLUGIN (FO_CACHE_ONLY | FO_PLUGIN)
- #define FO_CACHE_AND_APPEND_TO_FOLDER (FO_CACHE_ONLY | FO_APPEND_TO_FOLDER)
- #define FO_CACHE_AND_DO_JAVA (FO_CACHE_ONLY | FO_DO_JAVA)
- #define FO_CACHE_AND_BYTERANGE (FO_CACHE_ONLY | FO_BYTERANGE)
- #define FO_CACHE_AND_EDIT (FO_CACHE_ONLY | FO_EDIT)
- #define FO_CACHE_AND_LOAD_HTML_HELP_MAP_FILE (FO_CACHE_ONLY | FO_LOAD_HTML_HELP_MAP_FILE)
- #define FO_CACHE_AND_PRESENT_INLINE (FO_CACHE_ONLY | FO_PRESENT_INLINE)
- #define FO_CACHE_AND_OBJECT (FO_CACHE_ONLY | FO_OBJECT)
- #define FO_CACHE_AND_FONT (FO_CACHE_ONLY | FO_FONT)
- #define FO_CACHE_AND_JAVASCRIPT_CONFIG (FO_CACHE_ONLY | FO_JAVASCRIPT_CONFIG)
- #define FO_CACHE_AND_SOFTUPDATE (FO_CACHE_ONLY | FO_SOFTWARE_UPDATE)
- #define FO_CACHE_AND_RDF (FO_CACHE_ONLY | FO_RDF)
- #define FO_CACHE_AND_XMLCSS (FO_CACHE_ONLY | FO_XMLCSS)
- #define FO_CACHE_AND_XMLHTML (FO_CACHE_ONLY | FO_XMLHTML)
- #define FO_CACHE_AND_CRAWL_PAGE (FO_CACHE_ONLY | FO_CRAWL_PAGE)
- #define FO_CACHE_AND_CRAWL_RESOURCE (FO_CACHE_ONLY | FO_CRAWL_RESOURCE)
- #define FO_CACHE_AND_ROBOTS_TXT (FO_CACHE_ONLY | FO_ROBOTS_TXT)
-
- /* bitfield detectable ONLY_FROM_CACHE FO's
- */
- #define FO_ONLY_FROM_CACHE 128
- #define FO_ONLY_FROM_CACHE_AND_PRESENT (FO_ONLY_FROM_CACHE | \
- FO_PRESENT)
- #define FO_ONLY_FROM_CACHE_AND_INTERNAL_IMAGE (FO_ONLY_FROM_CACHE | \
- FO_INTERNAL_IMAGE)
- #define FO_ONLY_FROM_CACHE_AND_OUT_TO_PROXY_CLIENT (FO_ONLY_FROM_CACHE | \
- FO_OUT_TO_PROXY_CLIENT)
- #define FO_ONLY_FROM_CACHE_AND_VIEW_SOURCE (FO_ONLY_FROM_CACHE | \
- FO_VIEW_SOURCE)
- #define FO_ONLY_FROM_CACHE_AND_SAVE_AS (FO_ONLY_FROM_CACHE | \
- FO_SAVE_AS)
- #define FO_ONLY_FROM_CACHE_AND_SAVE_AS_TEXT (FO_ONLY_FROM_CACHE | \
- FO_SAVE_AS_TEXT)
- #define FO_ONLY_FROM_CACHE_AND_SAVE_AS_POSTSCRIPT (FO_ONLY_FROM_CACHE | \
- FO_SAVE_AS_POSTSCRIPT)
- #define FO_ONLY_FROM_CACHE_AND_QUOTE_MESSAGE (FO_ONLY_FROM_CACHE | \
- FO_QUOTE_MESSAGE)
- #define FO_ONLY_FROM_CACHE_AND_MAIL_TO (FO_ONLY_FROM_CACHE | \
- FO_MAIL_TO)
- #define FO_ONLY_FROM_CACHE_AND_MAIL_MESSAGE_TO (FO_ONLY_FROM_CACHE | \
- FO_MAIL_MESSAGE_TO)
- #define FO_ONLY_FROM_CACHE_AND_OLE_NETWORK (FO_ONLY_FROM_CACHE | \
- FO_OLE_NETWORK)
- #define FO_ONLY_FROM_CACHE_AND_MULTIPART_IMAGE (FO_ONLY_FROM_CACHE | \
- FO_MULTIPART_IMAGE)
- #define FO_ONLY_FROM_CACHE_AND_EMBED (FO_ONLY_FROM_CACHE | FO_EMBED)
-
- #define FO_ONLY_FROM_CACHE_AND_PRINT (FO_ONLY_FROM_CACHE | FO_PRINT)
-
- #define FO_ONLY_FROM_CACHE_AND_PLUGIN (FO_ONLY_FROM_CACHE | FO_PLUGIN)
-
- #define FO_ONLY_FROM_CACHE_AND_APPEND_TO_FOLDER (FO_ONLY_FROM_CACHE | \
- FO_APPEND_TO_FOLDER)
- #define FO_ONLY_FROM_CACHE_AND_DO_JAVA (FO_ONLY_FROM_CACHE | FO_DO_JAVA)
-
- #define FO_ONLY_FROM_CACHE_AND_BYTERANGE (FO_ONLY_FROM_CACHE | FO_BYTERANGE)
-
- #define FO_ONLY_FROM_CACHE_AND_EDIT (FO_ONLY_FROM_CACHE | FO_EDIT)
- #define FO_ONLY_FROM_CACHE_AND_LOAD_HTML_HELP_MAP_FILE (FO_ONLY_FROM_CACHE | FO_LOAD_HTML_HELP_MAP_FILE)
- #define FO_ONLY_FROM_CACHE_AND_PRESENT_INLINE (FO_ONLY_FROM_CACHE | FO_PRESENT_INLINE)
-
- typedef void
- Net_GetUrlExitFunc (URL_Struct *URL_s, int status, MWContext *window_id);
-
- typedef void
- Net_GetUrlProgressFunc (URL_Struct *URL_s, int status, MWContext *window_id);
-
-
- /* A structure to store all headers that can be passed into HTTPLOAD.
- * Used for supporting URLConnection object of Java
- */
- typedef struct _NET_AllHeaders {
- char **key; /* The Key portion of each HTTP header */
- char **value; /* The value portion of each HTTP header */
- uint32 empty_index; /* pointer to the next free slot */
- uint32 max_index; /* maximum no of free slots allocated */
- } NET_AllHeaders;
-
- /* Forward declaration to make compiler happy on OSF1 */
- #if defined (OSF1)
- #ifdef XP_CPLUSPLUS
- class MSG_Pane;
- #endif
- #endif
-
- /* larubbio */
- /* moved from mkextcac, this is used for 197 SAR caches,
- * and external cache
- */
- typedef struct _ExtCacheDBInfo {
- DB *database;
- char *filename;
- char *path;
- char *name;
- Bool queried_this_session;
- int type;
- uint32 DiskCacheSize;
- uint32 NumberInDiskCache;
- uint32 MaxSize;
- void *logFile;
-
- } ExtCacheDBInfo;
-
- typedef enum {
- Normal_priority,
- Prefetch_priority, /* passed in to prefetch a URL in the background */
- CurrentlyPrefetching_priority /* a prefetch url currently loading */
- } URLLoadPriority;
-
- /* passing in structure
- *
- * use this structure to pass a URL and associated data
- * into the load_URL() routine
- *
- * This structure can then be used to look up associated
- * data after the transfer has taken place
- *
- * WARNING!! If you ever change this structure, there is a good chance
- * you will have to also change History_entry, and the functions
- * SHIST_CreateHistoryEntry and SHIST_CreateURLStructFromHistoryEntry which
- * copy URLs to and from the history. You may also need to change the
- * net_CacheObject structure in mkcache.c, and the code therein which copies
- * URLs to and from the memory and disk caches.
- */
- struct URL_Struct_ {
- URLLoadPriority priority; /* load priority */
- char * address; /* the URL part */
-
- char * username; /* Put username/password info into the URL struct without */
- char * password; /* using the address field. The problem was that the user's password
- * became visible on screen in a number of cases. Bug 35243, 39418 */
-
- char * destination; /* for copy and move methods */
- char * IPAddressString; /* ASCII string of IP address.
- * If this field exists, then NET_BeginConnect
- * should use it rather than the hostname in
- * the address.
- * This is here for Java DNS security firedrill
- * see jar or jsw...
- */
- int method; /* post or get or ... */
- char * referer; /* What document points to this url */
- char * post_data; /* data to be posted */
- int32 post_data_size; /* size of post_data */
- char * range_header; /* requested ranges (bytes usually) */
- char * post_headers; /* Additional headers for the post.
- * Should end with \n */
- NET_ReloadMethod
- force_reload; /* forced refresh? either NORMAL or SUPER */
- char * http_headers; /* headers that can be passed into
- * HTTPLoad. Used to support
- * proxying
- */
- char * window_target; /* named window support */
- Chrome * window_chrome; /* pointer to a Chrome structure that
- * if non-null specifies the characteristics
- * of the target window named in
- * the window_target variable
- */
-
- /* attributes of the URL that are assembled
- * during and after transfer of the data
- */
- int server_status; /* status code returned by server */
- int32 content_length; /* length of the incoming data */
- int32 real_content_length; /* real length of the partial file */
- char * content_type; /* the content type of incoming
- * data
- */
- char * content_name; /* passed in name for object */
- char * transfer_encoding; /* first encoding of incoming data */
- char * content_encoding; /* encoding of incoming data */
-
- char *x_mac_creator, *x_mac_type; /* If we somehow know the Mac-types
- of this document, these are they.
- This is only of interest on Macs,
- and currently only happens with
- mail/news attachments. */
-
- char * charset; /* charset of the data */
- char * boundary; /* mixed multipart boundary */
- char * redirecting_url; /* the Location: of the redirect */
- char * authenticate; /* auth scheme */
- char * proxy_authenticate; /* proxy auth scheme */
- char * protection_template; /* name of server auth template */
- uint32 refresh; /* refresh interval */
- char * refresh_url; /* url to refresh */
- char * wysiwyg_url; /* URL for WYSIWYG printing/saving */
- time_t expires;
- time_t last_modified;
- time_t server_date; /* Date: header returned by
- * HTTP servers
- */
- char * cache_file; /* if non-NULL then it contains
- * the filename of its local cache
- * file containing it's data
- */
- net_MemoryCacheObject * memory_copy; /* if non-NULL then it contains
- * a structure with
- * a pointer to a list of
- * memory segments
- * containing it's data
- */
-
- void * fe_data; /* random front end data to be passed
- * up the line
- */
-
- #if defined(XP_WIN) || defined(XP_OS2)
- void *ncapi_data; /* Window ncapi data structure
- * to track loads by URL and not context
- */
- #endif /* XP_WIN */
-
- int history_num; /* == add this to history list
- * dflt TRUE
- */
-
- uint32 position; /* for plug-in streams */
- uint32 low_range;
- uint32 high_range; /* these range tags represent
- * the byte offsets that
- * this URL contains.
- * if high_range is non-zero
- * then this URL represents
- * just a subset of the URL.
- */
-
- int32 position_tag; /* tag number of last position */
-
- SHIST_SavedData savedData; /* layout data */
-
- Net_GetUrlExitFunc *pre_exit_fn; /* If set, called just before the
- exit routine that was passed
- in to NET_GetURL. */
-
- /* Security information */
- int security_on; /* is security on? */
- char *key_cipher; /* cipher being used */
- int key_size; /* size of the total key (in bits) */
- int key_secret_size; /* secret portion (in bits) */
- struct CERTCertificateStr *certificate; /* server's certificate */
- struct CERTCertificateStr *redirecting_cert; /* redirecting server's certificate */
- char *key_issuer; /* XXX obsolete */
- char *key_subject; /* XXX obsolete */
- void *sec_private; /* private libsec info */
-
- char *error_msg; /* what went wrong */
-
- char **files_to_post; /* zero terminated array
- * of char * filenames
- * that need to be posted
- */
- char **post_to; /* Only meaningful if files_to_post is set. If post_to is non-NULL, it is a NULL-terminated
- array of the URLs to post the files in files_to_post to. If NULL, files_to_post along with
- address(a directory) will be used to decide where to post the files (like before). */
- XP_Bool *add_crlf; /* Only meaningful if files_to_post is non-NULL. If set, it specifies for each file in files_to_post,
- whether or not to make all line endings be crlf. */
- uint32 auto_scroll; /* set this if you want
- * the window to autoscroll
- * to the bottom at all times
- * The value represents
- * the number of lines to
- * buffer
- */
- PRPackedBool
- dontAllowDiffHostRedirect, /* Do we want to allow a redirect from host A to host B */
- post_data_is_file, /* is the post_data field a filename? */
- address_modified, /* was the address modified? */
- resize_reload, /* persistent NET_RESIZE_RELOAD flag */
- use_local_copy, /* ignore force reload */
- is_directory, /* filled in upon return in to indicate
- * the url points to a directory
- */
- preset_content_type, /* set this if you want to pass in
- * a known content-type
- */
- is_binary, /* should mailto and save-as be
- * wary of this object
- */
- is_active, /* is it an active stream */
- is_netsite, /* did it come from Netsite? */
- intr_on_load, /* set this to interrupt any
- * existing transfers for the window
- * when this URL begins to load
- */
- internal_url, /* set to true if this
- * is a for internal use
- * only url. If it's not
- * set for an internal
- * URL the netlib will
- * return an unrecognized url
- * error
- */
- ext_cache_file, /* the cache file referenced
- * is from an external cache
- */
-
- must_cache, /* overrides cache logic, used by plugins */
-
- dont_cache, /* This gets set by a mime
- * header and tells us not
- * to cache the document
- */
- can_reuse_connection, /* set when the connetion is reusable
- * as in HTTP/1.1 or NG.
- */
- server_can_do_byteranges, /* can the server do byteranges */
- server_can_do_restart, /* can the (ftp) server do restarts? */
-
- load_background, /* Load in the "background".
- Suppress thermo, progress, etc. */
- mailto_post; /* is this a mailto: post? */
- #ifdef XP_CPLUSPLUS
- class MSG_Pane *msg_pane;
- #else
- struct MSG_Pane *msg_pane;
- #endif
-
- NET_AllHeaders all_headers; /* All headers that can be passed into
- * HTTPLOAD. Used to support
- * URLConnection object of Java
- */
- int ref_count; /* how many people have a pointer to me */
- ExtCacheDBInfo *SARCache; /* a pointer to the structure telling
- * us which cache this is in, if it's
- * NULL it's in the normal navigator
- * cache
- */ /* larubbio */
- int owner_id; /* unique ID for each library:
- NPL (plugins) => 0x0000BAC0;
- */
- void *owner_data; /* private data owned by whomever created the URL_Struct */
- char *page_services_url;
- char *etag; /* HTTP/1.1 Etag */
- char *origin_url; /* original referrer of javascript: URL */
- };
-
- /* macro's (methods) to access the URL Struct
- */
- #define NET_URLStruct_Address(S) S->address
- #define NET_URLStruct_AddressModified(S) S->address_modified
- #define NET_URLStruct_PostData(S) S->post_data
- #define NET_URLStruct_Method(S) S->method
- #define NET_URLStruct_ContentLength(S) S->content_length
- #define NET_URLStruct_ContentType(S) S->content_type
-
- /* stream functions
- */
- typedef unsigned int
- (*MKStreamWriteReadyFunc) (NET_StreamClass *stream);
-
- #define MAX_WRITE_READY (((unsigned) (~0) << 1) >> 1) /* must be <= than MAXINT!!!!! */
-
- typedef int
- (*MKStreamWriteFunc) (NET_StreamClass *stream, const char *str, int32 len);
-
- typedef void
- (*MKStreamCompleteFunc) (NET_StreamClass *stream);
-
- typedef void
- (*MKStreamAbortFunc) (NET_StreamClass *stream, int status);
-
- /* streamclass function
- */
- struct _NET_StreamClass {
-
- char * name; /* Just for diagnostics */
-
- MWContext * window_id; /* used for progress messages, etc. */
-
- void * data_object; /* a pointer to whatever
- * structure you wish to have
- * passed to the routines below
- * during writes, etc...
- *
- * this data object should hold
- * the document, document
- * structure or a pointer to the
- * document.
- */
-
- MKStreamWriteReadyFunc is_write_ready; /* checks to see if the stream is ready
- * for writing. Returns 0 if not ready
- * or the number of bytes that it can
- * accept for write
- */
- MKStreamWriteFunc put_block; /* writes a block of data to the stream */
- MKStreamCompleteFunc complete; /* normal end */
- MKStreamAbortFunc abort; /* abnormal end */
-
- Bool is_multipart; /* is the stream part of a multipart sequence */
- };
-
- /*DSR040197 - new and improved position for BEGIN_PROTOS*/
- XP_BEGIN_PROTOS
- /*
- * this defines the prototype for
- * stream converter routines.
- */
- typedef NET_StreamClass * NET_Converter (FO_Present_Types rep_out, /* the output format */
- void * data_obj, /* saved from registration */
- URL_Struct * URL_s, /* the URL info */
- MWContext * context);/* window id */
-
- /*
- * The ContentInfo structure.
- *
- * Currently, we support the following attributes:
- *
- * 1. Type: This identifies what kind of data is in the file.
- * 2. Encoding: Identifies any compression or otherwise content-independent
- * transformation which has been applied to the file (uuencode, etc.)
- * 3. Language: Identifies the language a text document is in.
- * 4. Description: A text string describing the file.
- *
- * Multiple items are separated with a comma, e.g.
- * encoding="x-gzip, x-uuencode"
- */
-
- typedef struct {
- char *type;
- char *encoding;
- char *language;
- char *desc;
- char *icon;
- char *alt_text;
- Bool is_default; /* is it the default because a type couldn't be found? */
- void *fe_data; /* used by fe to save ext. viewer/save to disk options */
- } NET_cinfo;
-
- /* this is a list item struct that holds extension lists and
- * cinfo structs.
- *
- * call cinfo_MasterListPointer to return
- * the master list held by the net library
- */
- typedef struct _cdata {
- int num_exts;
- char **exts;
- NET_cinfo ci;
- Bool is_external; /* did this entry come from an external file? */
- Bool is_modified; /* Is this entry modified externally; default = False */
- Bool is_local; /* Is personal copy*/
- Bool is_new; /* indicate if this is
- added by user via helper */
- char* src_string; /* For output use */
- } NET_cdataStruct;
-
-
- #ifdef XP_UNIX
- /* This is only used in UNIX */
-
- typedef struct _mdata {
- char *contenttype;
- char *command;
- char *testcommand;
- char *label;
- char *printcommand;
- int32 stream_buffer_size;
- Bool test_succeed;
- char* xmode;
- char* src_string; /* For output use */
- Bool is_local;
- Bool is_modified;
- } NET_mdataStruct;
- #endif
-
-
-
- /* Defines for various MIME content-types and encodings.
- Whenever you type in a content-type, you should use one of these defines
- instead, to help catch typos, and make central management of them easier.
- */
-
- #define AUDIO_WILDCARD "audio/*"
- #define IMAGE_WILDCARD "image/*"
-
- #define APPLICATION_APPLEFILE "application/applefile"
- #define APPLICATION_BINHEX "application/mac-binhex40"
- #define APPLICATION_MACBINARY "application/x-macbinary"
- #define APPLICATION_COMPRESS "application/x-compress"
- #define APPLICATION_COMPRESS2 "application/compress"
- #define APPLICATION_FORTEZZA_CKL "application/x-fortezza-ckl"
- #define APPLICATION_FORTEZZA_KRL "application/x-fortezza-krl"
- #define APPLICATION_GZIP "application/x-gzip"
- #define APPLICATION_GZIP2 "application/gzip"
- #define APPLICATION_HTTP_INDEX "application/http-index"
- #define APPLICATION_JAVASCRIPT "application/x-javascript"
- #define APPLICATION_NETSCAPE_REVOCATION "application/x-netscape-revocation"
- #define APPLICATION_NS_PROXY_AUTOCONFIG "application/x-ns-proxy-autoconfig"
- #define APPLICATION_NS_JAVASCRIPT_AUTOCONFIG "application/x-javascript-config"
- #define APPLICATION_OCTET_STREAM "application/octet-stream"
- #define APPLICATION_PGP "application/pgp"
- #define APPLICATION_PGP2 "application/x-pgp-message"
- #define APPLICATION_POSTSCRIPT "application/postscript"
- #define APPLICATION_PRE_ENCRYPTED "application/pre-encrypted"
- #define APPLICATION_UUENCODE "application/x-uuencode"
- #define APPLICATION_UUENCODE2 "application/x-uue"
- #define APPLICATION_UUENCODE3 "application/uuencode"
- #define APPLICATION_UUENCODE4 "application/uue"
- #define APPLICATION_X509_CA_CERT "application/x-x509-ca-cert"
- #define APPLICATION_X509_SERVER_CERT "application/x-x509-server-cert"
- #define APPLICATION_X509_EMAIL_CERT "application/x-x509-email-cert"
- #define APPLICATION_X509_USER_CERT "application/x-x509-user-cert"
- #define APPLICATION_X509_CRL "application/x-pkcs7-crl"
- #define APPLICATION_XPKCS7_MIME "application/x-pkcs7-mime"
- #define APPLICATION_XPKCS7_SIGNATURE "application/x-pkcs7-signature"
- #define APPLICATION_WWW_FORM_URLENCODED "application/x-www-form-urlencoded"
- #define APPLICATION_OLEOBJECT "application/oleobject"
- #define APPLICATION_OLEOBJECT2 "application/x-oleobject"
- #define APPLICATION_JAVAVM "application/java-vm"
- #define APPLICATION_JAVAARCHIVE "application/java-archive"
- #define APPLICATION_MARIMBA "application/marimba"
- #define APPLICATION_XMARIMBA "application/x-marimba"
-
- #define AUDIO_BASIC "audio/basic"
-
- #define IMAGE_GIF "image/gif"
- #define IMAGE_JPG "image/jpeg"
- #define IMAGE_PJPG "image/pjpeg"
- #define IMAGE_PNG "image/png"
- #define IMAGE_PPM "image/x-portable-pixmap"
- #define IMAGE_XBM "image/x-xbitmap"
- #define IMAGE_XBM2 "image/x-xbm"
- #define IMAGE_XBM3 "image/xbm"
-
- #define MESSAGE_EXTERNAL_BODY "message/external-body"
- #define MESSAGE_NEWS "message/news"
- #define MESSAGE_RFC822 "message/rfc822"
-
- #define MULTIPART_ALTERNATIVE "multipart/alternative"
- #define MULTIPART_APPLEDOUBLE "multipart/appledouble"
- #define MULTIPART_DIGEST "multipart/digest"
- #define MULTIPART_HEADER_SET "multipart/header-set"
- #define MULTIPART_MIXED "multipart/mixed"
- #define MULTIPART_PARALLEL "multipart/parallel"
- #define MULTIPART_SIGNED "multipart/signed"
- #define MULTIPART_RELATED "multipart/related"
- #define SUN_ATTACHMENT "x-sun-attachment"
-
- #define TEXT_ENRICHED "text/enriched"
- #define TEXT_HTML "text/html"
- #define TEXT_MDL "text/mdl"
- #define TEXT_PLAIN "text/plain"
- #define TEXT_RICHTEXT "text/richtext"
- #define TEXT_VCARD "text/x-vcard"
- #define TEXT_CSS "text/css"
- #define TEXT_JSSS "text/jsss"
- #define TEXT_XML "text/xml"
-
- #define VIDEO_MPEG "video/mpeg"
-
- /* x-uuencode-apple-single. QuickMail made me do this. */
- #define UUENCODE_APPLE_SINGLE "x-uuencode-apple-single"
-
- /* The standard MIME message-content-encoding values:
- */
- #define ENCODING_7BIT "7bit"
- #define ENCODING_8BIT "8bit"
- #define ENCODING_BINARY "binary"
- #define ENCODING_BASE64 "base64"
- #define ENCODING_QUOTED_PRINTABLE "quoted-printable"
-
- /* Some nonstandard encodings. Note that the names are TOTALLY RANDOM,
- and code that looks for these in network-provided data must look for
- all the possibilities.
- */
- #define ENCODING_COMPRESS "x-compress"
- #define ENCODING_COMPRESS2 "compress"
- #define ENCODING_ZLIB "x-zlib"
- #define ENCODING_ZLIB2 "zlib"
- #define ENCODING_GZIP "x-gzip"
- #define ENCODING_GZIP2 "gzip"
- #define ENCODING_UUENCODE "x-uuencode"
- #define ENCODING_UUENCODE2 "x-uue"
- #define ENCODING_UUENCODE3 "uuencode"
- #define ENCODING_UUENCODE4 "uue"
-
- /* Some names of parameters that various MIME headers include.
- */
- #define PARAM_PROTOCOL "protocol"
- #define PARAM_MICALG "micalg"
- #define PARAM_MICALG_MD2 "rsa-md2"
- #define PARAM_MICALG_MD5 "rsa-md5"
- #define PARAM_MICALG_SHA1 "sha1"
- #define PARAM_MICALG_SHA1_2 "sha-1"
- #define PARAM_MICALG_SHA1_3 "rsa-sha1"
- #define PARAM_MICALG_SHA1_4 "rsa-sha-1"
- #define PARAM_MICALG_SHA1_5 "rsa-sha"
- #define PARAM_X_MAC_CREATOR "x-mac-creator"
- #define PARAM_X_MAC_TYPE "x-mac-type"
-
-
- /* This is like text/html, but also implies that the charset is that of
- the window. This type should not escape to the outside world!
- */
- #define INTERNAL_PARSER "internal/parser"
-
- /* This type represents a document whose type was unknown. Note that this
- is not the same as "application/octet-stream". UNKNOWN_CONTENT_TYPE is
- an internal marker used to distinguish between documents *without* a
- specified type, and documents which had their type explicitly specified
- as octet_stream.
-
- This type should not be allowed to escape to the outside world -- if we
- feed a content type to an external consumer, we must translate this type
- to application/octet-stream first.
- */
- #define UNKNOWN_CONTENT_TYPE "application/x-unknown-content-type"
-
- /* I have no idea what these are... */
- #define MAGNUS_INTERNAL_UNKNOWN "magnus-internal/unknown"
- /* pre-encrypted file that has passed the cache */
- #define INTERNAL_PRE_ENCRYPTED "internal/pre-encrypted"
- /* html file that needs to be pre-encrypted */
- #define INTERNAL_PRE_ENC_HTML "internal/preenc-html"
-
- #define NET_AUTH_FAILED_DONT_DISPLAY 1
- #define NET_AUTH_FAILED_DISPLAY_DOCUMENT 2
- #define NET_AUTH_SUCCEEDED 3
- #define NET_RETRY_WITH_AUTH 4
-
- #ifdef XP_UNIX
- #define NET_COMMAND_NETSCAPE "internal"
- #define NET_COMMAND_PLUGIN "plugin:"
- #define NET_COMMAND_SAVE_TO_DISK "save"
- #define NET_COMMAND_SAVE_BY_NETSCAPE "plugin-error"
- #define NET_COMMAND_UNKNOWN "prompt"
- #define NET_COMMAND_DELETED "deleted"
- #define NET_MOZILLA_FLAGS "x-mozilla-flags"
- #endif
-
- /* the entry file info structure contains information about
- * an ftp directory entry broken down into components
- */
- typedef struct _NET_FileEntryInfo {
- char * filename;
- NET_cinfo * cinfo;
- char * content_type;
- int special_type;
- time_t date;
- int32 size;
- Bool display; /* show this entry? */
- int32 permissions;
- } NET_FileEntryInfo;
-
- #define NET_FILE_TYPE 0
- #define NET_DIRECTORY 1
- #define NET_SYM_LINK 2
- #define NET_SYM_LINK_TO_DIR 3
- #define NET_SYM_LINK_TO_FILE 4
-
- /* bit wise or'able permissions */
- #define NET_READ_PERMISSION 4
- #define NET_WRITE_PERMISSION 2
- #define NET_EXECUTE_PERMISSION 1
-
- typedef struct _HTTPIndexParserData HTTPIndexParserData;
-
- /* define HTML help mapping file parser */
- #define HTML_HELP_ID_FOUND 999
-
- /* ====================================================================== */
- /* Prototypes for NetLib */
-
- /* set this to see debug messages if compiled with -DDEBUG
- */
- extern int MKLib_trace_flag;
-
- /* load the HTML help mapping file and search for
- * the id or text to load a specific document
- */
- extern void
- NET_GetHTMLHelpFileFromMapFile(MWContext *context,
- char *map_file_url,
- char *id,
- char *search_text);
-
- /* print a text string in place of the NET_FileEntryInfo special_type int */
- extern char * NET_PrintFileType(int special_type);
-
- /* streamclass parser for application/http-index-format */
- extern NET_StreamClass *
- NET_HTTPIndexFormatToHTMLConverter(int format_out,
- void *data_object,
- URL_Struct *URL_s,
- MWContext *window_id);
-
- /* parser routines to parse application/http-index-format
- */
- extern HTTPIndexParserData * NET_HTTPIndexParserInit(void);
-
- extern void NET_HTTPIndexParserFree(HTTPIndexParserData *obj);
-
- extern int
- NET_HTTPIndexParserPut(HTTPIndexParserData *obj, char *data, int32 len);
-
- extern int
- NET_HTTPIndexParserSort(HTTPIndexParserData *data_obj, int sort_method);
-
- extern int32 NET_HTTPIndexParserGetTotalFiles(HTTPIndexParserData *data_obj);
-
- extern NET_FileEntryInfo *
- NET_HTTPIndexParserGetFileNum(HTTPIndexParserData *data_obj, int32 num);
-
- extern char * NET_HTTPIndexParserGetTextMessage(HTTPIndexParserData *data_obj);
-
- extern char * NET_HTTPIndexParserGetHTMLMessage(HTTPIndexParserData *data_obj);
-
- extern char * NET_HTTPIndexParserGetBaseURL(HTTPIndexParserData *data_obj);
-
- /* the view source converter. Data_obj should be the
- * content type of the object
- */
- extern NET_StreamClass *
- net_ColorHTMLStream (int format_out,
- void *data_obj,
- URL_Struct *URL_s,
- MWContext *window_id);
-
- /* socks support function
- *
- * if set to NULL socks is off. If set to non null string the string will be
- * used as the socks host and socks will be used for all connections.
- *
- * returns 0 on hostname error (gethostbyname returning bad)
- * 1 otherwise
- */
- extern int NET_SetSocksHost(char * host);
-
- /* set the number of seconds for the tcp connect timeout
- *
- * this timeout is used to end connections that do not
- * timeout on there own
- */
- extern void NET_SetTCPConnectTimeout(uint32 seconds);
-
- /* Is there a registered converter for the passed mime_type */
- extern XP_Bool NET_HaveConverterForMimeType(char *content_type);
-
- /* builds an outgoing stream and returns a stream class structure
- * containing a stream function table
- */
- extern NET_StreamClass * NET_StreamBuilder (
- FO_Present_Types format_out,
- URL_Struct * anchor,
- MWContext * window_id);
-
-
- /* bit flags for determining what we want to parse from the URL
- */
- #define GET_ALL_PARTS 127
- #define GET_PASSWORD_PART 64
- #define GET_USERNAME_PART 32
- #define GET_PROTOCOL_PART 16
- #define GET_HOST_PART 8
- #define GET_PATH_PART 4
- #define GET_HASH_PART 2
- #define GET_SEARCH_PART 1
-
-
- /* return codes used by NET_BeginConnection
- * and MSG_BeginOpenFolder
- */
- #define MK_WAITING_FOR_CONNECTION 100
- #define MK_CONNECTED 101
-
- /* This function assumes a url that includes the protocol.
- * Parses and returns peices of URL as defined by the
- * bit flags in "wanted" which are defined above.
- *
- * Note: GET_HOST_PART returns the port number if one exists.
- * always mallocs a returned string that must be freed
- */
- extern char * NET_ParseURL (const char *url, int wanted);
-
- /* decode % escaped hex codes into character values,
- * modifies the parameter, returns the same buffer
- */
- extern char * NET_UnEscape (char * str);
-
- /* decode % escaped hex codes into character values,
- * modifies the parameter buffer, returns the length of the result
- * (result may contain \0's).
- */
- extern int NET_UnEscapeCnt (char * str);
-
- /* Like UnEscapeCnt but uses len to bound str, does not assume NUL termination
- */
- extern int32 NET_UnEscapeBytes (char * str, int32 len);
-
- /* a converter for plain text
- */
- PUBLIC NET_StreamClass *
- NET_PlainTextConverter (FO_Present_Types format_out,
- void *data_obj,
- URL_Struct *URL_s,
- MWContext *window_id);
-
-
- MODULE_PRIVATE NET_StreamClass *
- NET_ProxyAutoConfig(int fmt, void *data_obj, URL_Struct *URL_s, MWContext *w);
-
- /* set the host to be used as an SMTP relay
- */
- extern void NET_SetMailRelayHost(char * host);
-
- /* add coordinates to the URL address
- * in the form url?x,y
- *
- * any # or ? data previously on the URL is stripped
- */
- extern int NET_AddCoordinatesToURLStruct(URL_Struct * url_struct, int32 x_coord, int32 y_coord);
-
-
- /* take a Layout generated LO_FormSubmitData_struct
- * and use it to add post data to the URL Structure
- * generated by CreateURLStruct
- *
- * DOES NOT Generate the URL Struct, it must be created prior to
- * calling this function
- *
- * returns 0 on failure and 1 on success
- */
- extern int NET_AddLOSubmitDataToURLStruct(LO_FormSubmitData * sub_data,
- URL_Struct * url_struct);
-
- typedef enum {
- IdententifyViaUniqueID,
- IdentintifyViaEmailAddress,
- DoNotIdentifyMe
- } IdentifyMeEnum;
-
- /* set the method that the user wishes to identify themselves
- * with.
- * Default is DoNotIdentify unless this is called at startup
- */
- extern void NET_SetIdentifyMeType(IdentifyMeEnum method);
-
- /* set the users cookie prefs */
- typedef enum {
- NET_SilentCookies,
- NET_WhineAboutCookies,
- NET_DontAcceptNewCookies,
- NET_DisableCookies
- } NET_CookiePrefsEnum;
-
- /* sets users inline cookie prefs */
- typedef enum {
- NET_AllowForeignCookies,
- NET_DoNotAllowForeignCookies
- } NET_ForeignCookiesEnum;
-
- typedef enum {
- NET_Accept,
- NET_DontAcceptForeign,
- NET_DontUse
- } NET_CookieBehaviorEnum;
-
-
- /* Register the cookie preferences callback functions. Only called once from mkgeturl. */
- extern void NET_RegisterCookiePrefCallbacks(void);
-
- /* Save the cookies. libnet ignores whatever filename is specified, for now.
- */
- extern int NET_SaveCookies(char *filename);
-
- /* returns a malloc'd string containing a unique id
- * generated from the sec random stuff.
- */
- extern char * NET_GetUniqueIdString(void);
-
- /* pass in TRUE to disable disk caching
- * of SSL documents.
- * pass in FALSE to enable disk cacheing
- * of SSL documents
- */
- extern void NET_DontDiskCacheSSL(XP_Bool set);
-
- /* removes the specified number of objects from the
- * cache taking care to remove only the oldest objects.
- */
- extern int32
- NET_RemoveDiskCacheObjects(uint32 remove_num);
-
- /* cleans up the cache directory by listing every
- * file and deleting the ones it doesn't know about
- * that begin with the cacheing prefix
- *
- * on entry: Set
- * dir_name: equal to the name of the directory where cache files reside
- * prefix: equal to the file prefix that cache files use.
- * (i.e. "cache" if all files begin with cacheXXXX)
- *
- * remember that cache file names were generated by WH_TempName with
- * the xpCache enum
- *
- */
- extern int NET_CleanupCacheDirectory(char * dir_name, const char * prefix);
-
- /* locks or unlocks a cache file. The
- * cache lock is only good for a single
- * session
- * set=TRUE locks a file
- * set=FALSE unlocks a file
- */
- extern Bool NET_ChangeCacheFileLock(URL_Struct *URL_s, Bool set);
-
- /* Find an actively-loading cache file for URL_s in context, and copy the first
- * nbytes of it to a new cache file. Return a cache converter stream by which
- * the caller can append to the cloned cache file.
- */
- extern NET_StreamClass *
- NET_CloneWysiwygCacheFile(MWContext *context, URL_Struct *URL_s,
- uint32 nbytes, const char * wysiwyg_url,
- const char * base_href);
-
- /* returns TRUE if the url is in the disk cache
- */
- extern Bool NET_IsURLInDiskCache(URL_Struct *URL_s);
-
- /* Returns TRUE if the URL is currently in the
- * memory cache and false otherwise.
- */
- extern Bool NET_IsURLInMemCache(URL_Struct *URL_s);
-
- /* returns TRUE if the URL->address passed in
- * is a local file URL
- */
- extern XP_Bool NET_IsLocalFileURL(char *address);
-
- /* unload the disk cache FAT list to disk
- *
- * set final_call to true if this is the last call to
- * this function before cleaning up the cache and shutting down.
- *
- * Front ends should never set final_call to TRUE, this will
- * be done by the cache cleanup code when the netlib is being
- * shutdown.
- */
- extern void NET_WriteCacheFAT(char *filename, Bool final_call);
-
- /* removes all cache files from the cache directory
- * and deletes the cache FAT
- */
- extern int NET_DestroyCacheDirectory(char * dir_name, char * prefix);
-
- /* set the size of the Memory cache in bytes
- * (The size should almost never be breached except when set exceptionally low)
- * Set it to 0 if you want cacheing turned off
- * completely
- *
- *
- * if you want to free up a bunch of memory
- * set the size to zero and then set it back
- * to some normal value.
- */
- extern void NET_SetMemoryCacheSize(int32 new_size);
-
- /* set the size of the Disk cache.
- * Set it to 0 if you want cacheing turned off
- * completely
- */
- extern void NET_SetDiskCacheSize(int32 new_size);
-
- /* returns the number of bytes currently in use by the Memory cache
- */
- extern int32 NET_GetMemoryCacheSize(void);
-
- /* returns the ceiling on the memory cache
- */
- extern int32 NET_GetMaxMemoryCacheSize(void);
-
- /* returns the number of bytes currently in use by the disk cache
- */
- extern int32 NET_GetDiskCacheSize(void);
-
- /* returns the number of files currently in the
- * disk cache
- */
- extern uint32 NET_NumberOfFilesInDiskCache();
-
- /* remove the last memory cache object if one exists
- * returns the total size of the memory cache in bytes
- * after performing the operation
- */
- extern int32 NET_RemoveLastMemoryCacheObject(void);
-
- /* remove the last disk cache object if one exists
- * returns the total size of the disk cache in bytes
- * after performing the operation
- */
-
-
- /* larubbio 197 SAR cache functions */
- /* returns and creates a handle to the specified SAR cache
- * the user is responsible for freeing the return struct
- */
- extern ExtCacheDBInfo * CACHE_GetCache(ExtCacheDBInfo *db);
-
- /*
- * Adds the specified file to the cache.
- */
- extern Bool CACHE_Put(char *filename, URL_Struct *url_s);
-
- /* returns 0 if the url is not found, non-zero otherwise. It
- * fills in URL_Struct as needed
- */
- extern int CACHE_FindURLInCache(URL_Struct *URL_s, MWContext *ctxt);
-
- /* Flushes the caches data to disk */
- extern void CACHE_FlushCache(ExtCacheDBInfo *db_info);
-
- /* Closes the SARcache database */
- extern int CACHE_CloseCache(ExtCacheDBInfo *db);
-
- /* Emptys all the URL's from a cache */
- extern int CACHE_EmptyCache(ExtCacheDBInfo *db);
-
- /* Removes the URL from the cache */
- extern void NET_RemoveURLFromCache(URL_Struct *URL_s);
-
- /* Removes the cache from the list of cache's being managed */
- extern int CACHE_RemoveCache(ExtCacheDBInfo *db);
-
- /* Returns an already opened ExtCache struct */
- extern ExtCacheDBInfo * CACHE_GetCacheStruct(char * path, char * filename, char * name);
-
- /* Returns the platform specific path to a cache file */
- extern char * CACHE_GetCachePath(char * filename);
-
- /* Returns the list of managed caches */
- extern XP_List * CACHE_GetManagedCacheList();
-
- /* Saves the cache struct to the DB */
- extern void CACHE_SaveCacheInfoToDB(ExtCacheDBInfo *db_info);
-
- /* Writes any changes to the cache's properties to disk */
- extern void CACHE_UpdateCache(ExtCacheDBInfo *db_info);
-
- extern int32 NET_RemoveLastDiskCacheObject(void);
-
- /*--------------------------------------------------------------
- * cdata routines to manipulate extention to mime type mapping
- */
-
- /* return the master cdata List pointer
- *
- * use the normal XP_List routines to iterate through
- */
- extern XP_List * cinfo_MasterListPointer(void);
-
- /* get the presumed content-type of the filename given
- */
- extern NET_cinfo *NET_cinfo_find_type(char *uri);
-
- /* return a cinfo from a mime_type
- */
- extern NET_cinfo * NET_cinfo_find_info_by_type(char *mime_type);
-
- /* remove an item from the cdata list
- */
- extern void NET_cdataRemove(NET_cdataStruct *cd);
-
- /* create a cdata struct
- *
- * does not fill anything in
- */
- extern NET_cdataStruct * NET_cdataCreate(void);
-
- /* fills in cdata structure
- *
- * if cdata for a given type do not exist, create a new one
- */
- extern void NET_cdataCommit(char * mimeType, char * cdataString);
-
- /* returns an extension (without the ".") for
- * a given mime type.
- *
- * If no match is found NULL is returned.
- *
- * Do not free the returned char *
- */
- extern char * NET_cinfo_find_ext(char *mime_type);
-
- /* check to see if this is an old mime type */
- extern XP_Bool NET_IsOldMimeTypes (XP_List *masterList);
-
- #ifdef XP_UNIX
- extern XP_List * mailcap_MasterListPointer(void);
- extern NET_mdataStruct *NET_mdataCreate(void);
- extern void NET_mdataAdd(NET_mdataStruct *md);
- extern void NET_mdataRemove(NET_mdataStruct *md);
- extern void NET_mdataFree(NET_mdataStruct *md);
- extern NET_mdataStruct* NET_mdataExist(NET_mdataStruct *old_md );
- #endif
-
-
- /* toggles netlib trace messages on and off
- */
- PUBLIC void NET_ToggleTrace(void);
-
- /* Makes a relative URL into an absolute one.
- *
- * If an absolute url is passed in it will be copied and returned.
- *
- * Always returns a malloc'd string or NULL on out of memory error
- */
- PUBLIC char *
- NET_MakeAbsoluteURL(char * absolute_url, char * relative_url);
-
- /* FE_SetupAsyncSelect
- *
- * This function will setup the messages needed for windows Async functionality
- */
-
-
- /* encode illegal characters into % escaped hex codes.
- *
- * mallocs and returns a string that must be freed
- */
- PUBLIC char * NET_Escape (const char * str, int mask);
-
- /* Like NET_Escape, but if out_len is non-null, return result string length
- * in *out_len, and uses len instead of NUL termination.
- */
- PUBLIC char * NET_EscapeBytes (const char * str, int32 len, int mask,
- int32 * out_len);
-
- /* return the size of a string if it were to be escaped.
- */
- extern int32 NET_EscapedSize (const char * str, int mask);
-
- /*
- * valid mask values for NET_Escape() and NET_EscapedSize().
- */
- #define URL_XALPHAS (unsigned char) 1
- #define URL_XPALPHAS (unsigned char) 2
- #define URL_PATH (unsigned char) 4
-
-
-
- #if !defined(XP_UNIX)
-
- /* these routines are depricated and should be removed shortely */
-
- extern int
- FE_SetupAsyncSelect(unsigned int sock, MWContext * context);
-
- /* Start an async DNS lookup
- */
- extern int
- FE_StartAsyncDNSLookup(MWContext *context, char * host_port, void ** hoststruct_ptr_ptr, int sock);
- #endif
-
- /*
- * NET_GetURL is called to begin the transfer of a URL
- *
- * URL_s: see above
- * output_format: is a variable that specifies what to
- * do with the outgoing data stream.
- * window_id: is an identifier that will be used to
- * determine where status messages and displayed data
- * will be sent.
- * exit_routine: is a callback function that will be
- * invoked by the network library at the completion of a
- * transfer or in case of error.
- *
- * Returns negative if the entire GET operation completes
- * in a single call or an error causes the transfer to
- * not happen. In that case the exit_routine will be called
- * before returning from NET_GetURL. A negative response
- * does not carry any other meaning than finished. The status
- * passed into the exit_routine relays the success or failure
- * of the actual load and contains a meaningfull error status code.
- */
-
- extern int
- NET_GetURL (URL_Struct * URL_s,
- FO_Present_Types output_format,
- MWContext * context,
- Net_GetUrlExitFunc* exit_routine);
-
- /* URL methods
- */
- #define URL_GET_METHOD 0
- #define URL_POST_METHOD 1
- #define URL_HEAD_METHOD 2
- #define URL_PUT_METHOD 3
- #define URL_DELETE_METHOD 4
- #define URL_MKDIR_METHOD 5
- #define URL_MOVE_METHOD 6
- #define URL_INDEX_METHOD 7
- #define URL_GETPROPERTIES_METHOD 8
- #define URL_COPY_METHOD 9
-
- /* LDAP METHOD IDs for URL_s->method */
- #define LDAP_SEARCH_METHOD 100 /* Address book search */
- #define LDAP_LI_GET_METHOD 101 /* Get LDAPMessage* results from a LDAP URL to search */
- #define LDAP_LI_ADD_METHOD 102 /* Add an entry given LDAPMods */
- #define LDAP_LI_MOD_METHOD 103 /* Modify an entry given LDAPMods */
- #define LDAP_LI_DEL_METHOD 104 /* Delete an entry given the DN */
- #define LDAP_LI_PUTFILE_METHOD 105 /* Put a file into a given DN and attribute, given a local path */
- #define LDAP_LI_GETFILE_METHOD 106 /* Retreive an attribute into a local file, given DN and attribute */
- #define LDAP_LI_ADDGLM_METHOD 107 /* Add an entry, then return the result
- * of a search for the modified entry's
- * modifyTimeStamp attribute
- */
- #define LDAP_LI_MODGLM_METHOD 108 /* Modify an entry, then return the result
- * of a search for the modified entry's
- * modifyTimeStamp attribute
- */
- #define LDAP_LI_GETLASTMOD_METHOD 109 /* Return an entry's modifyTimeStamp attribute.
- * Any attributes specified in the URL will be ignored
- */
- #define LDAP_LI_BIND_METHOD 110 /* Bind as a particular user DN to an ldap server.
- */
-
- /*
- * NET_ProcessNet should be called repeatedly from the
- * clients main event loop to process network activity.
- * When there are active connections in progress
- * NET_ProcessNet will return one(1). If there are no
- * active connections open NET_ProcessNet will return
- * zero(0).
- */
- PUBLIC int NET_ProcessNet(PRFileDesc *ready_fd, int fd_type);
- #define NET_UNKNOWN_FD 0
- #define NET_LOCAL_FILE_FD 1
- #define NET_SOCKET_FD 2
- #define NET_EVERYTIME_TYPE 3
-
- /* call PR_Poll and call Netlib if necessary
- *
- * return FALSE if no sockets to process
- *
- * Should be called in OnIdle loop to service netlib
- */
- PUBLIC XP_Bool NET_PollSockets(void);
-
- /* NET_InterruptWindow interrupts all in progress transfers
- * that were initiated with the same window_id
- *
- * FE_GetContextID() is used internally to compare the
- * unique window_id's of the in progress transfers and
- * the window_id passed in
- */
- extern int NET_InterruptWindow(MWContext * window_id);
-
- /* Does the same thing as interruptWindow, but it
- * doesn't complain about reentrancy since it is
- * expected when calling this routine.
- *
- * NOTE that you can interrupt the stream that
- * you are calling from
- */
- extern int NET_SilentInterruptWindow(MWContext * window_id);
-
- /*
- * NET_InterruptStream kills just stream associated with an URL.
- */
- extern int NET_InterruptStream (URL_Struct *nurl);
-
- /* set the netlib active entry coresponding to the
- * passed in URL to the busy state passed in.
- * TRUE to set busy, FALSE to set non-busy
- *
- * returns TRUE if found and set
- * returns FALSE if entry not found
- */
- Bool NET_SetActiveEntryBusyStatus(URL_Struct *nurl, Bool set_busy);
-
- /* interrupt a LoadURL action by using a socket number as
- * an index. NOTE: that this cannot interrupt non-socket
- * based operations such as file or memory cache loads
- *
- * returns -1 on error.
- */
- extern int NET_InterruptSocket (PRFileDesc *socket);
-
- /* check for any active URL transfers in progress for the given
- * window Id
- *
- * It is possible that there exist URL's on the wait queue that
- * will not be returned by this function. It is recommended
- * that you call NET_InterruptWindow(MWContext * window_id)
- * when FALSE is returned to make sure that the wait queue is
- * cleared as well.
- */
- extern Bool NET_AreThereActiveConnectionsForWindow(MWContext * window_id);
-
- #ifdef XP_MAC
- /* pchen - Fix bug #72831. Same as
- * NET_AreThereActiveConnectionsForWindow except that it will
- * return false if there is an active connection that is busy.
- */
- extern Bool NET_AreThereNonBusyActiveConnectionsForWindow(MWContext * window_id);
- #endif /* XP_MAC */
-
- /* check for network activity in general (not local disk or memory).
- */
- extern Bool NET_HasNetworkActivity(MWContext * window_id, Bool waiting, Bool background);
-
- /* NET_CreateURLStruct is used to build the URL structure
- * and to fill it with data.
- *
- * NET_FreeURLStruct should be called to free the returned
- * structure after the transfer is completed. ( this should
- * probably take place in the exit_routine passed as the callback
- * function to NET_GetURL)
- */
- extern URL_Struct * NET_CreateURLStruct (const char *url, NET_ReloadMethod force_reload);
-
- /* Append Key, Value pair into AllHeaders list of URL_struct
- */
- extern Bool NET_AddToAllHeaders(URL_Struct * URL_s, char *name, char *value);
-
- /* Set the option IPAddressString field
- * This field overrides the hostname when doing the connect,
- * and allows Java to specify a spelling of an IP number.
- * returns 0 on success, non-zero for failure (out of memory)
- */
- extern int NET_SetURLIPAddressString (URL_Struct * URL_s, const char *ip_string);
-
- /* Free's the contents of the structure as well as
- * the structure
- */
- extern void NET_FreeURLStruct (URL_Struct * URL_s);
-
- /* Let someone keep a pointer to the URL struct without them
- * having to worry about it going away out from under them
- */
- extern URL_Struct * NET_HoldURLStruct (URL_Struct * URL_s);
-
- /* Macro sugar to complement NET_HoldURLStruct */
- #define NET_DropURLStruct NET_FreeURLStruct
-
- /* returns a text string explaining the negative status code
- * returned from mkgeturl
- */
- extern const char * NET_ExplainError(int code);
-
- /* returns true if the URL is a secure URL address
- */
- extern Bool NET_IsURLSecure(char * address);
-
- /*
- * NewMKStream
- * Utility to create a new initialized NET_StreamClass object
- */
- extern NET_StreamClass * NET_NewStream(char *,
- MKStreamWriteFunc,
- MKStreamCompleteFunc,
- MKStreamAbortFunc,
- MKStreamWriteReadyFunc,
- void *,
- MWContext *);
-
- /* this should really be a FE function
- */
- extern void NET_RegisterConverters(char * personal_file, char * global_file);
- extern XP_List *NET_GetRegConverterList(FO_Present_Types iFormatOut);
- extern void *NET_GETDataObject(XP_List *list, char *pMimeType, void** obj);
- extern void NET_CleanupMailCapList(char* filename);
-
- /* Register a routine to convert between format_in and format_out
- */
- /* Reroute XP handling of streams for windows.
- */
- extern void NET_RegContentTypeConverter (char * format_in,
- FO_Present_Types format_out,
- void * data_obj,
- NET_Converter * converter_func,
- XP_Bool bAutomated);
-
- /* This function found in the windows front end.
- */
- extern void NET_RegisterContentTypeConverter (char * format_in,
- FO_Present_Types format_out,
- void * data_obj,
- NET_Converter * converter_func);
-
- extern void NET_DeregisterContentTypeConverter (char * format_in,
- FO_Present_Types format_out);
-
- extern void
- NET_RegisterExternalViewerCommand(char * format_in,
- char * system_command,
- unsigned int stream_block_size);
-
- /* register a routine to decode a stream
- */
- extern void NET_RegisterEncodingConverter (char * encoding_in,
- void * data_obj,
- NET_Converter * converter_func);
-
- #ifdef NEW_DECODERS
- /* removes all registered converters of any kind
- */
- extern void NET_ClearAllConverters(void);
- #endif /* NEW_DECODERS */
-
-
- #ifdef XP_UNIX
- /* register an external program to act as a content-encoding
- * converter
- */
- extern void NET_RegisterExternalDecoderCommand (char * format_in,
- char * format_out,
- char * system_command);
- #endif /* XP_UNIX */
-
-
-
- /* set the NNTP server hostname
- */
- extern void NET_SetNewsHost(const char * hostname);
-
- extern NET_StreamClass * NET_CacheConverter (FO_Present_Types format_out,
- void *converter_obj,
- URL_Struct *URL_s,
- MWContext *window_id);
-
- /* init types loads standard types so that a config file
- * is not required and can also read
- * a mime types file if filename is passed in non empty and
- * non null
- *
- * on each call to NET_InitFileFormatTypes the extension list
- * will be completely free'd and rebuilt.
- *
- * if you pass in NULL filename pointers they will not be
- * attempted to be read
- */
- extern int NET_InitFileFormatTypes(char * personal_file, char *global_file);
- extern void NET_cdataAdd(NET_cdataStruct *cd);
- extern NET_cdataStruct* NET_cdataExist(NET_cdataStruct *old_cd );
- extern void NET_cdataFree(NET_cdataStruct *cd);
-
- #ifdef XP_UNIX
- extern void NET_CleanupFileFormat(char *filename);
- #else
- extern void NET_CleanupFileFormat(void);
- #endif
-
-
- /* initialize the netlibrary
- */
- extern int NET_InitNetLib(int socket_buffer_size, int max_number_of_connections);
-
- /* reads a mailcap file and adds entries to the
- * external viewers converter list
- */
- extern int NET_ProcessMailcapFile (char *file, Bool is_local);
-
- /* removes all external viewer commands
- */
- extern void NET_ClearExternalVieweraConverters(void);
-
- /* shutdown the netlibrary, cancel all
- * conections and free all
- * memory
- */
- extern void NET_ShutdownNetLib(void);
-
- /* set the maximum allowable number of open connections at any one
- * time
- */
- extern void NET_ChangeMaxNumberOfConnections(int max_number_of_connections);
-
- /* set the maximum allowable number of open connections at any one
- * time on a per context basis
- */
- extern void NET_ChangeMaxNumberOfConnectionsPerContext(int max_number_of_connections);
-
- /* allocate memory for the TCP socket
- * buffer
- * this is an optional call
- */
- extern int NET_ChangeSocketBufferSize (int size);
-
- typedef enum {
- FTP_PROXY = 0,
- GOPHER_PROXY,
- HTTP_PROXY,
- HTTPS_PROXY,
- NEWS_PROXY,
- WAIS_PROXY,
- NO_PROXY,
- PROXY_AUTOCONF_URL
- } NET_ProxyType;
-
- typedef enum {
- PROXY_STYLE_UNSET = 0, /* do not change these without notifying macfe */
- PROXY_STYLE_MANUAL = 1,
- PROXY_STYLE_AUTOMATIC = 2,
- PROXY_STYLE_NONE = 3
- } NET_ProxyStyle;
-
- /* set (or unset) a proxy server
- *
- * call with a host[:port] string or an http url
- * of the form http://host[:port]/
- *
- * if type is NO_PROXY send a comma deliminated string
- * of host and port numbers of the form
- * host[:port]{,host[:port]}*
- *
- * if type is PROXY_AUTOCONFIG_URL it sets the URL pointing to
- * a new-style automatic proxy configuration file.
- *
- * A call to function NET_SelectProxyStyle() should be made after
- * *ALL* the calls to these functions have been done.
- *
- * you can unset values by setting the type and passing
- * NULL as the host_port string
- */
- PUBLIC void NET_SetProxyServer(NET_ProxyType type, const char * host_port);
-
-
- /*
- * Select proxy style;
- * one of:
- *
- * PROXY_STYLE_MANUAL -- for old style proxies
- * PROXY_STYLE_AUTOMATIC -- for new style proxies
- * PROXY_STYLE_NONE -- for no proxies at all
- *
- * This function should be called only *AFTER* all the calls to
- * NET_SetProxyServer() function have been made.
- *
- */
- PUBLIC void
- NET_SelectProxyStyle(NET_ProxyStyle style);
-
-
- /*
- * Force to reload automatic proxy config.
- * Has any effect only if proxy style has been set to
- * PROXY_STYLE_AUTOMATIC.
- *
- */
- PUBLIC void
- NET_ReloadProxyConfig(MWContext *window_id);
-
-
- /*
- * NET_SetNoProxyFailover
- * Sets a flag that indicates that proxy failover should not
- * be done. This is used by the Enterprise Kit code, where
- * the customer might configure the client to use specific
- * proxies. In these cases, failover can cause different
- * proxies, or no proxies to be used.
- */
- PUBLIC void
- NET_SetNoProxyFailover(void);
-
-
- /*
- * Returns a pointer to a NULL-terminted buffer which contains
- * the text of the proxy autoconfig file.
- *
- * NULL if not enabled.
- *
- */
- PUBLIC char * NET_GetProxyConfigSource(void);
-
-
-
- typedef enum {
- CU_CHECK_PER_SESSION,
- CU_CHECK_ALL_THE_TIME,
- CU_NEVER_CHECK
- } CacheUseEnum;
-
- /* set the way the cache objects should
- * be checked
- */
- extern void NET_SetCacheUseMethod(CacheUseEnum method);
-
- /* set the number of articles shown in news at any one time
- */
- extern void NET_SetNumberOfNewsArticlesInListing(int32 number);
-
-
- /* Set whether to cache XOVER lines in an attempt to make news go faster
- */
- extern void NET_SetCacheXOVER(XP_Bool value);
-
-
- /* Tell netlib to clean up any strictly temporary cache files it has for XOVER
- data. (This is called by msglib when the news context is destroyed.) */
- extern void NET_CleanTempXOVERCache(void);
-
-
- /* Register decoder functions for the standard MIME encodings. */
- PUBLIC void NET_RegisterMIMEDecoders (void);
-
- /* Create a netlib stream for interpreting Mocha. */
- PUBLIC NET_StreamClass *
- NET_CreateMochaConverter(FO_Present_Types format_out,
- void *data_object,
- URL_Struct *URL_struct,
- MWContext *window_id);
-
- /* check the date and set off the timebomb if necessary
- *
- * Calls FE_Alert with a message and then disables
- * all network calls to hosts not in our domains,
- * except for FTP connects.
- */
- extern Bool NET_CheckForTimeBomb(MWContext *context);
-
- /* parse a mime header.
- * the outputFormat is passed in and passed to NET_SetCookieStringFromHttp
- *
- * Both name and value strings will be modified during
- * parsing. If you need to retain your strings make a
- * copy before passing them in.
- *
- * Values will be placed in the URL struct.
- *
- * returns TRUE if it found a valid header
- * and FALSE if it didn't
- */
- PUBLIC Bool
- NET_ParseMimeHeader(FO_Present_Types outputFormat,
- MWContext *context,
- URL_Struct *URL_s,
- char *name,
- char *value,
- XP_Bool is_http);
-
-
- /* scans a line for references to URL's and turns them into active
- * links. If the output size is exceeded the line will be
- * truncated. "output" must be at least "output_size" characters
- * long. If urls_only_p is FALSE, then also tweak citations (lines starting
- * with ">").
- *
- * The MSG_Pane* parameter is used to determine preferences for fonts
- * used in citations. If it is NULL, then boring defaults are used.
- */
-
- extern int NET_ScanForURLs(MSG_Pane* pane, const char *input, int32 input_size,
- char *output, int output_size, XP_Bool urls_only_p);
-
-
- /* Takes an arbitrary chunk of HTML, and returns another chunk which has had
- any URLs turned into references. The result is in a new string that
- must be free'd using XP_FREE(). */
-
- extern char* NET_ScanHTMLForURLs(const char* input);
-
-
-
- /* escapes all '<', '>' and '&' characters in a string
- * returns a string that must be freed
- */
- extern char * NET_EscapeHTML(const char * string);
-
-
- /* register a newsrc file mapping
- */
- extern Bool NET_RegisterNewsrcFile(char *filename,
- char *hostname,
- Bool is_secure,
- Bool is_newsgroups_file);
-
- /* removes a newshost to file mapping. Removes both
- * the newsrc and the newsgroups mapping
- * this function does not remove the actual files,
- * that is left up to the caller
- */
- extern void NET_UnregisterNewsHost(const char *host, Bool is_secure);
-
- /* user has removed a news host from the UI.
- * be sure it has also been removed from the
- * connection cache so we renegotiate news host
- * capabilities if we try to use it again
- */
- extern void NET_OnNewsHostDeleted (const char *host);
-
- /* map a filename and security status into a filename
- *
- * returns NULL on error or no mapping.
- */
- extern char * NET_MapNewsrcHostToFilename(char *host,
- Bool is_secure,
- Bool is_newsgroups_file);
-
- /* save newsrc file mappings from memory onto disk
- */
- extern Bool NET_SaveNewsrcFileMappings(void);
-
- /* read newsrc file mappings from disk into memory
- */
- extern Bool NET_ReadNewsrcFileMappings(void);
-
- /* free newsrc file mappings in the memory
- */
- extern void NET_FreeNewsrcFileMappings(void);
-
- /* returns a malloc'd string that has a bunch of netlib
- * status info in it.
- *
- * please free the pointer when done.
- */
- extern char * NET_PrintNetlibStatus(void);
-
- /* add an external URL type prefix
- *
- * this prefix will be used to see if a URL is an absolute
- * or a relative URL.
- *
- * you should just pass in the prefix of the URL
- *
- * for instance "http" or "ftp" or "foobar".
- *
- * do not pass in a colon or double slashes.
- */
- extern void NET_AddExternalURLType(char * type);
-
- /* remove an external URL type prefix
- */
- extern void NET_DelExternalURLType(char * type);
-
- /*
- * NET_SetNewContext changes the context associated with a URL Struct.
- * can also change the url exit routine, which will cause the old one
- * to be called with a status of MK_CHANGING_CONTEXT
- */
- extern int NET_SetNewContext(URL_Struct *URL_s, MWContext * new_context, Net_GetUrlExitFunc *exit_routine);
-
- /* returns true if the stream is safe for setting up a new
- * context and using a separate window.
- *
- * This will return FALSE in multipart/mixed cases where
- * it is impossible to use separate windows for the
- * same stream.
- */
- extern Bool NET_IsSafeForNewContext(URL_Struct *URL_s);
-
- /* set the pop3 option to leave a copy of old
- * mail on the server
- */
- extern void NET_LeavePopMailOnServer(Bool do_it);
-
- /* Set the pop3 option of the biggest message to download. If negative,
- * then there is no limit (this should be the default). */
- extern void NET_SetPopMsgSizeLimit(int32 size);
-
- /* Return what the current message size limit is (again, negative means no
- * limit.) */
- extern int32 NET_GetPopMsgSizeLimit(void);
-
- /* set the pop account username
- */
- extern void NET_SetPopUsername(const char *username);
-
- /* get the pop account username
- */
- extern const char * NET_GetPopUsername(void);
-
- /* set the pop account password
- */
- extern void NET_SetPopPassword(const char *password);
-
- /* get the pop account password
- */
- extern const char * NET_GetPopPassword(void);
-
- /* call this to enable/disable FTP PASV mode.
- * Note: PASV mode is on by default
- */
- extern void NET_UsePASV(Bool do_it);
-
- #if defined(XP_MAC) || defined(XP_UNIX)
- /* call this with TRUE to enable the sending of the email
- * address as the default user "anonymous" password.
- * The default is OFF.
- */
- extern void NET_SendEmailAddressAsFTPPassword(Bool do_it);
- #endif
-
- /* begins the upload of the contents of a directory.
- * local_directory and remote_directory can both be NULL.
- * if either are NULL then it will prompt the user for them.
- */
- extern void
- NET_PublishDirectory(MWContext *context,
- char *local_directory,
- char *remote_directory);
-
- /* upload a set of local files (array of char*)
- * all files must have full path name
- * first file is primary html document,
- * others are included images or other files
- * in the same directory as main file
- */
- extern void
- NET_PublishFiles(MWContext *context,
- char **files_to_publish,
- char *remote_directory);
- /* NET_PublishFiles is obsolete and should be removed (hardts). Use Net_PublishFilesTo. */
- /* files_to_publish and publish_to will be freed by NET_PublishFilesTo. */
- extern void
- NET_PublishFilesTo(MWContext *context,
- char **files_to_publish,
- char **publish_to, /* Absolute URLs of the location to
- * publish the files to. */
- XP_Bool *add_crlf, /* For each file in files_to_publish, should every line
- end in a CRLF. */
- char *base_url, /* Directory to publish to, or the destination
- * URL of the root HTML document. */
- char *username, /* may be NULL, don't pass in through base_url. */
- char *password, /* may be NULL, don't pass in through base_url. */
- Net_GetUrlExitFunc *exit_func, /* Called after publishing files is complete.
- Can be NULL. */
- void *fe_data); /* Will be added as the fe_data field of the URL_Struct.
- So, it can be used as an argument that exit_func() can get
- ahold of. */
-
- /* assemble username, password, and ftp:// or http://
- * URL into ftp://user:password@/blah format for uploading
- * user_name or password are optional, allowing
- * construction of ftp://user@/blah for security reasons
- */
- extern Bool
- NET_MakeUploadURL( char **full_location, char *location,
- char *user_name, char *password );
-
- /* extract the username, password, and reassembled URL
- * string (e.g.: ftp://user:pass@neon -> ftp://neon)
- * from an ftp:// or http:// URL
- */
- extern Bool
- NET_ParseUploadURL( char *full_location, char **location,
- char **user_name, char **password );
-
-
- /* opens a directory and puts all the files therein into a
- * null terminated array of filenames
- * Returns NULL on error
- */
- extern char **
- NET_AssembleAllFilesInDirectory(MWContext *context, char * local_dir_name);
-
- /* takes a local and a remote directory and loads all of the
- * files in the directory into a URL struct that it creates
- * and calls FE_GetURL to start the upload
- */
- extern void
- NET_UploadDirectory(MWContext *context, char *local_dir, char *remote_dir_url);
-
-
- /* convert + to space within str.
- */
- extern void NET_PlusToSpace(char *str);
-
- /* url_type return types */
- #define FILE_TYPE_URL 1
- #define FTP_TYPE_URL 2
- #define GOPHER_TYPE_URL 3
- #define HTTP_TYPE_URL 4
- #define MAILTO_TYPE_URL 5
- #define NEWS_TYPE_URL 6
- #define RLOGIN_TYPE_URL 7
- #define TELNET_TYPE_URL 8
- #define TN3270_TYPE_URL 9
- #define WAIS_TYPE_URL 10
- #define ABOUT_TYPE_URL 11
- #define FILE_CACHE_TYPE_URL 12
- #define MEMORY_CACHE_TYPE_URL 13
- #define SECURE_HTTP_TYPE_URL 14
- #define INTERNAL_IMAGE_TYPE_URL 15
- #define URN_TYPE_URL 16
- #define POP3_TYPE_URL 17
- #define MAILBOX_TYPE_URL 18
- #define INTERNAL_NEWS_TYPE_URL 19
- #define SECURITY_TYPE_URL 20
- #define MOCHA_TYPE_URL 21
- #define VIEW_SOURCE_TYPE_URL 22
- #define HTML_DIALOG_HANDLER_TYPE_URL 23
- #define HTML_PANEL_HANDLER_TYPE_URL 24
- #define INTERNAL_SECLIB_TYPE_URL 25
- #define MSG_SEARCH_TYPE_URL 26
- #define IMAP_TYPE_URL 27
- #define LDAP_TYPE_URL 28
- #define SECURE_LDAP_TYPE_URL 29
- #define WYSIWYG_TYPE_URL 30
- #define ADDRESS_BOOK_TYPE_URL 31
- #define CLASSID_TYPE_URL 32
- #define JAVA_TYPE_URL 33
- #define DATA_TYPE_URL 34
- #define NETHELP_TYPE_URL 35
- #define NFS_TYPE_URL 36
- #define MARIMBA_TYPE_URL 37
- #define INTERNAL_CERTLDAP_TYPE_URL 38
- #define ADDRESS_BOOK_LDAP_TYPE_URL 39
-
- #define LAST_URL_TYPE 40 /* defines the max number of URL types there are */
-
- /* A usefull function to test URL types (mkutils.cpp)
- * Unfortunately, we can't get to return values
- * We are most interested in FILE_TYPE_URL, which is 1
- */
- extern int NET_URL_Type(const char *URL);
-
- /* CM these functions added to \libnet\MKPARSE.C: */
- /* Returns TRUE if URL type is HTTP_TYPE_URL or SECURE_HTTP_TYPE_URL */
- extern Bool NET_IsHTTP_URL(const char *URL);
-
- /* Return values for NET_MakeRelativeURL */
- enum {
- NET_URL_SAME_DIRECTORY, /* Base and URL type only filename is different */
- NET_URL_SAME_DEVICE, /* Base and URL are on same device, different directory */
- NET_URL_NOT_ON_SAME_DEVICE, /* One is remote, other is local, or on different local drives */
- NET_URL_FAIL /* Failed for lack of params, etc. */
- };
-
- /* Converts absolute URL into an URL relative to the base URL
- * BasePath must be an HTTP: or FILE: URL type
- * absolute_url should be absolute url of the same type,
- * but we pass it through NET_MakeAbsoluteURL so we can use
- * relative input - ASSUMES SAME TYPE!
- * If relative_url is not supplied, tests are done,
- * but no relative URL string is created
- * Caller must XP_FREE the string
- */
- int NET_MakeRelativeURL( char *base_url,
- char *absolute_url,
- char **relative_url );
-
- /* Extract the filename from a source URL
- * and construct add it the same path as
- * a base URL (replacing file in base)
- * BasePath should be an HTTP: or FILE: URL type,
- * but we don't check it.
- * src_url may be a relative URL,
- * (if its an HTTP, and base_url is FILE,
- * this creates the filename for saving
- * remote image locally.)
- * If relative_url is supplied,
- * the new relative URL is returned
- * (just the "file" portion of src_url)
- * Caller must XP_FREE the string(s)
- */
- char * NET_MakeTargetURL( char *base_url,
- char *src_url,
- char **relative_url );
-
- /*
- * call this function on navigator initialization and whenever the pref
- * changes. PR_TRUE means that the warning dialog will be generated,
- * and PR_FALSE means that the warning dialog will NOT be generated.
- */
- extern void NET_WarnOnMailtoPost(PRBool warn);
-
- /* Is the user off-line - uses the network.online preference */
- extern XP_Bool NET_IsOffline();
-
- XP_END_PROTOS
-
- #endif /* _NET_PROTO_H_ */
-
-
-