⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 brocas.h

📁 飞鸽传书for linux X图形界面下源码
💻 H
字号:
/* * brocas.h * Copyright (C) 1996 by candy * $Id: brocas.h,v 3.7 1996/12/12 17:15:12 candy Exp candy $ */#ifndef BROCAS_H__#define BROCAS_H__#define COUNTOF(v) (sizeof(v)/sizeof((v)[0]))#define GETUW(p) ((((unsigned char *)(p))[0]<<8)|(((unsigned char *)(p))[1]))#define GETUL(p) ((((unsigned long)((unsigned char *)(p))[0])<<24)|(((unsigned char *)(p))[1]<<16)|(((unsigned char *)(p))[2]<<8)|(((unsigned char *)(p))[3]))#define SETUW(p,x) (void)(((char*)(p))[0]=((x)>>8)&0xff,((char*)(p))[1]=(x)&0xff)#define SETUL(p,x) (void)(((char*)(p))[0]=((x)>>24)&0xff,((char*)(p))[1]=((x)>>16)&0xff,((char*)(p))[2]=((x)>>8)&0xff,((char*)(p))[3]=(x)&0xff)#ifndef MAX#define MAX(a,b) ((a)>(b)?(a):(b))#endif#ifndef MIN#define MIN(a,b) ((a)<(b)?(a):(b))#endifextern int debug_flag;#define USERNAME_MAX 64#define HOSTNAME_MAX 256#define MESSAGE_MAX 8192/* * ソケットアドレス */union saddr {	struct sockaddr sa;	struct sockaddr_in sin;};/* * IP Messenger プロトコルアドレス菇陇挛 */struct maddr_t {	int m_so;	char m_user[USERNAME_MAX];	union saddr m_saddr;};/* * 减慨パケットをデコ〖ドしたもの */struct packet_t {	unsigned long pk_ver;	unsigned long pk_no;	unsigned long pk_cmd;	char *pk_user;	char *pk_host;	char *pk_msg;	char *pk_icon;	size_t pk_msgsize;	struct maddr_t pk_maddr;};/* * コ〖ルバックのイベント */enum bro_event_t {	BRO_EV_LIST_CHANGED, /* 叹涟リストが恃わった */	BRO_EV_RECV_MESSAGE, /* メッセ〖ジが葡いた */	BRO_EV_RECV_ACK, /* 流ったメッセ〖ジが粗般いなく葡いた */	BRO_EV_NO_ACK, /* 流ったメッセ〖ジが葡かなかったかも */	BRO_EV_START_WORK_PROC, /* work procedure を倡幌する (^^;; */	BRO_EV_MAX /* (イベント硷梧另眶) */};struct msg_data_t {	struct maddr_t *md_replyto;	char *md_msg;	char *md_from;	unsigned long md_opt;	unsigned long md_pkno;	unsigned char *md_icon;};/* * パケットフィルタリング脱 */struct rcv_q_t {	unsigned long q_id; /* 减慨したパケット戎规 */	unsigned long q_keep; /* 瘦积する箕粗 */};/* * */struct rcv_t {	struct rcv_q_t *rcv_q;	size_t rcv_size; /* rcv_q のサイズ */	size_t rcv_used; /* rcv_q の蝗脱面のサイズ */};struct ns_t {	struct maddr_t ns_maddr; /* プロトコルアドレス */	char ns_host[HOSTNAME_MAX]; /* ホスト叹フィ〖ルド猛 */	char ns_nick[USERNAME_MAX]; /* ニックネ〖ム */	struct rcv_t ns_rcv;};typedef void (*bro_callback_t)(enum bro_event_t, void *closure, void *call_data);/* * スキャッタ〖バッファ */struct iov_t {	struct iov_t *iov_next;	void *iov_base;	size_t iov_len;};#define SET_IOV(v,next,base,len) (void)((v)->iov_next = (next), (v)->iov_base = (base), (v)->iov_len = (len))/* ----START */char * str_dup(const char *s);char * strncpyz(char *dst, const char *src, size_t len);char * strnchr(const char *s, int ch, size_t n);int strcmpi(const char *d_, const char *s_);int strncmpi(const char *d_, const char *s_, size_t n);int bro_add_callback(enum bro_event_t e, bro_callback_t callback, void *closure);struct xq_t * xq_enq(struct xq_t *xq);int bro_send(const char *msg, const unsigned char *icon, const struct maddr_t *ma);struct ns_t * ns_lookup(const struct maddr_t *ma);struct ns_t * ns_get(int idx);void ns_free(const struct maddr_t *ma);void ns_clear(void);char ** ns_list(void);int send_IPMSG_READMSG(struct maddr_t *replyto, unsigned long pkno);int send_IPMSG_BR_ENTRY(void);int send_IPMSG_BR_EXIT(void);int bro_recv_packet(int so);void bro_job(void);void bro_work(void);int bro_set_disable(int disable);int bro_init(int port, const char *user, const char *host, const char * const *bros);/* ----END */#endif

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -