#define NWWW 200 /* # of pages we can get before failure */
#define NNAME 512
#define NAUTH 128
#define NTITLE 81 /* length of title (including nul at end) */
#define NREDIR 10 /* # of redirections we'll tolerate before declaring a loop */
typedef struct Action Action;
typedef struct Url Url;
typedef struct Www Www;
typedef struct Scheme Scheme;
typedef struct Field Field;
struct Scheme{
char *name;
int type;
int flags;
int port;
};
struct Action{
char *image;
Rectangle r;
char *imagebits;
Field *field;
char *link;
char *name;
int ismap;
};
struct Url{
char fullname[NNAME];
Scheme *scheme;
char ipaddr[NNAME];
char reltext[NNAME];
char tag[NNAME];
char redirname[NNAME];
char autharg[NAUTH];
char authtype[NTITLE];
int port;
int access;
int type;
int map; /* is this an image map? */
};
struct Www{
Url *url;
Url *base;
char title[NTITLE];
Rtext *text;
int yoffs;
int changed; /* reader sets this every time it updates page */
int finished; /* reader sets this when done */
int alldone; /* page will not change further -- used to adjust cursor */
int index;
};
/*
* url reference types -- COMPRESS, GUNZIP and BZ2 are flags that can modify any other type
* Changing these in a non-downward compatible way spoils cache entries
*/
#define GIF 1
#define HTML 2
#define JPEG 3
#define PIC 4
#define TIFF 5
#define AUDIO 6
#define PLAIN 7
#define XBM 8
#define POSTSCRIPT 9
#define FORWARD 10
#define PDF 11
#define SUFFIX 12
#define ZIP 13 /* rm */
#define PNG 14
#define COMPRESS 16
#define GUNZIP 32
#define BZIP2 64
#define COMPRESSION (COMPRESS|GUNZIP|BZIP2)
/*
* url access types
*/
#define HTTP 1
#define FTP 2
#define FILE 3
#define TELNET 4
#define MAILTO 5
#define EXEC 6
#define GOPHER 7
/*
* authentication types
*/
#define ANONE 0
#define ABASIC 1
Image *hrule, *bullet, *linespace;
char home[512]; /* where to put files */
int chrwidth; /* nominal width of characters in font */
Panel *text; /* Panel displaying the current www page */
int debug; /* command line flag */
int inlinepix; /* flag set if you want to fetch inline images */
/*
* HTTP methods
*/
#define GET 1
#define POST 2
void plrdhtml(char *, int, Www *);
void plrdplain(char *, int, Www *);
void htmlerror(char *, int, char *, ...); /* user-supplied routine */
void crackurl(Url *, char *, Url *);
void getpix(Rtext *, Www *);
int urlopen(Url *, int, char *);
void getfonts(void);
void *emalloc(int);
void setbitmap(Rtext *);
void message(char *, ...);
int ftp(Url *);
int http(Url *, int, char *);
int gopher(Url *);
int cistrcmp(char *, char *);
int cistrncmp(char *, char *, int);
int suffix2type(char *);
int content2type(char *, char *);
int encoding2type(char *);
void mkfieldpanel(Rtext *);
void geturl(char *, int, char *, int, int);
int dir2html(char *, int);
Image *floyd(Rectangle, int, uchar *);
int auth(Url*, char*, int);
uchar cmap[256*3];
RGB map[256];
char version[];
#ifndef brazil
# define RFREND 0
#endif
#ifndef nil
#define nil 0
#endif
|