📄 links.h
字号:
};void close_fork_tty();int get_system_env();int is_xterm();int can_twterm();int get_terminal_size(int, int *, int *);void handle_terminal_resize(int, void (*)());void unhandle_terminal_resize(int);void set_bin(int);int c_pipe(int *);int get_input_handle();int get_output_handle();int get_ctl_handle();void want_draw();void done_draw();void terminate_osdep();void *handle_mouse(int, void (*)(void *, unsigned char *, int), void *);void unhandle_mouse(void *);int check_file_name(unsigned char *);int start_thread(void (*)(void *, int), void *, int);char *get_clipboard_text();void set_clipboard_text(char *);void set_window_title(unsigned char *);unsigned char *get_window_title();int is_safe_in_shell(unsigned char);unsigned char *escape_path(unsigned char *);void check_shell_security(unsigned char **);int check_shell_url(unsigned char *);void block_stdin();void unblock_stdin();void get_path_to_exe(void);int exe(char *);int resize_window(int, int);int can_resize_window(int);int can_open_os_shell(int);struct open_in_new *get_open_in_new(int);void set_highpri();#ifdef HAVE_OPEN_PREALLOCint can_prealloc(char *);int open_prealloc(char *, int, int, off_t);void prealloc_truncate(int, off_t);#elsestatic inline void prealloc_truncate(int x, off_t y) {}#endifvoid os_cfmakeraw(struct termios *t);/* select.c */#ifndef FD_SETSIZE#define FD_SETSIZE 1024#endiftypedef long ttime;typedef unsigned long uttime;typedef unsigned tcount;extern int terminate;long select_info(int);void select_loop(void (*)());int register_bottom_half(void (*)(void *), void *);void check_bottom_halves();int install_timer(ttime, void (*)(void *), void *);void kill_timer(int);ttime get_time();#define H_READ 0#define H_WRITE 1#define H_ERROR 2#define H_DATA 3void *get_handler(int, int);void set_handlers(int, void (*)(void *), void (*)(void *), void (*)(void *), void *);void install_signal_handler(int, void (*)(void *), void *, int);void interruptible_signal(int sig, int in);void set_sigcld();/* dns.c */typedef unsigned ip;int do_real_lookup(unsigned char *, ip *);void shrink_dns_cache(int);int find_host(unsigned char *, ip *, void **, void (*)(void *, int), void *);int find_host_no_cache(unsigned char *, ip *, void **, void (*)(void *, int), void *);void kill_dns_request(void **);/* cache.c */struct cache_entry { struct cache_entry *next; struct cache_entry *prev; unsigned char *url; unsigned char *head; unsigned char *redirect; int redirect_get; off_t length; int incomplete; int tgc; unsigned char *last_modified; off_t data_size; struct list_head frag; tcount count; int refcount;#ifdef HAVE_SSL unsigned char *ssl_info;#endif};struct fragment { struct fragment *next; struct fragment *prev; off_t offset; off_t length; off_t real_length; unsigned char data[1];};extern int page_size;void init_cache();long cache_info(int);int find_in_cache(unsigned char *, struct cache_entry **);int get_cache_entry(unsigned char *, struct cache_entry **);int add_fragment(struct cache_entry *, off_t, unsigned char *, off_t);void defrag_entry(struct cache_entry *);void truncate_entry(struct cache_entry *, off_t, int);void free_entry_to(struct cache_entry *, off_t);void delete_entry_content(struct cache_entry *);void delete_cache_entry(struct cache_entry *);void garbage_collection(int);/* sched.c */#define PRI_MAIN 0#define PRI_DOWNLOAD 0#define PRI_FRAME 1#define PRI_NEED_IMG 2#define PRI_IMG 3#define PRI_PRELOAD 4#define PRI_CANCEL 5#define N_PRI 6struct remaining_info { int valid; off_t size, loaded, last_loaded, cur_loaded; off_t pos; ttime elapsed; ttime last_time; ttime dis_b; int data_in_secs[CURRENT_SPD_SEC]; int timer;};struct connection { struct connection *next; struct connection *prev; tcount count; unsigned char *url; int running; int state; int prev_error; off_t from; int pri[N_PRI]; int no_cache; int sock1; int sock2; void *dnsquery; pid_t pid; int tries; struct list_head statuss; void *info; void *buffer; void (*conn_func)(void *); struct cache_entry *cache; off_t received; off_t est_length; int unrestartable; struct remaining_info prg; int timer; int detached;#ifdef HAVE_SSL SSL *ssl; int no_tsl;#endif};extern struct list_head queue;struct k_conn { struct k_conn *next; struct k_conn *prev; void (*protocol)(struct connection *); unsigned char *host; int port; int conn; ttime timeout; ttime add_time;};extern struct list_head keepalive_connections;static inline int getpri(struct connection *c){ int i; for (i = 0; i < N_PRI; i++) if (c->pri[i]) return i; internal("connection has no owner"); return N_PRI;}#define NC_ALWAYS_CACHE 0#define NC_CACHE 1#define NC_IF_MOD 2#define NC_RELOAD 3#define NC_PR_NO_CACHE 4#define S_WAIT 0#define S_DNS 1#define S_CONN 2#define S_SSL_NEG 3#define S_SENT 4#define S_LOGIN 5#define S_GETH 6#define S_PROC 7#define S_TRANS 8#define S_WAIT_REDIR -999#define S_OK -1000#define S_INTERRUPTED -1001#define S_EXCEPT -1002#define S_INTERNAL -1003#define S_OUT_OF_MEM -1004#define S_NO_DNS -1005#define S_CANT_WRITE -1006#define S_CANT_READ -1007#define S_MODIFIED -1008#define S_BAD_URL -1009#define S_TIMEOUT -1010#define S_RESTART -1011#define S_STATE -1012#define S_LARGE_FILE -1014#define S_HTTP_ERROR -1100#define S_HTTP_100 -1101#define S_HTTP_204 -1102#define S_FILE_TYPE -1200#define S_FILE_ERROR -1201#define S_FTP_ERROR -1300#define S_FTP_UNAVAIL -1301#define S_FTP_LOGIN -1302#define S_FTP_PORT -1303#define S_FTP_NO_FILE -1304#define S_FTP_FILE_ERROR -1305#define S_SSL_ERROR -1400#define S_NO_SSL -1401#define S_NO_SMB_CLIENT -1500extern struct s_msg_dsc { int n; unsigned char *msg;} msg_dsc[];struct status { struct status *next; struct status *prev; struct connection *c; struct cache_entry *ce; int state; int prev_error; int pri; void (*end)(struct status *, void *); void *data; struct remaining_info *prg;};void check_queue(void *dummy);long connect_info(int);void send_connection_info(struct connection *c);void setcstate(struct connection *c, int);int get_keepalive_socket(struct connection *c);void add_keepalive_socket(struct connection *c, ttime);void run_connection(struct connection *c);int is_connection_restartable(struct connection *c);void retry_connection(struct connection *c);void abort_connection(struct connection *c);void end_connection(struct connection *c);int load_url(unsigned char *, struct status *, int, int);void change_connection(struct status *, struct status *, int);void detach_connection(struct status *, off_t);void abort_all_connections();void abort_background_connections();int is_entry_used(struct cache_entry *);void connection_timeout(struct connection *);void set_timeout(struct connection *);void add_blacklist_entry(unsigned char *, int);void del_blacklist_entry(unsigned char *, int);int get_blacklist_flags(unsigned char *);void free_blacklist();#define BL_HTTP10 1#define BL_NO_ACCEPT_LANGUAGE 2#define BL_NO_CHARSET 4#define BL_NO_RANGE 8
/* url.c */struct session;#define POST_CHAR 1static inline int end_of_dir(unsigned char c){ return c == POST_CHAR || c == '#' || c == ';' || c == '?';}int parse_url(unsigned char *, int *, unsigned char **, int *, unsigned char **, int *, unsigned char **, int *, unsigned char **, int *, unsigned char **, int *, unsigned char **);unsigned char *get_host_name(unsigned char *);unsigned char *get_host_and_pass(unsigned char *);unsigned char *get_user_name(unsigned char *);unsigned char *get_pass(unsigned char *);unsigned char *get_port_str(unsigned char *);int get_port(unsigned char *);void (*get_protocol_handle(unsigned char *))(struct connection *);void (*get_external_protocol_function(unsigned char *))(struct session *, unsigned char *);unsigned char *get_url_data(unsigned char *);unsigned char *join_urls(unsigned char *, unsigned char *);unsigned char *translate_url(unsigned char *, unsigned char *);unsigned char *extract_position(unsigned char *);void get_filename_from_url(unsigned char *, unsigned char **, int *);void add_conv_str(unsigned char **s, int *l, unsigned char *b, int ll, int encode_special);/* connect.c */struct read_buffer { int sock; int len; int close; void (*done)(struct connection *, struct read_buffer *); unsigned char data[1];};void exception(struct connection *);void close_socket(int *);void make_connection(struct connection *, int, int *, void (*)(struct connection *));int get_pasv_socket(struct connection *, int, int *, unsigned char *);void write_to_socket(struct connection *, int, unsigned char *, int, void (*)(struct connection *));struct read_buffer *alloc_read_buffer(struct connection *c);void read_from_socket(struct connection *, int, struct read_buffer *, void (*)(struct connection *, struct read_buffer *));void kill_buffer_data(struct read_buffer *, int);/* cookies.c */int set_cookie(struct terminal *, unsigned char *, unsigned char *);void send_cookies(unsigned char **, int *, unsigned char *);void init_cookies();void cleanup_cookies();/* http.c */unsigned char *parse_http_header(unsigned char *, unsigned char *, unsigned char **);unsigned char *parse_header_param(unsigned char *, unsigned char *);void http_func(struct connection *);void proxy_func(struct connection *);/* https.c */void https_func(struct connection *c);#ifdef HAVE_SSLvoid ssl_finish(void);SSL *getSSL(void);#endif/* file.c */void file_func(struct connection *);/* finger.c */void finger_func(struct connection *);/* ftp.c */#if defined(IP_TOS) && defined(IPTOS_THROUGHPUT)#define HAVE_IPTOS#endifvoid ftp_func(struct connection *);/* smb.c */void smb_func(struct connection *);/* mailto.c */void mailto_func(struct session *, unsigned char *);void telnet_func(struct session *, unsigned char *);void tn3270_func(struct session *, unsigned char *);void mms_func(struct session *, unsigned char *);/* kbd.c */#define BM_BUTT 3#define B_LEFT 0#define B_MIDDLE 1#define B_RIGHT 2#define BM_ACT 12#define B_DOWN 0#define B_UP 4#define B_DRAG 8#define KBD_ENTER 0x100#define KBD_BS 0x101#define KBD_TAB 0x102#define KBD_ESC 0x103#define KBD_LEFT 0x104#define KBD_RIGHT 0x105#define KBD_UP 0x106#define KBD_DOWN 0x107#define KBD_INS 0x108#define KBD_DEL 0x109#define KBD_HOME 0x10a#define KBD_END 0x10b#define KBD_PAGE_UP 0x10c#define KBD_PAGE_DOWN 0x10d#define KBD_F1 0x120#define KBD_F2 0x121#define KBD_F3 0x122#define KBD_F4 0x123#define KBD_F5 0x124#define KBD_F6 0x125#define KBD_F7 0x126#define KBD_F8 0x127#define KBD_F9 0x128#define KBD_F10 0x129#define KBD_F11 0x12a#define KBD_F12 0x12b#define KBD_CTRL_C 0x200#define KBD_SHIFT 1#define KBD_CTRL 2#define KBD_ALT 4void handle_trm(int, int, int, int, int, void *, int);void free_all_itrms();void resize_terminal();void dispatch_special(unsigned char *);void kbd_ctrl_c();int is_blocked();extern unsigned char init_seq[];extern unsigned char init_seq_x_mouse[];extern unsigned char init_seq_tw_mouse[];extern unsigned char term_seq[];extern unsigned char term_seq_x_mouse[];extern unsigned char term_seq_tw_mouse[];/* terminal.c */typedef unsigned short chr;struct event { long ev; long x; long y; long b;};#define EV_INIT 0#define EV_KBD 1#define EV_MOUSE 2#define EV_REDRAW 3#define EV_RESIZE 4#define EV_ABORT 5struct window { struct window *next; struct window *prev; void (*handler)(struct window *, struct event *, int fwd); void *data; int xp, yp; struct terminal *term;};#define MAX_TERM_LEN 32 /* this must be multiple of 8! (alignment problems) */#define MAX_CWD_LEN 256 /* this must be multiple of 8! (alignment problems) */ #define ENV_XWIN 1#define ENV_SCREEN 2#define ENV_OS2VIO 4#define ENV_BE 8#define ENV_TWIN 16#define ENV_WIN32 32struct terminal { struct terminal *next; struct terminal *prev; int master; int fdin; int fdout; int x; int y; int environment; unsigned char term[MAX_TERM_LEN]; unsigned char cwd[MAX_CWD_LEN]; unsigned *screen; unsigned *last_screen; struct term_spec *spec; int cx; int cy; int lcx; int lcy; int dirty; int redrawing; int blocked; unsigned char *input_queue; int qlen; struct list_head windows; unsigned char *title;};struct term_spec { struct term_spec *next; struct term_spec *prev; unsigned char term[MAX_TERM_LEN]; int mode; int m11_hack; int restrict_852; int block_cursor; int col; int charset;};#define TERM_DUMB 0#define TERM_VT100 1#define TERM_LINUX 2#define TERM_KOI8 3#define TERM_FREEBSD 4#define ATTR_FRAME 0x8000extern struct list_head term_specs;extern struct list_head terminals;int hard_write(int, unsigned char *, int);int hard_read(int, unsigned char *, int);unsigned char *get_cwd();void set_cwd(unsigned char *);struct terminal *init_term(int, int, void (*)(struct window *, struct event *, int));void sync_term_specs();struct term_spec *new_term_spec(unsigned char *);void free_term_specs();void destroy_terminal(struct terminal *);void redraw_terminal(struct terminal *);void redraw_terminal_all(struct terminal *);void redraw_terminal_cls(struct terminal *);void cls_redraw_all_terminals();void redraw_from_window(struct window *);void redraw_below_window(struct window *);void add_window(struct terminal *, void (*)(struct window *, struct event *, int), void *);void add_window_at_pos(struct terminal *, void (*)(struct window *, struct event *, int), void *, struct window *);void delete_window(struct window *);void delete_window_ev(struct window *, struct event *ev);void set_window_ptr(struct window *, int, int);void get_parent_ptr(struct window *, int *, int *);struct window *get_root_window(struct terminal *);void add_empty_window(struct terminal *, void (*)(void *), void *);void redraw_screen(struct terminal *);void redraw_all_terminals();
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -