Software patch generator using compression techniques
First Claim
1. A method of generating a patch file from an old version of data consisting of a series of elements and a new version of data consisting of a series of elements where both the old and new versions of data are stored in a memory and accessible by a data processor, the method comprising the steps of:
- establishing an alphabet comprising a plurality of letters for processing the old and new versions of data wherein a word consists of a series of elements represented by one or more letters of the alphabet;
sorting the old version of data with the data processor alphabetically according to the established alphabet to create a first sorted list of words and maintaining a pointer for each element of the first sorted list of words indicating the element'"'"'s original location in the old version of data;
sorting the new version of data with the data processor alphabetically according to the established alphabet to create a second sorted list of words and maintaining a pointer for each element of the second sorted list of words indicating the element'"'"'s original location in the new version of data;
recursively comparing the first and second sorted lists of words one word at a time for a match of the words;
upon finding a match of the words, searching the first and second sorted lists of words again to find the largest sequence of coinciding elements preceding and succeeding the match of words;
storing the largest sequence of coinciding elements in a coincidences list;
processing the coincidences list to remove duplicative coincidences, creating a refined list of coincidences;
sorting the refined list of coincidences by pointer in the new version data, creating a sorted list of coincidences;
adding the pointer of each coincidence in the new version data to the largest sequence of coinciding elements, creating an end block list;
creating a patch file from the sorted coincidences list and the end block list; and
compressing the patch file into a secure, portable compressed archive for distribution.
5 Assignments
0 Petitions
Accused Products
Abstract
A method and system for generating a patch file from an old version of data which consists of a series of elements and a new version of data which also consists of a series of elements. Several patch files may then be aggregated into a secure, portable compressed archive to decrease the storage and transfer requirements of the patch file. The compressed archive uses an encryption process and may include an authentication process using digital signatures to secure the contents of the patch file from unauthorized access and to validate the identity of the creator of the archive. The archive is preferably in the format of a self-extracting .ZIP file, which file may include a rules-based form of intelligence to detect the presence of the appropriate files to be patched and to determine how the patching process should proceed.
67 Citations
13 Claims
-
1. A method of generating a patch file from an old version of data consisting of a series of elements and a new version of data consisting of a series of elements where both the old and new versions of data are stored in a memory and accessible by a data processor, the method comprising the steps of:
-
establishing an alphabet comprising a plurality of letters for processing the old and new versions of data wherein a word consists of a series of elements represented by one or more letters of the alphabet;
sorting the old version of data with the data processor alphabetically according to the established alphabet to create a first sorted list of words and maintaining a pointer for each element of the first sorted list of words indicating the element'"'"'s original location in the old version of data;
sorting the new version of data with the data processor alphabetically according to the established alphabet to create a second sorted list of words and maintaining a pointer for each element of the second sorted list of words indicating the element'"'"'s original location in the new version of data;
recursively comparing the first and second sorted lists of words one word at a time for a match of the words;
upon finding a match of the words, searching the first and second sorted lists of words again to find the largest sequence of coinciding elements preceding and succeeding the match of words;
storing the largest sequence of coinciding elements in a coincidences list;
processing the coincidences list to remove duplicative coincidences, creating a refined list of coincidences;
sorting the refined list of coincidences by pointer in the new version data, creating a sorted list of coincidences;
adding the pointer of each coincidence in the new version data to the largest sequence of coinciding elements, creating an end block list;
creating a patch file from the sorted coincidences list and the end block list; and
compressing the patch file into a secure, portable compressed archive for distribution. - View Dependent Claims (2, 3, 4, 5, 6, 7)
-
-
8. A system for generating a patch file from an old version of data consisting of a series of elements and a new version of data consisting of a series of elements, the system comprising:
-
a data processor;
a memory storing the old and new versions of data;
means for sorting the old version of data with the data processor alphabetically according to an established alphabet to create a first sorted list of data and for maintaining a pointer for each element of the first sorted list of data indicating the element'"'"'s original location in the old version of data;
means for sorting the new version of data with the data processor alphabetically according to an established alphabet to create a second sorted list of data and for maintaining a pointer for each element of the second sorted list of data indicating the element'"'"'s original location in the new version of data;
means for searching the first and second sorted lists of data to find a match of data;
means for storing the match of data as a sequence of coinciding elements in a coincidences list;
upon finding a match of data, means for searching the first and second sorted lists of data again to find the largest sequence of coinciding elements preceding and succeeding the match of data;
means for storing the largest sequence of coinciding elements in the coincidences list;
means for processing the coincidences list to remove duplicative coincidences, creating a refined list of coincidences;
means for sorting the refined list of coincidences by pointer in the new version of data, creating a sorted list of coincidences;
means for adding the pointer of each coincidence in the new version of data to the largest sequence of coinciding elements, creating an end block list;
means for creating a patch file from the sorted coincidences list and end block list; and
means for compressing the patch file into a secure, portable compressed archive for distribution. - View Dependent Claims (9, 10, 11, 12, 13)
-
Specification