prophecy 0.0.1 → 0.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/README.md +2 -2
- data/bin/epubcheck +7 -0
- data/bin/kindlegen +1 -2
- data/bin/kindlestrip.py +237 -0
- data/bin/zip.exe +0 -0
- data/docs/licenses/epubcheck/COPYING.txt +19 -0
- data/docs/licenses/epubcheck/README.txt +61 -0
- data/docs/licenses/epubcheck/jing_license.txt +12 -0
- data/docs/licenses/zip/Contents +36 -0
- data/docs/licenses/zip/LICENSE +60 -0
- data/docs/licenses/zip/README +234 -0
- data/docs/licenses/zip/README.CR +119 -0
- data/docs/licenses/zip/WHATSNEW +333 -0
- data/docs/licenses/zip/WHERE +266 -0
- data/docs/licenses/zip/zip.txt +2027 -0
- data/docs/licenses/zip/zip30.ann +95 -0
- data/epubcheck_dir/epubcheck.jar +0 -0
- data/epubcheck_dir/lib/jing.jar +0 -0
- data/epubcheck_dir/lib/saxon.jar +0 -0
- data/lib/prophecy/cli.rb +70 -9
- data/lib/prophecy/version.rb +1 -1
- metadata +21 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 9959daf03e7c4d2814dd1215b4a6d21285ad6d98
|
4
|
+
data.tar.gz: f65277ead6d4ca1004e62a0ec8802f9c97f09ced
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 6af98cf06de73ec0b857aae7e5a8b44702389b014583806383817bd79176cd56d1cb726ed0331197f8bda7eddc97c5a96dbcc5ddb9fec3fb570d33251eed4618
|
7
|
+
data.tar.gz: 0bff05d7c38f97b8751454c6368818c4c564897c5766472935e65280ec44f96a957121d7cb5de0f2282798eca321050dee4fa5ccde431d6fa275328e7c3e64ea
|
data/README.md
CHANGED
data/bin/epubcheck
ADDED
data/bin/kindlegen
CHANGED
@@ -6,7 +6,6 @@ book_mobi = ARGV.shift
|
|
6
6
|
if RUBY_PLATFORM =~ /linux|cygwin/
|
7
7
|
executable = 'kindlegen_linux'
|
8
8
|
elsif RUBY_PLATFORM =~ /darwin/
|
9
|
-
puts "its darwin"
|
10
9
|
executable = 'kindlegen_mac'
|
11
10
|
elsif RUBY_PLATFORM =~ /mingw|mswin32/
|
12
11
|
executable = 'kindlegen.exe'
|
@@ -15,4 +14,4 @@ else
|
|
15
14
|
end
|
16
15
|
|
17
16
|
executable = File.join(File.dirname(__FILE__), executable)
|
18
|
-
system(executable + " " + $*.join(" ") + book_mobi)
|
17
|
+
system(executable + " " + $*.join(" ") + book_mobi)
|
data/bin/kindlestrip.py
ADDED
@@ -0,0 +1,237 @@
|
|
1
|
+
#!/usr/bin/env python
|
2
|
+
# vim:fileencoding=UTF-8:ts=4:sw=4:sta:et:sts=4:ai
|
3
|
+
#
|
4
|
+
# This is a python script. You need a Python interpreter to run it.
|
5
|
+
# For example, ActiveState Python, which exists for windows.
|
6
|
+
#
|
7
|
+
# This script strips the penultimate record from a Mobipocket file.
|
8
|
+
# This is useful because the current KindleGen add a compressed copy
|
9
|
+
# of the source files used in this record, making the ebook produced
|
10
|
+
# about twice as big as it needs to be.
|
11
|
+
#
|
12
|
+
#
|
13
|
+
# This is free and unencumbered software released into the public domain.
|
14
|
+
#
|
15
|
+
# Anyone is free to copy, modify, publish, use, compile, sell, or
|
16
|
+
# distribute this software, either in source code form or as a compiled
|
17
|
+
# binary, for any purpose, commercial or non-commercial, and by any
|
18
|
+
# means.
|
19
|
+
#
|
20
|
+
# In jurisdictions that recognize copyright laws, the author or authors
|
21
|
+
# of this software dedicate any and all copyright interest in the
|
22
|
+
# software to the public domain. We make this dedication for the benefit
|
23
|
+
# of the public at large and to the detriment of our heirs and
|
24
|
+
# successors. We intend this dedication to be an overt act of
|
25
|
+
# relinquishment in perpetuity of all present and future rights to this
|
26
|
+
# software under copyright law.
|
27
|
+
#
|
28
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
29
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
30
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
31
|
+
# IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR
|
32
|
+
# OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
|
33
|
+
# ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
|
34
|
+
# OTHER DEALINGS IN THE SOFTWARE.
|
35
|
+
#
|
36
|
+
# For more information, please refer to <http://unlicense.org/>
|
37
|
+
#
|
38
|
+
# Written by Paul Durrant, 2010-2011, paul@durrant.co.uk, pdurrant on mobileread.com
|
39
|
+
# With enhancements by Kevin Hendricks, KevinH on mobileread.com
|
40
|
+
#
|
41
|
+
# Changelog
|
42
|
+
# 1.00 - Initial version
|
43
|
+
# 1.10 - Added an option to output the stripped data
|
44
|
+
# 1.20 - Added check for source files section (thanks Piquan)
|
45
|
+
# 1.30 - Added prelim Support for K8 style mobis
|
46
|
+
# 1.31 - removed the SRCS section but kept a 0 size entry for it
|
47
|
+
# 1.32 - removes the SRCS section and its entry, now updates metadata 121 if needed
|
48
|
+
# 1.33 - now uses and modifies mobiheader SRCS and CNT
|
49
|
+
# 1.34 - added credit for Kevin Hendricks
|
50
|
+
# 1.35 - fixed bug when more than one compilation (SRCS/CMET) records
|
51
|
+
|
52
|
+
__version__ = '1.35.0'
|
53
|
+
|
54
|
+
import sys
|
55
|
+
import struct
|
56
|
+
import binascii
|
57
|
+
|
58
|
+
|
59
|
+
class Unbuffered(object):
|
60
|
+
|
61
|
+
def __init__(self, stream):
|
62
|
+
self.stream = stream
|
63
|
+
|
64
|
+
def write(self, data):
|
65
|
+
self.stream.write(data)
|
66
|
+
self.stream.flush()
|
67
|
+
|
68
|
+
def __getattr__(self, attr):
|
69
|
+
return getattr(self.stream, attr)
|
70
|
+
|
71
|
+
|
72
|
+
class StripException(Exception):
|
73
|
+
pass
|
74
|
+
|
75
|
+
|
76
|
+
class SectionStripper(object):
|
77
|
+
def loadSection(self, section):
|
78
|
+
if (section + 1 == self.num_sections):
|
79
|
+
endoff = len(self.data_file)
|
80
|
+
else:
|
81
|
+
endoff = self.sections[section + 1][0]
|
82
|
+
off = self.sections[section][0]
|
83
|
+
return self.data_file[off:endoff]
|
84
|
+
|
85
|
+
def patch(self, off, new):
|
86
|
+
self.data_file = self.data_file[:off] + new + self.data_file[off + len(new):]
|
87
|
+
|
88
|
+
def strip(self, off, len):
|
89
|
+
self.data_file = self.data_file[:off] + self.data_file[off + len:]
|
90
|
+
|
91
|
+
def patchSection(self, section, new, in_off=0):
|
92
|
+
if (section + 1 == self.num_sections):
|
93
|
+
endoff = len(self.data_file)
|
94
|
+
else:
|
95
|
+
endoff = self.sections[section + 1][0]
|
96
|
+
off = self.sections[section][0]
|
97
|
+
assert off + in_off + len(new) <= endoff
|
98
|
+
self.patch(off + in_off, new)
|
99
|
+
|
100
|
+
def updateEXTH121(self, srcs_secnum, srcs_cnt, mobiheader):
|
101
|
+
mobi_length, = struct.unpack('>L', mobiheader[0x14:0x18])
|
102
|
+
exth_flag, = struct.unpack('>L', mobiheader[0x80:0x84])
|
103
|
+
exth = 'NONE'
|
104
|
+
try:
|
105
|
+
if exth_flag & 0x40:
|
106
|
+
exth = mobiheader[16 + mobi_length:]
|
107
|
+
if (len(exth) >= 4) and (exth[:4] == 'EXTH'):
|
108
|
+
nitems, = struct.unpack('>I', exth[8:12])
|
109
|
+
pos = 12
|
110
|
+
for i in xrange(nitems):
|
111
|
+
type, size = struct.unpack('>II', exth[pos: pos + 8])
|
112
|
+
# print type, size
|
113
|
+
if type == 121:
|
114
|
+
boundaryptr, = struct.unpack('>L', exth[pos + 8: pos + size])
|
115
|
+
if srcs_secnum <= boundaryptr:
|
116
|
+
boundaryptr -= srcs_cnt
|
117
|
+
prefix = mobiheader[0:16 + mobi_length + pos + 8]
|
118
|
+
suffix = mobiheader[16 + mobi_length + pos + 8 + 4:]
|
119
|
+
nval = struct.pack('>L', boundaryptr)
|
120
|
+
mobiheader = prefix + nval + suffix
|
121
|
+
pos += size
|
122
|
+
except:
|
123
|
+
pass
|
124
|
+
return mobiheader
|
125
|
+
|
126
|
+
def __init__(self, datain):
|
127
|
+
if datain[0x3C:0x3C + 8] != 'BOOKMOBI':
|
128
|
+
raise StripException("invalid file format")
|
129
|
+
self.num_sections, = struct.unpack('>H', datain[76:78])
|
130
|
+
|
131
|
+
# get mobiheader and check SRCS section number and count
|
132
|
+
offset0, = struct.unpack_from('>L', datain, 78)
|
133
|
+
offset1, = struct.unpack_from('>L', datain, 86)
|
134
|
+
mobiheader = datain[offset0:offset1]
|
135
|
+
srcs_secnum, srcs_cnt = struct.unpack_from('>2L', mobiheader, 0xe0)
|
136
|
+
if srcs_secnum == 0xffffffff or srcs_cnt == 0:
|
137
|
+
raise StripException("File doesn't contain the sources section.")
|
138
|
+
|
139
|
+
print("Found SRCS section number {0}, and count {1}".format(srcs_secnum, srcs_cnt))
|
140
|
+
# find its offset and length
|
141
|
+
next = srcs_secnum + srcs_cnt
|
142
|
+
srcs_offset, flgval = struct.unpack_from('>2L', datain, 78 + (srcs_secnum * 8))
|
143
|
+
next_offset, flgval = struct.unpack_from('>2L', datain, 78 + (next * 8))
|
144
|
+
srcs_length = next_offset - srcs_offset
|
145
|
+
if datain[srcs_offset:srcs_offset + 4] != 'SRCS':
|
146
|
+
raise StripException("SRCS section num does not point to SRCS.")
|
147
|
+
print(" beginning at offset {0} and ending at offset {1}".format(srcs_offset, srcs_length))
|
148
|
+
|
149
|
+
# it appears bytes 68-71 always contain (2*num_sections) + 1
|
150
|
+
# this is not documented anyplace at all but it appears to be some sort of next
|
151
|
+
# available unique_id used to identify specific sections in the palm db
|
152
|
+
self.data_file = datain[:68] + struct.pack('>L', ((self.num_sections - srcs_cnt) * 2 + 1))
|
153
|
+
self.data_file += datain[72:76]
|
154
|
+
|
155
|
+
# write out the number of sections reduced by srtcs_cnt
|
156
|
+
self.data_file = self.data_file + struct.pack('>H', self.num_sections - srcs_cnt)
|
157
|
+
|
158
|
+
# we are going to remove srcs_cnt SRCS sections so the offset of every entry in the table
|
159
|
+
# up to the srcs secnum must begin 8 bytes earlier per section removed (each table entry is 8 )
|
160
|
+
delta = -8 * srcs_cnt
|
161
|
+
for i in xrange(srcs_secnum):
|
162
|
+
offset, flgval = struct.unpack_from('>2L', datain, 78 + (i * 8))
|
163
|
+
offset += delta
|
164
|
+
self.data_file += struct.pack('>L', offset) + struct.pack('>L', flgval)
|
165
|
+
|
166
|
+
# for every record after the srcs_cnt SRCS records we must start it
|
167
|
+
# earlier by 8*srcs_cnt + the length of the srcs sections themselves)
|
168
|
+
delta = delta - srcs_length
|
169
|
+
for i in xrange(srcs_secnum + srcs_cnt, self.num_sections):
|
170
|
+
offset, flgval = struct.unpack_from('>2L', datain, 78 + (i * 8))
|
171
|
+
offset += delta
|
172
|
+
flgval = 2 * (i - srcs_cnt)
|
173
|
+
self.data_file += struct.pack('>L', offset) + struct.pack('>L', flgval)
|
174
|
+
|
175
|
+
# now pad it out to begin right at the first offset
|
176
|
+
# typically this is 2 bytes of nulls
|
177
|
+
first_offset, flgval = struct.unpack_from('>2L', self.data_file, 78)
|
178
|
+
self.data_file += '\0' * (first_offset - len(self.data_file))
|
179
|
+
|
180
|
+
# now finally add on every thing up to the original src_offset
|
181
|
+
self.data_file += datain[offset0:srcs_offset]
|
182
|
+
|
183
|
+
# and everything afterwards
|
184
|
+
self.data_file += datain[srcs_offset + srcs_length:]
|
185
|
+
|
186
|
+
#store away the SRCS section in case the user wants it output
|
187
|
+
self.stripped_data_header = datain[srcs_offset:srcs_offset + 16]
|
188
|
+
self.stripped_data = datain[srcs_offset + 16:srcs_offset + srcs_length]
|
189
|
+
|
190
|
+
# update the number of sections count
|
191
|
+
self.num_section = self.num_sections - srcs_cnt
|
192
|
+
|
193
|
+
# update the srcs_secnum and srcs_cnt in the mobiheader
|
194
|
+
offset0, flgval0 = struct.unpack_from('>2L', self.data_file, 78)
|
195
|
+
offset1, flgval1 = struct.unpack_from('>2L', self.data_file, 86)
|
196
|
+
mobiheader = self.data_file[offset0:offset1]
|
197
|
+
mobiheader = mobiheader[:0xe0] + struct.pack('>L', 0xffffffff) + struct.pack('>L', 0) + mobiheader[0xe8:]
|
198
|
+
|
199
|
+
# if K8 mobi, handle metadata 121 in old mobiheader
|
200
|
+
mobiheader = self.updateEXTH121(srcs_secnum, srcs_cnt, mobiheader)
|
201
|
+
self.data_file = self.data_file[0:offset0] + mobiheader + self.data_file[offset1:]
|
202
|
+
print("done")
|
203
|
+
|
204
|
+
def getResult(self):
|
205
|
+
return self.data_file
|
206
|
+
|
207
|
+
def getStrippedData(self):
|
208
|
+
return self.stripped_data
|
209
|
+
|
210
|
+
def getHeader(self):
|
211
|
+
return self.stripped_data_header
|
212
|
+
|
213
|
+
|
214
|
+
if __name__ == "__main__":
|
215
|
+
sys.stdout = Unbuffered(sys.stdout)
|
216
|
+
print('KindleStrip v{0}. Written 2010-2012 by Paul Durrant and Kevin Hendricks.'.format(__version__))
|
217
|
+
if len(sys.argv) < 3 or len(sys.argv) > 4:
|
218
|
+
print("Strips the Sources record from Mobipocket ebooks")
|
219
|
+
print("For ebooks generated using KindleGen 1.1 and later that add the source")
|
220
|
+
print("Usage:")
|
221
|
+
print(" {0} <infile> <outfile> <strippeddatafile>".format(sys.argv[0]))
|
222
|
+
print("<strippeddatafile> is optional.")
|
223
|
+
sys.exit(1)
|
224
|
+
else:
|
225
|
+
infile = sys.argv[1]
|
226
|
+
outfile = sys.argv[2]
|
227
|
+
data_file = file(infile, 'rb').read()
|
228
|
+
try:
|
229
|
+
strippedFile = SectionStripper(data_file)
|
230
|
+
file(outfile, 'wb').write(strippedFile.getResult())
|
231
|
+
print("Header Bytes: {0}".format(binascii.b2a_hex(strippedFile.getHeader())))
|
232
|
+
if len(sys.argv) == 4:
|
233
|
+
file(sys.argv[3], 'wb').write(strippedFile.getStrippedData())
|
234
|
+
except StripException as e:
|
235
|
+
print("Error: {0}".format(e))
|
236
|
+
sys.exit(1)
|
237
|
+
sys.exit(0)
|
data/bin/zip.exe
ADDED
Binary file
|
@@ -0,0 +1,19 @@
|
|
1
|
+
Copyright (c) 2007 Adobe Systems Incorporated
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy of
|
4
|
+
this software and associated documentation files (the "Software"), to deal in
|
5
|
+
the Software without restriction, including without limitation the rights to
|
6
|
+
use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
|
7
|
+
the Software, and to permit persons to whom the Software is furnished to do so,
|
8
|
+
subject to the following conditions:
|
9
|
+
|
10
|
+
The above copyright notice and this permission notice shall be included in all
|
11
|
+
copies or substantial portions of the Software.
|
12
|
+
|
13
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
14
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS
|
15
|
+
FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR
|
16
|
+
COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER
|
17
|
+
IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
18
|
+
CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
19
|
+
|
@@ -0,0 +1,61 @@
|
|
1
|
+
This folder contains the distribution of epubcheck project.
|
2
|
+
|
3
|
+
EpubCheck is a tool to validate IDPF Epub files. It can detect many
|
4
|
+
types of errors in Epub. OCF container structure, OPF and OPS mark-up,
|
5
|
+
and internal reference consistency are checked. EpubCheck can be run
|
6
|
+
as a standalone command-line tool, installed as a web application or
|
7
|
+
used as a library.
|
8
|
+
|
9
|
+
Epubcheck project home: http://code.google.com/p/epubcheck/
|
10
|
+
|
11
|
+
BUILDING
|
12
|
+
|
13
|
+
To build epubcheck from the sources you need Java Development Kit (JDK) 1.5 or above
|
14
|
+
and Apache ant (http://ant.apache.org/) 1.6 or above installed
|
15
|
+
|
16
|
+
Run
|
17
|
+
|
18
|
+
ant -f build.xml
|
19
|
+
|
20
|
+
RUNNING
|
21
|
+
|
22
|
+
To run the tool you need Java Runtime (1.5 or above). Any OS should do. Run
|
23
|
+
it from the command line:
|
24
|
+
|
25
|
+
java -jar epubcheck-x.x.x.jar file.epub
|
26
|
+
|
27
|
+
All detected errors are simply printed to stderr.
|
28
|
+
|
29
|
+
USING AS A LIBRARY
|
30
|
+
|
31
|
+
You can also use EpubCheck as a library in your Java application. EpubCheck
|
32
|
+
public interfaces can be found in com.adobe.epubcheck.api package. EpubCheck
|
33
|
+
class can be used to instantiate a validation engine. Use one of its
|
34
|
+
constructors and then call validate() method. Report is an interface that
|
35
|
+
you can implement to get a list of the errors and warnings reported by the
|
36
|
+
validation engine (instead of the error list being printed out).
|
37
|
+
|
38
|
+
LICENSING
|
39
|
+
|
40
|
+
See COPYING.txt
|
41
|
+
|
42
|
+
AUTHORS
|
43
|
+
|
44
|
+
Peter Sorotokin
|
45
|
+
Garth Conboy
|
46
|
+
Markus Gylling
|
47
|
+
Piotr Kula
|
48
|
+
|
49
|
+
Most of the EpubCheck functionality comes from the schema validation tool Jing
|
50
|
+
and schemas that were developed by IDPF and DAISY. EpubCheck development was
|
51
|
+
largely done at Adobe Systems.
|
52
|
+
|
53
|
+
|
54
|
+
|
55
|
+
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
|
@@ -0,0 +1,12 @@
|
|
1
|
+
Jing Copying Conditions
|
2
|
+
|
3
|
+
Copyright (c) 2001-2003 Thai Open Source Software Center Ltd
|
4
|
+
All rights reserved.
|
5
|
+
|
6
|
+
Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:
|
7
|
+
|
8
|
+
* Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
|
9
|
+
* Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.
|
10
|
+
* Neither the name of the Thai Open Source Software Center Ltd nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission.
|
11
|
+
|
12
|
+
THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
|
@@ -0,0 +1,36 @@
|
|
1
|
+
Contents of the Zip 3.0 for "Windows 32-bit x86" binary distribution:
|
2
|
+
|
3
|
+
Contents you are reading it...
|
4
|
+
LICENSE the Info-ZIP software license
|
5
|
+
README general information about Zip 3.0
|
6
|
+
README.CR Information and usage terms for the built-in crypt
|
7
|
+
WHATSNEW Coarse description of new features in this release
|
8
|
+
WHERE Information about distribution packages
|
9
|
+
zip30.ann more detailed "user-visible" feature history
|
10
|
+
zip.txt user manual for Zip
|
11
|
+
zipcloak.txt user manual for ZipCloak
|
12
|
+
zipnote.txt user manual for ZipNote
|
13
|
+
zipsplit.txt user manual for ZipSplit
|
14
|
+
zip.exe Zip program
|
15
|
+
zipnote.exe ZipNote program
|
16
|
+
zipsplit.exe ZipSplit program
|
17
|
+
zipcloak.exe ZipCloak program
|
18
|
+
|
19
|
+
The binaries have been built using Microsoft Visual C/C++ 6.0 SP6; they are
|
20
|
+
linked against the static single-threading runtime library and do not require
|
21
|
+
any additional runtime environment besides the basic Win32 system service dlls
|
22
|
+
supplied by every basic Windows installation.
|
23
|
+
The programs should run on every Windows version that supports 32-bit x86
|
24
|
+
executables: Windows 9x/ME, Windows NT3.x/NT4/2000/XP/2003/Vista/2008.
|
25
|
+
The Windows port of Zip 3.0 supports Unicode (UTF-8 coded) archive entry names;
|
26
|
+
on the "non-unicode" Windows variants 95/98/ME, this unicode support is limited
|
27
|
+
to the character subset supported by the active "single/double byte charcodes"
|
28
|
+
system codepage of the operating system.
|
29
|
+
|
30
|
+
The programs have been built without the optional assembler code for CRC-32
|
31
|
+
and the deflate inner loop. Some coarse test resulted in the impression that
|
32
|
+
the performance of the standard C code seems to be better on modern CPUs
|
33
|
+
(Pentium 3, Pentium 4, etc...). Additionally, the main Zip program has been
|
34
|
+
compiled with the optional bzip2 compression support enabled.
|
35
|
+
|
36
|
+
2008-10-19, Info-ZIP
|
@@ -0,0 +1,60 @@
|
|
1
|
+
This is version 2007-Mar-4 of the Info-ZIP license.
|
2
|
+
The definitive version of this document should be available at
|
3
|
+
ftp://ftp.info-zip.org/pub/infozip/license.html indefinitely and
|
4
|
+
a copy at http://www.info-zip.org/pub/infozip/license.html.
|
5
|
+
|
6
|
+
|
7
|
+
Copyright (c) 1990-2007 Info-ZIP. All rights reserved.
|
8
|
+
|
9
|
+
For the purposes of this copyright and license, "Info-ZIP" is defined as
|
10
|
+
the following set of individuals:
|
11
|
+
|
12
|
+
Mark Adler, John Bush, Karl Davis, Harald Denker, Jean-Michel Dubois,
|
13
|
+
Jean-loup Gailly, Hunter Goatley, Ed Gordon, Ian Gorman, Chris Herborth,
|
14
|
+
Dirk Haase, Greg Hartwig, Robert Heath, Jonathan Hudson, Paul Kienitz,
|
15
|
+
David Kirschbaum, Johnny Lee, Onno van der Linden, Igor Mandrichenko,
|
16
|
+
Steve P. Miller, Sergio Monesi, Keith Owens, George Petrov, Greg Roelofs,
|
17
|
+
Kai Uwe Rommel, Steve Salisbury, Dave Smith, Steven M. Schweda,
|
18
|
+
Christian Spieler, Cosmin Truta, Antoine Verheijen, Paul von Behren,
|
19
|
+
Rich Wales, Mike White.
|
20
|
+
|
21
|
+
This software is provided "as is," without warranty of any kind, express
|
22
|
+
or implied. In no event shall Info-ZIP or its contributors be held liable
|
23
|
+
for any direct, indirect, incidental, special or consequential damages
|
24
|
+
arising out of the use of or inability to use this software.
|
25
|
+
|
26
|
+
Permission is granted to anyone to use this software for any purpose,
|
27
|
+
including commercial applications, and to alter it and redistribute it
|
28
|
+
freely, subject to the above disclaimer and the following restrictions:
|
29
|
+
|
30
|
+
1. Redistributions of source code (in whole or in part) must retain
|
31
|
+
the above copyright notice, definition, disclaimer, and this list
|
32
|
+
of conditions.
|
33
|
+
|
34
|
+
2. Redistributions in binary form (compiled executables and libraries)
|
35
|
+
must reproduce the above copyright notice, definition, disclaimer,
|
36
|
+
and this list of conditions in documentation and/or other materials
|
37
|
+
provided with the distribution. The sole exception to this condition
|
38
|
+
is redistribution of a standard UnZipSFX binary (including SFXWiz) as
|
39
|
+
part of a self-extracting archive; that is permitted without inclusion
|
40
|
+
of this license, as long as the normal SFX banner has not been removed
|
41
|
+
from the binary or disabled.
|
42
|
+
|
43
|
+
3. Altered versions--including, but not limited to, ports to new operating
|
44
|
+
systems, existing ports with new graphical interfaces, versions with
|
45
|
+
modified or added functionality, and dynamic, shared, or static library
|
46
|
+
versions not from Info-ZIP--must be plainly marked as such and must not
|
47
|
+
be misrepresented as being the original source or, if binaries,
|
48
|
+
compiled from the original source. Such altered versions also must not
|
49
|
+
be misrepresented as being Info-ZIP releases--including, but not
|
50
|
+
limited to, labeling of the altered versions with the names "Info-ZIP"
|
51
|
+
(or any variation thereof, including, but not limited to, different
|
52
|
+
capitalizations), "Pocket UnZip," "WiZ" or "MacZip" without the
|
53
|
+
explicit permission of Info-ZIP. Such altered versions are further
|
54
|
+
prohibited from misrepresentative use of the Zip-Bugs or Info-ZIP
|
55
|
+
e-mail addresses or the Info-ZIP URL(s), such as to imply Info-ZIP
|
56
|
+
will provide support for the altered versions.
|
57
|
+
|
58
|
+
4. Info-ZIP retains the right to use the names "Info-ZIP," "Zip," "UnZip,"
|
59
|
+
"UnZipSFX," "WiZ," "Pocket UnZip," "Pocket Zip," and "MacZip" for its
|
60
|
+
own source and binary releases.
|