Software patch generator
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.
7 Assignments
0 Petitions
Accused Products
Abstract
A 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. The old version of data is sorted with a data processor alphabetically according to an established alphabet to create a first sorted list of data. A pointer is maintained in order to indicate each element'"'"'s original location in the old version. Similarly, the new version of data is sorted alphabetically to create a second sorted list of data with a pointer of each element to indicate the element'"'"'s original location in the new version. Once the two sorted lists are created, they are recursively compared one word (a group of elements) at a time to search for a match of data. Upon finding a match of data, the first and second sorted lists are searched to find the largest sequence of coinciding elements preceding and succeeding the match of data. Each sequence of coinciding words is then stored in a coincidences list. The coincidences list is processed to remove duplicative information and a patch file is created. 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.
-
Citations
20 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)
-
- 14. A method of creating one or more patch files and aggregating the patch files into a secure, portable compressed archive for distribution.
-
19. A system for managing and manipulating patch files comprising:
a program for compressing, extracting, encrypting and decrypting patch files into a secure, portable compressed archive. - View Dependent Claims (20)
Specification