[novacom-server/f15] Initial release
Jonathan Dieter
jdieter at fedoraproject.org
Mon May 7 14:13:35 UTC 2012
commit b793a5345233a01a20f37b57c735c0703f9d5fa0
Author: Jonathan Dieter <jdieter at lesbg.com>
Date: Mon May 7 17:12:11 2012 +0300
Initial release
Signed-off-by: Jonathan Dieter <jdieter at lesbg.com>
.gitignore | 1 +
...k_-read-write-instead-of-homemade-handler.patch | 95 ++
config-novacomd | 4 +
novacom-server.spec | 111 +++
novacomd-makefile-remove-adler32.patch | 915 ++++++++++++++++++++
novacomd-quiet-logging.patch | 12 +
novacomd.service | 10 +
novacomd_add_cflags.patch | 12 +
sources | 1 +
9 files changed, 1161 insertions(+), 0 deletions(-)
---
diff --git a/.gitignore b/.gitignore
index e69de29..d659662 100644
--- a/.gitignore
+++ b/.gitignore
@@ -0,0 +1 @@
+/openwebos-novacomd-submissions-119.1-0-ge77d336.tar.gz
diff --git a/0001-Use-usb_bulk_-read-write-instead-of-homemade-handler.patch b/0001-Use-usb_bulk_-read-write-instead-of-homemade-handler.patch
new file mode 100644
index 0000000..d3ba343
--- /dev/null
+++ b/0001-Use-usb_bulk_-read-write-instead-of-homemade-handler.patch
@@ -0,0 +1,95 @@
+From c4586e80dc6f1a92513b466d8d43748ec733b7fd Mon Sep 17 00:00:00 2001
+From: Jonathan Dieter <jdieter at lesbg.com>
+Date: Mon, 2 Apr 2012 14:35:09 +0300
+Subject: [PATCH] Use usb_bulk_[read|write] instead of homemade handlers.
+ This allows us to run against libusb-compat as well as the
+ old libusb.
+
+Signed-off-by: Jonathan Dieter <jdieter at lesbg.com>
+---
+ src/host/usb-linux.c | 42 ++++++------------------------------------
+ 1 files changed, 6 insertions(+), 36 deletions(-)
+
+diff --git a/src/host/usb-linux.c b/src/host/usb-linux.c
+index 55cc0b5..65f94c4 100644
+--- a/src/host/usb-linux.c
++++ b/src/host/usb-linux.c
+@@ -49,20 +49,8 @@
+
+ #define USBDEVFS_IOCTL_TIMEOUT 2000
+
+-struct myusb_dev_handle {
+- int fd;
+-
+- // other stuff here
+-};
+-
+ typedef struct {
+- union {
+- usb_dev_handle *handle;
+-
+- /* XXX cheezy hack to let us get to the file descriptor hidden in the libusb handle */
+- struct myusb_dev_handle *myhandle;
+- };
+-
++ usb_dev_handle *handle;
+ novacom_usbll_handle_t usbll_handle;
+
+ bool shutdown;
+@@ -218,7 +206,7 @@ static novacom_usb_handle_t *novacom_usb_open( void )
+ if (!handle) continue;
+
+ #if USB_SCAN_TRACE
+- log_printf(LOG_SPEW, "opened usb handle: fd %d\n", ((struct myusb_dev_handle *)handle)->fd);
++ log_printf(LOG_SPEW, "opened usb handle: devnum %d\n", dev->devnum);
+ #endif
+
+ int eps[2];
+@@ -281,17 +269,10 @@ int novacom_usb_transport_init(void)
+ static int novacom_usb_read(novacom_usb_handle_t *handle, void *buf, size_t len)
+ {
+ // TRACEF("handle %p, buf %p, len %d, timeout %d\n", handle, buf, len, timeout);
+-// TRACEF("fd %d\n", handle->myhandle->fd);
+-
+- struct usbdevfs_bulktransfer bulktransfer;
+-
+- bulktransfer.ep = handle->rxep;
+- bulktransfer.len = len;
+- bulktransfer.timeout = handle->rx_timeout;
+- bulktransfer.data = buf;
+
+ int rc;
+- rc = ioctl(handle->myhandle->fd, USBDEVFS_BULK, &bulktransfer);
++
++ rc = usb_bulk_read(handle->handle, handle->rxep, buf, len, handle->rx_timeout);
+ if (rc > 0) { //now check the packet header
+
+ if (novacom_usbll_check_packet_header(buf, rc)) { //bad packet
+@@ -303,22 +284,11 @@ static int novacom_usb_read(novacom_usb_handle_t *handle, void *buf, size_t len)
+ return rc;
+ }
+
+-static int novacom_usb_write(novacom_usb_handle_t *handle, const void *buf, size_t len)
++static int novacom_usb_write(novacom_usb_handle_t *handle, void *buf, size_t len)
+ {
+ // TRACEF("handle %p, buf %p, len %d, timeout %d\n", handle, buf, len, timeout);
+-// TRACEF("fd %d\n", handle->myhandle->fd);
+-
+- struct usbdevfs_bulktransfer bulktransfer;
+
+- bulktransfer.ep = handle->txep;
+- bulktransfer.len = len;
+- bulktransfer.timeout = handle->tx_timeout;
+- bulktransfer.data = (void *)buf;
+-
+- int rc;
+- rc = ioctl(handle->myhandle->fd, USBDEVFS_BULK, &bulktransfer);
+-// TRACEF("rc %d\n", rc);
+- return rc;
++ return usb_bulk_write(handle->handle, handle->txep, buf, len, handle->tx_timeout);
+ }
+
+ struct usb_thread_args {
+--
+1.7.7.6
+
diff --git a/config-novacomd b/config-novacomd
new file mode 100644
index 0000000..4e03a27
--- /dev/null
+++ b/config-novacomd
@@ -0,0 +1,4 @@
+# Bind to 127.0.0.1 by default. Only change this if you want to access the
+# Novacom server from other systems
+
+OPTIONS="-b 127.0.0.1"
diff --git a/novacom-server.spec b/novacom-server.spec
new file mode 100644
index 0000000..a1d8819
--- /dev/null
+++ b/novacom-server.spec
@@ -0,0 +1,111 @@
+%global _hardened_build 1
+
+Name: novacom-server
+Version: 1.1.0
+Release: 0.6.rc1%{?dist}
+Summary: Service for utility that connects to WebOS devices
+Group: Development/Tools
+License: ASL 2.0
+URL: https://github.com/openwebos/novacomd
+Source0: https://github.com/openwebos/novacomd/tarball/versions/1.1.0-rc1/openwebos-novacomd-submissions-119.1-0-ge77d336.tar.gz
+Source1: novacomd.service
+Source2: config-novacomd
+# This patch allows novacomd to work against Fedora's libusb
+Patch0: 0001-Use-usb_bulk_-read-write-instead-of-homemade-handler.patch
+# This patch forces the makefile to use our CFLAGS
+Patch1: novacomd_add_cflags.patch
+# This patch muffles the logging of every packet to the device
+Patch2: novacomd-quiet-logging.patch
+# This patch removes unused adler32 library from the makefile
+Patch3: novacomd-makefile-remove-adler32.patch
+Requires: systemd-units
+Requires(post): systemd-units
+Requires(preun): systemd-units
+Requires(postun): systemd-units
+Provides: novacomd = %{version}-%{release}
+BuildRoot: %(mktemp -ud %{_tmppath}/%{name}-%{version}-%{release}-XXXXXX)
+BuildRequires: libusb-devel%{_isa} systemd-units
+
+%description
+This service allows the novacom client to connect to WebOS devices that are
+connected over USB.
+
+It should be started using 'systemctl start novacomd.service' as root.
+
+%prep
+%setup -q -n openwebos-novacomd-e77d336
+%patch0 -p1
+%patch1 -p1
+%patch2 -p1
+%patch3 -p1
+# Remove unused and unneeded zlib headers and adler32 library
+rm -f src/lib/cksum/adler32.c
+rm -f src/lib/cksum/zlib.h
+
+%build
+make host LDFLAGS="$RPM_OPT_FLAGS" CFLAGS="$RPM_OPT_FLAGS" %{?_smp_mflags}
+
+%install
+rm -rf $RPM_BUILD_ROOT
+mkdir -p $RPM_BUILD_ROOT/%{_bindir}
+install -pm 755 build-novacomd-host/novacomd $RPM_BUILD_ROOT/%{_bindir}
+mkdir -p $RPM_BUILD_ROOT/%{_unitdir}
+install -pm 644 %{SOURCE1} $RPM_BUILD_ROOT/%{_unitdir}
+mkdir -p $RPM_BUILD_ROOT/%{_sysconfdir}/default
+install -pm 644 %{SOURCE2} $RPM_BUILD_ROOT/%{_sysconfdir}/default/novacomd
+
+%post
+if [ $1 -eq 1 ] ; then
+ # Initial installation
+ /bin/systemctl daemon-reload >/dev/null 2>&1 || :
+fi
+
+%preun
+if [ $1 -eq 0 ] ; then
+ # Package removal, not upgrade
+ /bin/systemctl --no-reload disable novacomd.service > /dev/null 2>&1 || :
+ /bin/systemctl stop novacomd.service > /dev/null 2>&1 || :
+fi
+
+%postun
+/bin/systemctl daemon-reload >/dev/null 2>&1 || :
+if [ $1 -ge 1 ] ; then
+ # Package upgrade, not uninstall
+ /bin/systemctl try-restart novacomd.service >/dev/null 2>&1 || :
+fi
+
+%files
+%doc README.md
+%{_bindir}/novacomd
+%{_unitdir}/novacomd.service
+%config(noreplace) %{_sysconfdir}/default/novacomd
+
+%changelog
+* Mon May 7 2012 Jonathan Dieter <jdieter at lesbg.com> - 1.1.0-0.6.rc1
+- Preserve timestamps during install
+- Remove unused zlib header and adler32 code
+- Remove unnecessary filler that's not needed for Fedora
+
+* Sun May 6 2012 Jonathan Dieter <jdieter at lesbg.com> - 1.1.0-0.5.rc1
+- Let's try this one again. This time really muffle logging of every packet
+ sent to device
+
+* Wed May 2 2012 Jonathan Dieter <jdieter at lesbg.com> - 1.1.0-0.4.rc1
+- Muffle logging of every packet sent to device
+
+* Thu Apr 26 2012 Jonathan Dieter <jdieter at lesbg.com> - 1.1.0-0.3.rc1
+- Use consistent RPM_OPT_FLAGS and RPM_BUILD_ROOT variables
+- Change define macro to global
+- Remove unnecessary BR: glibc-devel
+- Turn on hardened build
+- Fix provides for novacomd
+
+* Thu Apr 12 2012 Jonathan Dieter <jdieter at lesbg.com> - 1.1.0-0.2.rc1
+- Rename to novacom-server and add provides for novacomd
+- Add systemd service
+
+* Mon Apr 2 2012 Jonathan Dieter <jdieter at lesbg.com> - 1.1.0-0.1.rc1
+- Add patch that allows novacomd to work against Fedora's libusb
+
+* Sat Mar 31 2012 Jonathan Dieter <jdieter at lesbg.com> - 0.9-0.1.git.e77d33616f
+- Initial release
diff --git a/novacomd-makefile-remove-adler32.patch b/novacomd-makefile-remove-adler32.patch
new file mode 100644
index 0000000..52eb4e8
--- /dev/null
+++ b/novacomd-makefile-remove-adler32.patch
@@ -0,0 +1,915 @@
+diff -urNb novacomd-git-e77d33616f/makefile novacomd-git-e77d33616f.b/makefile
+--- novacomd-git-e77d33616f/makefile 2012-03-28 23:10:56.000000000 +0300
++++ novacomd-git-e77d33616f.b/makefile 2012-05-07 16:49:46.751001298 +0300
+@@ -83,7 +83,6 @@
+ src/novacom/commands.o \
+ src/novacom/commands_device.o \
+ \
+- src/lib/cksum/adler32.o \
+ src/lib/cksum/sha1.o \
+ src/lib/buffer.o
+
+diff -urNb novacomd-git-e77d33616f/src/lib/cksum/adler32.c novacomd-git-e77d33616f.b/src/lib/cksum/adler32.c
+--- novacomd-git-e77d33616f/src/lib/cksum/adler32.c 2012-03-28 23:10:56.000000000 +0300
++++ novacomd-git-e77d33616f.b/src/lib/cksum/adler32.c 1970-01-01 02:00:00.000000000 +0200
+@@ -1,46 +0,0 @@
+-/* adler32.c -- compute the Adler-32 checksum of a data stream
+- * Copyright (C) 1995-1998 Mark Adler
+- * For conditions of distribution and use, see copyright notice in zlib.h
+- */
+-
+-/* @(#) $Id$ */
+-
+-#include <stdlib.h>
+-#include <lib/cksum.h>
+-
+-#define BASE 65521L /* largest prime smaller than 65536 */
+-#define NMAX 5552
+-/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */
+-
+-#define DO1(buf,i) {s1 += buf[i]; s2 += s1;}
+-#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1);
+-#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2);
+-#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4);
+-#define DO16(buf) DO8(buf,0); DO8(buf,8);
+-
+-/* ========================================================================= */
+-unsigned long adler32(unsigned long adler, const unsigned char *buf, unsigned int len)
+-{
+- unsigned long s1 = adler & 0xffff;
+- unsigned long s2 = (adler >> 16) & 0xffff;
+- int k;
+-
+- if (buf == NULL) return 1L;
+-
+- while (len > 0) {
+- k = len < NMAX ? len : NMAX;
+- len -= k;
+- while (k >= 16) {
+- DO16(buf);
+- buf += 16;
+- k -= 16;
+- }
+- if (k != 0) do {
+- s1 += *buf++;
+- s2 += s1;
+- } while (--k);
+- s1 %= BASE;
+- s2 %= BASE;
+- }
+- return (s2 << 16) | s1;
+-}
+diff -urNb novacomd-git-e77d33616f/src/lib/cksum/zlib.h novacomd-git-e77d33616f.b/src/lib/cksum/zlib.h
+--- novacomd-git-e77d33616f/src/lib/cksum/zlib.h 2012-03-28 23:10:56.000000000 +0300
++++ novacomd-git-e77d33616f.b/src/lib/cksum/zlib.h 1970-01-01 02:00:00.000000000 +0200
+@@ -1,850 +0,0 @@
+-/* zlib.h -- interface of the 'zlib' general purpose compression library
+- version 1.1.3, July 9th, 1998
+-
+- Copyright (C) 1995-1998 Jean-loup Gailly and Mark Adler
+-
+- This software is provided 'as-is', without any express or implied
+- warranty. In no event will the authors be held liable for any damages
+- arising from the use of this software.
+-
+- Permission is granted to anyone to use this software for any purpose,
+- including commercial applications, and to alter it and redistribute it
+- freely, subject to the following restrictions:
+-
+- 1. The origin of this software must not be misrepresented; you must not
+- claim that you wrote the original software. If you use this software
+- in a product, an acknowledgment in the product documentation would be
+- appreciated but is not required.
+- 2. Altered source versions must be plainly marked as such, and must not be
+- misrepresented as being the original software.
+- 3. This notice may not be removed or altered from any source distribution.
+-
+- Jean-loup Gailly Mark Adler
+- jloup at gzip.org madler at alumni.caltech.edu
+-
+-
+- The data format used by the zlib library is described by RFCs (Request for
+- Comments) 1950 to 1952 in the files ftp://ds.internic.net/rfc/rfc1950.txt
+- (zlib format), rfc1951.txt (deflate format) and rfc1952.txt (gzip format).
+-*/
+-
+-#ifndef _ZLIB_H
+-#define _ZLIB_H
+-
+-#include "zconf.h"
+-
+-#ifdef __cplusplus
+-extern "C" {
+-#endif
+-
+-#define ZLIB_VERSION "1.1.3"
+-
+-/*
+- The 'zlib' compression library provides in-memory compression and
+- decompression functions, including integrity checks of the uncompressed
+- data. This version of the library supports only one compression method
+- (deflation) but other algorithms will be added later and will have the same
+- stream interface.
+-
+- Compression can be done in a single step if the buffers are large
+- enough (for example if an input file is mmap'ed), or can be done by
+- repeated calls of the compression function. In the latter case, the
+- application must provide more input and/or consume the output
+- (providing more output space) before each call.
+-
+- The library also supports reading and writing files in gzip (.gz) format
+- with an interface similar to that of stdio.
+-
+- The library does not install any signal handler. The decoder checks
+- the consistency of the compressed data, so the library should never
+- crash even in case of corrupted input.
+-*/
+-
+-typedef voidpf (*alloc_func) OF((voidpf opaque, uInt items, uInt size));
+-typedef void (*free_func) OF((voidpf opaque, voidpf address));
+-
+-struct internal_state;
+-
+-typedef struct z_stream_s {
+- Bytef *next_in; /* next input byte */
+- uInt avail_in; /* number of bytes available at next_in */
+- uLong total_in; /* total nb of input bytes read so far */
+-
+- Bytef *next_out; /* next output byte should be put there */
+- uInt avail_out; /* remaining free space at next_out */
+- uLong total_out; /* total nb of bytes output so far */
+-
+- char *msg; /* last error message, NULL if no error */
+- struct internal_state FAR *state; /* not visible by applications */
+-
+- alloc_func zalloc; /* used to allocate the internal state */
+- free_func zfree; /* used to free the internal state */
+- voidpf opaque; /* private data object passed to zalloc and zfree */
+-
+- int data_type; /* best guess about the data type: ascii or binary */
+- uLong adler; /* adler32 value of the uncompressed data */
+- uLong reserved; /* reserved for future use */
+-} z_stream;
+-
+-typedef z_stream FAR *z_streamp;
+-
+-/*
+- The application must update next_in and avail_in when avail_in has
+- dropped to zero. It must update next_out and avail_out when avail_out
+- has dropped to zero. The application must initialize zalloc, zfree and
+- opaque before calling the init function. All other fields are set by the
+- compression library and must not be updated by the application.
+-
+- The opaque value provided by the application will be passed as the first
+- parameter for calls of zalloc and zfree. This can be useful for custom
+- memory management. The compression library attaches no meaning to the
+- opaque value.
+-
+- zalloc must return Z_NULL if there is not enough memory for the object.
+- If zlib is used in a multi-threaded application, zalloc and zfree must be
+- thread safe.
+-
+- On 16-bit systems, the functions zalloc and zfree must be able to allocate
+- exactly 65536 bytes, but will not be required to allocate more than this
+- if the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS,
+- pointers returned by zalloc for objects of exactly 65536 bytes *must*
+- have their offset normalized to zero. The default allocation function
+- provided by this library ensures this (see zutil.c). To reduce memory
+- requirements and avoid any allocation of 64K objects, at the expense of
+- compression ratio, compile the library with -DMAX_WBITS=14 (see zconf.h).
+-
+- The fields total_in and total_out can be used for statistics or
+- progress reports. After compression, total_in holds the total size of
+- the uncompressed data and may be saved for use in the decompressor
+- (particularly if the decompressor wants to decompress everything in
+- a single step).
+-*/
+-
+- /* constants */
+-
+-#define Z_NO_FLUSH 0
+-#define Z_PARTIAL_FLUSH 1 /* will be removed, use Z_SYNC_FLUSH instead */
+-#define Z_SYNC_FLUSH 2
+-#define Z_FULL_FLUSH 3
+-#define Z_FINISH 4
+-/* Allowed flush values; see deflate() below for details */
+-
+-#define Z_OK 0
+-#define Z_STREAM_END 1
+-#define Z_NEED_DICT 2
+-#define Z_ERRNO (-1)
+-#define Z_STREAM_ERROR (-2)
+-#define Z_DATA_ERROR (-3)
+-#define Z_MEM_ERROR (-4)
+-#define Z_BUF_ERROR (-5)
+-#define Z_VERSION_ERROR (-6)
+-/* Return codes for the compression/decompression functions. Negative
+- * values are errors, positive values are used for special but normal events.
+- */
+-
+-#define Z_NO_COMPRESSION 0
+-#define Z_BEST_SPEED 1
+-#define Z_BEST_COMPRESSION 9
+-#define Z_DEFAULT_COMPRESSION (-1)
+-/* compression levels */
+-
+-#define Z_FILTERED 1
+-#define Z_HUFFMAN_ONLY 2
+-#define Z_DEFAULT_STRATEGY 0
+-/* compression strategy; see deflateInit2() below for details */
+-
+-#define Z_BINARY 0
+-#define Z_ASCII 1
+-#define Z_UNKNOWN 2
+-/* Possible values of the data_type field */
+-
+-#define Z_DEFLATED 8
+-/* The deflate compression method (the only one supported in this version) */
+-
+-#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */
+-
+-#define zlib_version zlibVersion()
+-/* for compatibility with versions < 1.0.2 */
+-
+- /* basic functions */
+-
+-ZEXTERN const char * ZEXPORT zlibVersion OF((void));
+-/* The application can compare zlibVersion and ZLIB_VERSION for consistency.
+- If the first character differs, the library code actually used is
+- not compatible with the zlib.h header file used by the application.
+- This check is automatically made by deflateInit and inflateInit.
+- */
+-
+-/*
+-ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level));
+-
+- Initializes the internal stream state for compression. The fields
+- zalloc, zfree and opaque must be initialized before by the caller.
+- If zalloc and zfree are set to Z_NULL, deflateInit updates them to
+- use default allocation functions.
+-
+- The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9:
+- 1 gives best speed, 9 gives best compression, 0 gives no compression at
+- all (the input data is simply copied a block at a time).
+- Z_DEFAULT_COMPRESSION requests a default compromise between speed and
+- compression (currently equivalent to level 6).
+-
+- deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not
+- enough memory, Z_STREAM_ERROR if level is not a valid compression level,
+- Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible
+- with the version assumed by the caller (ZLIB_VERSION).
+- msg is set to null if there is no error message. deflateInit does not
+- perform any compression: this will be done by deflate().
+-*/
+-
+-
+-ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush));
+-/*
+- deflate compresses as much data as possible, and stops when the input
+- buffer becomes empty or the output buffer becomes full. It may introduce some
+- output latency (reading input without producing any output) except when
+- forced to flush.
+-
+- The detailed semantics are as follows. deflate performs one or both of the
+- following actions:
+-
+- - Compress more input starting at next_in and update next_in and avail_in
+- accordingly. If not all input can be processed (because there is not
+- enough room in the output buffer), next_in and avail_in are updated and
+- processing will resume at this point for the next call of deflate().
+-
+- - Provide more output starting at next_out and update next_out and avail_out
+- accordingly. This action is forced if the parameter flush is non zero.
+- Forcing flush frequently degrades the compression ratio, so this parameter
+- should be set only when necessary (in interactive applications).
+- Some output may be provided even if flush is not set.
+-
+- Before the call of deflate(), the application should ensure that at least
+- one of the actions is possible, by providing more input and/or consuming
+- more output, and updating avail_in or avail_out accordingly; avail_out
+- should never be zero before the call. The application can consume the
+- compressed output when it wants, for example when the output buffer is full
+- (avail_out == 0), or after each call of deflate(). If deflate returns Z_OK
+- and with zero avail_out, it must be called again after making room in the
+- output buffer because there might be more output pending.
+-
+- If the parameter flush is set to Z_SYNC_FLUSH, all pending output is
+- flushed to the output buffer and the output is aligned on a byte boundary, so
+- that the decompressor can get all input data available so far. (In particular
+- avail_in is zero after the call if enough output space has been provided
+- before the call.) Flushing may degrade compression for some compression
+- algorithms and so it should be used only when necessary.
+-
+- If flush is set to Z_FULL_FLUSH, all output is flushed as with
+- Z_SYNC_FLUSH, and the compression state is reset so that decompression can
+- restart from this point if previous compressed data has been damaged or if
+- random access is desired. Using Z_FULL_FLUSH too often can seriously degrade
+- the compression.
+-
+- If deflate returns with avail_out == 0, this function must be called again
+- with the same value of the flush parameter and more output space (updated
+- avail_out), until the flush is complete (deflate returns with non-zero
+- avail_out).
+-
+- If the parameter flush is set to Z_FINISH, pending input is processed,
+- pending output is flushed and deflate returns with Z_STREAM_END if there
+- was enough output space; if deflate returns with Z_OK, this function must be
+- called again with Z_FINISH and more output space (updated avail_out) but no
+- more input data, until it returns with Z_STREAM_END or an error. After
+- deflate has returned Z_STREAM_END, the only possible operations on the
+- stream are deflateReset or deflateEnd.
+-
+- Z_FINISH can be used immediately after deflateInit if all the compression
+- is to be done in a single step. In this case, avail_out must be at least
+- 0.1% larger than avail_in plus 12 bytes. If deflate does not return
+- Z_STREAM_END, then it must be called again as described above.
+-
+- deflate() sets strm->adler to the adler32 checksum of all input read
+- so far (that is, total_in bytes).
+-
+- deflate() may update data_type if it can make a good guess about
+- the input data type (Z_ASCII or Z_BINARY). In doubt, the data is considered
+- binary. This field is only for information purposes and does not affect
+- the compression algorithm in any manner.
+-
+- deflate() returns Z_OK if some progress has been made (more input
+- processed or more output produced), Z_STREAM_END if all input has been
+- consumed and all output has been produced (only when flush is set to
+- Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example
+- if next_in or next_out was NULL), Z_BUF_ERROR if no progress is possible
+- (for example avail_in or avail_out was zero).
+-*/
+-
+-
+-ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm));
+-/*
+- All dynamically allocated data structures for this stream are freed.
+- This function discards any unprocessed input and does not flush any
+- pending output.
+-
+- deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the
+- stream state was inconsistent, Z_DATA_ERROR if the stream was freed
+- prematurely (some input or output was discarded). In the error case,
+- msg may be set but then points to a static string (which must not be
+- deallocated).
+-*/
+-
+-
+-/*
+-ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm));
+-
+- Initializes the internal stream state for decompression. The fields
+- next_in, avail_in, zalloc, zfree and opaque must be initialized before by
+- the caller. If next_in is not Z_NULL and avail_in is large enough (the exact
+- value depends on the compression method), inflateInit determines the
+- compression method from the zlib header and allocates all data structures
+- accordingly; otherwise the allocation will be deferred to the first call of
+- inflate. If zalloc and zfree are set to Z_NULL, inflateInit updates them to
+- use default allocation functions.
+-
+- inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough
+- memory, Z_VERSION_ERROR if the zlib library version is incompatible with the
+- version assumed by the caller. msg is set to null if there is no error
+- message. inflateInit does not perform any decompression apart from reading
+- the zlib header if present: this will be done by inflate(). (So next_in and
+- avail_in may be modified, but next_out and avail_out are unchanged.)
+-*/
+-
+-
+-ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush));
+-/*
+- inflate decompresses as much data as possible, and stops when the input
+- buffer becomes empty or the output buffer becomes full. It may some
+- introduce some output latency (reading input without producing any output)
+- except when forced to flush.
+-
+- The detailed semantics are as follows. inflate performs one or both of the
+- following actions:
+-
+- - Decompress more input starting at next_in and update next_in and avail_in
+- accordingly. If not all input can be processed (because there is not
+- enough room in the output buffer), next_in is updated and processing
+- will resume at this point for the next call of inflate().
+-
+- - Provide more output starting at next_out and update next_out and avail_out
+- accordingly. inflate() provides as much output as possible, until there
+- is no more input data or no more space in the output buffer (see below
+- about the flush parameter).
+-
+- Before the call of inflate(), the application should ensure that at least
+- one of the actions is possible, by providing more input and/or consuming
+- more output, and updating the next_* and avail_* values accordingly.
+- The application can consume the uncompressed output when it wants, for
+- example when the output buffer is full (avail_out == 0), or after each
+- call of inflate(). If inflate returns Z_OK and with zero avail_out, it
+- must be called again after making room in the output buffer because there
+- might be more output pending.
+-
+- If the parameter flush is set to Z_SYNC_FLUSH, inflate flushes as much
+- output as possible to the output buffer. The flushing behavior of inflate is
+- not specified for values of the flush parameter other than Z_SYNC_FLUSH
+- and Z_FINISH, but the current implementation actually flushes as much output
+- as possible anyway.
+-
+- inflate() should normally be called until it returns Z_STREAM_END or an
+- error. However if all decompression is to be performed in a single step
+- (a single call of inflate), the parameter flush should be set to
+- Z_FINISH. In this case all pending input is processed and all pending
+- output is flushed; avail_out must be large enough to hold all the
+- uncompressed data. (The size of the uncompressed data may have been saved
+- by the compressor for this purpose.) The next operation on this stream must
+- be inflateEnd to deallocate the decompression state. The use of Z_FINISH
+- is never required, but can be used to inform inflate that a faster routine
+- may be used for the single inflate() call.
+-
+- If a preset dictionary is needed at this point (see inflateSetDictionary
+- below), inflate sets strm-adler to the adler32 checksum of the
+- dictionary chosen by the compressor and returns Z_NEED_DICT; otherwise
+- it sets strm->adler to the adler32 checksum of all output produced
+- so far (that is, total_out bytes) and returns Z_OK, Z_STREAM_END or
+- an error code as described below. At the end of the stream, inflate()
+- checks that its computed adler32 checksum is equal to that saved by the
+- compressor and returns Z_STREAM_END only if the checksum is correct.
+-
+- inflate() returns Z_OK if some progress has been made (more input processed
+- or more output produced), Z_STREAM_END if the end of the compressed data has
+- been reached and all uncompressed output has been produced, Z_NEED_DICT if a
+- preset dictionary is needed at this point, Z_DATA_ERROR if the input data was
+- corrupted (input stream not conforming to the zlib format or incorrect
+- adler32 checksum), Z_STREAM_ERROR if the stream structure was inconsistent
+- (for example if next_in or next_out was NULL), Z_MEM_ERROR if there was not
+- enough memory, Z_BUF_ERROR if no progress is possible or if there was not
+- enough room in the output buffer when Z_FINISH is used. In the Z_DATA_ERROR
+- case, the application may then call inflateSync to look for a good
+- compression block.
+-*/
+-
+-
+-ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm));
+-/*
+- All dynamically allocated data structures for this stream are freed.
+- This function discards any unprocessed input and does not flush any
+- pending output.
+-
+- inflateEnd returns Z_OK if success, Z_STREAM_ERROR if the stream state
+- was inconsistent. In the error case, msg may be set but then points to a
+- static string (which must not be deallocated).
+-*/
+-
+- /* Advanced functions */
+-
+-/*
+- The following functions are needed only in some special applications.
+-*/
+-
+-/*
+-ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm,
+- int level,
+- int method,
+- int windowBits,
+- int memLevel,
+- int strategy));
+-
+- This is another version of deflateInit with more compression options. The
+- fields next_in, zalloc, zfree and opaque must be initialized before by
+- the caller.
+-
+- The method parameter is the compression method. It must be Z_DEFLATED in
+- this version of the library.
+-
+- The windowBits parameter is the base two logarithm of the window size
+- (the size of the history buffer). It should be in the range 8..15 for this
+- version of the library. Larger values of this parameter result in better
+- compression at the expense of memory usage. The default value is 15 if
+- deflateInit is used instead.
+-
+- The memLevel parameter specifies how much memory should be allocated
+- for the internal compression state. memLevel=1 uses minimum memory but
+- is slow and reduces compression ratio; memLevel=9 uses maximum memory
+- for optimal speed. The default value is 8. See zconf.h for total memory
+- usage as a function of windowBits and memLevel.
+-
+- The strategy parameter is used to tune the compression algorithm. Use the
+- value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a
+- filter (or predictor), or Z_HUFFMAN_ONLY to force Huffman encoding only (no
+- string match). Filtered data consists mostly of small values with a
+- somewhat random distribution. In this case, the compression algorithm is
+- tuned to compress them better. The effect of Z_FILTERED is to force more
+- Huffman coding and less string matching; it is somewhat intermediate
+- between Z_DEFAULT and Z_HUFFMAN_ONLY. The strategy parameter only affects
+- the compression ratio but not the correctness of the compressed output even
+- if it is not set appropriately.
+-
+- deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
+- memory, Z_STREAM_ERROR if a parameter is invalid (such as an invalid
+- method). msg is set to null if there is no error message. deflateInit2 does
+- not perform any compression: this will be done by deflate().
+-*/
+-
+-ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm,
+- const Bytef *dictionary,
+- uInt dictLength));
+-/*
+- Initializes the compression dictionary from the given byte sequence
+- without producing any compressed output. This function must be called
+- immediately after deflateInit, deflateInit2 or deflateReset, before any
+- call of deflate. The compressor and decompressor must use exactly the same
+- dictionary (see inflateSetDictionary).
+-
+- The dictionary should consist of strings (byte sequences) that are likely
+- to be encountered later in the data to be compressed, with the most commonly
+- used strings preferably put towards the end of the dictionary. Using a
+- dictionary is most useful when the data to be compressed is short and can be
+- predicted with good accuracy; the data can then be compressed better than
+- with the default empty dictionary.
+-
+- Depending on the size of the compression data structures selected by
+- deflateInit or deflateInit2, a part of the dictionary may in effect be
+- discarded, for example if the dictionary is larger than the window size in
+- deflate or deflate2. Thus the strings most likely to be useful should be
+- put at the end of the dictionary, not at the front.
+-
+- Upon return of this function, strm->adler is set to the Adler32 value
+- of the dictionary; the decompressor may later use this value to determine
+- which dictionary has been used by the compressor. (The Adler32 value
+- applies to the whole dictionary even if only a subset of the dictionary is
+- actually used by the compressor.)
+-
+- deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a
+- parameter is invalid (such as NULL dictionary) or the stream state is
+- inconsistent (for example if deflate has already been called for this stream
+- or if the compression method is bsort). deflateSetDictionary does not
+- perform any compression: this will be done by deflate().
+-*/
+-
+-ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest,
+- z_streamp source));
+-/*
+- Sets the destination stream as a complete copy of the source stream.
+-
+- This function can be useful when several compression strategies will be
+- tried, for example when there are several ways of pre-processing the input
+- data with a filter. The streams that will be discarded should then be freed
+- by calling deflateEnd. Note that deflateCopy duplicates the internal
+- compression state which can be quite large, so this strategy is slow and
+- can consume lots of memory.
+-
+- deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not
+- enough memory, Z_STREAM_ERROR if the source stream state was inconsistent
+- (such as zalloc being NULL). msg is left unchanged in both source and
+- destination.
+-*/
+-
+-ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm));
+-/*
+- This function is equivalent to deflateEnd followed by deflateInit,
+- but does not free and reallocate all the internal compression state.
+- The stream will keep the same compression level and any other attributes
+- that may have been set by deflateInit2.
+-
+- deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
+- stream state was inconsistent (such as zalloc or state being NULL).
+-*/
+-
+-ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm,
+- int level,
+- int strategy));
+-/*
+- Dynamically update the compression level and compression strategy. The
+- interpretation of level and strategy is as in deflateInit2. This can be
+- used to switch between compression and straight copy of the input data, or
+- to switch to a different kind of input data requiring a different
+- strategy. If the compression level is changed, the input available so far
+- is compressed with the old level (and may be flushed); the new level will
+- take effect only at the next call of deflate().
+-
+- Before the call of deflateParams, the stream state must be set as for
+- a call of deflate(), since the currently available input may have to
+- be compressed and flushed. In particular, strm->avail_out must be non-zero.
+-
+- deflateParams returns Z_OK if success, Z_STREAM_ERROR if the source
+- stream state was inconsistent or if a parameter was invalid, Z_BUF_ERROR
+- if strm->avail_out was zero.
+-*/
+-
+-/*
+-ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm,
+- int windowBits));
+-
+- This is another version of inflateInit with an extra parameter. The
+- fields next_in, avail_in, zalloc, zfree and opaque must be initialized
+- before by the caller.
+-
+- The windowBits parameter is the base two logarithm of the maximum window
+- size (the size of the history buffer). It should be in the range 8..15 for
+- this version of the library. The default value is 15 if inflateInit is used
+- instead. If a compressed stream with a larger window size is given as
+- input, inflate() will return with the error code Z_DATA_ERROR instead of
+- trying to allocate a larger window.
+-
+- inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
+- memory, Z_STREAM_ERROR if a parameter is invalid (such as a negative
+- memLevel). msg is set to null if there is no error message. inflateInit2
+- does not perform any decompression apart from reading the zlib header if
+- present: this will be done by inflate(). (So next_in and avail_in may be
+- modified, but next_out and avail_out are unchanged.)
+-*/
+-
+-ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm,
+- const Bytef *dictionary,
+- uInt dictLength));
+-/*
+- Initializes the decompression dictionary from the given uncompressed byte
+- sequence. This function must be called immediately after a call of inflate
+- if this call returned Z_NEED_DICT. The dictionary chosen by the compressor
+- can be determined from the Adler32 value returned by this call of
+- inflate. The compressor and decompressor must use exactly the same
+- dictionary (see deflateSetDictionary).
+-
+- inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a
+- parameter is invalid (such as NULL dictionary) or the stream state is
+- inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the
+- expected one (incorrect Adler32 value). inflateSetDictionary does not
+- perform any decompression: this will be done by subsequent calls of
+- inflate().
+-*/
+-
+-ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm));
+-/*
+- Skips invalid compressed data until a full flush point (see above the
+- description of deflate with Z_FULL_FLUSH) can be found, or until all
+- available input is skipped. No output is provided.
+-
+- inflateSync returns Z_OK if a full flush point has been found, Z_BUF_ERROR
+- if no more input was provided, Z_DATA_ERROR if no flush point has been found,
+- or Z_STREAM_ERROR if the stream structure was inconsistent. In the success
+- case, the application may save the current current value of total_in which
+- indicates where valid compressed data was found. In the error case, the
+- application may repeatedly call inflateSync, providing more input each time,
+- until success or end of the input data.
+-*/
+-
+-ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm));
+-/*
+- This function is equivalent to inflateEnd followed by inflateInit,
+- but does not free and reallocate all the internal decompression state.
+- The stream will keep attributes that may have been set by inflateInit2.
+-
+- inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source
+- stream state was inconsistent (such as zalloc or state being NULL).
+-*/
+-
+-
+- /* utility functions */
+-
+-/*
+- The following utility functions are implemented on top of the
+- basic stream-oriented functions. To simplify the interface, some
+- default options are assumed (compression level and memory usage,
+- standard memory allocation functions). The source code of these
+- utility functions can easily be modified if you need special options.
+-*/
+-
+-ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen,
+- const Bytef *source, uLong sourceLen));
+-/*
+- Compresses the source buffer into the destination buffer. sourceLen is
+- the byte length of the source buffer. Upon entry, destLen is the total
+- size of the destination buffer, which must be at least 0.1% larger than
+- sourceLen plus 12 bytes. Upon exit, destLen is the actual size of the
+- compressed buffer.
+- This function can be used to compress a whole file at once if the
+- input file is mmap'ed.
+- compress returns Z_OK if success, Z_MEM_ERROR if there was not
+- enough memory, Z_BUF_ERROR if there was not enough room in the output
+- buffer.
+-*/
+-
+-ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen,
+- const Bytef *source, uLong sourceLen,
+- int level));
+-/*
+- Compresses the source buffer into the destination buffer. The level
+- parameter has the same meaning as in deflateInit. sourceLen is the byte
+- length of the source buffer. Upon entry, destLen is the total size of the
+- destination buffer, which must be at least 0.1% larger than sourceLen plus
+- 12 bytes. Upon exit, destLen is the actual size of the compressed buffer.
+-
+- compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough
+- memory, Z_BUF_ERROR if there was not enough room in the output buffer,
+- Z_STREAM_ERROR if the level parameter is invalid.
+-*/
+-
+-ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen,
+- const Bytef *source, uLong sourceLen));
+-/*
+- Decompresses the source buffer into the destination buffer. sourceLen is
+- the byte length of the source buffer. Upon entry, destLen is the total
+- size of the destination buffer, which must be large enough to hold the
+- entire uncompressed data. (The size of the uncompressed data must have
+- been saved previously by the compressor and transmitted to the decompressor
+- by some mechanism outside the scope of this compression library.)
+- Upon exit, destLen is the actual size of the compressed buffer.
+- This function can be used to decompress a whole file at once if the
+- input file is mmap'ed.
+-
+- uncompress returns Z_OK if success, Z_MEM_ERROR if there was not
+- enough memory, Z_BUF_ERROR if there was not enough room in the output
+- buffer, or Z_DATA_ERROR if the input data was corrupted.
+-*/
+-
+-
+-typedef voidp gzFile;
+-
+-ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode));
+-/*
+- Opens a gzip (.gz) file for reading or writing. The mode parameter
+- is as in fopen ("rb" or "wb") but can also include a compression level
+- ("wb9") or a strategy: 'f' for filtered data as in "wb6f", 'h' for
+- Huffman only compression as in "wb1h". (See the description
+- of deflateInit2 for more information about the strategy parameter.)
+-
+- gzopen can be used to read a file which is not in gzip format; in this
+- case gzread will directly read from the file without decompression.
+-
+- gzopen returns NULL if the file could not be opened or if there was
+- insufficient memory to allocate the (de)compression state; errno
+- can be checked to distinguish the two cases (if errno is zero, the
+- zlib error is Z_MEM_ERROR). */
+-
+-ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode));
+-/*
+- gzdopen() associates a gzFile with the file descriptor fd. File
+- descriptors are obtained from calls like open, dup, creat, pipe or
+- fileno (in the file has been previously opened with fopen).
+- The mode parameter is as in gzopen.
+- The next call of gzclose on the returned gzFile will also close the
+- file descriptor fd, just like fclose(fdopen(fd), mode) closes the file
+- descriptor fd. If you want to keep fd open, use gzdopen(dup(fd), mode).
+- gzdopen returns NULL if there was insufficient memory to allocate
+- the (de)compression state.
+-*/
+-
+-ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy));
+-/*
+- Dynamically update the compression level or strategy. See the description
+- of deflateInit2 for the meaning of these parameters.
+- gzsetparams returns Z_OK if success, or Z_STREAM_ERROR if the file was not
+- opened for writing.
+-*/
+-
+-ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len));
+-/*
+- Reads the given number of uncompressed bytes from the compressed file.
+- If the input file was not in gzip format, gzread copies the given number
+- of bytes into the buffer.
+- gzread returns the number of uncompressed bytes actually read (0 for
+- end of file, -1 for error). */
+-
+-ZEXTERN int ZEXPORT gzwrite OF((gzFile file,
+- const voidp buf, unsigned len));
+-/*
+- Writes the given number of uncompressed bytes into the compressed file.
+- gzwrite returns the number of uncompressed bytes actually written
+- (0 in case of error).
+-*/
+-
+-ZEXTERN int ZEXPORTVA gzprintf OF((gzFile file, const char *format, ...));
+-/*
+- Converts, formats, and writes the args to the compressed file under
+- control of the format string, as in fprintf. gzprintf returns the number of
+- uncompressed bytes actually written (0 in case of error).
+-*/
+-
+-ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s));
+-/*
+- Writes the given null-terminated string to the compressed file, excluding
+- the terminating null character.
+- gzputs returns the number of characters written, or -1 in case of error.
+-*/
+-
+-ZEXTERN char * ZEXPORT gzgets OF((gzFile file, char *buf, int len));
+-/*
+- Reads bytes from the compressed file until len-1 characters are read, or
+- a newline character is read and transferred to buf, or an end-of-file
+- condition is encountered. The string is then terminated with a null
+- character.
+- gzgets returns buf, or Z_NULL in case of error.
+-*/
+-
+-ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c));
+-/*
+- Writes c, converted to an unsigned char, into the compressed file.
+- gzputc returns the value that was written, or -1 in case of error.
+-*/
+-
+-ZEXTERN int ZEXPORT gzgetc OF((gzFile file));
+-/*
+- Reads one byte from the compressed file. gzgetc returns this byte
+- or -1 in case of end of file or error.
+-*/
+-
+-ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush));
+-/*
+- Flushes all pending output into the compressed file. The parameter
+- flush is as in the deflate() function. The return value is the zlib
+- error number (see function gzerror below). gzflush returns Z_OK if
+- the flush parameter is Z_FINISH and all output could be flushed.
+- gzflush should be called only when strictly necessary because it can
+- degrade compression.
+-*/
+-
+-ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file,
+- z_off_t offset, int whence));
+-/*
+- Sets the starting position for the next gzread or gzwrite on the
+- given compressed file. The offset represents a number of bytes in the
+- uncompressed data stream. The whence parameter is defined as in lseek(2);
+- the value SEEK_END is not supported.
+- If the file is opened for reading, this function is emulated but can be
+- extremely slow. If the file is opened for writing, only forward seeks are
+- supported; gzseek then compresses a sequence of zeroes up to the new
+- starting position.
+-
+- gzseek returns the resulting offset location as measured in bytes from
+- the beginning of the uncompressed stream, or -1 in case of error, in
+- particular if the file is opened for writing and the new starting position
+- would be before the current position.
+-*/
+-
+-ZEXTERN int ZEXPORT gzrewind OF((gzFile file));
+-/*
+- Rewinds the given file. This function is supported only for reading.
+-
+- gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET)
+-*/
+-
+-ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file));
+-/*
+- Returns the starting position for the next gzread or gzwrite on the
+- given compressed file. This position represents a number of bytes in the
+- uncompressed data stream.
+-
+- gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR)
+-*/
+-
+-ZEXTERN int ZEXPORT gzeof OF((gzFile file));
+-/*
+- Returns 1 when EOF has previously been detected reading the given
+- input stream, otherwise zero.
+-*/
+-
+-ZEXTERN int ZEXPORT gzclose OF((gzFile file));
+-/*
+- Flushes all pending output if necessary, closes the compressed file
+- and deallocates all the (de)compression state. The return value is the zlib
+- error number (see function gzerror below).
+-*/
+-
+-ZEXTERN const char * ZEXPORT gzerror OF((gzFile file, int *errnum));
+-/*
+- Returns the error message for the last error which occurred on the
+- given compressed file. errnum is set to zlib error number. If an
+- error occurred in the file system and not in the compression library,
+- errnum is set to Z_ERRNO and the application may consult errno
+- to get the exact error code.
+-*/
+-
+- /* checksum functions */
+-
+-/*
+- These functions are not related to compression but are exported
+- anyway because they might be useful in applications using the
+- compression library.
+-*/
+-
+-ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len));
+-
+-/*
+- Update a running Adler-32 checksum with the bytes buf[0..len-1] and
+- return the updated checksum. If buf is NULL, this function returns
+- the required initial value for the checksum.
+- An Adler-32 checksum is almost as reliable as a CRC32 but can be computed
+- much faster. Usage example:
+-
+- uLong adler = adler32(0L, Z_NULL, 0);
+-
+- while (read_buffer(buffer, length) != EOF) {
+- adler = adler32(adler, buffer, length);
+- }
+- if (adler != original_adler) error();
+-*/
+-
+-ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len));
+-/*
+- Update a running crc with the bytes buf[0..len-1] and return the updated
+- crc. If buf is NULL, this function returns the required initial value
+- for the crc. Pre- and post-conditioning (one's complement) is performed
+- within this function so it shouldn't be done by the application.
+- Usage example:
+-
+- uLong crc = crc32(0L, Z_NULL, 0);
+-
+- while (read_buffer(buffer, length) != EOF) {
+- crc = crc32(crc, buffer, length);
+- }
diff --git a/novacomd-quiet-logging.patch b/novacomd-quiet-logging.patch
new file mode 100644
index 0000000..9c279d8
--- /dev/null
+++ b/novacomd-quiet-logging.patch
@@ -0,0 +1,12 @@
+diff -urb novacomd-git-e77d33616f/src/host/usb-linux.c novacomd-git-e77d33616f.b/src/host/usb-linux.c
+--- novacomd-git-e77d33616f/src/host/usb-linux.c 2012-05-02 14:38:13.908295949 +0300
++++ novacomd-git-e77d33616f.b/src/host/usb-linux.c 2012-05-02 14:36:46.958671590 +0300
+@@ -355,7 +355,7 @@
+ count = 0;
+ }
+ if (rc >=0) {
+- TRACEF/*LOG_PRINTF*/("usbll(%08x) wrote tx packet len=%d\n", novacom_usbll_getuid(handle->usbll_handle), rc);
++ TRACEL(LOG_SPEW, "usbll(%08x) wrote tx packet len=%d\n", novacom_usbll_getuid(handle->usbll_handle), rc);
+ }
+
+ #if FAULTY_TX
diff --git a/novacomd.service b/novacomd.service
new file mode 100644
index 0000000..0474e27
--- /dev/null
+++ b/novacomd.service
@@ -0,0 +1,10 @@
+[Unit]
+Description=Novacom server daemon
+After=syslog.target
+
+[Service]
+EnvironmentFile=-/etc/default/novacomd
+ExecStart=/usr/bin/novacomd $OPTIONS
+
+[Install]
+WantedBy=multi-user.target
diff --git a/novacomd_add_cflags.patch b/novacomd_add_cflags.patch
new file mode 100644
index 0000000..da262f2
--- /dev/null
+++ b/novacomd_add_cflags.patch
@@ -0,0 +1,12 @@
+diff -urb novacomd-git-e77d33616f/makefile novacomd-git-e77d33616f.b/makefile
+--- novacomd-git-e77d33616f/makefile 2012-03-28 23:10:56.000000000 +0300
++++ novacomd-git-e77d33616f.b/makefile 2012-04-02 14:50:27.214406018 +0300
+@@ -38,7 +38,7 @@
+ ifneq ($(MACHINE),)
+ MYCFLAGS += -DMACHINE=\"$(MACHINE)\"
+ endif
+-HOSTCFLAGS := $(MYCFLAGS) -Isrc
++HOSTCFLAGS := $(MYCFLAGS) $(CFLAGS) -Isrc
+ DEVICECFLAGS := $(MYCFLAGS) $(OECFLAGS) $(TARGET_CC_ARCH) -DPLATFORM_PTHREADS=1
+ CPPFLAGS := -g
+ ASMFLAGS :=
diff --git a/sources b/sources
index e69de29..e791507 100644
--- a/sources
+++ b/sources
@@ -0,0 +1 @@
+9cdb4ee0de1942100a9000506889dfb2 openwebos-novacomd-submissions-119.1-0-ge77d336.tar.gz
More information about the scm-commits
mailing list