亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? patch.c

?? 早期freebsd實現(xiàn)
?? C
?? 第 1 頁 / 共 2 頁
字號:
char rcsid[] =	"$Header: patch.c,v 2.0.2.0 90/05/01 22:17:50 davison Locked $";/* patch - a program to apply diffs to original files * * Copyright 1986, Larry Wall * * This program may be copied as long as you don't try to make any * money off of it, or pretend that you wrote it. * * $Log:	patch.c,v $ * Revision 2.0.2.0  90/05/01  22:17:50  davison * patch12u: unidiff support added *  * Revision 2.0.1.6  88/06/22  20:46:39  lwall * patch12: rindex() wasn't declared *  * Revision 2.0.1.5  88/06/03  15:09:37  lwall * patch10: exit code improved. * patch10: better support for non-flexfilenames. *  * Revision 2.0.1.4  87/02/16  14:00:04  lwall * Short replacement caused spurious "Out of sync" message. *  * Revision 2.0.1.3  87/01/30  22:45:50  lwall * Improved diagnostic on sync error. * Moved do_ed_script() to pch.c. *  * Revision 2.0.1.2  86/11/21  09:39:15  lwall * Fuzz factor caused offset of installed lines. *  * Revision 2.0.1.1  86/10/29  13:10:22  lwall * Backwards search could terminate prematurely. *  * Revision 2.0  86/09/17  15:37:32  lwall * Baseline for netwide release. *  * Revision 1.5  86/08/01  20:53:24  lwall * Changed some %d's to %ld's. * Linted. *  * Revision 1.4  86/08/01  19:17:29  lwall * Fixes for machines that can't vararg. * Added fuzz factor. * Generalized -p. * General cleanup. *  * 85/08/15 van%ucbmonet@berkeley * Changes for 4.3bsd diff -c. * * Revision 1.3  85/03/26  15:07:43  lwall * Frozen. *  * Revision 1.2.1.9  85/03/12  17:03:35  lwall * Changed pfp->_file to fileno(pfp). *  * Revision 1.2.1.8  85/03/12  16:30:43  lwall * Check i_ptr and i_womp to make sure they aren't null before freeing. * Also allow ed output to be suppressed. *  * Revision 1.2.1.7  85/03/12  15:56:13  lwall * Added -p option from jromine@uci-750a. *  * Revision 1.2.1.6  85/03/12  12:12:51  lwall * Now checks for normalness of file to patch. *  * Revision 1.2.1.5  85/03/12  11:52:12  lwall * Added -D (#ifdef) option from joe@fluke. *  * Revision 1.2.1.4  84/12/06  11:14:15  lwall * Made smarter about SCCS subdirectories. *  * Revision 1.2.1.3  84/12/05  11:18:43  lwall * Added -l switch to do loose string comparison. *  * Revision 1.2.1.2  84/12/04  09:47:13  lwall * Failed hunk count not reset on multiple patch file. *  * Revision 1.2.1.1  84/12/04  09:42:37  lwall * Branch for sdcrdcf changes. *  * Revision 1.2  84/11/29  13:29:51  lwall * Linted.  Identifiers uniqified.  Fixed i_ptr malloc() bug.  Fixed * multiple calls to mktemp().  Will now work on machines that can only * read 32767 chars.  Added -R option for diffs with new and old swapped. * Various cosmetic changes. *  * Revision 1.1  84/11/09  17:03:58  lwall * Initial revision *  */#include "INTERN.h"#include "common.h"#include "EXTERN.h"#include "version.h"#include "util.h"#include "pch.h"#include "inp.h"#include "backupfile.h"/* procedures */void reinitialize_almost_everything();void get_some_switches();LINENUM locate_hunk();void abort_hunk();void apply_hunk();void init_output();void init_reject();void copy_till();void spew_output();void dump_line();bool patch_match();bool similar();void re_input();void my_exit();/* TRUE if -E was specified on command line.  */static int remove_empty_files = FALSE;/* TRUE if -R was specified on command line.  */static int reverse_flag_specified = FALSE;/* Apply a set of diffs as appropriate. */intmain(argc,argv)int argc;char **argv;{    LINENUM where;    LINENUM newwhere;    LINENUM fuzz;    LINENUM mymaxfuzz;    int hunk = 0;    int failed = 0;    int failtotal = 0;    int i;    setbuf(stderr, serrbuf);    for (i = 0; i<MAXFILEC; i++)	filearg[i] = Nullch;    myuid = getuid();    /* Cons up the names of the temporary files.  */    {      /* Directory for temporary files.  */      char *tmpdir;      int tmpname_len;      tmpdir = getenv ("TMPDIR");      if (tmpdir == NULL) {	tmpdir = "/tmp";      }      tmpname_len = strlen (tmpdir) + 20;      TMPOUTNAME = (char *) malloc (tmpname_len);      strcpy (TMPOUTNAME, tmpdir);      strcat (TMPOUTNAME, "/patchoXXXXXX");      Mktemp(TMPOUTNAME);      TMPINNAME = (char *) malloc (tmpname_len);      strcpy (TMPINNAME, tmpdir);      strcat (TMPINNAME, "/patchiXXXXXX");      Mktemp(TMPINNAME);      TMPREJNAME = (char *) malloc (tmpname_len);      strcpy (TMPREJNAME, tmpdir);      strcat (TMPREJNAME, "/patchrXXXXXX");      Mktemp(TMPREJNAME);      TMPPATNAME = (char *) malloc (tmpname_len);      strcpy (TMPPATNAME, tmpdir);      strcat (TMPPATNAME, "/patchpXXXXXX");      Mktemp(TMPPATNAME);    }    {      char *v;      v = getenv ("SIMPLE_BACKUP_SUFFIX");      if (v)	simple_backup_suffix = v;      else	simple_backup_suffix = ORIGEXT;#ifndef NODIR      v = getenv ("VERSION_CONTROL");      backup_type = get_version (v); /* OK to pass NULL. */#endif    }    /* parse switches */    Argc = argc;    Argv = argv;    get_some_switches();        /* make sure we clean up /tmp in case of disaster */    set_signals(0);    for (	open_patch_file(filearg[1]);	there_is_another_patch();	reinitialize_almost_everything()    ) {					/* for each patch in patch file */	if (outname == Nullch)	    outname = savestr(filearg[0]);    	/* for ed script just up and do it and exit */	if (diff_type == ED_DIFF) {	    do_ed_script();	    continue;	}    	/* initialize the patched file */	if (!skip_rest_of_patch)	    init_output(TMPOUTNAME);    	/* initialize reject file */	init_reject(TMPREJNAME);    	/* find out where all the lines are */	if (!skip_rest_of_patch)	    scan_input(filearg[0]);    	/* from here on, open no standard i/o files, because malloc */	/* might misfire and we can't catch it easily */    	/* apply each hunk of patch */	hunk = 0;	failed = 0;	out_of_mem = FALSE;	while (another_hunk()) {	    hunk++;	    fuzz = Nulline;	    mymaxfuzz = pch_context();	    if (maxfuzz < mymaxfuzz)		mymaxfuzz = maxfuzz;	    if (!skip_rest_of_patch) {		do {		    where = locate_hunk(fuzz);		    if (hunk == 1 && where == Nulline && !force) {						/* dwim for reversed patch? */			if (!pch_swap()) {			    if (fuzz == Nulline)				say1("Not enough memory to try swapped hunk!  Assuming unswapped.\n");			    continue;			}			reverse = !reverse;			where = locate_hunk(fuzz);  /* try again */			if (where == Nulline) {	    /* didn't find it swapped */			    if (!pch_swap())         /* put it back to normal */				fatal1("lost hunk on alloc error!\n");			    reverse = !reverse;			}			else if (noreverse) {			    if (!pch_swap())         /* put it back to normal */				fatal1("lost hunk on alloc error!\n");			    reverse = !reverse;			    say1("Ignoring previously applied (or reversed) patch.\n");			    skip_rest_of_patch = TRUE;			}			else if (batch) {			    if (verbose)				say3("%seversed (or previously applied) patch detected!  %s -R.",				reverse ? "R" : "Unr",				reverse ? "Assuming" : "Ignoring");			}			else {			    ask3("%seversed (or previously applied) patch detected!  %s -R? [y] ",				reverse ? "R" : "Unr",				reverse ? "Assume" : "Ignore");			    if (*buf == 'n') {				ask1("Apply anyway? [n] ");				if (*buf != 'y')				    skip_rest_of_patch = TRUE;				where = Nulline;				reverse = !reverse;				if (!pch_swap())  /* put it back to normal */				    fatal1("lost hunk on alloc error!\n");			    }			}		    }		} while (!skip_rest_of_patch && where == Nulline &&		    ++fuzz <= mymaxfuzz);		if (skip_rest_of_patch) {		/* just got decided */		    Fclose(ofp);		    ofp = Nullfp;		}	    }	    newwhere = pch_newfirst() + last_offset;	    if (skip_rest_of_patch) {		abort_hunk();		failed++;		if (verbose)		    say3("Hunk #%d ignored at %ld.\n", hunk, newwhere);	    }	    else if (where == Nulline) {		abort_hunk();		failed++;		if (verbose)		    say3("Hunk #%d failed at %ld.\n", hunk, newwhere);	    }	    else {		apply_hunk(where);		if (verbose) {		    say3("Hunk #%d succeeded at %ld", hunk, newwhere);		    if (fuzz)			say2(" with fuzz %ld", fuzz);		    if (last_offset)			say3(" (offset %ld line%s)",			    last_offset, last_offset==1L?"":"s");		    say1(".\n");		}	    }	}	if (out_of_mem && using_plan_a) {	    Argc = Argc_last;	    Argv = Argv_last;	    say1("\n\nRan out of memory using Plan A--trying again...\n\n");	    if (ofp)	        Fclose(ofp);	    ofp = Nullfp;	    if (rejfp)	        Fclose(rejfp);	    rejfp = Nullfp;	    continue;	}    	assert(hunk);    	/* finish spewing out the new file */	if (!skip_rest_of_patch)	    spew_output();		/* and put the output where desired */	ignore_signals();	if (!skip_rest_of_patch) {	    struct stat statbuf;	    char *realout = outname;	    if (move_file(TMPOUTNAME, outname) < 0) {		toutkeep = TRUE;		realout = TMPOUTNAME;		chmod(TMPOUTNAME, filemode);	    }	    else		chmod(outname, filemode);	    if (remove_empty_files && stat(realout, &statbuf) == 0		&& statbuf.st_size == 0) {		if (verbose)		    say2("Removing %s (empty after patching).\n", realout);	        while (unlink(realout) >= 0) ; /* while is for Eunice.  */	    }	}	Fclose(rejfp);	rejfp = Nullfp;	if (failed) {	    failtotal += failed;	    if (!*rejname) {		Strcpy(rejname, outname);#ifndef FLEXFILENAMES		{		    char *s = rindex(rejname,'/');		    if (!s)			s = rejname;		    if (strlen(s) > 13)			if (s[12] == '.')	/* try to preserve difference */			    s[12] = s[13];	/* between .h, .c, .y, etc. */			s[13] = '\0';		}#endif		Strcat(rejname, REJEXT);	    }	    if (skip_rest_of_patch) {		say4("%d out of %d hunks ignored--saving rejects to %s\n",		    failed, hunk, rejname);	    }	    else {		say4("%d out of %d hunks failed--saving rejects to %s\n",		    failed, hunk, rejname);	    }	    if (move_file(TMPREJNAME, rejname) < 0)		trejkeep = TRUE;	}	set_signals(1);    }    my_exit(failtotal);}/* Prepare to find the next patch to do in the patch file. */voidreinitialize_almost_everything(){    re_patch();    re_input();    input_lines = 0;    last_frozen_line = 0;    filec = 0;    if (filearg[0] != Nullch && !out_of_mem) {	free(filearg[0]);	filearg[0] = Nullch;    }    if (outname != Nullch) {	free(outname);	outname = Nullch;    }    last_offset = 0;    diff_type = 0;    if (revision != Nullch) {	free(revision);	revision = Nullch;    }    reverse = reverse_flag_specified;    skip_rest_of_patch = FALSE;    get_some_switches();    if (filec >= 2)	fatal1("you may not change to a different patch file\n");}static char *nextarg(){    if (!--Argc)	fatal2("missing argument after `%s'\n", *Argv);    return *++Argv;}/* Process switches and filenames up to next '+' or end of list. */voidget_some_switches(){    Reg1 char *s;    rejname[0] = '\0';    Argc_last = Argc;    Argv_last = Argv;    if (!Argc)	return;    for (Argc--,Argv++; Argc; Argc--,Argv++) {

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
色综合久久中文字幕综合网| 日韩欧美在线一区二区三区| 欧美一级高清大全免费观看| 亚洲精品国产无套在线观| 激情伊人五月天久久综合| 欧美日韩色综合| 日韩不卡一二三区| 欧美一区二区福利在线| 91成人免费在线| 91在线小视频| 成人精品国产免费网站| 精品亚洲免费视频| 亚洲免费观看视频| 国产精品美女一区二区在线观看| 国产成人av网站| 亚洲自拍偷拍九九九| 日韩三级视频中文字幕| 日本高清无吗v一区| 久久99精品久久久| 亚洲电影在线播放| 国产精品国产三级国产专播品爱网 | 精品国产乱码久久久久久老虎| 美日韩一级片在线观看| 色999日韩国产欧美一区二区| 国产精品系列在线播放| 丝袜美腿亚洲一区| 日韩视频一区在线观看| a亚洲天堂av| 97久久超碰国产精品电影| 337p日本欧洲亚洲大胆色噜噜| 精品亚洲aⅴ乱码一区二区三区| 一区二区免费视频| 亚洲综合清纯丝袜自拍| 亚洲已满18点击进入久久| 亚洲高清一区二区三区| 最新热久久免费视频| 欧亚洲嫩模精品一区三区| 一区二区三区在线视频播放| 亚洲成在人线免费| 日韩美一区二区三区| 一本色道久久综合狠狠躁的推荐| 午夜婷婷国产麻豆精品| 亚洲欧洲精品成人久久奇米网| 欧美精品 国产精品| 成人av影视在线观看| 亚洲综合一区在线| 中文字幕欧美国产| 精品国产免费视频| 欧美日韩国产系列| 欧美综合天天夜夜久久| 国产69精品久久久久毛片| 久久91精品国产91久久小草| 亚洲乱码国产乱码精品精98午夜 | aaa国产一区| 亚洲日本乱码在线观看| 国产日产欧美一区二区视频| 中文字幕不卡在线观看| 亚洲色图欧洲色图| 日韩欧美一二区| 国产精品996| 日本视频一区二区三区| 国产亚洲欧美日韩俺去了| 国产精品一二三四区| 亚洲电影在线免费观看| 天堂久久久久va久久久久| 久久激情五月激情| 欧美日韩激情一区| 青青草国产精品亚洲专区无| 久久电影网站中文字幕| 国产乱子伦一区二区三区国色天香| 欧美色网一区二区| 3d动漫精品啪啪一区二区竹菊| 亚洲精品一线二线三线无人区| 欧美国产精品中文字幕| 日韩码欧中文字| 午夜精品久久久久久久| 欧美探花视频资源| 69堂精品视频| 精品国产亚洲在线| 国产女同性恋一区二区| 欧美高清在线视频| 亚洲欧美激情小说另类| 亚洲人成电影网站色mp4| 亚洲在线视频免费观看| 美腿丝袜一区二区三区| 91精品久久久久久久99蜜桃| 久久99久久99| 中文字幕欧美区| 国产精品污www在线观看| 性做久久久久久免费观看| 成人午夜又粗又硬又大| 日韩视频不卡中文| 亚洲精品你懂的| 韩国精品久久久| 欧美无乱码久久久免费午夜一区| 精品久久久久99| 一区二区三区高清在线| 国产精品一区二区久久不卡| 欧美日韩视频第一区| 日韩美女啊v在线免费观看| 狠狠网亚洲精品| 欧美一区二区在线观看| 亚洲欧美日韩国产综合在线| 国产一区亚洲一区| 91精品国产综合久久香蕉的特点| 国产精品久久久久影院色老大| 麻豆一区二区99久久久久| 色999日韩国产欧美一区二区| 久久婷婷一区二区三区| 日韩福利电影在线| 91美女在线观看| 欧美日本在线视频| 亚洲婷婷综合久久一本伊一区| 国产激情一区二区三区四区 | 婷婷综合另类小说色区| 精品视频一区三区九区| 在线免费精品视频| 国产精品卡一卡二| 欧美一级精品在线| 成人黄色电影在线| 8x8x8国产精品| 亚洲成人自拍一区| 高清av一区二区| 国产一区二区在线电影| 日本不卡的三区四区五区| 中文字幕国产精品一区二区| 精品少妇一区二区三区日产乱码 | 成人小视频在线| 欧美一区二区视频在线观看2020 | 一区二区三区欧美亚洲| www.av亚洲| 亚洲一区免费观看| 成人免费在线观看入口| 欧美国产1区2区| 自拍偷拍欧美精品| 亚洲欧洲日产国码二区| 国产午夜精品一区二区三区四区| 欧美亚洲动漫另类| 精品一区二区三区免费毛片爱| 亚洲欧洲99久久| 国产欧美一区二区三区在线老狼| 欧美日韩成人一区二区| 国内成人免费视频| 蜜臀va亚洲va欧美va天堂| 舔着乳尖日韩一区| 亚洲国产精品久久人人爱蜜臀| 亚洲美女一区二区三区| 国产午夜精品一区二区| 欧美一区二区三区四区高清| 成人免费高清视频在线观看| 日本一道高清亚洲日美韩| 亚洲一区二区三区视频在线播放 | 亚洲视频电影在线| 欧美日韩精品免费| 欧美欧美午夜aⅴ在线观看| 91免费视频网址| 日韩三级在线免费观看| 久久美女艺术照精彩视频福利播放 | 亚洲综合一区二区| 亚洲欧美日本韩国| 国产精品亚洲专一区二区三区 | 男女性色大片免费观看一区二区 | 色综合久久天天| 亚洲chinese男男1069| 国产日本欧洲亚洲| 欧美视频在线一区二区三区| 国产成人免费视频网站高清观看视频 | 91日韩精品一区| 在线免费观看日本欧美| 久久久精品黄色| 国内精品嫩模私拍在线| 粉嫩av亚洲一区二区图片| 丁香啪啪综合成人亚洲小说| 成人精品小蝌蚪| 粉嫩13p一区二区三区| 91色九色蝌蚪| 5月丁香婷婷综合| 国产亚洲精品bt天堂精选| 亚洲精品成人悠悠色影视| 国产精品美女久久久久aⅴ国产馆| 91.xcao| 成人性生交大合| 日韩成人一区二区| 一区二区三区日韩欧美| 久久久精品国产免大香伊| 91精品国产综合久久精品图片 | 亚洲第一福利一区| 国产精品久久久久久久久免费相片 | 欧美精品久久久久久久多人混战| 懂色av中文一区二区三区| 狠狠色综合播放一区二区| 亚洲国产日韩a在线播放 | 亚洲自拍偷拍欧美| 国产精品你懂的| 欧美videos中文字幕| 欧美一区二区视频在线观看2020| 色94色欧美sute亚洲线路一ni| 国产99精品在线观看| 久久se精品一区二区| 美美哒免费高清在线观看视频一区二区 |