Allow building zip as build tool. Tested under Linux only.

git-svn-id: file:///srv/svn/repos/haiku/haiku/trunk@25534 a95241bf-73f2-0310-859d-f6bbb57e9c96
This commit is contained in:
Ingo Weinhold 2008-05-17 23:29:01 +00:00
parent 1cc5173533
commit adfd232086
4 changed files with 103 additions and 0 deletions

View File

@ -106,4 +106,5 @@ SubInclude HAIKU_TOP src tools translation ;
SubInclude HAIKU_TOP src tools unzip ;
SubInclude HAIKU_TOP src tools vmdkimage ;
SubInclude HAIKU_TOP src tools unflatten ;
SubInclude HAIKU_TOP src tools zip ;

24
src/tools/zip/Jamfile Normal file
View File

@ -0,0 +1,24 @@
SubDir HAIKU_TOP src tools zip ;
SEARCH_SOURCE += [ FDirName $(HAIKU_TOP) src bin zip ] ;
USES_BE_API on <build>zip = true ;
DEFINES += UNIX ;
BuildPlatformMain <build>zip :
beos.c
crc32.c
crctab.c
crypt.c
deflate.c
fileio.c
globals.c
trees.c
ttyio.c
util.c
zip.c
zipfile.c
zipup.c
: $(HOST_LIBBE) $(HOST_LIBSUPC++)
;

View File

@ -0,0 +1,59 @@
/*
Copyright (c) 1990-1999 Info-ZIP. All rights reserved.
See the accompanying file LICENSE, version 1999-Oct-05 or later
(the contents of which are also included in zip.h) for terms of use.
If, for some reason, both of these files are missing, the Info-ZIP license
also may be found at: ftp://ftp.cdrom.com/pub/infozip/license.html
*/
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <Errors.h> /* for B_NO_ERROR */
#define USE_EF_UT_TIME /* Enable use of "UT" extra field time info */
#define EB_L_BE_LEN 5 /* min size is an unsigned long and flag */
#define EB_C_BE_LEN 5 /* Length of data in local EF and flag. */
#define EB_BE_FL_NATURAL 0x01 /* data is 'natural' (not compressed) */
#define EB_BE_FL_BADBITS 0xfe /* bits currently undefined */
#ifndef ZP_NEED_MEMCOMPR
# define ZP_NEED_MEMCOMPR
#endif
/* Set a file's MIME type. */
#define BE_FILE_TYPE_NAME "BEOS:TYPE"
void setfiletype( const char *file, const char *type );
/*
DR9 'Be' extra-field layout:
'Be' - signature
ef_size - size of data in this EF (little-endian unsigned short)
full_size - uncompressed data size (little-endian unsigned long)
flag - flags (byte)
flags & EB_BE_FL_NATURAL = the data is not compressed
flags & EB_BE_FL_BADBITS = the data is corrupted or we
can't handle it properly
data - compressed or uncompressed file attribute data
If flag & EB_BE_FL_NATURAL, the data is not compressed; this optimisation is
necessary to prevent wasted space for files with small attributes (which
appears to be quite common on the Advanced Access DR9 release). In this
case, there should be ( ef_size - EB_L_BE_LEN ) bytes of data, and full_size
should equal ( ef_size - EB_L_BE_LEN ).
If the data is compressed, there will be ( ef_size - EB_L_BE_LEN ) bytes of
compressed data, and full_size bytes of uncompressed data.
If a file has absolutely no attributes, there will not be a 'Be' extra field.
The uncompressed data is arranged like this:
attr_name\0 - C string
struct attr_info (big-endian)
attr_data (length in attr_info.size)
*/

View File

@ -0,0 +1,19 @@
/*
Copyright (c) 1990-1999 Info-ZIP. All rights reserved.
See the accompanying file LICENSE, version 1999-Oct-05 or later
(the contents of which are also included in zip.h) for terms of use.
If, for some reason, both of these files are missing, the Info-ZIP license
also may be found at: ftp://ftp.cdrom.com/pub/infozip/license.html
*/
#ifndef O_RDONLY
# include <fcntl.h>
#endif
#define fhow O_RDONLY
#define fbad (-1)
typedef int ftype;
#define zopen(n,p) open(n,p)
#define zread(f,b,n) read(f,b,n)
#define zclose(f) close(f)
#define zerr(f) (k == (extent)(-1L))
#define zstdin 0