Linux SoftwareProgrammingLibrariesLibXDiff 0.22

LibXDiff 0.22


LibXDiff implements basic and yet complete functionalities to create file differences/patches to both binary and text files. The l
Developer:   Davide Libenzi
      more software by author →
Price:  0.00
License:   GPL (GNU General Public License)
File size:   397K
Language:   
OS:   
Rating:   0 /5 (0 votes)
Your vote:  
enlarge screenshot


LibXDiff implements basic and yet complete functionalities to create file differences/patches to both binary and text files.

The library uses memory files as file abstraction to achieve both performance and portability. For binary files, LibXDiff implements (with some modification) the algorithm described in File System Support for Delta Compression by Joshua P. MacDonald, while for text files it follows directives described in An O(ND) Difference Algorithm and Its Variations by Eugene W. Myers.

Memory files used by the library are basically a collection of buffers that store the file content. There are two different requirements for memory files when passed to diff/patch functions. Text files for diff/patch functions require that a single line do not have to spawn across two different memory file blocks.

Binary diff/patch functions require memory files to be compact. A compact memory files is a file whose content is stored inside a single block. Functionalities inside the library are available to satisfy these rules. Using the XDL_MMF_ATOMIC memory file flag it is possible to make writes to not split the written record across different blocks, while the functions xdl_mmfile_iscompact() , xdl_mmfile_compact() and xdl_mmfile_writeallocate() are usefull to test if the file is compact and to create a compacted version of the file itself.

The text file differential output uses the raw unified output format, by omitting the file header since the result is always relative to a single compare operation (between two files). The output format of the binary patch file is proprietary (and binary) and it is basically a collection of copy and insert commands, like described inside the MacDonald paper.

The library is compatible with almost every Unix implementation (configure script) and it is also compatible with Windows through custom (nmake) make files. Examples are available inside the test subdirectory of the distribution tarball that show how to use the library.

Also, inside the same subdirectory, a regression test in available that tests the library with random data by requiring a diff followed by a patch and comparing results. Regression tests ran successfully for days on my Linux, Solaris, FreeBSD and Windows boxes, and this makes me believe that the library itself is completely ready for production (despite the version number).

What's New in This Release:
  • A bug in indexing on 64-bit machines was fixed.
    tags the library  memory files  inside the  the file  xdl mmfile  patch functions  diff patch  text files  are available  binary and  output format  compatible with  compact and  

    Download LibXDiff 0.22


     http://www.xmailserver.org/libxdiff-0.22.tar.gz


    Authors software

    Portable Coroutine Library 1.6 (by Davide Libenzi)
    Portable Coroutine Library (PCL) implements the low level functionality for coroutines

    LibXDiff 0.22 (by Davide Libenzi)
    LibXDiff implements basic and yet complete functionalities to create file differences/patches to both binary and text files.

    The l

    LibSysCTr 0.2 (by Davide Libenzi)
    LibSysCTr is a utility library that can be used to intercept system call functions on a Linux system

    ussp-push 0.9 (by Davide Libenzi)
    ussp-push application is a OBEX object pusher for Linux, using the BlueZ BlueTooth stack

    XMail 1.23 (by Davide Libenzi)
    XMail is an Internet and intranet mail server featuring an SMTP server, POP3 server, finger server, multiple domains, no need for use


    Similar software

    LibXDiff 0.22 (by Davide Libenzi)
    LibXDiff implements basic and yet complete functionalities to create file differences/patches to both binary and text files.

    The l

    HiM 0.9.3 (by Walery Studennikov)
    HiM (Hierarchical Marshalling Library) is an attempt to implement a small and efficient library for working with hierarchical data st

    GNU Diffutils 2.8.1 (by GNU Diffutils Team)
    Computer users often find occasion to ask how two files differ

    Submerge 0.14.1 (by CollabNet)
    Submerge project is subcommanders visual diff and merge tool for text files.

    Here are some key features of "Submerge":
    · line bas

    psArchive 0.1.2 (by Valeriu Palos)
    psArchive is a PHP 5 extension designed to provide an easy to use interface for manipulating all the most common archive files used i

    dds2tar 2.5.2 (by Christof Meerwald)
    dds2tar is a tool makes use of the fast seek command of DAT devices.

    Files from a selected file archive can be extracted within on

    Xfdiff 4.5.0 (by Ed Scott)
    Xfdiff project is graphic interface to the GNU diff and patch commands

    XML::Diff 0.04 (by Arne Claassen)
    XML::Diff is a Perl module for XML DOM-Tree based Diff & Patch Module.

    SYNOPSIS

    my $diff = XML::Diff->new();

    # to genera

    XML::Code 0.04 (by Arne Claassen)
    XML::Diff is a Perl module for XML DOM-Tree based Diff & Patch Module.

    SYNOPSIS

    my $diff = XML::Diff->new();

    # to genera

    patch 2.5.4 (by Larry Wall and Paul Eggert)
    patch takes a patch file containing a difference listing produced by the diff program and applies those differences to one or more or


    Other software in this category

    zlib 1.2.3 (by Jean-loup Gailly)
    zlib is designed to be a free, general-purpose, legally unencumbered, lossless data-compression library for use on virtually any comp

    libjpeg v6b (by Independent JPEG Group)
    libjpeg is a library for handling the JPEG (JFIF) image format

    OpenSSL 0.9.7c (by The OpenSSL Project Team)
    The OpenSSL Project is a collaborative effort to develop a robust, commercial-grade, full-featured, and Open Source toolkit implement

    libxml2 2.6.27 (by DV)
    Libxml2 is the XML C parser and toolkit developed for the Gnome project (but usable outside of the Gnome platform), libxml2 library i

    GNU C library 2.4 (by Andreas Jaeger)
    GNU C library (glibc) is one of the most important components of GNU Hurd and most modern Linux distributions.

    GNU C library is us

  •     search


    Featured Software

    jEdit 4.3 pre8
    jEdit is an Open Source text editor written in Java

    Opera 9.02
    Surf the Internet in a safer, faster, and easier way with Opera browser

    GNU Aspell 0.60.4
    GNU Aspell is a Free and Open Source spell checker designed to eventually replace Ispell


    Subscribe in Rojo
    Google Reader
    Add to My Yahoo!

    Add to My AOL
    Subscribe with Bloglines
    Subscribe in NewsGator Online
    Add 'nixbit linux software' to Newsburst from CNET News.com
    del.icio.us nixbit linux software


    Top tags