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

📄 webcomp.c

📁 RTEMS (Real-Time Executive for Multiprocessor Systems) is a free open source real-time operating sys
💻 C
字号:
/* * webcomp -- Compile web pages into C source * * Copyright (c) GoAhead Software Inc., 1995-2000. All Rights Reserved. * * See the file "license.txt" for usage and redistribution license requirements *//******************************** Description *********************************//* *	Usage: webcomp prefix filelist >webrom.c * *	filelist is a file containing the pathnames of all web pages *	prefix is a path prefix to remove from all the web page pathnames *	webrom.c is the resulting C source file to compile and link. *//********************************* Includes ***********************************/#include	"wsIntrn.h"/**************************** Forward Declarations ****************************/static int 	compile(char_t *fileList, char_t *prefix);static void usage();/*********************************** Code *************************************//* *	Main program for webpack test harness */int gmain(int argc, char_t* argv[]){	char_t		*fileList, *prefix;	fileList = NULL;	if (argc != 3) {		usage();	}	prefix = argv[1];	fileList = argv[2];	if (compile(fileList, prefix) < 0) {		return -1;	}	return 0;}/******************************************************************************//* *	Output usage message */static void usage(){	fprintf(stderr, "usage: webcomp prefix filelist >output.c\n");	exit(2);}/******************************************************************************//* *	Compile the web pages */static int compile(char_t *fileList, char_t *prefix){	gstat_t			sbuf;	FILE			*lp;	time_t			now;	char_t			file[FNAMESIZE];	char_t			*cp, *sl;	char			buf[512];	unsigned char	*p;	int				j, i, len, fd, nFile;/* *	Open list of files */	if ((lp = fopen(fileList, "r")) == NULL) {		fprintf(stderr, "Can't open file list %s\n", fileList);		return -1;	}	time(&now);	fprintf(stdout, "/*\n * webrom.c -- Compiled Web Pages\n *\n");	fprintf(stdout, " * Compiled by GoAhead WebCompile: %s */\n\n", 		gctime(&now));	fprintf(stdout, "#include \"wsIntrn.h\"\n\n");	fprintf(stdout, "#ifndef WEBS_PAGE_ROM\n");	fprintf(stdout, "websRomPageIndexType websRomPageIndex[] = {\n");	fprintf(stdout, "    { 0, 0, 0 },\n};\n");	fprintf(stdout, "#else\n");/* *	Open each input file and compile each web page */	nFile = 0;	while (fgets(file, sizeof(file), lp) != NULL) {		if ((p = strchr(file, '\n')) || (p = strchr(file, '\r'))) {			*p = '\0';		}		if (*file == '\0') {			continue;		}		if (gstat(file, &sbuf) == 0 && sbuf.st_mode & S_IFDIR) {			continue;		} 		if ((fd = gopen(file, O_RDONLY | O_BINARY)) < 0) {			fprintf(stderr, "Can't open file %s\n", file);			return -1;		}		fprintf(stdout, "static const unsigned char page_%d[] = {\n", nFile);		while ((len = read(fd, buf, sizeof(buf))) > 0) {			p = buf;			for (i = 0; i < len; ) {				fprintf(stdout, "    ");				for (j = 0; p < &buf[len] && j < 16; j++, p++) {					fprintf(stdout, "%3d,", *p);				}				i += j;				fprintf(stdout, "\n");			}		}		fprintf(stdout, "    0 };\n\n");		close(fd);		nFile++;	}	fclose(lp);/* *	Now output the page index */	fprintf(stdout, "websRomPageIndexType websRomPageIndex[] = {\n");	if ((lp = fopen(fileList, "r")) == NULL) {		fprintf(stderr, "Can't open file list %s\n", fileList);		return -1;	}	nFile = 0;	while (fgets(file, sizeof(file), lp) != NULL) {		if ((p = strchr(file, '\n')) || (p = strchr(file, '\r'))) {			*p = '\0';		}		if (*file == '\0') {			continue;		}/* *		Remove the prefix and add a leading "/" when we print the path */		if (strncmp(file, prefix, gstrlen(prefix)) == 0) {			cp = &file[gstrlen(prefix)];		} else {			cp = file;		}		while((sl = strchr(file, '\\')) != NULL) {			*sl = '/';		}		if (*cp == '/') {			cp++;		}		if (gstat(file, &sbuf) == 0 && sbuf.st_mode & S_IFDIR) {			fprintf(stdout, "    { T(\"/%s\"), 0, 0 },\n", cp);			continue;		}		fprintf(stdout, "    { T(\"/%s\"), page_%d, %d },\n", cp, nFile, 			sbuf.st_size);		nFile++;	}	fclose(lp); 		fprintf(stdout, "    { 0, 0, 0 },\n");	fprintf(stdout, "};\n");	fprintf(stdout, "#endif /* WEBS_PAGE_ROM */\n");	fclose(lp);	fflush(stdout);	return 0;}/******************************************************************************/

⌨️ 快捷键说明

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