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

📄 uudecode.c.svn-base

📁 本驱动是 s3c2410 声卡驱动,实现了 mp3,wav格式的音频文件的播放 
💻 SVN-BASE
字号:
/**
 *
 * UUDECODE
 * Copyright (C) 1998 Clem Dye
 * Copyright (C) 2007 Hong MingJian
 *
 */

#include <string.h>

#define DEC(c)  (((c) - ' ') & 077)

int uudecode (char *where)
{
	char *p, *out;
	p = out = where;

	{
		char *q;
		do {
			q = p;
			while(*p++ != '\n')
				;
		} while(strncmp(q, "begin", 5));
	}
	
	while (1) {
		int n;
			
		while(*p == '\n')
			p++;
			
		if (!strncmp(p, "end\n", 4))
			break;

		if (!strncmp(p, "end\r\n", 5))
			break;

		n = DEC (*p);
		
		if (n <= 0)
			break;
			
		for (++p; n > 0; p += 4, n -= 3) {
			if (n >= 3)	{
				*out++ = DEC (p[0]) << 2 | DEC (p[1]) >> 4;
				*out++ = DEC (p[1]) << 4 | DEC (p[2]) >> 2;
				*out++ = DEC (p[2]) << 6 | DEC (p[3]);
			} else {
				if (n >= 1)	{
					*out++ = DEC (p[0]) << 2 | DEC (p[1]) >> 4;
				}
				if (n >= 2)	{
					*out++ = DEC (p[1]) << 4 | DEC (p[2]) >> 2;
				}
			}
		}
		
		/*discard rest of the line*/
		while(*p != '\n')
			p++;		
	}
	
	return (out-where);
}

#if MAIN

#include <stdio.h>
#include <stdlib.h>

int main()
{
	FILE *fp;
	long size;
	char *buf;
	
	
	fprintf(stdout, "\\n=%x, \\r=%x\n", '\n', '\r');
	
	fp = fopen("..\\test\\test.uue", "rb");
	if(fp == NULL) {
		fprintf(stderr, "error fopen");
		return 1;
	}
	
	fseek(fp, 0, SEEK_END);
	size = ftell(fp);
	rewind(fp);
	
	fprintf(stdout, "size=%d\n", size);
	
	buf = (char *)malloc(size);
	{
		int read = fread(buf, 1, size, fp);
		if( read != size) {
			fprintf(stderr, "error fread (%d expected, %d read)\n", size, read);
			free(buf);
			fclose(fp);
			return 1;	
		}
	}
	fclose(fp);

	fp = fopen("test.uud", "wb");	
	if(fp == NULL) {
		fprintf(stderr, "error fopen");
		free(buf);
		return 1;
	}
	
	size = uudecode(buf);
	fwrite(buf, 1, size, fp);
	
	fprintf(stdout, "%d bytes decoded.\n", size);
	
	free(buf);
	fclose(fp);
	return 0;
}

#endif

⌨️ 快捷键说明

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