toolkit/mozapps/update/updater/bspatch.h

Wed, 31 Dec 2014 06:09:35 +0100

author
Michael Schloh von Bennewitz <michael@schloh.com>
date
Wed, 31 Dec 2014 06:09:35 +0100
changeset 0
6474c204b198
permissions
-rw-r--r--

Cloned upstream origin tor-browser at tor-browser-31.3.0esr-4.5-1-build1
revision ID fc1c9ff7c1b2defdbc039f12214767608f46423f for hacking purpose.

     1 /*-
     2  * Copyright 2003,2004 Colin Percival
     3  * All rights reserved
     4  *
     5  * Redistribution and use in source and binary forms, with or without
     6  * modification, are permitted providing that the following conditions
     7  * are met:
     8  * 1. Redistributions of source code must retain the above copyright
     9  *    notice, this list of conditions and the following disclaimer.
    10  * 2. Redistributions in binary form must reproduce the above copyright
    11  *    notice, this list of conditions and the following disclaimer in the
    12  *    documentation and/or other materials provided with the distribution.
    13  *
    14  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR
    15  * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
    16  * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
    17  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY
    18  * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
    19  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
    20  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
    21  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT,
    22  * STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING
    23  * IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
    24  * POSSIBILITY OF SUCH DAMAGE.
    25  *
    26  * Changelog:
    27  * 2005-04-26 - Define the header as a C structure, add a CRC32 checksum to
    28  *              the header, and make all the types 32-bit.
    29  *                --Benjamin Smedberg <benjamin@smedbergs.us>
    30  */
    32 #ifndef bspatch_h__
    33 #define bspatch_h__
    35 #include <stdint.h>
    36 #include <stdio.h>
    38 typedef struct MBSPatchHeader_ {
    39   /* "MBDIFF10" */
    40   char tag[8];
    42   /* Length of the file to be patched */
    43   uint32_t slen;
    45   /* CRC32 of the file to be patched */
    46   uint32_t scrc32;
    48   /* Length of the result file */
    49   uint32_t dlen;
    51   /* Length of the control block in bytes */
    52   uint32_t cblen;
    54   /* Length of the diff block in bytes */
    55   uint32_t difflen;
    57   /* Length of the extra block in bytes */
    58   uint32_t extralen;
    60   /* Control block (MBSPatchTriple[]) */
    61   /* Diff block (binary data) */
    62   /* Extra block (binary data) */
    63 } MBSPatchHeader;
    65 /**
    66  * Read the header of a patch file into the MBSPatchHeader structure.
    67  *
    68  * @param fd Must have been opened for reading, and be at the beginning
    69  *           of the file.
    70  */
    71 int MBS_ReadHeader(FILE* file, MBSPatchHeader *header);
    73 /**
    74  * Apply a patch. This method does not validate the checksum of the original
    75  * file: client code should validate the checksum before calling this method.
    76  *
    77  * @param patchfd Must have been processed by MBS_ReadHeader
    78  * @param fbuffer The original file read into a memory buffer of length
    79  *                header->slen.
    80  * @param filefd  Must have been opened for writing. Should be truncated
    81  *                to header->dlen if it is an existing file. The offset
    82  *                should be at the beginning of the file.
    83  */
    84 int MBS_ApplyPatch(const MBSPatchHeader *header, FILE* patchFile,
    85                    unsigned char *fbuffer, FILE* file);
    87 typedef struct MBSPatchTriple_ {
    88   uint32_t x; /* add x bytes from oldfile to x bytes from the diff block */
    89   uint32_t y; /* copy y bytes from the extra block */
    90   int32_t  z; /* seek forwards in oldfile by z bytes */
    91 } MBSPatchTriple;
    93 #endif  // bspatch_h__

mercurial