📄 decode_irc.c
字号:
/* decode_irc.c Internet Relay Chat. Copyright (c) 2000 Dug Song <dugsong@monkey.org> $Id: decode_irc.c,v 1.5 2000/11/15 17:54:46 dugsong Exp $*/#include "config.h"#include <sys/types.h>#include <stdio.h>#include <string.h>#include "buf.h"#include "decode.h"intdecode_irc(u_char *buf, int len, u_char *obuf, int olen){ struct buf *line, inbuf, outbuf; int i, got_auth; buf_init(&inbuf, buf, len); buf_init(&outbuf, obuf, olen); got_auth = 0; while ((i = buf_index(&inbuf, "\n", 1)) != -1) { line = buf_tok(&inbuf, NULL, i); buf_skip(&inbuf, 1); if (i > 0 && line->base[i - 1] == '\r') line->end--; line->base[line->end] = '\0'; if (buf_cmp(&inbuf, ";", 1) == 0) { if ((i = buf_index(line, " ", 1)) < 0) continue; buf_skip(line, i + 1); } if (buf_cmp(line, "USER ", 5) == 0 || buf_cmp(line, "NICK ", 5) == 0) { buf_rewind(line); buf_putf(&outbuf, "%s\n", buf_ptr(line)); } else if (buf_cmp(line, "PASS ", 5) == 0 || buf_cmp(line, "OPER ", 5) == 0) { buf_rewind(line); buf_putf(&outbuf, "%s\n", buf_ptr(line)); got_auth = 1; } else if (buf_cmp(line, "MODE ", 5) == 0 && buf_index(line, " +k ", 4) != -1) { buf_rewind(line); buf_putf(&outbuf, "%s\n", buf_ptr(line)); got_auth = 1; } else if (buf_cmp(line, "JOIN ", 5) == 0) { buf_skip(line, 5); if ((i = buf_index(line, " ", 1)) < 0) continue; buf_skip(line, i + 1); if (buf_len(line) < 1) continue; buf_rewind(line); buf_putf(&outbuf, "%s\n", buf_ptr(line)); got_auth = 1; } } buf_end(&outbuf); return (got_auth ? buf_len(&outbuf) : 0);}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -