From cb24126c313a791a0705a2ecb740ab373cc5a612 Mon Sep 17 00:00:00 2001 From: "josh.macdonald" Date: Sun, 18 Feb 2007 02:41:57 +0000 Subject: raise default sprevsz, add command-line flag -P to set --- xdelta3/Makefile | 9 +-- xdelta3/setup.py | 14 ++--- xdelta3/xdelta3-main.h | 150 ++++++++++++++++++++++----------------------- xdelta3/xdelta3-regtest.py | 73 ++++++++++++---------- xdelta3/xdelta3.c | 24 ++------ xdelta3/xdelta3.h | 6 +- xdelta3/xdelta3.prj | 43 +++++++------ 7 files changed, 153 insertions(+), 166 deletions(-) diff --git a/xdelta3/Makefile b/xdelta3/Makefile index 3bb7f44..03be11d 100644 --- a/xdelta3/Makefile +++ b/xdelta3/Makefile @@ -36,10 +36,10 @@ TARGETS = xdelta3-debug \ PYTHON = python SWIGTGT = xdelta3module.so -SWIGTGT = xdelta3module.dll +#SWIGTGT = xdelta3module.dll -PYTGT = build/lib.linux-i686-2.4/xdelta3.so -PYTGT = build/lib.cygwin-1.5.24-i686-2.4/xdelta3main.dll +PYTGT = build/lib.linux-i686-2.4/xdelta3main.so +#PYTGT = build/lib.cygwin-1.5.24-i686-2.4/xdelta3main.dll EXTRA = Makefile COPYING linkxd3lib.c badcopy.c xdelta3.swig \ draft-korn-vcdiff.txt xdelta3.vcproj badcopy.vcproj \ @@ -47,6 +47,7 @@ EXTRA = Makefile COPYING linkxd3lib.c badcopy.c xdelta3.swig \ xdelta3.py xdelta3_wrap.c SWIG_FLAGS = -DXD3_DEBUG=0 \ + -DEXTERNAL_COMPRESSION=0 \ -DXD3_USE_LARGEFILE64=1 \ -DGENERIC_ENCODE_TABLES=1 \ -DSECONDARY_DJW=1 \ @@ -81,7 +82,7 @@ tar: clean: rm -f $(TARGETS) - rm -rf build Debug Release core *.stackdump *.exe \ + rm -rf build Debug Release core cifs* *.stackdump *.exe \ xdelta3.ncb xdelta3.suo xdelta3.sln xdelta3: $(SOURCES) diff --git a/xdelta3/setup.py b/xdelta3/setup.py index f89aba7..abc902d 100644 --- a/xdelta3/setup.py +++ b/xdelta3/setup.py @@ -22,14 +22,8 @@ from distutils.util import get_platform # External compression support works on Windows/Cygwin, but not from # within the Python module. It's something to do with fork() and # exec() support. -platform = get_platform() -is_cygwin = platform.startswith('cygwin') -extcomp = 1 - -if is_cygwin: - print 'Note: not compiling external compression support for Python/Cygwin' - extcomp = 0 -#end +#platform = get_platform() +#is_cygwin = platform.startswith('cygwin') xdelta3_ext = Extension('xdelta3main', ['xdelta3.c'], @@ -41,7 +35,9 @@ xdelta3_ext = Extension('xdelta3main', ('XD3_POSIX',1), ('XD3_USE_LARGEFILE64',1), - ('EXTERNAL_COMPRESSION',extcomp), + # the fork/exec stuff doesn't + # work inside python. + ('EXTERNAL_COMPRESSION',0), ('REGRESSION_TEST',0), ('SECONDARY_FGK',0), diff --git a/xdelta3/xdelta3-main.h b/xdelta3/xdelta3-main.h index 2f1eb7f..3b7d11a 100644 --- a/xdelta3/xdelta3-main.h +++ b/xdelta3/xdelta3-main.h @@ -244,6 +244,10 @@ struct _main_blklru /* ... represented as a list (no cache index). */ XD3_MAKELIST(main_blklru_list,main_blklru,link); +// TODO: +// struct _main_state +// { + /* Program options: various command line flags and options. */ static int option_stdout = 0; static int option_force = 0; @@ -264,10 +268,7 @@ static int option_level = XD3_DEFAULT_LEVEL; static usize_t option_iopt_size = XD3_DEFAULT_IOPT_SIZE; static usize_t option_winsize = XD3_DEFAULT_WINSIZE; static usize_t option_srcwinsz = XD3_DEFAULT_SRCWINSZ; -static int option_srcwinsz_set = 0; - -/* This controls the number of times main repeats itself, only for profiling. */ -static int option_profile_cnt = 0; +static usize_t option_sprevsz = XD3_DEFAULT_SPREVSZ; /* These variables are supressed to avoid their use w/o support. main() warns * appropriately. */ @@ -317,6 +318,8 @@ static main_extcomp extcomp_types[] = /*{ "lzma", "-cf", "lzma", "-dcf", "M", "]\000", 2, 0 },*/ }; +// }; + static void main_get_appheader (xd3_stream *stream, main_file *ifile, main_file *output, main_file *sfile); @@ -345,18 +348,18 @@ main_config (void) P(RINT "VCDIFF_TOOLS=%d\n", VCDIFF_TOOLS); P(RINT "XD3_ALLOCSIZE=%d\n", XD3_ALLOCSIZE); P(RINT "XD3_DEBUG=%d\n", XD3_DEBUG); + P(RINT "XD3_ENCODER=%d\n", XD3_ENCODER); + P(RINT "XD3_POSIX=%d\n", XD3_POSIX); + P(RINT "XD3_STDIO=%d\n", XD3_STDIO); + P(RINT "XD3_WIN32=%d\n", XD3_WIN32); + P(RINT "XD3_USE_LARGEFILE64=%d\n", XD3_USE_LARGEFILE64); P(RINT "XD3_DEFAULT_LEVEL=%d\n", XD3_DEFAULT_LEVEL); P(RINT "XD3_DEFAULT_IOPT_SIZE=%d\n", XD3_DEFAULT_IOPT_SIZE); P(RINT "XD3_DEFAULT_SPREVSZ=%d\n", XD3_DEFAULT_SPREVSZ); P(RINT "XD3_DEFAULT_SRCWINSZ=%d\n", XD3_DEFAULT_SRCWINSZ); P(RINT "XD3_DEFAULT_WINSIZE=%d\n", XD3_DEFAULT_WINSIZE); - P(RINT "XD3_ENCODER=%d\n", XD3_ENCODER); P(RINT "XD3_HARDMAXWINSIZE=%d\n", XD3_HARDMAXWINSIZE); P(RINT "XD3_NODECOMPRESSSIZE=%d\n", XD3_NODECOMPRESSSIZE); - P(RINT "XD3_USE_LARGEFILE64=%d\n", XD3_USE_LARGEFILE64); - P(RINT "XD3_POSIX=%d\n", XD3_POSIX); - P(RINT "XD3_STDIO=%d\n", XD3_STDIO); - P(RINT "XD3_WIN32=%d\n", XD3_WIN32); return EXIT_SUCCESS; } @@ -364,29 +367,19 @@ main_config (void) static void reset_defaults(void) { + // TODO: this is dumb, use an object option_stdout = 0; option_force = 0; option_verbose = 0; option_quiet = 0; - option_use_appheader = 1; option_appheader = NULL; option_use_secondary = 0; option_secondary = NULL; - option_use_checksum = 1; option_use_altcodetable = 0; option_smatch_config = NULL; option_no_compress = 0; option_no_output = 0; option_source_filename = NULL; - option_srcwinsz_set = 0; - option_profile_cnt = 0; -#if EXTERNAL_COMPRESSION - option_decompress_inputs = 1; - option_recompress_outputs = 1; -#endif -#if VCDIFF_TOOLS - option_print_cpymode = 1; -#endif program_name = NULL; appheader_used = NULL; main_bdata = NULL; @@ -397,12 +390,22 @@ reset_defaults(void) lru_misses = 0; lru_filled = 0; allow_fake_source = 0; - option_srcwinsz_set = 0; option_smatch_config = NULL; + + option_use_appheader = 1; + option_use_checksum = 1; +#if EXTERNAL_COMPRESSION + option_decompress_inputs = 1; + option_recompress_outputs = 1; +#endif +#if VCDIFF_TOOLS + option_print_cpymode = 1; +#endif option_level = XD3_DEFAULT_LEVEL; - option_srcwinsz = XD3_DEFAULT_SRCWINSZ; + option_iopt_size = XD3_DEFAULT_IOPT_SIZE; option_winsize = XD3_DEFAULT_WINSIZE; option_srcwinsz = XD3_DEFAULT_SRCWINSZ; + option_sprevsz = XD3_DEFAULT_SPREVSZ; } static void* @@ -2041,11 +2044,6 @@ main_set_source (xd3_stream *stream, int cmd, main_file *sfile, xd3_source *sour } else { - if (option_verbose) - { - XPR(NT "source file: %s\n", sfile->filename); - } - if ((ret = main_file_open (sfile, sfile->filename, XO_READ)) || (ret = main_file_stat (sfile, & source->size, 1))) { @@ -2140,15 +2138,8 @@ main_set_source (xd3_stream *stream, int cmd, main_file *sfile, xd3_source *sour } else { - /* Minimum size check */ option_srcwinsz = max(option_srcwinsz, XD3_MINSRCWINSZ); - if (!option_srcwinsz_set) - { - /* If the flag was not set, scale srcwinsz up to 64MB. */ - option_srcwinsz = min((xoff_t) XD3_DEFAULT_SRCWINSZ, source->size); - } - source->blksize = (option_srcwinsz / LRU_SIZE); lru_size = LRU_SIZE; } @@ -2156,6 +2147,19 @@ main_set_source (xd3_stream *stream, int cmd, main_file *sfile, xd3_source *sour main_blklru_list_init (& lru_list); main_blklru_list_init (& lru_free); + if (option_verbose) + { + static char buf[32]; + + XPR(NT "source %s winsize %s size %"Q"u\n", + sfile->filename, main_format_bcnt(option_srcwinsz, buf), source->size); + } + + if (option_verbose > 1) + { + XPR(NT "source block size: %u\n", source->blksize); + } + if ((lru = main_malloc (sizeof (main_blklru) * lru_size)) == NULL) { ret = ENOMEM; @@ -2175,13 +2179,6 @@ main_set_source (xd3_stream *stream, int cmd, main_file *sfile, xd3_source *sour main_blklru_list_push_back (& lru_free, & lru[i]); } - if (option_verbose > 1) - { - XPR(NT "source window size: %u\n", option_srcwinsz); - XPR(NT "source block size: %u\n", source->blksize); - XPR(NT "source file: %s: %"Q"u bytes\n", sfile->realname, source->size); - } - if (stream && (ret = xd3_set_source (stream, source))) { XPR(NT XD3_LIB_ERRMSG (stream, ret)); @@ -2197,6 +2194,23 @@ main_set_source (xd3_stream *stream, int cmd, main_file *sfile, xd3_source *sour return ret; } +static void +main_set_winsize (main_file *ifile) { + xoff_t file_size; + + option_winsize = max(option_winsize, XD3_ALLOCSIZE); + + if (main_file_stat (ifile, &file_size, 0) == 0) + { + option_winsize = (usize_t) min(file_size, (xoff_t) option_winsize); + } + + if (option_verbose > 1) + { + XPR(NT "input window size: %u\n", option_winsize); + } +} + /****************************************************************************************** Source routines ******************************************************************************************/ @@ -2362,10 +2376,12 @@ main_input (xd3_cmd cmd, config.sec_addr.ngroups = 1; config.sec_inst.ngroups = 1; config.iopt_size = option_iopt_size; + config.sprevsz = option_sprevsz; - /* TODO: eliminate static variables. */ do_not_lru = 0; + start_time = get_millisecs_now (); + /* main_input setup. */ switch ((int) cmd) { @@ -2477,12 +2493,7 @@ main_input (xd3_cmd cmd, return EXIT_FAILURE; } - start_time = get_millisecs_now (); - - if (option_verbose > 1) - { - XPR(NT "input buffer size: %u\n", option_winsize); - } + main_set_winsize (ifile); if ((main_bdata = main_malloc (option_winsize)) == NULL) { @@ -2499,8 +2510,6 @@ main_input (xd3_cmd cmd, } } - option_winsize = max(option_winsize, XD3_ALLOCSIZE); - config.winsize = option_winsize; config.srcwin_maxsz = option_srcwinsz; config.getblk = main_getblk_func; @@ -2682,7 +2691,7 @@ main_input (xd3_cmd cmd, } } - if (option_verbose > 0) + if (option_verbose) { char rrateavg[32], wrateavg[32], tm[32]; char rdb[32], wdb[32]; @@ -2789,9 +2798,10 @@ done: { char tm[32]; long end_time = get_millisecs_now (); - XPR(NT "command finished in %s\n", main_format_millis (end_time - start_time, tm)); - XPR(NT "input bytes: %"Q"u\n", ifile->nread); - XPR(NT "output bytes: %"Q"u\n", ofile->nwrite); + XPR(NT "finished in %s; input %"Q"u output %"Q"u bytes (%0.2f%%)\n", + main_format_millis (end_time - start_time, tm), + ifile->nread, ofile->nwrite, + 100.0 * ofile->nwrite / ifile->nread); } return EXIT_SUCCESS; @@ -2900,7 +2910,7 @@ main (int argc, char **argv) main_file ifile; main_file ofile; main_file sfile; - static char *flags = "0123456789cdefhnqvDJNORTVs:B:C:E:F:I:L:O:P:M:W:A::S::"; + static const char *flags = "0123456789cdefhnqvDJNORTVs:B:C:E:F:I:L:O:M:P:W:A::S::"; int my_optind; char *my_optarg; char *my_optstr; @@ -2921,7 +2931,6 @@ main (int argc, char **argv) reset_defaults(); - go: /* Go. */ free_argv = NULL; free_value = NULL; setup_environment(argc, argv, &env_argc, &env_argv, &free_argv, &free_value); @@ -3077,22 +3086,6 @@ main (int argc, char **argv) XPR(NT "encoder support not compiled\n"); return EXIT_FAILURE; #endif - case 'P': - /* only set profile count once, since... */ - if (option_profile_cnt == 0) - { - if ((ret = main_atou(my_optarg, (usize_t*) & option_profile_cnt, 0, 0, 'P'))) - { - goto exit; - } - - if (option_profile_cnt <= 0) - { - ret = EXIT_SUCCESS; - goto exit; - } - } - break; case 'n': option_use_checksum = 0; break; case 'N': option_no_compress = 1; break; @@ -3104,7 +3097,6 @@ main (int argc, char **argv) case 'A': if (my_optarg == NULL) { option_use_appheader = 0; } else { option_appheader = (uint8_t*) my_optarg; } break; case 'B': - option_srcwinsz_set = 1; if ((ret = main_atou (my_optarg, & option_srcwinsz, XD3_MINSRCWINSZ, 0, 'B'))) { @@ -3118,6 +3110,13 @@ main (int argc, char **argv) goto exit; } break; + case 'P': + if ((ret = main_atou (my_optarg, & option_sprevsz, 0, + 0, 'P'))) + { + goto exit; + } + break; case 'W': if ((ret = main_atou (my_optarg, & option_winsize, XD3_ALLOCSIZE, XD3_HARDMAXWINSIZE, 'W'))) @@ -3264,8 +3263,6 @@ main (int argc, char **argv) main_cleanup (); - if (--option_profile_cnt > 0 && ret == EXIT_SUCCESS) { goto go; } - fflush (stdout); fflush (stderr); return ret; @@ -3304,6 +3301,7 @@ main_help (void) P(RINT "memory options:\n"); P(RINT " -B bytes source window size\n"); P(RINT " -W bytes input window size\n"); + P(RINT " -P size compression duplicates window\n"); P(RINT " -I size instruction buffer size (0 = unlimited)\n"); P(RINT "compression options:\n"); @@ -3322,9 +3320,11 @@ main_help (void) P(RINT " -P repeat count (for profiling)\n"); P(RINT " -T use alternate code table\n"); #endif + P(RINT "the XDELTA environment variable may contain extra args:\n"); P(RINT " XDELTA=\"-s source-x.y.tar.gz\" \\\n"); P(RINT " tar --use-compress-program=xdelta3 \\\n"); P(RINT " -cf target-x.z.tar.gz.vcdiff target-x.y/\n"); return EXIT_FAILURE; } + diff --git a/xdelta3/xdelta3-regtest.py b/xdelta3/xdelta3-regtest.py index 30bccb1..1248584 100755 --- a/xdelta3/xdelta3-regtest.py +++ b/xdelta3/xdelta3-regtest.py @@ -23,7 +23,6 @@ import os, sys, math, re, time, types, array, random import xdelta3main import xdelta3 -HIST_SIZE = 10 # the number of buckets MIN_SIZE = 0 TIME_TOO_SHORT = 0.050 @@ -32,19 +31,26 @@ SKIP_TRIALS = 2 MIN_TRIALS = 3 MAX_TRIALS = 15 -MIN_STDDEV_PCT = 1.5 - -MIN_RUN = 1000 * 1000 * 1 -MAX_RUN = 1000 * 1000 * 10 +# 10 = fast 1.5 = slow +MIN_STDDEV_PCT = 10 # How many results per round -MAX_RESULTS = 6 +MAX_RESULTS = 4 KEEP_P = (1.0) FAST_P = (0.0) SLOW_P = (0.0) + +# For RCS testing, what percent to select FILE_P = (0.30) -# the first 10 args go to -C +# For run-speed tests +MIN_RUN = 1000 * 1000 * 1 +MAX_RUN = 1000 * 1000 * 10 + +# Testwide defaults +ALL_ARGS = [ '-f' ] + +# The first 10 args go to -C SOFT_CONFIG_CNT = 10 CONFIG_ORDER = [ 'large_look', @@ -59,15 +65,22 @@ CONFIG_ORDER = [ 'large_look', 'promote', 'winsize', 'srcwinsize', + 'sprevsz', + 'iopt', + + # TODO: nocompress, djw (boolean flags) ] CONFIG_ARGMAP = { 'winsize' : '-W', 'srcwinsize' : '-B', + 'sprevsz' : '-P', + 'iopt' : '-I', } def INPUT_SPEC(rand): return { + # computational costs 'large_look' : lambda d: rand.choice([9]), 'large_step' : lambda d: rand.choice([15]), @@ -78,25 +91,29 @@ def INPUT_SPEC(rand): 'long_enough' : lambda d: rand.choice([18]), 'small_look' : lambda d: rand.choice([4]), - 'promote' : lambda d: 0, - 'trylazy' : lambda d: 1, - 'ssmatch' : lambda d: 0, + 'ssmatch' : lambda d: rand.choice([0]), - 'winsize' : lambda d: rand.choice( - [x * (1<<20) for x in [1, 4, 8, 16, 32, 64]]), + 'promote' : lambda d: rand.choice([0]), - 'srcwinsize' : lambda d: 1<<26, - } + 'trylazy' : lambda d: rand.choice([1]), + + # memory costs + 'iopt' : lambda d: 0, # unlimited + 'winsize' : lambda d: 8 * (1<<20), + 'srcwinsize' : lambda d: 64 * (1<<20), + + 'sprevsz' : lambda d: 1 * (1<<18), # only powers of two + } # # #RCSDIR = '/mnt/polaroid/Polaroid/orbit_linux/home/jmacd/PRCS' -#RCSDIR = '/tmp/PRCS_read_copy' +RCSDIR = '/tmp/PRCS_read_copy/prcs' +SAMPLEDIR = "/tmp/WESNOTH_tmp/tar" -RCSDIR = 'G:/jmacd/PRCS/prcs/b' - -SAMPLEDIR = "C:/sample_data/Wesnoth/tar" +#RCSDIR = 'G:/jmacd/PRCS/prcs/b' +#SAMPLEDIR = "C:/sample_data/Wesnoth/tar" TMPDIR = '/tmp/xd3regtest.%d' % os.getpid() @@ -121,19 +138,6 @@ RE_DATE = re.compile('date: ([^;]+);.*') RE_HDRSZ = re.compile('VCDIFF header size: +(\\d+)') RE_EXTCOMP = re.compile('XDELTA ext comp.*') -# Testwide defaults -testwide_encode_args = [ - - # secondary compression on or off - #'-S', 'djw', - - # do not measure instruction buffer effects - '-I', '0', - - # do not attempt external decompression - '-D' - ] - def c2s(c): return ' '.join(['%02d' % x for x in c]) #end @@ -342,9 +346,9 @@ class Xdelta3Runner: #end def Encode(self, target, source, output): - args = (testwide_encode_args + + args = (ALL_ARGS + self.extra + - ['-eqf']) + ['-e']) if source: args.append('-s') args.append(source) @@ -354,7 +358,8 @@ class Xdelta3Runner: #end def Decode(self, input, source, output): - args = ['-dqf'] + args = (ALL_ARGS + + ['-d']) if source: args.append('-s') args.append(source) diff --git a/xdelta3/xdelta3.c b/xdelta3/xdelta3.c index 7042903..b6ac778 100644 --- a/xdelta3/xdelta3.c +++ b/xdelta3/xdelta3.c @@ -101,18 +101,7 @@ the parameters of the source window must be decided: the offset into the source and the length of the window. Since the IOPT buffer is finite, the program may be forced to fix these values before knowing - the best offset/length. XD3_DEFAULT_SRCBACK limits the length, but a - smaller length is preferred because all target copies are addressed - after source copies in the VCDIFF address space. Picking too large a - source window means larger address encoding. - - If the IOPT buffer is filling easily, perhaps the target window is - too large. In any case, a decision is made (though an alternative is - to emit the sub-window right away, to reduce the winsize - automatically - not implemented, another alternative is to grow the - IOPT buffer, it is after all bounded in size by winsize.) - - The algorithm is in xd3_srcwin_setup. + the best offset/length. 5. SECONDARY COMPRESSION. VCDIFF supports a secondary encoding to be applied to the individual sections of the data format, which are @@ -126,9 +115,9 @@ case of a semi-adaptive scheme published by D.J. Wheeler and first widely used in bzip2 (by Julian Seward). This is a very interesting algorithm, originally published in nearly cryptic form - by D.J. Wheeler. !!!NOTE!!! Because these are not standardized, the - -S option (no secondary compression) remains on by default. - ftp://ftp.cl.cam.ac.uk/users/djw3/bred3.{c,ps} + by D.J. Wheeler. !!!NOTE!!! Because these are not standardized, + secondary compression remains off by default. + ftp://ftp.cl.cam.ac.uk/users/djw3/bred3.{c,ps} -------------------------------------------------------------------- Other Features @@ -3543,8 +3532,6 @@ xd3_encode_init (xd3_stream *stream) /* Memory allocations for checksum tables are delayed until xd3_string_match_init in the * first call to string_match--that way identical or short inputs require no table * allocation. */ - - /* TODO: need to experiment w/ XD3_DEFAULT_SPREVSZ and large has functions */ if (large_comp) { usize_t hash_values = (stream->srcwin_maxsz / stream->smatcher.large_step); @@ -3556,8 +3543,7 @@ xd3_encode_init (xd3_stream *stream) if (small_comp) { - /* Hard-coded, keeps table small because small matches become inefficient. */ - usize_t hash_values = min(stream->winsize, XD3_DEFAULT_SPREVSZ); + usize_t hash_values = min(stream->winsize, stream->sprevsz); xd3_size_hashtable (stream, hash_values, diff --git a/xdelta3/xdelta3.h b/xdelta3/xdelta3.h index b4c0a4e..6204d3f 100644 --- a/xdelta3/xdelta3.h +++ b/xdelta3/xdelta3.h @@ -35,7 +35,7 @@ * automatically buffer the input, otherwise the input buffer is used directly. */ #ifndef XD3_DEFAULT_WINSIZE -#define XD3_DEFAULT_WINSIZE (1U << 18) +#define XD3_DEFAULT_WINSIZE (1U << 23) #endif /* Default total size of the source window used in xdelta3-main.h */ @@ -53,7 +53,7 @@ * malicious files. The decoder will never decode a window larger than this. If the file * specifies VCD_TARGET the decoder may require two buffers of this size. * - * 8-16MB is reasonable, probably don't need to go larger. + * 8-16MB is reasonable, probably don't need to go larger. */ #ifndef XD3_HARDMAXWINSIZE #define XD3_HARDMAXWINSIZE (1U<<24) #endif @@ -76,7 +76,7 @@ /* The maximum distance backward to search for small matches */ #ifndef XD3_DEFAULT_SPREVSZ -#define XD3_DEFAULT_SPREVSZ (1U << 16) +#define XD3_DEFAULT_SPREVSZ (1U<<18) #endif /* The default compression level diff --git a/xdelta3/xdelta3.prj b/xdelta3/xdelta3.prj index 52ad972..10c9f77 100644 --- a/xdelta3/xdelta3.prj +++ b/xdelta3/xdelta3.prj @@ -1,52 +1,51 @@ ;; -*- Prcs -*- (Created-By-Prcs-Version 1 3 4) (Project-Description "") -(Project-Version xdelta3 0 18) -(Parent-Version xdelta3 0 17) -(Version-Log "release 3.0o final") +(Project-Version xdelta3 0 19) +(Parent-Version xdelta3 0 18) +(Version-Log "pre-3.0p") (New-Version-Log "") -(Checkin-Time "Wed, 07 Feb 2007 18:59:06 -0800") +(Checkin-Time "Sat, 17 Feb 2007 04:08:43 -0800") (Checkin-Login jmacd) -(Populate-Ignore ()) +(Populate-Ignore ("\\.svn")) (Project-Keywords (Xdelta3Version "0o") ) (Files - (COPYING (xdelta3/b/29_COPYING 1.1 644)) + (COPYING (xdelta3/b/29_COPYING 1.1 744)) (xdelta3-cfgs.h (xdelta3/9_xdelta3-cf 1.5 744)) (xdelta3-decode.h (xdelta3/b/30_xdelta3-de 1.5 744)) - (xdelta3-djw.h (xdelta3/8_xdelta3-dj 1.5 744)) + (xdelta3-djw.h (xdelta3/8_xdelta3-dj 1.6 744)) (xdelta3-fgk.h (xdelta3/7_xdelta3-fg 1.3 744)) - (xdelta3-list.h (xdelta3/6_xdelta3-li 1.3 644)) - (xdelta3-main.h (xdelta3/5_xdelta3-ma 1.11 744)) - (xdelta3-python.h (xdelta3/4_xdelta3-py 1.4 744)) - (xdelta3-regtest.py (xdelta3/10_xdelta3-re 1.10 744)) + (xdelta3-list.h (xdelta3/6_xdelta3-li 1.3 744)) + (xdelta3-main.h (xdelta3/5_xdelta3-ma 1.12 744)) + (xdelta3-python.h (xdelta3/4_xdelta3-py 1.5 744)) + (xdelta3-regtest.py (xdelta3/10_xdelta3-re 1.11 744)) (xdelta3-second.h (xdelta3/3_xdelta3-se 1.4 744)) (xdelta3-test.h (xdelta3/2_xdelta3-te 1.10 744)) - (xdelta3.c (xdelta3/16_xdelta3.c 1.10 744)) - (xdelta3.h (xdelta3/1_xdelta3.h 1.8 744)) + (xdelta3.c (xdelta3/16_xdelta3.c 1.11 744)) + (xdelta3.h (xdelta3/1_xdelta3.h 1.9 744)) - (Makefile (xdelta3/0_Makefile 1.9 744)) - (setup.py (xdelta3/11_setup.py 1.4 744)) + (Makefile (xdelta3/0_Makefile 1.10 744)) + (setup.py (xdelta3/11_setup.py 1.5 744)) - (draft-korn-vcdiff.txt (xdelta3/b/22_draft-korn 1.1 644)) + (draft-korn-vcdiff.txt (xdelta3/b/22_draft-korn 1.1 744)) (badcopy.c (xdelta3/20_badcopy.c 1.2 744)) (linkxd3lib.c (xdelta3/19_linkxd3lib 1.3 744)) - (rcs_junk.cc (xdelta3/15_rcs_junk.c 1.1 644)) + (rcs_junk.cc (xdelta3/15_rcs_junk.c 1.1 744)) (README (xdelta3/b/31_README 1.1 744)) (badcopy.vcproj (xdelta3/b/32_badcopy.vc 1.1 744)) (xdelta3.vcproj (xdelta3/b/33_xdelta3.vc 1.2 744)) - (xdelta3.swig (xdelta3/b/27_xdelta3.sw 1.2 744)) + (xdelta3.swig (xdelta3/b/27_xdelta3.sw 1.3 744)) + (xdelta3-test.py (xdelta3/b/28_xdelta3-te 1.3 744)) -;; Files added by populate at Wed, 07 Feb 2007 13:33:45 -0800, -;; to version 0.14(w), by jmacd: - - (xdelta3-test.py (xdelta3/b/28_xdelta3-te 1.2 744)) + (examples/Makefile (xdelta3/b/34_Makefile 1.1 744)) + (examples/small_page_test.c (xdelta3/b/35_small_page 1.1 744)) ) (Merge-Parents) (New-Merge-Parents) -- cgit v1.2.3