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

📄 genpf.c

📁 操作系统SunOS 4.1.3版本的源码
💻 C
字号:
#ifndef lintstatic  char sccsid[] = "@(#)genpf.c 1.1 92/07/30 Copyr 1985 Sun Micro";#endif/* * Copyright (c) 1985 by Sun Microsystems, Inc. */#include "pf.h"#include <stdio.h>#include <ctype.h>#define MAXENTRY	512char *entry[MAXENTRY];char *myname;char *dir = ".";char *strsav(), *rindex(), *strcpy();FILE *pfout;int lastent = 0;#define	PF	"pf.c"main(argc, argv)	char *argv[];{	myname = argv[0];	argv++; argc--;	if (argc > 1 && strcmp(*argv, "-d") == 0) {		argv++; argc--;		if (argc > 2) {			dir = strsav(*argv);			argv++; argc--;		} else {			usage();			/*NOTREACHED*/		}	}	if (argc <= 0) {		usage();		/*NOTREACHED*/	}	if ((pfout = fopen(PF, "w")) == NULL) {		perror(PF);		exit(4);	}	if (chdir(dir) == -1) {		perror(dir);		exit(4);	}	pf_prologue();	while (argc > 0) {		process_file(*argv);		argv++; argc--;	}	pf_epilogue();	exit(0);}char *strsav(s)	char *s;{	extern char *malloc();	char *m;	if ((m = malloc(strlen(s) + 1)) == NULL) {		error("no memory");		/*NOTREACHED*/	}	(void) strcpy(m, s);	return (m);}usage(){	fprintf(stderr, "usage: %s [-d dir] file ...\n", myname);	exit(1);}/*VARARGS1*/error(s, a1, a2, a3, a4)	char *s;{	fprintf(stderr, s, a1, a2, a3, a4);	exit(2);}pf_prologue(){	fprintf(pfout, "#include \"pf.h\"\n");}process_file(name)	char *name;{#define	MAXLINE	256	register FILE *f;	register char *pname, *s;	char buf[MAXLINE];	if ((f = fopen(name, "r")) == NULL) {		perror(name);		return;	}	pname = rindex(name, '/');	if (pname == NULL)		pname = name;	else		pname++;	/*	 * Convert all '.' in file name to '_'	 */	while ((s = rindex(pname, '.')) != NULL)		*s = '_';	fprintf(pfout, "\nchar %s_NAME[] = \"%s\";\nchar %s_STRING[] = \n\"",	    pname, pname, pname);	while (fgets(buf, MAXLINE, f) != NULL) {		for (s = buf; *s; s++) {			if (*s == '"')				putc('\\', pfout);			else if (*s == '\n')				fprintf(pfout, "\\n\\");			putc(*s, pfout);		}	}	fprintf(pfout, "\";\n");	entry[lastent++] = strsav(pname);	fclose(f);}pf_epilogue(){	register int i;	fprintf(pfout, "\nstruct pseudo_file pf[] = {\n");	for (i = 0; i < lastent; i++)		fprintf(pfout, "\t{ %s_NAME, %s_STRING },\n",		    entry[i], entry[i]);	fprintf(pfout, "};\n\nint npf = %d;\n", lastent);	fclose(pfout);}

⌨️ 快捷键说明

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