1174 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			1174 lines
		
	
	
		
			30 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/* $Id: fm.h,v 1.122 2003/09/24 18:48:59 ukai Exp $ */
 | 
						|
/* 
 | 
						|
 * w3m: WWW wo Miru utility
 | 
						|
 * 
 | 
						|
 * by A.ITO  Feb. 1995
 | 
						|
 * 
 | 
						|
 * You can use,copy,modify and distribute this program without any permission.
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef FM_H
 | 
						|
#define FM_H
 | 
						|
 | 
						|
 | 
						|
#ifndef _GNU_SOURCE
 | 
						|
#define _GNU_SOURCE		/* strcasestr() */
 | 
						|
#endif
 | 
						|
 | 
						|
#include <stdio.h>
 | 
						|
#include <stdlib.h>
 | 
						|
#include <string.h>
 | 
						|
#include <unistd.h>
 | 
						|
#include <sys/types.h>
 | 
						|
#include <sys/stat.h>
 | 
						|
#include <unistd.h>
 | 
						|
#include "config.h"
 | 
						|
#include "history.h"
 | 
						|
 | 
						|
#ifdef USE_MENU
 | 
						|
#define MENU_SELECT
 | 
						|
#define MENU_MAP
 | 
						|
#endif				/* USE_MENU */
 | 
						|
 | 
						|
#ifndef USE_COLOR
 | 
						|
#undef USE_ANSI_COLOR
 | 
						|
#undef USE_BG_COLOR
 | 
						|
#endif
 | 
						|
 | 
						|
#include "ctrlcode.h"
 | 
						|
#include "html.h"
 | 
						|
#include <gc.h>
 | 
						|
#include "Str.h"
 | 
						|
#if LANG == JA
 | 
						|
#define USE_M17N
 | 
						|
#endif				/* LANG == JA */
 | 
						|
#ifdef USE_M17N
 | 
						|
#include "wc.h"
 | 
						|
#include "wtf.h"
 | 
						|
#endif
 | 
						|
 | 
						|
#ifdef HAVE_LOCALE_H
 | 
						|
#include <locale.h>
 | 
						|
#endif
 | 
						|
#if !HAVE_SETLOCALE
 | 
						|
#define setlocale(category, locale)	/* empty */
 | 
						|
#endif
 | 
						|
 | 
						|
#if ENABLE_NLS
 | 
						|
#include <libintl.h>
 | 
						|
#define _(String) gettext (String)
 | 
						|
#define N_(String) (String)
 | 
						|
#else
 | 
						|
# undef bindtextdomain
 | 
						|
# define bindtextdomain(Domain, Directory)	/* empty */
 | 
						|
# undef textdomain
 | 
						|
# define textdomain(Domain)	/* empty */
 | 
						|
# define _(Text) Text
 | 
						|
# define N_(Text) Text
 | 
						|
# define gettext(Text) Text
 | 
						|
#endif
 | 
						|
 | 
						|
#include "form.h"
 | 
						|
#include "frame.h"
 | 
						|
#include "parsetag.h"
 | 
						|
#include "parsetagx.h"
 | 
						|
#include "func.h"
 | 
						|
#include "menu.h"
 | 
						|
#include "textlist.h"
 | 
						|
#include "funcname1.h"
 | 
						|
#include "terms.h"
 | 
						|
 | 
						|
#ifndef HAVE_BCOPY
 | 
						|
void bcopy(const void *, void *, int);
 | 
						|
void bzero(void *, int);
 | 
						|
#endif				/* HAVE_BCOPY */
 | 
						|
#ifdef __EMX__
 | 
						|
#include <strings.h>		/* for bzero() and bcopy() */
 | 
						|
#endif
 | 
						|
 | 
						|
#ifdef MAINPROGRAM
 | 
						|
#define global
 | 
						|
#define init(x) =(x)
 | 
						|
#else				/* not MAINPROGRAM */
 | 
						|
#define global extern
 | 
						|
#define init(x)
 | 
						|
#endif				/* not MAINPROGRAM */
 | 
						|
 | 
						|
/* 
 | 
						|
 * Constants.
 | 
						|
 */
 | 
						|
#define LINELEN	256		/* Initial line length */
 | 
						|
#define PAGER_MAX_LINE	10000	/* Maximum line kept as pager */
 | 
						|
 | 
						|
#ifdef USE_IMAGE
 | 
						|
#define MAX_IMAGE 1000
 | 
						|
#define MAX_IMAGE_SIZE 2048
 | 
						|
 | 
						|
#define DEFAULT_PIXEL_PER_CHAR  7.0	/* arbitrary */
 | 
						|
#define DEFAULT_PIXEL_PER_LINE  14.0	/* arbitrary */
 | 
						|
#else
 | 
						|
#define DEFAULT_PIXEL_PER_CHAR  8.0	/* arbitrary */
 | 
						|
#endif
 | 
						|
#define MINIMUM_PIXEL_PER_CHAR  4.0
 | 
						|
#define MAXIMUM_PIXEL_PER_CHAR  32.0
 | 
						|
 | 
						|
#ifdef FALSE
 | 
						|
#undef FALSE
 | 
						|
#endif
 | 
						|
 | 
						|
#ifdef TRUE
 | 
						|
#undef TRUE
 | 
						|
#endif
 | 
						|
 | 
						|
#define FALSE 0
 | 
						|
#define TRUE   1
 | 
						|
 | 
						|
#define SHELLBUFFERNAME	"*Shellout*"
 | 
						|
#define PIPEBUFFERNAME	"*stream*"
 | 
						|
#define CPIPEBUFFERNAME	"*stream(closed)*"
 | 
						|
#ifdef USE_DICT
 | 
						|
#define DICTBUFFERNAME "*dictionary*"
 | 
						|
#endif				/* USE_DICT */
 | 
						|
 | 
						|
/* 
 | 
						|
 * Line Property
 | 
						|
 */
 | 
						|
 | 
						|
#define P_CHARTYPE	0x3f00
 | 
						|
#ifdef USE_M17N
 | 
						|
#define PC_ASCII	(WTF_TYPE_ASCII << 8)
 | 
						|
#define PC_CTRL		(WTF_TYPE_CTRL << 8)
 | 
						|
#define PC_WCHAR1	(WTF_TYPE_WCHAR1 << 8)
 | 
						|
#define PC_WCHAR2	(WTF_TYPE_WCHAR2 << 8)
 | 
						|
#define PC_KANJI	(WTF_TYPE_WIDE << 8)
 | 
						|
#define PC_KANJI1	(PC_WCHAR1 | PC_KANJI)
 | 
						|
#define PC_KANJI2	(PC_WCHAR2 | PC_KANJI)
 | 
						|
#define PC_UNKNOWN	(WTF_TYPE_UNKNOWN << 8)
 | 
						|
#define PC_UNDEF	(WTF_TYPE_UNDEF << 8)
 | 
						|
#else
 | 
						|
#define PC_ASCII	0x0000
 | 
						|
#define PC_CTRL		0x0100
 | 
						|
#endif
 | 
						|
#define PC_SYMBOL       0x8000
 | 
						|
 | 
						|
/* Effect ( standout/underline ) */
 | 
						|
#define P_EFFECT	0x40ff
 | 
						|
#define PE_NORMAL	0x00
 | 
						|
#define PE_MARK		0x01
 | 
						|
#define PE_UNDER	0x02
 | 
						|
#define PE_STAND	0x04
 | 
						|
#define PE_BOLD		0x08
 | 
						|
#define PE_ANCHOR       0x10
 | 
						|
#define PE_EMPH         0x08
 | 
						|
#define PE_IMAGE        0x20
 | 
						|
#define PE_FORM         0x40
 | 
						|
#define PE_ACTIVE	0x80
 | 
						|
#define PE_VISITED	0x4000
 | 
						|
 | 
						|
#define CharType(c)	((c)&P_CHARTYPE)
 | 
						|
#define CharEffect(c)	((c)&(P_EFFECT|PC_SYMBOL))
 | 
						|
#define SetCharType(v,c)	((v)=(((v)&~P_CHARTYPE)|(c)))
 | 
						|
 | 
						|
 | 
						|
#define COLPOS(l,c)	calcPosition(l->lineBuf,l->propBuf,l->len,c,0,CP_AUTO)
 | 
						|
 | 
						|
/* Flags for displayBuffer() */
 | 
						|
#define B_NORMAL	0
 | 
						|
#define B_FORCE_REDRAW	1
 | 
						|
#define B_REDRAW	2
 | 
						|
#define B_SCROLL        3
 | 
						|
#define B_REDRAW_IMAGE	4
 | 
						|
 | 
						|
/* Buffer Property */
 | 
						|
#define BP_NORMAL	0x0
 | 
						|
#define BP_PIPE		0x1
 | 
						|
#define BP_FRAME	0x2
 | 
						|
#define BP_INTERNAL	0x8
 | 
						|
#define BP_NO_URL	0x10
 | 
						|
#define BP_REDIRECTED   0x20
 | 
						|
#define BP_CLOSE        0x40
 | 
						|
 | 
						|
/* Link Buffer */
 | 
						|
#define LB_NOLINK	-1
 | 
						|
#define LB_FRAME	0	/* rFrame() */
 | 
						|
#define LB_N_FRAME	1
 | 
						|
#define LB_INFO		2	/* pginfo() */
 | 
						|
#define LB_N_INFO	3
 | 
						|
#define LB_SOURCE	4	/* vwSrc() */
 | 
						|
#define LB_N_SOURCE	LB_SOURCE
 | 
						|
#define MAX_LB		5
 | 
						|
 | 
						|
/* Search Result */
 | 
						|
#define SR_FOUND       0x1
 | 
						|
#define SR_NOTFOUND    0x2
 | 
						|
#define SR_WRAPPED     0x4
 | 
						|
 | 
						|
#ifdef MAINPROGRAM
 | 
						|
int REV_LB[MAX_LB] = {
 | 
						|
    LB_N_FRAME, LB_FRAME, LB_N_INFO, LB_INFO, LB_N_SOURCE,
 | 
						|
};
 | 
						|
#else				/* not MAINPROGRAM */
 | 
						|
extern int REV_LB[];
 | 
						|
#endif				/* not MAINPROGRAM */
 | 
						|
 | 
						|
/* mark URL, Message-ID */
 | 
						|
#define CHK_URL                1
 | 
						|
#define CHK_NMID       2
 | 
						|
 | 
						|
/* Flags for calcPosition() */
 | 
						|
#define CP_AUTO		0
 | 
						|
#define CP_FORCE	1
 | 
						|
 | 
						|
/* Completion status. */
 | 
						|
#define CPL_OK		0
 | 
						|
#define CPL_AMBIG	1
 | 
						|
#define CPL_FAIL	2
 | 
						|
#define CPL_MENU	3
 | 
						|
 | 
						|
#define CPL_NEVER	0x0
 | 
						|
#define CPL_OFF		0x1
 | 
						|
#define CPL_ON		0x2
 | 
						|
#define CPL_ALWAYS	0x4
 | 
						|
#define CPL_URL		0x8
 | 
						|
 | 
						|
/* Flags for inputLine() */
 | 
						|
#define IN_STRING	0x10
 | 
						|
#define IN_FILENAME	0x20
 | 
						|
#define IN_PASSWORD	0x40
 | 
						|
#define IN_COMMAND	0x80
 | 
						|
#define IN_URL		0x100
 | 
						|
#define IN_CHAR		0x200
 | 
						|
 | 
						|
#define IMG_FLAG_SKIP	1
 | 
						|
#define IMG_FLAG_AUTO	2
 | 
						|
 | 
						|
#define IMG_FLAG_START	0
 | 
						|
#define IMG_FLAG_STOP	1
 | 
						|
#define IMG_FLAG_NEXT	2
 | 
						|
 | 
						|
#define IMG_FLAG_UNLOADED	0
 | 
						|
#define IMG_FLAG_LOADED		1
 | 
						|
#define IMG_FLAG_ERROR		2
 | 
						|
#define IMG_FLAG_DONT_REMOVE	4
 | 
						|
 | 
						|
/* 
 | 
						|
 * Macros.
 | 
						|
 */
 | 
						|
 | 
						|
#define inputLineHist(p,d,f,h)	inputLineHistSearch(p,d,f,h,NULL)
 | 
						|
#define inputLine(p,d,f)	inputLineHist(p,d,f,NULL)
 | 
						|
#define inputStr(p,d)		inputLine(p,d,IN_STRING)
 | 
						|
#define inputStrHist(p,d,h)	inputLineHist(p,d,IN_STRING,h)
 | 
						|
#define inputFilename(p,d)	inputLine(p,d,IN_FILENAME)
 | 
						|
#define inputFilenameHist(p,d,h)	inputLineHist(p,d,IN_FILENAME,h)
 | 
						|
#define inputChar(p)		inputLine(p,"",IN_CHAR)
 | 
						|
 | 
						|
#define free(x)  GC_free(x)	/* let GC do it. */
 | 
						|
 | 
						|
#ifdef __EMX__
 | 
						|
#define HAVE_STRCASECMP
 | 
						|
#define strcasecmp	stricmp
 | 
						|
#define strncasecmp	strnicmp
 | 
						|
#endif				/* __EMX__ */
 | 
						|
 | 
						|
 | 
						|
#define SKIP_BLANKS(p) {while(*(p)&&IS_SPACE(*(p)))(p)++;}
 | 
						|
#define SKIP_NON_BLANKS(p) {while(*(p)&&!IS_SPACE(*(p)))(p)++;}
 | 
						|
#define IS_ENDL(c) ((c)=='\0'||(c)=='\r'||(c)=='\n')
 | 
						|
#define IS_ENDT(c) (IS_ENDL(c)||(c)==';')
 | 
						|
 | 
						|
#define bpcmp(a,b) \
 | 
						|
  (((a).line - (b).line) ? ((a).line - (b).line) : ((a).pos - (b).pos))
 | 
						|
 | 
						|
#define RELATIVE_WIDTH(w)   (((w)>=0)?(int)((w)/pixel_per_char):(w))
 | 
						|
#define REAL_WIDTH(w,limit) (((w)>=0)?(int)((w)/pixel_per_char):-(w)*(limit)/100)
 | 
						|
 | 
						|
#define EOL(l) (&(l)->ptr[(l)->length])
 | 
						|
#define IS_EOL(p,l) ((p)==&(l)->ptr[(l)->length])
 | 
						|
 | 
						|
/* 
 | 
						|
 * Types.
 | 
						|
 */
 | 
						|
 | 
						|
typedef unsigned short Lineprop;
 | 
						|
#ifdef USE_ANSI_COLOR
 | 
						|
typedef unsigned char Linecolor;
 | 
						|
#endif
 | 
						|
 | 
						|
typedef struct _MapArea {
 | 
						|
    char *url;
 | 
						|
    char *target;
 | 
						|
    char *alt;
 | 
						|
#ifdef USE_IMAGE
 | 
						|
    char shape;
 | 
						|
    short *coords;
 | 
						|
    int ncoords;
 | 
						|
    short center_x;
 | 
						|
    short center_y;
 | 
						|
#endif
 | 
						|
} MapArea;
 | 
						|
 | 
						|
typedef struct _MapList {
 | 
						|
    Str name;
 | 
						|
    GeneralList *area;
 | 
						|
    struct _MapList *next;
 | 
						|
} MapList;
 | 
						|
 | 
						|
typedef struct _Line {
 | 
						|
    char *lineBuf;
 | 
						|
    Lineprop *propBuf;
 | 
						|
#ifdef USE_ANSI_COLOR
 | 
						|
    Linecolor *colorBuf;
 | 
						|
#endif
 | 
						|
    struct _Line *next;
 | 
						|
    struct _Line *prev;
 | 
						|
    int len;
 | 
						|
    int width;
 | 
						|
    long linenumber;		/* on buffer */
 | 
						|
    long real_linenumber;	/* on file */
 | 
						|
    unsigned short usrflags;
 | 
						|
    int size;
 | 
						|
    int bpos;
 | 
						|
    int bwidth;
 | 
						|
} Line;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
    int line;
 | 
						|
    int pos;
 | 
						|
} BufferPoint;
 | 
						|
 | 
						|
#ifdef USE_IMAGE
 | 
						|
typedef struct _imageCache {
 | 
						|
    char *url;
 | 
						|
    ParsedURL *current;
 | 
						|
    char *file;
 | 
						|
    char *touch;
 | 
						|
    pid_t pid;
 | 
						|
    char loaded;
 | 
						|
    int index;
 | 
						|
    short width;
 | 
						|
    short height;
 | 
						|
} ImageCache;
 | 
						|
 | 
						|
typedef struct _image {
 | 
						|
    char *url;
 | 
						|
    char *ext;
 | 
						|
    short width;
 | 
						|
    short height;
 | 
						|
    short xoffset;
 | 
						|
    short yoffset;
 | 
						|
    short y;
 | 
						|
    short rows;
 | 
						|
    char *map;
 | 
						|
    char ismap;
 | 
						|
    int touch;
 | 
						|
    ImageCache *cache;
 | 
						|
} Image;
 | 
						|
#endif
 | 
						|
 | 
						|
typedef struct _anchor {
 | 
						|
    char *url;
 | 
						|
    char *target;
 | 
						|
    char *referer;
 | 
						|
    char *title;
 | 
						|
    unsigned char accesskey;
 | 
						|
    BufferPoint start;
 | 
						|
    BufferPoint end;
 | 
						|
    int hseq;
 | 
						|
    char slave;
 | 
						|
    short y;
 | 
						|
    short rows;
 | 
						|
#ifdef USE_IMAGE
 | 
						|
    Image *image;
 | 
						|
#endif
 | 
						|
} Anchor;
 | 
						|
 | 
						|
#define NO_REFERER ((char*)-1)
 | 
						|
 | 
						|
typedef struct _anchorList {
 | 
						|
    Anchor *anchors;
 | 
						|
    int nanchor;
 | 
						|
    int anchormax;
 | 
						|
    int acache;
 | 
						|
} AnchorList;
 | 
						|
 | 
						|
typedef struct {
 | 
						|
    BufferPoint *marks;
 | 
						|
    int nmark;
 | 
						|
    int markmax;
 | 
						|
    int prevhseq;
 | 
						|
} HmarkerList;
 | 
						|
 | 
						|
#define LINK_TYPE_NONE 0
 | 
						|
#define LINK_TYPE_REL  1
 | 
						|
#define LINK_TYPE_REV  2
 | 
						|
typedef struct _LinkList {
 | 
						|
    char *url;
 | 
						|
    char *title;		/* Next, Contents, ... */
 | 
						|
    char *ctype;		/* Content-Type */
 | 
						|
    char type;			/* Rel, Rev */
 | 
						|
    struct _LinkList *next;
 | 
						|
} LinkList;
 | 
						|
 | 
						|
typedef struct _Buffer {
 | 
						|
    char *filename;
 | 
						|
    char *buffername;
 | 
						|
    Line *firstLine;
 | 
						|
    Line *topLine;
 | 
						|
    Line *currentLine;
 | 
						|
    Line *lastLine;
 | 
						|
    struct _Buffer *nextBuffer;
 | 
						|
    struct _Buffer *linkBuffer[MAX_LB];
 | 
						|
    short width;
 | 
						|
    short height;
 | 
						|
    char *type;
 | 
						|
    char *real_type;
 | 
						|
    int allLine;
 | 
						|
    short bufferprop;
 | 
						|
    int currentColumn;
 | 
						|
    short cursorX;
 | 
						|
    short cursorY;
 | 
						|
    int pos;
 | 
						|
    int visualpos;
 | 
						|
    short rootX;
 | 
						|
    short rootY;
 | 
						|
    short COLS;
 | 
						|
    short LINES;
 | 
						|
    InputStream pagerSource;
 | 
						|
    AnchorList *href;
 | 
						|
    AnchorList *name;
 | 
						|
    AnchorList *img;
 | 
						|
    AnchorList *formitem;
 | 
						|
    LinkList *linklist;
 | 
						|
    FormList *formlist;
 | 
						|
    MapList *maplist;
 | 
						|
    HmarkerList *hmarklist;
 | 
						|
    HmarkerList *imarklist;
 | 
						|
    ParsedURL currentURL;
 | 
						|
    ParsedURL *baseURL;
 | 
						|
    char *baseTarget;
 | 
						|
    int real_scheme;
 | 
						|
    char *sourcefile;
 | 
						|
    struct frameset *frameset;
 | 
						|
    struct frameset_queue *frameQ;
 | 
						|
    int *clone;
 | 
						|
    size_t trbyte;
 | 
						|
    char check_url;
 | 
						|
#ifdef USE_M17N
 | 
						|
    wc_ces document_charset;
 | 
						|
    wc_uint8 auto_detect;
 | 
						|
#endif
 | 
						|
    TextList *document_header;
 | 
						|
    FormItemList *form_submit;
 | 
						|
    char *savecache;
 | 
						|
    char *edit;
 | 
						|
    struct mailcap *mailcap;
 | 
						|
    char *mailcap_source;
 | 
						|
    char *header_source;
 | 
						|
    char search_header;
 | 
						|
#ifdef USE_SSL
 | 
						|
    char *ssl_certificate;
 | 
						|
#endif
 | 
						|
    char image_flag;
 | 
						|
    char image_loaded;
 | 
						|
    char need_reshape;
 | 
						|
    Anchor *submit;
 | 
						|
    struct _BufferPos *undo;
 | 
						|
#ifdef USE_ALARM
 | 
						|
    struct _AlarmEvent *event;
 | 
						|
#endif
 | 
						|
} Buffer;
 | 
						|
 | 
						|
typedef struct _BufferPos {
 | 
						|
    long top_linenumber;
 | 
						|
    long cur_linenumber;
 | 
						|
    int currentColumn;
 | 
						|
    int pos;
 | 
						|
    int bpos;
 | 
						|
    struct _BufferPos *next;
 | 
						|
    struct _BufferPos *prev;
 | 
						|
} BufferPos;
 | 
						|
 | 
						|
typedef struct _TabBuffer {
 | 
						|
    struct _TabBuffer *nextTab;
 | 
						|
    struct _TabBuffer *prevTab;
 | 
						|
    Buffer *currentBuffer;
 | 
						|
    Buffer *firstBuffer;
 | 
						|
    short x1;
 | 
						|
    short x2;
 | 
						|
    short y;
 | 
						|
} TabBuffer;
 | 
						|
 | 
						|
typedef struct _DownloadList {
 | 
						|
    pid_t pid;
 | 
						|
    char *url;
 | 
						|
    char *save;
 | 
						|
    char *lock;
 | 
						|
    clen_t size;
 | 
						|
    time_t time;
 | 
						|
    int ok;
 | 
						|
    struct _DownloadList *next;
 | 
						|
    struct _DownloadList *prev;
 | 
						|
} DownloadList;
 | 
						|
#define DOWNLOAD_LIST_TITLE "Download List Panel"
 | 
						|
 | 
						|
#define COPY_BUFPOSITION(dstbuf, srcbuf) {\
 | 
						|
 (dstbuf)->topLine = (srcbuf)->topLine; \
 | 
						|
 (dstbuf)->currentLine = (srcbuf)->currentLine; \
 | 
						|
 (dstbuf)->pos = (srcbuf)->pos; \
 | 
						|
 (dstbuf)->cursorX = (srcbuf)->cursorX; \
 | 
						|
 (dstbuf)->cursorY = (srcbuf)->cursorY; \
 | 
						|
 (dstbuf)->visualpos = (srcbuf)->visualpos; \
 | 
						|
 (dstbuf)->currentColumn = (srcbuf)->currentColumn; \
 | 
						|
}
 | 
						|
#define SAVE_BUFPOSITION(sbufp) COPY_BUFPOSITION(sbufp, Currentbuf)
 | 
						|
#define RESTORE_BUFPOSITION(sbufp) COPY_BUFPOSITION(Currentbuf, sbufp)
 | 
						|
#define TOP_LINENUMBER(buf) ((buf)->topLine ? (buf)->topLine->linenumber : 1)
 | 
						|
#define CUR_LINENUMBER(buf) ((buf)->currentLine ? (buf)->currentLine->linenumber : 1)
 | 
						|
 | 
						|
#define NO_BUFFER ((Buffer*)1)
 | 
						|
 | 
						|
#define RB_STACK_SIZE 10
 | 
						|
 | 
						|
#define TAG_STACK_SIZE 10
 | 
						|
 | 
						|
#define FONT_STACK_SIZE 5
 | 
						|
 | 
						|
#define FONTSTAT_SIZE 4
 | 
						|
 | 
						|
#define _INIT_BUFFER_WIDTH (COLS - (showLineNum ? 6 : 1))
 | 
						|
#define INIT_BUFFER_WIDTH ((_INIT_BUFFER_WIDTH > 0) ? _INIT_BUFFER_WIDTH : 0)
 | 
						|
#define FOLD_BUFFER_WIDTH (FoldLine ? (INIT_BUFFER_WIDTH + 1) : -1)
 | 
						|
 | 
						|
typedef struct {
 | 
						|
    int pos;
 | 
						|
    int len;
 | 
						|
    int tlen;
 | 
						|
    long flag;
 | 
						|
    Anchor anchor;
 | 
						|
    Str img_alt;
 | 
						|
    char fontstat[FONTSTAT_SIZE];
 | 
						|
    short nobr_level;
 | 
						|
    Lineprop prev_ctype;
 | 
						|
    char init_flag;
 | 
						|
    short top_margin;
 | 
						|
    short bottom_margin;
 | 
						|
} Breakpoint;
 | 
						|
 | 
						|
struct readbuffer {
 | 
						|
    Str line;
 | 
						|
    Lineprop cprop;
 | 
						|
    short pos;
 | 
						|
    Str prevchar;
 | 
						|
    long flag;
 | 
						|
    long flag_stack[RB_STACK_SIZE];
 | 
						|
    int flag_sp;
 | 
						|
    int status;
 | 
						|
    unsigned char end_tag;
 | 
						|
    short table_level;
 | 
						|
    short nobr_level;
 | 
						|
    Anchor anchor;
 | 
						|
    Str img_alt;
 | 
						|
    char fontstat[FONTSTAT_SIZE];
 | 
						|
    char fontstat_stack[FONT_STACK_SIZE][FONTSTAT_SIZE];
 | 
						|
    int fontstat_sp;
 | 
						|
    Lineprop prev_ctype;
 | 
						|
    Breakpoint bp;
 | 
						|
    struct cmdtable *tag_stack[TAG_STACK_SIZE];
 | 
						|
    int tag_sp;
 | 
						|
    short top_margin;
 | 
						|
    short bottom_margin;
 | 
						|
};
 | 
						|
 | 
						|
#define in_bold fontstat[0]
 | 
						|
#define in_under fontstat[1]
 | 
						|
#define in_stand fontstat[2]
 | 
						|
 | 
						|
#define RB_PRE		0x01
 | 
						|
#define RB_SCRIPT	0x02
 | 
						|
#define RB_STYLE	0x04
 | 
						|
#define RB_PLAIN	0x08
 | 
						|
#define RB_LEFT		0x10
 | 
						|
#define RB_CENTER	0x20
 | 
						|
#define RB_RIGHT	0x40
 | 
						|
#define RB_ALIGN	(RB_LEFT| RB_CENTER | RB_RIGHT)
 | 
						|
#define RB_NOBR		0x80
 | 
						|
#define RB_P		0x100
 | 
						|
#define RB_PRE_INT	0x200
 | 
						|
#define RB_IN_DT	0x400
 | 
						|
#define RB_INTXTA	0x800
 | 
						|
#define RB_INSELECT	0x1000
 | 
						|
#define RB_IGNORE_P	0x2000
 | 
						|
#define RB_TITLE	0x4000
 | 
						|
#define RB_NFLUSHED	0x8000
 | 
						|
#define RB_NOFRAMES	0x10000
 | 
						|
#define RB_INTABLE	0x20000
 | 
						|
#define RB_PREMODE	(RB_PRE | RB_PRE_INT | RB_SCRIPT | RB_STYLE | RB_PLAIN | RB_INTXTA)
 | 
						|
#define RB_SPECIAL	(RB_PRE | RB_PRE_INT | RB_SCRIPT | RB_STYLE | RB_PLAIN | RB_NOBR)
 | 
						|
#define RB_PLAIN_PRE	0x40000
 | 
						|
 | 
						|
#ifdef FORMAT_NICE
 | 
						|
#define RB_FILL		0x80000
 | 
						|
#endif				/* FORMAT_NICE */
 | 
						|
#define RB_DEL		0x100000
 | 
						|
#define RB_S		0x200000
 | 
						|
 | 
						|
#define RB_GET_ALIGN(obuf) ((obuf)->flag&RB_ALIGN)
 | 
						|
#define RB_SET_ALIGN(obuf,align) {(obuf)->flag &= ~RB_ALIGN; (obuf)->flag |= (align); }
 | 
						|
#define RB_SAVE_FLAG(obuf) {\
 | 
						|
  if ((obuf)->flag_sp < RB_STACK_SIZE) \
 | 
						|
    (obuf)->flag_stack[(obuf)->flag_sp++] = RB_GET_ALIGN(obuf); \
 | 
						|
}
 | 
						|
#define RB_RESTORE_FLAG(obuf) {\
 | 
						|
  if ((obuf)->flag_sp > 0) \
 | 
						|
   RB_SET_ALIGN(obuf,(obuf)->flag_stack[--(obuf)->flag_sp]); \
 | 
						|
}
 | 
						|
 | 
						|
/* status flags */
 | 
						|
#define R_ST_NORMAL 0		/* normal */
 | 
						|
#define R_ST_TAG0   1		/* within tag, just after < */
 | 
						|
#define R_ST_TAG    2		/* within tag */
 | 
						|
#define R_ST_QUOTE  3		/* within single quote */
 | 
						|
#define R_ST_DQUOTE 4		/* within double quote */
 | 
						|
#define R_ST_EQL    5		/* = */
 | 
						|
#define R_ST_AMP    6		/* within ampersand quote */
 | 
						|
#define R_ST_EOL    7		/* end of file */
 | 
						|
#define R_ST_CMNT1  8		/* <!  */
 | 
						|
#define R_ST_CMNT2  9		/* <!- */
 | 
						|
#define R_ST_CMNT   10		/* within comment */
 | 
						|
#define R_ST_NCMNT1 11		/* comment - */
 | 
						|
#define R_ST_NCMNT2 12		/* comment -- */
 | 
						|
#define R_ST_NCMNT3 13		/* comment -- space */
 | 
						|
#define R_ST_IRRTAG 14		/* within irregular tag */
 | 
						|
#define R_ST_VALUE  15		/* within tag attribule value */
 | 
						|
 | 
						|
#define ST_IS_REAL_TAG(s)   ((s)==R_ST_TAG||(s)==R_ST_TAG0||(s)==R_ST_EQL||(s)==R_ST_VALUE)
 | 
						|
 | 
						|
/* is this '<' really means the beginning of a tag? */
 | 
						|
#define REALLY_THE_BEGINNING_OF_A_TAG(p) \
 | 
						|
	  (IS_ALPHA(p[1]) || p[1] == '/' || p[1] == '!' || p[1] == '?' || p[1] == '\0' || p[1] == '_')
 | 
						|
 | 
						|
/* flags for loadGeneralFile */
 | 
						|
#define RG_NOCACHE   1
 | 
						|
#define RG_FRAME     2
 | 
						|
#define RG_FRAME_SRC 4
 | 
						|
 | 
						|
struct html_feed_environ {
 | 
						|
    struct readbuffer *obuf;
 | 
						|
    TextLineList *buf;
 | 
						|
    FILE *f;
 | 
						|
    Str tagbuf;
 | 
						|
    int limit;
 | 
						|
    int maxlimit;
 | 
						|
    struct environment *envs;
 | 
						|
    int nenv;
 | 
						|
    int envc;
 | 
						|
    int envc_real;
 | 
						|
    char *title;
 | 
						|
    int blank_lines;
 | 
						|
};
 | 
						|
 | 
						|
struct auth_cookie {
 | 
						|
    Str host;
 | 
						|
    int port;
 | 
						|
    Str file;
 | 
						|
    Str realm;
 | 
						|
    Str cookie;
 | 
						|
    struct auth_cookie *next;
 | 
						|
};
 | 
						|
 | 
						|
#ifdef USE_COOKIE
 | 
						|
struct portlist {
 | 
						|
    unsigned short port;
 | 
						|
    struct portlist *next;
 | 
						|
};
 | 
						|
 | 
						|
struct cookie {
 | 
						|
    ParsedURL url;
 | 
						|
    Str name;
 | 
						|
    Str value;
 | 
						|
    time_t expires;
 | 
						|
    Str path;
 | 
						|
    Str domain;
 | 
						|
    Str comment;
 | 
						|
    Str commentURL;
 | 
						|
    struct portlist *portl;
 | 
						|
    char version;
 | 
						|
    char flag;
 | 
						|
    struct cookie *next;
 | 
						|
};
 | 
						|
#define COO_USE		1
 | 
						|
#define COO_SECURE	2
 | 
						|
#define COO_DOMAIN	4
 | 
						|
#define COO_PATH	8
 | 
						|
#define COO_DISCARD	16
 | 
						|
#define COO_OVERRIDE	32	/* user chose to override security checks */
 | 
						|
 | 
						|
#define COO_OVERRIDE_OK	32	/* flag to specify that an error is overridable */
 | 
						|
						/* version 0 refers to the original cookie_spec.html */
 | 
						|
						/* version 1 refers to RFC 2109 */
 | 
						|
						/* version 1' refers to the Internet draft to obsolete RFC 2109 */
 | 
						|
#define COO_EINTERNAL	(1)	/* unknown error; probably forgot to convert "return 1" in cookie.c */
 | 
						|
#define COO_ETAIL	(2 | COO_OVERRIDE_OK)	/* tail match failed (version 0) */
 | 
						|
#define COO_ESPECIAL	(3)	/* special domain check failed (version 0) */
 | 
						|
#define COO_EPATH	(4)	/* Path attribute mismatch (version 1 case 1) */
 | 
						|
#define COO_ENODOT	(5 | COO_OVERRIDE_OK)	/* no embedded dots in Domain (version 1 case 2.1) */
 | 
						|
#define COO_ENOTV1DOM	(6 | COO_OVERRIDE_OK)	/* Domain does not start with a dot (version 1 case 2.2) */
 | 
						|
#define COO_EDOM	(7 | COO_OVERRIDE_OK)	/* domain-match failed (version 1 case 3) */
 | 
						|
#define COO_EBADHOST	(8 | COO_OVERRIDE_OK)	/* dot in matched host name in FQDN (version 1 case 4) */
 | 
						|
#define COO_EPORT	(9)	/* Port match failed (version 1' case 5) */
 | 
						|
#define COO_EMAX	COO_EPORT
 | 
						|
#endif				/* USE_COOKIE */
 | 
						|
 | 
						|
/* modes for align() */
 | 
						|
 | 
						|
#define ALIGN_CENTER 0
 | 
						|
#define ALIGN_LEFT   1
 | 
						|
#define ALIGN_RIGHT  2
 | 
						|
#define ALIGN_MIDDLE 4
 | 
						|
#define ALIGN_TOP    5
 | 
						|
#define ALIGN_BOTTOM 6
 | 
						|
 | 
						|
#define VALIGN_MIDDLE 0
 | 
						|
#define VALIGN_TOP    1
 | 
						|
#define VALIGN_BOTTOM 2
 | 
						|
 | 
						|
typedef struct http_request {
 | 
						|
    char command;
 | 
						|
    char flag;
 | 
						|
    char *referer;
 | 
						|
    FormList *request;
 | 
						|
} HRequest;
 | 
						|
 | 
						|
#define HR_COMMAND_GET		0
 | 
						|
#define HR_COMMAND_POST		1
 | 
						|
#define HR_COMMAND_CONNECT	2
 | 
						|
#define HR_COMMAND_HEAD		3
 | 
						|
 | 
						|
#define HR_FLAG_LOCAL		1
 | 
						|
#define HR_FLAG_PROXY		2
 | 
						|
 | 
						|
#define HTST_UNKNOWN		255
 | 
						|
#define HTST_MISSING		254
 | 
						|
#define HTST_NORMAL		0
 | 
						|
#define HTST_CONNECT		1
 | 
						|
 | 
						|
#define TMPF_DFL	0
 | 
						|
#define TMPF_SRC	1
 | 
						|
#define TMPF_FRAME	2
 | 
						|
#define TMPF_CACHE	3
 | 
						|
#define TMPF_COOKIE	4
 | 
						|
#define MAX_TMPF_TYPE	5
 | 
						|
 | 
						|
#define set_no_proxy(domains) (NO_proxy_domains=make_domain_list(domains))
 | 
						|
 | 
						|
/* 
 | 
						|
 * Globals.
 | 
						|
 */
 | 
						|
 | 
						|
extern int LINES, COLS;
 | 
						|
#if defined(__CYGWIN__) && LANG == JA
 | 
						|
extern int LASTLINE;
 | 
						|
#else				/* not defined(__CYGWIN__) || LANG != JA */
 | 
						|
#define LASTLINE (LINES-1)
 | 
						|
#endif				/* not defined(__CYGWIN__) || LANG != JA */
 | 
						|
 | 
						|
global int Tabstop init(8);
 | 
						|
global int IndentIncr init(4);
 | 
						|
global int ShowEffect init(TRUE);
 | 
						|
global int PagerMax init(PAGER_MAX_LINE);
 | 
						|
 | 
						|
global char SearchHeader init(FALSE);
 | 
						|
global char *DefaultType init(NULL);
 | 
						|
global char RenderFrame init(FALSE);
 | 
						|
global char TargetSelf init(FALSE);
 | 
						|
global char PermitSaveToPipe init(FALSE);
 | 
						|
global char DecodeCTE init(FALSE);
 | 
						|
global char PreserveTimestamp init(TRUE);
 | 
						|
global char ArgvIsURL init(FALSE);
 | 
						|
global char MetaRefresh init(FALSE);
 | 
						|
 | 
						|
global char fmInitialized init(FALSE);
 | 
						|
global char QuietMessage init(FALSE);
 | 
						|
global char TrapSignal init(TRUE);
 | 
						|
#define TRAP_ON if (TrapSignal) { \
 | 
						|
    prevtrap = mySignal(SIGINT, KeyAbort); \
 | 
						|
    if (fmInitialized) \
 | 
						|
	term_cbreak(); \
 | 
						|
}
 | 
						|
#define TRAP_OFF if (TrapSignal) { \
 | 
						|
    if (fmInitialized) \
 | 
						|
	term_raw(); \
 | 
						|
    if (prevtrap) \
 | 
						|
	mySignal(SIGINT, prevtrap); \
 | 
						|
}
 | 
						|
 | 
						|
extern unsigned char GlobalKeymap[];
 | 
						|
extern unsigned char EscKeymap[];
 | 
						|
extern unsigned char EscBKeymap[];
 | 
						|
extern unsigned char EscDKeymap[];
 | 
						|
#ifdef __EMX__
 | 
						|
extern unsigned char PcKeymap[];
 | 
						|
#endif
 | 
						|
extern FuncList w3mFuncList[];
 | 
						|
 | 
						|
global char *HTTP_proxy init(NULL);
 | 
						|
#ifdef USE_SSL
 | 
						|
global char *HTTPS_proxy init(NULL);
 | 
						|
#endif				/* USE_SSL */
 | 
						|
#ifdef USE_GOPHER
 | 
						|
global char *GOPHER_proxy init(NULL);
 | 
						|
#endif				/* USE_GOPHER */
 | 
						|
global char *FTP_proxy init(NULL);
 | 
						|
global ParsedURL HTTP_proxy_parsed;
 | 
						|
#ifdef USE_SSL
 | 
						|
global ParsedURL HTTPS_proxy_parsed;
 | 
						|
#endif				/* USE_SSL */
 | 
						|
#ifdef USE_GOPHER
 | 
						|
global ParsedURL GOPHER_proxy_parsed;
 | 
						|
#endif				/* USE_GOPHER */
 | 
						|
global ParsedURL FTP_proxy_parsed;
 | 
						|
global char *NO_proxy init(NULL);
 | 
						|
global int NOproxy_netaddr init(TRUE);
 | 
						|
#ifdef INET6
 | 
						|
#define DNS_ORDER_UNSPEC     0
 | 
						|
#define DNS_ORDER_INET_INET6 1
 | 
						|
#define DNS_ORDER_INET6_INET 2
 | 
						|
#define DNS_ORDER_INET_ONLY  4
 | 
						|
#define DNS_ORDER_INET6_ONLY 6
 | 
						|
global int DNS_order init(DNS_ORDER_UNSPEC);
 | 
						|
extern int ai_family_order_table[7][3];	/* XXX */
 | 
						|
#endif				/* INET6 */
 | 
						|
global TextList *NO_proxy_domains;
 | 
						|
global char NoCache init(FALSE);
 | 
						|
global char use_proxy init(TRUE);
 | 
						|
#define Do_not_use_proxy (!use_proxy)
 | 
						|
global int Do_not_use_ti_te init(FALSE);
 | 
						|
#ifdef USE_NNTP
 | 
						|
global char *NNTP_server init(NULL);
 | 
						|
global char *NNTP_mode init(NULL);
 | 
						|
global int MaxNewsMessage init(50);
 | 
						|
#endif
 | 
						|
 | 
						|
global char *document_root init(NULL);
 | 
						|
global char *personal_document_root init(NULL);
 | 
						|
global char *cgi_bin init(NULL);
 | 
						|
global char *index_file init(NULL);
 | 
						|
 | 
						|
global char *CurrentDir;
 | 
						|
global int CurrentPid;
 | 
						|
/*
 | 
						|
 * global Buffer *Currentbuf;
 | 
						|
 * global Buffer *Firstbuf;
 | 
						|
 */
 | 
						|
global TabBuffer *CurrentTab;
 | 
						|
global TabBuffer *FirstTab;
 | 
						|
global TabBuffer *LastTab;
 | 
						|
global int open_tab_blank init(FALSE);
 | 
						|
global int open_tab_dl_list init(FALSE);
 | 
						|
global int close_tab_back init(FALSE);
 | 
						|
global int nTab;
 | 
						|
global int TabCols init(10);
 | 
						|
#define NO_TABBUFFER ((TabBuffer *)1)
 | 
						|
#define Currentbuf (CurrentTab->currentBuffer)
 | 
						|
#define Firstbuf (CurrentTab->firstBuffer)
 | 
						|
global DownloadList *FirstDL init(NULL);
 | 
						|
global DownloadList *LastDL init(NULL);
 | 
						|
global int CurrentKey;
 | 
						|
global char *CurrentKeyData;
 | 
						|
global char *CurrentCmdData;
 | 
						|
 | 
						|
extern char *w3m_version;
 | 
						|
 | 
						|
#define DUMP_BUFFER   0x01
 | 
						|
#define DUMP_HEAD     0x02
 | 
						|
#define DUMP_SOURCE   0x04
 | 
						|
#define DUMP_EXTRA    0x08
 | 
						|
#define DUMP_HALFDUMP 0x10
 | 
						|
#define DUMP_FRAME    0x20
 | 
						|
global int w3m_debug;
 | 
						|
global int w3m_dump init(0);
 | 
						|
#define w3m_halfdump (w3m_dump & DUMP_HALFDUMP)
 | 
						|
global int w3m_halfload init(FALSE);
 | 
						|
global Str header_string init(NULL);
 | 
						|
global int override_content_type init(FALSE);
 | 
						|
 | 
						|
#ifdef USE_COLOR
 | 
						|
global int useColor init(TRUE);
 | 
						|
global int basic_color init(8);	/* don't change */
 | 
						|
global int anchor_color init(4);	/* blue  */
 | 
						|
global int image_color init(2);	/* green */
 | 
						|
global int form_color init(1);	/* red   */
 | 
						|
#ifdef USE_BG_COLOR
 | 
						|
global int bg_color init(8);	/* don't change */
 | 
						|
global int mark_color init(6);	/* cyan */
 | 
						|
#endif				/* USE_BG_COLOR */
 | 
						|
global int useActiveColor init(FALSE);
 | 
						|
global int active_color init(6);	/* cyan */
 | 
						|
global int useVisitedColor init(FALSE);
 | 
						|
global int visited_color init(5);	/* magenta  */
 | 
						|
#endif				/* USE_COLOR */
 | 
						|
global int confirm_on_quit init(TRUE);
 | 
						|
#ifdef USE_MARK
 | 
						|
global int use_mark init(FALSE);
 | 
						|
#endif
 | 
						|
global int emacs_like_lineedit init(FALSE);
 | 
						|
global int vi_prec_num init(FALSE);
 | 
						|
global int label_topline init(FALSE);
 | 
						|
global int nextpage_topline init(FALSE);
 | 
						|
global char *displayTitleTerm init(NULL);
 | 
						|
global int displayLink init(FALSE);
 | 
						|
global int displayLineInfo init(FALSE);
 | 
						|
global int DecodeURL init(FALSE);
 | 
						|
global int retryAsHttp init(TRUE);
 | 
						|
global int showLineNum init(FALSE);
 | 
						|
global int show_srch_str init(TRUE);
 | 
						|
#ifdef USE_IMAGE
 | 
						|
global char *Imgdisplay init(IMGDISPLAY);
 | 
						|
global int activeImage init(FALSE);
 | 
						|
global int displayImage init(TRUE);
 | 
						|
global int autoImage init(TRUE);
 | 
						|
global int useExtImageViewer init(TRUE);
 | 
						|
global int maxLoadImage init(4);
 | 
						|
global int image_map_list init(TRUE);
 | 
						|
#else
 | 
						|
global int displayImage init(FALSE);	/* XXX: emacs-w3m use display_image=off */
 | 
						|
#endif
 | 
						|
global char *Editor init(DEF_EDITOR);
 | 
						|
#ifdef USE_W3MMAILER
 | 
						|
global char *Mailer init(NULL);
 | 
						|
#else
 | 
						|
global char *Mailer init(DEF_MAILER);
 | 
						|
#endif
 | 
						|
global char *ExtBrowser init(DEF_EXT_BROWSER);
 | 
						|
global char *ExtBrowser2 init(NULL);
 | 
						|
global char *ExtBrowser3 init(NULL);
 | 
						|
global int BackgroundExtViewer init(TRUE);
 | 
						|
global int disable_secret_security_check init(FALSE);
 | 
						|
global char *passwd_file init(PASSWD_FILE);
 | 
						|
global char *pre_form_file init(PRE_FORM_FILE);
 | 
						|
global char *ftppasswd init(NULL);
 | 
						|
global int ftppass_hostnamegen init(TRUE);
 | 
						|
global int do_download init(FALSE);
 | 
						|
#ifdef USE_IMAGE
 | 
						|
global char *image_source init(NULL);
 | 
						|
#endif
 | 
						|
global char *UserAgent init(NULL);
 | 
						|
global int NoSendReferer init(FALSE);
 | 
						|
global char *AcceptLang init(NULL);
 | 
						|
global char *AcceptEncoding init(NULL);
 | 
						|
global char *AcceptMedia init(NULL);
 | 
						|
global int WrapDefault init(FALSE);
 | 
						|
global int IgnoreCase init(TRUE);
 | 
						|
global int WrapSearch init(FALSE);
 | 
						|
global int squeezeBlankLine init(FALSE);
 | 
						|
global char *BookmarkFile init(NULL);
 | 
						|
global char *pauth init(NULL);
 | 
						|
global Str proxy_auth_cookie init(NULL);
 | 
						|
global int UseExternalDirBuffer init(TRUE);
 | 
						|
global char *DirBufferCommand init("file:///$LIB/dirlist" CGI_EXTENSION);
 | 
						|
#ifdef USE_DICT
 | 
						|
global int UseDictCommand init(FALSE);
 | 
						|
global char *DictCommand init("file:///$LIB/w3mdict" CGI_EXTENSION);
 | 
						|
#endif				/* USE_DICT */
 | 
						|
global int ignore_null_img_alt init(TRUE);
 | 
						|
global int displayInsDel init(TRUE);
 | 
						|
global int FoldTextarea init(FALSE);
 | 
						|
global int FoldLine init(FALSE);
 | 
						|
#define DEFAULT_URL_EMPTY	0
 | 
						|
#define DEFAULT_URL_CURRENT	1
 | 
						|
#define DEFAULT_URL_LINK	2
 | 
						|
global int DefaultURLString init(DEFAULT_URL_EMPTY);
 | 
						|
global int MarkAllPages init(FALSE);
 | 
						|
 | 
						|
#ifdef USE_MIGEMO
 | 
						|
global int use_migemo init(FALSE);
 | 
						|
global int migemo_active init(0);
 | 
						|
global char *migemo_command init(DEF_MIGEMO_COMMAND);
 | 
						|
#endif				/* USE_MIGEMO */
 | 
						|
 | 
						|
global struct auth_cookie *Auth_cookie init(NULL);
 | 
						|
#ifdef USE_COOKIE
 | 
						|
global struct cookie *First_cookie init(NULL);
 | 
						|
#endif				/* USE_COOKIE */
 | 
						|
 | 
						|
global char *mailcap_files init(USER_MAILCAP ", " SYS_MAILCAP);
 | 
						|
global char *mimetypes_files init(USER_MIMETYPES ", " SYS_MIMETYPES);
 | 
						|
#ifdef USE_EXTERNAL_URI_LOADER
 | 
						|
global char *urimethodmap_files init(USER_URIMETHODMAP ", " SYS_URIMETHODMAP);
 | 
						|
#endif
 | 
						|
 | 
						|
global TextList *fileToDelete;
 | 
						|
 | 
						|
extern Hist *LoadHist;
 | 
						|
extern Hist *SaveHist;
 | 
						|
extern Hist *URLHist;
 | 
						|
extern Hist *ShellHist;
 | 
						|
extern Hist *TextHist;
 | 
						|
#ifdef USE_HISTORY
 | 
						|
global int UseHistory init(TRUE);
 | 
						|
global int URLHistSize init(100);
 | 
						|
global int SaveURLHist init(TRUE);
 | 
						|
#endif				/* USE_HISTORY */
 | 
						|
global int multicolList init(FALSE);
 | 
						|
 | 
						|
#ifdef USE_M17N
 | 
						|
global wc_ces InnerCharset init(WC_CES_WTF);	/* Don't change */
 | 
						|
global wc_ces DisplayCharset init(DISPLAY_CHARSET);
 | 
						|
global wc_ces DocumentCharset init(DOCUMENT_CHARSET);
 | 
						|
global wc_ces SystemCharset init(SYSTEM_CHARSET);
 | 
						|
global char ExtHalfdump init(FALSE);
 | 
						|
global char FollowLocale init(TRUE);
 | 
						|
global char UseContentCharset init(TRUE);
 | 
						|
global char SearchConv init(TRUE);
 | 
						|
#define Str_conv_from_system(x) wc_Str_conv((x), SystemCharset, InnerCharset)
 | 
						|
#define Str_conv_to_system(x) wc_Str_conv_strict((x), InnerCharset, SystemCharset)
 | 
						|
#define Str_conv_to_halfdump(x) (ExtHalfdump ? wc_Str_conv((x), InnerCharset, DisplayCharset) : (x))
 | 
						|
#define conv_from_system(x) wc_conv((x), SystemCharset, InnerCharset)->ptr
 | 
						|
#define conv_to_system(x) wc_conv_strict((x), InnerCharset, SystemCharset)->ptr
 | 
						|
#define url_quote_conv(x,c) url_quote(wc_conv_strict((x), InnerCharset, (c))->ptr)
 | 
						|
#else
 | 
						|
#define Str_conv_from_system(x) (x)
 | 
						|
#define Str_conv_to_system(x) (x)
 | 
						|
#define Str_conv_to_halfdump(x) (x)
 | 
						|
#define conv_from_system(x) (x)
 | 
						|
#define conv_to_system(x) (x)
 | 
						|
#define url_quote_conv(x,c) url_quote(x)
 | 
						|
#define wc_Str_conv(x) (x)
 | 
						|
#define wc_Str_conv_strict(x) (x)
 | 
						|
#endif
 | 
						|
global char UseAltEntity init(TRUE);
 | 
						|
global char UseGraphicChar init(FALSE);
 | 
						|
extern char *graph_symbol[];
 | 
						|
extern char *graph2_symbol[];
 | 
						|
extern int symbol_width;
 | 
						|
extern int symbol_width0;
 | 
						|
#define N_GRAPH_SYMBOL 32
 | 
						|
#define SYMBOL_BASE 0x20
 | 
						|
global int no_rc_dir init(FALSE);
 | 
						|
global char *rc_dir init(NULL);
 | 
						|
global char *tmp_dir;
 | 
						|
global char *config_file init(NULL);
 | 
						|
 | 
						|
#ifdef USE_MOUSE
 | 
						|
global int use_mouse init(TRUE);
 | 
						|
extern int mouseActive;
 | 
						|
global int reverse_mouse init(FALSE);
 | 
						|
global int relative_wheel_scroll init(FALSE);
 | 
						|
global int fixed_wheel_scroll_count init(5);
 | 
						|
global int relative_wheel_scroll_ratio init(30);
 | 
						|
typedef struct _MouseActionMap {
 | 
						|
    void (*func) ();
 | 
						|
    char *data;
 | 
						|
} MouseActionMap;
 | 
						|
typedef struct _MouseAction {
 | 
						|
    char *menu_str;
 | 
						|
    char *lastline_str;
 | 
						|
    int menu_width;
 | 
						|
    int lastline_width;
 | 
						|
    int in_action;
 | 
						|
    int cursorX;
 | 
						|
    int cursorY;
 | 
						|
    MouseActionMap default_map[3];
 | 
						|
    MouseActionMap anchor_map[3];
 | 
						|
    MouseActionMap active_map[3];
 | 
						|
    MouseActionMap tab_map[3];
 | 
						|
    MouseActionMap *menu_map[3];
 | 
						|
    MouseActionMap *lastline_map[3];
 | 
						|
} MouseAction;
 | 
						|
global MouseAction mouse_action;
 | 
						|
#define LIMIT_MOUSE_MENU 100
 | 
						|
#endif				/* USE_MOUSE */
 | 
						|
 | 
						|
#ifdef USE_COOKIE
 | 
						|
global int default_use_cookie init(TRUE);
 | 
						|
global int use_cookie init(FALSE);
 | 
						|
global int accept_cookie init(FALSE);
 | 
						|
#define ACCEPT_BAD_COOKIE_DISCARD	0
 | 
						|
#define ACCEPT_BAD_COOKIE_ACCEPT	1
 | 
						|
#define ACCEPT_BAD_COOKIE_ASK		2
 | 
						|
global int accept_bad_cookie init(ACCEPT_BAD_COOKIE_DISCARD);
 | 
						|
global char *cookie_reject_domains init(NULL);
 | 
						|
global char *cookie_accept_domains init(NULL);
 | 
						|
global TextList *Cookie_reject_domains;
 | 
						|
global TextList *Cookie_accept_domains;
 | 
						|
#endif				/* USE_COOKIE */
 | 
						|
 | 
						|
#ifdef USE_IMAGE
 | 
						|
global int view_unseenobject init(FALSE);
 | 
						|
#else
 | 
						|
global int view_unseenobject init(TRUE);
 | 
						|
#endif
 | 
						|
 | 
						|
#if defined(USE_SSL) && defined(USE_SSL_VERIFY)
 | 
						|
global int ssl_verify_server init(FALSE);
 | 
						|
global char *ssl_cert_file init(NULL);
 | 
						|
global char *ssl_key_file init(NULL);
 | 
						|
global char *ssl_ca_path init(NULL);
 | 
						|
global char *ssl_ca_file init(NULL);
 | 
						|
global int ssl_path_modified init(FALSE);
 | 
						|
#endif				/* defined(USE_SSL) &&
 | 
						|
				 * defined(USE_SSL_VERIFY) */
 | 
						|
#ifdef USE_SSL
 | 
						|
global char *ssl_forbid_method init(NULL);
 | 
						|
#endif
 | 
						|
 | 
						|
global int is_redisplay init(FALSE);
 | 
						|
global int clear_buffer init(TRUE);
 | 
						|
global double pixel_per_char init(DEFAULT_PIXEL_PER_CHAR);
 | 
						|
global int set_pixel_per_char init(FALSE);
 | 
						|
#ifdef USE_IMAGE
 | 
						|
global double pixel_per_line init(DEFAULT_PIXEL_PER_LINE);
 | 
						|
global int set_pixel_per_line init(FALSE);
 | 
						|
global double image_scale init(100);
 | 
						|
#endif
 | 
						|
global int use_lessopen init(FALSE);
 | 
						|
 | 
						|
global char *keymap_file init(KEYMAP_FILE);
 | 
						|
 | 
						|
#ifdef USE_M17N
 | 
						|
#define get_mctype(c) ((Lineprop)wtf_type((wc_uchar *)(c)) << 8)
 | 
						|
#define get_mclen(c) wtf_len1((wc_uchar *)(c))
 | 
						|
#define get_mcwidth(c) wtf_width((wc_uchar *)(c))
 | 
						|
#define get_strwidth(c) wtf_strwidth((wc_uchar *)(c))
 | 
						|
#define get_Str_strwidth(c) wtf_strwidth((wc_uchar *)((c)->ptr))
 | 
						|
#else
 | 
						|
#define get_mctype(c) (IS_CNTRL(*(c)) ? PC_CTRL : PC_ASCII)
 | 
						|
#define get_mclen(c) 1
 | 
						|
#define get_mcwidth(c) 1
 | 
						|
#define get_strwidth(c) strlen(c)
 | 
						|
#define get_Str_strwidth(c) ((c)->length)
 | 
						|
#endif
 | 
						|
 | 
						|
global int FollowRedirection init(10);
 | 
						|
 | 
						|
global int w3m_backend init(FALSE);
 | 
						|
global TextLineList *backend_halfdump_buf;
 | 
						|
global TextList *backend_batch_commands init(NULL);
 | 
						|
int backend(void);
 | 
						|
extern void deleteFiles(void);
 | 
						|
void w3m_exit(int i);
 | 
						|
 | 
						|
#ifdef USE_ALARM
 | 
						|
#define AL_UNSET         0
 | 
						|
#define AL_EXPLICIT      1
 | 
						|
#define AL_IMPLICIT      2
 | 
						|
#define AL_IMPLICIT_ONCE 3
 | 
						|
 | 
						|
typedef struct _AlarmEvent {
 | 
						|
    int sec;
 | 
						|
    short status;
 | 
						|
    int cmd;
 | 
						|
    void *data;
 | 
						|
} AlarmEvent;
 | 
						|
#endif
 | 
						|
 | 
						|
/* 
 | 
						|
 * Externals
 | 
						|
 */
 | 
						|
 | 
						|
#include "table.h"
 | 
						|
#include "proto.h"
 | 
						|
 | 
						|
#endif				/* not FM_H */
 |