Claims
- 1. A system for updating electronic files comprising at least one processor-based device hosting a module information extractor, the module information extractor:
receiving byte streams including an original byte stream and a new byte stream, wherein each of the original and new byte streams include at least one module; generating a new map file, new hex file, new binary file, and new device memory map (DMM) associated with the new byte stream; reading module information of the modules of the new byte stream using information of the new map file and the new hex file; comparing the new DMM with an original DMM using the module information, wherein the original DMM corresponds to the original byte stream; identifying inserted and deleted modules of the new byte stream in response to the DMM comparison, the inserted modules being present in the new byte stream and absent from the original byte stream and the deleted modules being absent from the new byte stream and present in the original byte stream; identifying remaining modules in which the contents remain the same as corresponding modules of the original byte stream, wherein the remaining modules are any modules of the new byte stream not identified as inserted modules; and generating difference information representative of the inserted modules, deleted modules, and remaining modules in which the contents remain the same.
- 2. The system of claim 1, wherein identifying remaining modules in which the contents remain the same further comprises:
comparing sizes of remaining modules of the new byte stream with corresponding modules of the original byte stream; and selecting remaining modules on which to apply file differencing in response to information of the size comparison.
- 3. The system of claim 2, wherein selecting remaining modules on which to apply file differencing further comprises applying file differencing to module contents of the remaining modules of the new byte stream for which the size comparison indicates a difference in size.
- 4. The system of claim 2, wherein selecting remaining modules on which to apply file differencing further comprises:
comparing module contents of the remaining modules of the new byte stream with module contents of the corresponding modules when the size comparison indicates corresponding modules of the new and original byte streams are of the same size; and applying file differencing on modules of the new byte stream for which the content comparison indicates a difference in content from the corresponding modules of the original byte stream.
- 5. The system of claim 2, further comprising a file differencing algorithm coupled to receive and apply byte-level file differencing to the selected remaining modules.
- 6. The system of claim 1, wherein identifying inserted and deleted modules of the new byte stream further comprises identifying address ranges of the identified inserted and deleted modules by comparing the new binary file with the new DMM.
- 7. The system of claim 1, further comprising a database coupled to receive the new map file, the new hex file, the new binary file, the new DMM, and the difference information from the module information extractor.
- 8. The system of claim 7, wherein the difference information is stored in a difference file.
- 9. The system of claim 1, wherein the module information includes at least one of a module name, module start address, module size, and reserved memory area size.
- 10. The system of claim 1, further comprising a map file editor for editing the module information.
- 11. The system of claim 1, wherein the original and new byte streams comprise software files including dynamic link library files, shared object files, embedded software components (EBSCs), firmware files, executable files, data files including hex data files, system configuration files, and files including personal use data.
- 12. The system of claim 1, wherein the at least one processor-based device is at least one of personal computers, portable computing devices, cellular telephones, portable communication devices, and personal digital assistants.
- 13. A system for updating electronic files, comprising:
a first device including a first component of a file differencing and updating system that generates a delta file by,
receiving files including an original file and a new file, wherein each of the original and new files includes at least one module; extracting a new map file, hex file, and device memory map (DMM) associated with the new file, and reading module information of the new file using information of the new map file and the new hex file; comparing the new DMM with an original DMM using the module information, wherein the original DMM corresponds to the original file; identifying inserted and deleted modules between the new and original files using information of the DMM comparison; identifying a first group of remaining modules in which size and contents remain the same as corresponding modules of the original file, wherein the remaining modules are any modules of the new file not identified as inserted modules; identifying a second group of remaining modules including modules having a different size and modules having a same size and different content than the corresponding modules of the original file; generating difference information representative of the inserted modules, deleted modules, and the first group of remaining modules; and generating a delta file including the difference information and information of the edit distance between corresponding modules of the second group of remaining modules and the original file; and a second device receiving the delta file from the first device via at least one coupling, the second device including a second component of the file differencing and updating system configured to update electronic files of the second device.
- 14. The system of claim 13, wherein the first device is a processor-based device accessible by at least one provider of software running on the second device.
- 15. The system of claim 13, wherein the second device is at least one of personal computers, portable computing devices, cellular telephones, portable communication devices, and personal digital assistants.
- 16. The system of claim 13, wherein the at least one coupling is selected from among wireless connections, wired connections, hybrid wireless/wired connections, and couplings to networks including local area networks (LANs), metropolitan area networks (MANs), wide area networks (WANs), proprietary networks, backend networks, the Internet, and removable fixed mediums including floppy disks, hard disk drives, and CD-ROM disks, as well as telephone lines, buses, and electronic mail messages.
- 17. A method for determining differences between electronic files, comprising:
receiving byte streams including an original byte stream and a new byte stream, wherein each of the original and new byte streams include at least one module; generating a new map file, new hex file, new binary file, and new device memory map (DMM) associated with the new byte stream; reading module information of the modules of the new byte stream using information of the new map file and the new hex file; comparing the new DMM with an original DMM using the module information, wherein the original DMM corresponds to the original byte stream; identifying inserted and deleted modules of the new byte stream in response to the DMM comparison, the inserted modules being present in the new byte stream and absent from the original byte stream and the deleted modules being absent from the new byte stream and present in the original byte stream; identifying remaining modules in which the contents remain the same as corresponding modules of the original byte stream, wherein the remaining modules are any modules of the new byte stream not identified as inserted modules; and generating difference information representative of the inserted modules, deleted modules, and remaining modules in which the contents remain the same.
- 18. The method of claim 17, wherein identifying remaining modules in which the contents remain the same further comprises:
comparing sizes of remaining modules of the new byte stream with corresponding modules of the original byte stream; and selecting remaining modules on which to apply file differencing in response to information of the size comparison.
- 19. The method of claim 18, wherein selecting remaining modules on which to apply file differencing further comprises applying file differencing to module contents of the remaining modules of the new byte stream for which the size comparison indicates a difference in size.
- 20. The method of claim 18, wherein selecting remaining modules on which to apply file differencing further comprises:
comparing module contents of the remaining modules of the new byte stream with module contents of the corresponding modules when the size comparison indicates corresponding modules of the new and original byte streams are of the same size; and applying file differencing on modules of the new byte stream for which the content comparison indicates a difference in content from the corresponding modules of the original byte stream.
- 21. The method of claim 18, wherein the file differencing is byte-level file differencing.
- 22. The method of claim 17, wherein identifying inserted and deleted modules of the new byte stream further comprises identifying address ranges of the identified inserted and deleted modules by comparing the new binary file with the new DMM.
- 23. The method of claim 17, further comprising writing the difference information to a memory area.
- 24. The method of claim 17, further comprising writing the difference information to a difference file.
- 25. The method of claim 17, further comprising:
coding the difference information; and writing the coded difference information to a difference file.
- 26. The method of claim 17, wherein the new DMM is generated from the new map file.
- 27. The method of claim 17, wherein the module information includes at least one of a module name, module start address, module size, and reserved memory area size.
- 28. The method of claim 17, further comprising editing the module information.
- 29. A method for generating a difference file between electronic files, comprising:
receiving files including an original file and a new file, wherein each of the original and new files includes at least one module; extracting a new map file, hex file, and device memory map (DMM) associated with the new file; reading module information of the new file using information of the new map file and the new hex file; comparing the new DMM with an original DMM using the module information, wherein the original DMM corresponds to the original file; identifying inserted and deleted modules between the new and original files using information of the DMM comparison; identifying a first group of remaining modules in which size and contents remain the same as corresponding modules of the original file, wherein the remaining modules are any modules of the new file not identified as inserted modules; identifying a second group of remaining modules including modules having a different size and modules having a same size and different content than the corresponding modules of the original file; generating difference information representative of the inserted modules, deleted modules, and the first group of remaining modules; and generating a delta file including the difference information and information of the edit distance between corresponding modules of the second group of remaining modules and the original file.
- 30. An apparatus, comprising:
means for receiving byte streams including an original byte stream and a new byte stream, wherein each of the original and new byte streams include at least one module; means for generating a new map file, new hex file, new binary file, and new device memory map (DMM) associated with the new byte stream; means for reading module information of the modules of the new byte stream using information of the new map file and the new hex file; means for comparing the new DMM with an original DMM using the module information, wherein the original DMM corresponds to the original byte stream; means for identifying inserted and deleted modules of the new byte stream in response to the DMM comparison, the inserted modules being present in the new byte stream and absent from the original byte stream and the deleted modules being absent from the new byte stream and present in the original byte stream; means for identifying remaining modules in which the contents remain the same as corresponding modules of the original byte stream, wherein the remaining modules are any modules of the new byte stream not identified as inserted modules; and means for generating difference information representative of the inserted modules, deleted modules, and remaining modules in which the contents remain the same.
- 31. A computer readable medium including executable instructions which, when executed in a processing system, performs differencing between electronic files, comprising:
receiving byte streams including an original byte stream and a new byte stream, wherein each of the original and new byte streams include at least one module; generating a new map file, new hex file, new binary file, and new device memory map (DMM) associated with the new byte stream; reading module information of the modules of the new byte stream using information of the new map file and the new hex file; comparing the new DMM with an original DMM using the module information, wherein the original DMM corresponds to the original byte stream; identifying inserted and deleted modules of the new byte stream in response to the DMM comparison, the inserted modules being present in the new byte stream and absent from the original byte stream and the deleted modules being absent from the new byte stream and present in the original byte stream; identifying remaining modules in which the contents remain the same as corresponding modules of the original byte stream, wherein the remaining modules are any modules of the new byte stream not identified as inserted modules; and generating difference information representative of the inserted modules, deleted modules, and remaining modules in which the contents remain the same.
RELATED APPLICATIONS
[0001] This application is related to the application titled BYTE-LEVEL FILE DIFFERENCING AND UPDATING ALGORITHMS, application Ser. No. 10/146,545, filed May 13, 2002, the application titled UPDATING ELECTRONIC FILES USING BYTE-LEVEL FILE DIFFERENCING AND UPDATING ALGORITHMS, application Ser. No. 10/261,153, filed Sep. 30, 2002, the application titled UPGRADING OF ELECTRONIC FILES INCLUDING AUTOMATIC RECOVERY FROM FAILURES AND ERRORS OCCURRING DURING THE UPGRADE, Attorney Docket No. DOGO.P005 (application Ser. No. not yet assigned), filed Nov. 12, 2002, the application titled DEVICE MEMORY MANAGEMENT DURING ELECTRONIC FILE UPDATING, Attorney Docket No. DOGO.P003 (application Ser. No. not yet assigned), filed Nov. 18, 2002, the application titled CONTROLLING UPDATES OF ELECTRONIC FILES, Attorney Docket No. DOGO.P006 (application Ser. No. not yet assigned), filed Nov. 18, 2002, the application titled SCHEDULING UPDATES OF ELECTRONIC FILES, Attorney Docket No. DOGO.P007 (application Ser. No. not yet assigned), filed Nov. 18, 2002, and the application titled MANAGING ELECTRONIC FILE UPDATES ON CLIENT DEVICES, Attorney Docket No. DOGO.P008 (application Ser. No. not yet assigned), filed Nov. 18, 2002, all of which are currently pending.