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

📄 diff.c

📁 <B>Digital的Unix操作系统VAX 4.2源码</B>
💻 C
字号:
#ifndef lintstatic char *sccsid = "@(#)diff.c	4.1	(ULTRIX)	7/17/90";#endif lint/************************************************************************ *									* *			Copyright (c) 1988 by				* *		Digital Equipment Corporation, Maynard, MA		* *			All rights reserved.				* *									* *   This software is furnished under a license and may be used and	* *   copied  only  in accordance with the terms of such license and	* *   with the  inclusion  of  the  above  copyright  notice.   This	* *   software  or  any  other copies thereof may not be provided or	* *   otherwise made available to any other person.  No title to and	* *   ownership of the software is hereby transferred.			* *									* *   This software is  derived  from  software  received  from  the	* *   University    of   California,   Berkeley,   and   from   Bell	* *   Laboratories.  Use, duplication, or disclosure is  subject  to	* *   restrictions  under  license  agreements  with  University  of	* *   California and with AT&T.						* *									* *   The information in this software is subject to change  without	* *   notice  and should not be construed as a commitment by Digital	* *   Equipment Corporation.						* *									* *   Digital assumes no responsibility for the use  or  reliability	* *   of its software on equipment which is not supplied by Digital.	* *									* ************************************************************************//************************************************************************ *	Modification History *      -------------------- * *	10-Nov-88		Tim N *			Took 4.3-5 sources and added changes made to *			previous version's sources. *			This 4.3-5 source had id: *			static	char sccsid[] = "@(#)diff.c 4.6 4/3/86"; *	7-Apr-1989		Pradeep Chetal  *			added -C n option for context-diff, with -c  *		  	defaulting as-C 3 (or 3 lines of context diff).  *			Retained -c[n] for backwards compatibility. ************************************************************************/#include "diff.h"/* * diff - driver and subroutines */char	diff[] = DIFF;char	diffh[] = DIFFH;char	pr[] = PR;main(argc, argv)	int argc;	char **argv;{	register char *argp;	ifdef1 = "FILE1"; ifdef2 = "FILE2";	status = 2;	diffargv = argv;	argc--, argv++;	while (argc > 2 && argv[0][0] == '-') {		argp = &argv[0][1];		argv++, argc--;		while (*argp) switch(*argp++) {#ifdef notdef		case 'I':			opt = D_IFDEF;			wantelses = 0;			continue;		case 'E':			opt = D_IFDEF;			wantelses = 1;			continue;		case '1':			opt = D_IFDEF;			ifdef1 = argp;			*--argp = 0;			continue;#endif		case 'D':			/* -Dfoo = -E -1 -2foo */			wantelses = 1;			ifdef1 = "";			/* fall through */#ifdef notdef		case '2':#endif			opt = D_IFDEF;			ifdef2 = argp;			*--argp = 0;			continue;		case 'e':			opt = D_EDIT;			continue;		case 'f':			opt = D_REVERSE;			continue;		case 'n':			opt = D_NREVERSE;			continue;		case 'b':			bflag = 1;			continue;		case 'w':			wflag = 1;			continue;		case 'i':			iflag = 1;			continue;		case 't':			tflag = 1;			continue;		case 'c':			opt = D_CONTEXT;			if (isdigit(*argp)) {				context = atoi(argp);				while (isdigit(*argp))					argp++;				if (*argp) {					fprintf(stderr,					    "diff: -c: bad count\n");					done();				}				argp = "";			} else				context = 3;			continue;	      	case 'C':			opt = D_CONTEXT;			/*			 * handles -Cn & -C n.			 */			if (isdigit(*argp)) {				context = atoi(argp);				while (isdigit(*argp))					argp++;				if (*argp) {					fprintf(stderr,					    "diff: -C: bad count\n");					done();				}				argp = "";			} else {			  	argc--;				if (isdigit(**argv))				  	context = atoi(*argv);				else {				  	fprintf(stderr,					    "diff: -C : bad count\n");					done();				}				argv++;			    	argp = "";			}			continue;		case 'h':			hflag++;			continue;		case 'S':			if (*argp == 0) {				fprintf(stderr, "diff: use -Sstart\n");				done();			}			start = argp;			*--argp = 0;		/* don't pass it on */			continue;		case 'r':			rflag++;			continue;		case 's':			sflag++;			continue;		case 'l':			lflag++;			continue;		default:			fprintf(stderr, "diff: -%s: unknown option\n",			    --argp);			done();		}	}	if (argc != 2) {		fprintf(stderr, "diff: two filename arguments required\n");		done();	}	file1 = argv[0];	file2 = argv[1];	if (hflag && opt) {		fprintf(stderr,		    "diff: -h doesn't support -e, -f, -n, -c, or -D\n");		done();	}	if (!strcmp(file1, "-"))		stb1.st_mode = S_IFREG;	else if (stat(file1, &stb1) < 0) {		fprintf(stderr, "diff: ");		perror(file1);		done();	}	if (!strcmp(file2, "-"))		stb2.st_mode = S_IFREG;	else if (stat(file2, &stb2) < 0) {		fprintf(stderr, "diff: ");		perror(file2);		done();	}	if ((stb1.st_mode & S_IFMT) == S_IFDIR &&	    (stb2.st_mode & S_IFMT) == S_IFDIR) {		diffdir(argv);	} else		diffreg();	done();}char *savestr(cp)	register char *cp;{	register char *dp = malloc(strlen(cp)+1);	if (dp == 0) {		fprintf(stderr, "diff: ran out of memory\n");		done();	}	strcpy(dp, cp);	return (dp);}min(a,b)	int a,b;{	return (a < b ? a : b);}max(a,b)	int a,b;{	return (a > b ? a : b);}done(){	if (tempfile)		unlink(tempfile);	exit(status);}char *talloc(n){	register char *p;	if ((p = malloc((unsigned)n)) != NULL)		return(p);	noroom();}char *ralloc(p,n)char *p;{	register char *q;	char *realloc();	if ((q = realloc(p, (unsigned)n)) == NULL)		noroom();	return(q);}noroom(){	fprintf(stderr, "diff: files too big, try -h\n");	done();}

⌨️ 快捷键说明

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