1238 lines
32 KiB
C
1238 lines
32 KiB
C
/* $Id: fm.h,v 1.149 2010/08/20 09:47:09 htrb 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"
|
|
#ifdef USE_M17N
|
|
#include "wc.h"
|
|
#include "wtf.h"
|
|
#else
|
|
typedef int wc_ces; /* XXX: not used */
|
|
#endif
|
|
|
|
#ifdef HAVE_LOCALE_H
|
|
#include <locale.h>
|
|
#endif
|
|
#if !HAVE_SETLOCALE
|
|
#define setlocale(category, locale) /* empty */
|
|
#endif
|
|
|
|
#ifdef 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"
|
|
#include "istream.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 */
|
|
|
|
#define DEFUN(funcname, macroname, docstring) void funcname(void)
|
|
|
|
/*
|
|
* Constants.
|
|
*/
|
|
#define LINELEN 256 /* Initial line length */
|
|
#define PAGER_MAX_LINE 10000 /* Maximum line kept as pager */
|
|
|
|
#define MAXIMUM_COLS 1024
|
|
#define DEFAULT_COLS 80
|
|
|
|
#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
|
|
|
|
/* Extra effect */
|
|
#define PE_EX_ITALIC 0x01
|
|
#define PE_EX_INSERT 0x02
|
|
#define PE_EX_STRIKE 0x04
|
|
|
|
#define PE_EX_ITALIC_E PE_UNDER
|
|
#define PE_EX_INSERT_E PE_UNDER
|
|
#define PE_EX_STRIKE_E PE_STAND
|
|
|
|
#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
|
|
|
|
#define IS_EMPTY_PARSED_URL(pu) ((pu)->scheme == SCM_UNKNOWN && !(pu)->file)
|
|
#define SCONF_RESERVED 0
|
|
#define SCONF_SUBSTITUTE_URL 1
|
|
#define SCONF_URL_CHARSET 2
|
|
#define SCONF_NO_REFERER_FROM 3
|
|
#define SCONF_NO_REFERER_TO 4
|
|
#define SCONF_N_FIELD 5
|
|
#define query_SCONF_SUBSTITUTE_URL(pu) ((const char *)querySiteconf(pu, SCONF_SUBSTITUTE_URL))
|
|
#define query_SCONF_URL_CHARSET(pu) ((const wc_ces *)querySiteconf(pu, SCONF_URL_CHARSET))
|
|
#define query_SCONF_NO_REFERER_FROM(pu) ((const int *)querySiteconf(pu, SCONF_NO_REFERER_FROM))
|
|
#define query_SCONF_NO_REFERER_TO(pu) ((const int *)querySiteconf(pu, SCONF_NO_REFERER_TO))
|
|
|
|
/*
|
|
* 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)
|
|
|
|
#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;
|
|
int invalid;
|
|
} 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;
|
|
short a_width;
|
|
short a_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 running;
|
|
int err;
|
|
struct _DownloadList *next;
|
|
struct _DownloadList *prev;
|
|
} DownloadList;
|
|
#define DOWNLOAD_LIST_TITLE "Download List Panel"
|
|
|
|
#define COPY_BUFROOT(dstbuf, srcbuf) {\
|
|
(dstbuf)->rootX = (srcbuf)->rootX; \
|
|
(dstbuf)->rootY = (srcbuf)->rootY; \
|
|
(dstbuf)->COLS = (srcbuf)->COLS; \
|
|
(dstbuf)->LINES = (srcbuf)->LINES; \
|
|
}
|
|
|
|
#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 7
|
|
|
|
#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)
|
|
|
|
struct input_alt_attr {
|
|
int hseq;
|
|
int fid;
|
|
int in;
|
|
Str type, name, value;
|
|
};
|
|
|
|
typedef struct {
|
|
int pos;
|
|
int len;
|
|
int tlen;
|
|
long flag;
|
|
Anchor anchor;
|
|
Str img_alt;
|
|
struct input_alt_attr input_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;
|
|
struct input_alt_attr input_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_italic fontstat[2]
|
|
#define in_strike fontstat[3]
|
|
#define in_ins fontstat[4]
|
|
#define in_stand fontstat[5]
|
|
|
|
#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;
|
|
};
|
|
|
|
#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__)
|
|
extern int LASTLINE;
|
|
#else /* not defined(__CYGWIN__) */
|
|
#define LASTLINE (LINES-1)
|
|
#endif /* not defined(__CYGWIN__) */
|
|
|
|
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 AutoUncompress init(FALSE);
|
|
global char PreserveTimestamp init(TRUE);
|
|
global char ArgvIsURL init(TRUE);
|
|
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;
|
|
#if defined(DONT_CALL_GC_AFTER_FORK) && defined(USE_IMAGE)
|
|
global char *MyProgramName init("w3m");
|
|
#endif /* defined(DONT_CALL_GC_AFTER_FORK) && defined(USE_IMAGE) */
|
|
/*
|
|
* 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;
|
|
global char *w3m_reqlog;
|
|
extern char *w3m_version;
|
|
extern int enable_inline_image;
|
|
|
|
#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 displayLinkNumber 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 int pseudoInlines init(TRUE);
|
|
global char *Editor init(DEF_EDITOR);
|
|
#ifdef USE_W3MMAILER
|
|
global char *Mailer init(NULL);
|
|
#else
|
|
global char *Mailer init(DEF_MAILER);
|
|
#endif
|
|
#ifdef USE_W3MMAILER
|
|
#define MAILTO_OPTIONS_USE_W3MMAILER 0
|
|
#endif
|
|
#define MAILTO_OPTIONS_IGNORE 1
|
|
#define MAILTO_OPTIONS_USE_MAILTO_URL 2
|
|
global int MailtoOptions init(MAILTO_OPTIONS_IGNORE);
|
|
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 *siteconf_file init(SITECONF_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 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);
|
|
#define DISPLAY_INS_DEL_SIMPLE 0
|
|
#define DISPLAY_INS_DEL_NORMAL 1
|
|
#define DISPLAY_INS_DEL_FONTIFY 2
|
|
global int displayInsDel init(DISPLAY_INS_DEL_NORMAL);
|
|
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 wc_ces BookmarkCharset init(SYSTEM_CHARSET);
|
|
global char ExtHalfdump init(FALSE);
|
|
global char FollowLocale init(TRUE);
|
|
global char UseContentCharset init(TRUE);
|
|
global char SearchConv init(TRUE);
|
|
global char SimplePreserveSpace init(FALSE);
|
|
#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,charset0,charset1) (x)
|
|
#define wc_Str_conv_strict(x,charset0,charset1) (x)
|
|
#endif
|
|
global char UseAltEntity init(FALSE);
|
|
#define GRAPHIC_CHAR_ASCII 2
|
|
#define GRAPHIC_CHAR_DEC 1
|
|
#define GRAPHIC_CHAR_CHARSET 0
|
|
global char UseGraphicChar init(GRAPHIC_CHAR_CHARSET);
|
|
global char DisplayBorders 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 show_cookie init(TRUE);
|
|
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 char *cookie_avoid_wrong_number_of_dots init(NULL);
|
|
global TextList *Cookie_reject_domains;
|
|
global TextList *Cookie_accept_domains;
|
|
global TextList *Cookie_avoid_wrong_number_of_dots_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(TRUE);
|
|
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("2, 3");
|
|
#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 pixel_per_char_i 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 pixel_per_line_i 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 */
|