uudecode.c

来自「一个C语言写的快速贝叶斯垃圾邮件过滤工具」· C语言 代码 · 共 60 行

C
60
字号
/* $Id: uudecode.c,v 1.5 2003/10/31 15:34:53 relson Exp $ *//*****************************************************************************NAME:   uudecode.c -- decode uuencoded textAUTHOR:   David Relson <relson@osagesoftware.com>******************************************************************************/#include "common.h"#include "uudecode.h"uint uudecode(word_t *word){    uint size = word->leng;    uint count = 0;    byte *b = word->text;		/* beg */    byte *s = b;			/* src */    byte *d = b;			/* dst */    byte *e = b+size;			/* end */    int out = (*s++ & 0x7f) - 0x20;    /* don't process lines without leading count character */    if (out < 0)	return size;    /* don't process begin and end lines */    if ((strncasecmp((const char *)b, "begin ", 6) == 0) ||	(strncasecmp((const char *)b, "end",    3) == 0))	return size;    while (s < e - 4)    {	int v = 0;	int i;	for (i = 0; i < 4; i += 1) {	    byte c = *s++;	    v = v << 6 | ((c - 0x20) & 0x3F);	}	for (i = 2; i >= 0; i -= 1) {	    byte c = (byte) (v & 0xFF);	    d[i] = c;	    v = v >> 8;	}	d += 3;	count += 3;    }    while (s < e)     {	*d++ = *s++;	count += 1;    }    *d = (byte) '\0';    return count;}

⌨️ 快捷键说明

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