From owner-svn-soc-all@FreeBSD.ORG Thu Aug 8 18:26:20 2013 Return-Path: Delivered-To: svn-soc-all@FreeBSD.org Received: from mx1.freebsd.org (mx1.freebsd.org [8.8.178.115]) (using TLSv1 with cipher ADH-AES256-SHA (256/256 bits)) (No client certificate requested) by hub.freebsd.org (Postfix) with ESMTP id 68A32185 for ; Thu, 8 Aug 2013 18:26:20 +0000 (UTC) (envelope-from dpl@FreeBSD.org) Received: from socsvn.freebsd.org (socsvn.freebsd.org [IPv6:2001:1900:2254:206a::50:2]) (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) by mx1.freebsd.org (Postfix) with ESMTPS id 534D02A68 for ; Thu, 8 Aug 2013 18:26:20 +0000 (UTC) Received: from socsvn.freebsd.org ([127.0.1.124]) by socsvn.freebsd.org (8.14.7/8.14.7) with ESMTP id r78IQKnk085161 for ; Thu, 8 Aug 2013 18:26:20 GMT (envelope-from dpl@FreeBSD.org) Received: (from www@localhost) by socsvn.freebsd.org (8.14.7/8.14.6/Submit) id r78IQKDX085149 for svn-soc-all@FreeBSD.org; Thu, 8 Aug 2013 18:26:20 GMT (envelope-from dpl@FreeBSD.org) Date: Thu, 8 Aug 2013 18:26:20 GMT Message-Id: <201308081826.r78IQKDX085149@socsvn.freebsd.org> X-Authentication-Warning: socsvn.freebsd.org: www set sender to dpl@FreeBSD.org using -f From: dpl@FreeBSD.org To: svn-soc-all@FreeBSD.org Subject: socsvn commit: r255684 - in soc2013/dpl: . head/lib/libzcap head/lib/libzcap/zlibworker MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit X-BeenThere: svn-soc-all@freebsd.org X-Mailman-Version: 2.1.14 Precedence: list List-Id: SVN commit messages for the entire Summer of Code repository List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Aug 2013 18:26:20 -0000 Author: dpl Date: Thu Aug 8 18:26:19 2013 New Revision: 255684 URL: http://svnweb.FreeBSD.org/socsvn/?view=rev&rev=255684 Log: Made everything compilable. Added: soc2013/dpl/datapasstest.c Modified: soc2013/dpl/head/lib/libzcap/Makefile soc2013/dpl/head/lib/libzcap/adler32.c soc2013/dpl/head/lib/libzcap/capsicum.c soc2013/dpl/head/lib/libzcap/commands.c soc2013/dpl/head/lib/libzcap/compress.c soc2013/dpl/head/lib/libzcap/crc32.c soc2013/dpl/head/lib/libzcap/gzlib.c soc2013/dpl/head/lib/libzcap/gzread.c soc2013/dpl/head/lib/libzcap/gzwrite.c soc2013/dpl/head/lib/libzcap/zlibworker/Makefile soc2013/dpl/head/lib/libzcap/zlibworker/comands.c soc2013/dpl/head/lib/libzcap/zlibworker/zlibworker.c Added: soc2013/dpl/datapasstest.c ============================================================================== --- /dev/null 00:00:00 1970 (empty, because file is newly added) +++ soc2013/dpl/datapasstest.c Thu Aug 8 18:26:19 2013 (r255684) @@ -0,0 +1,50 @@ +#include +#include +#include +#include +#include +#include +#include + +#define BIG 5*1024 + +void * ptr; +char *buf, *buf2; +int sv[2]; +nvlist_t *nvl1, *nvl2; + +int +main() +{ + int i= 0; + size_t big = BIG; + + buf = malloc(BIG); + if (buf == NULL) { + perror("malloc()"); + return 1; + } + for( i = 0; i < BIG; i++) + buf[i] = (char)random(); + + if (socketpair(PF_LOCAL, SOCK_STREAM, 0, sv) < 0 ) + perror("socketpair"); + + nvl1 = nvlist_create(0); + nvl2 = nvlist_create(0); + + nvlist_add_binary(nvl1, "data", buf, BIG); + nvlist_send(sv[0], nvl1); + + nvl2 = nvlist_recv(sv[1]); + buf2 = malloc(BIG); + ptr = nvlist_take_binary(nvl2, "data", &big); + memcpy(buf2, ptr, BIG); + + for( i = 0; i < BIG; i++) + assert( buf[i] == buf2[i]); + free(buf); + + printf("Everything went well!\n"); + return 0; +} \ No newline at end of file Modified: soc2013/dpl/head/lib/libzcap/Makefile ============================================================================== --- soc2013/dpl/head/lib/libzcap/Makefile Thu Aug 8 17:21:59 2013 (r255683) +++ soc2013/dpl/head/lib/libzcap/Makefile Thu Aug 8 18:26:19 2013 (r255684) @@ -3,7 +3,7 @@ # #TODEL -CFLAGS+= -Wall -g -fno-color-diagnostics +CFLAGS+= -Wall -g -v -fno-color-diagnostics LIB= zcap SHLIBDIR?= /lib Modified: soc2013/dpl/head/lib/libzcap/adler32.c ============================================================================== --- soc2013/dpl/head/lib/libzcap/adler32.c Thu Aug 8 17:21:59 2013 (r255683) +++ soc2013/dpl/head/lib/libzcap/adler32.c Thu Aug 8 18:26:19 2013 (r255684) @@ -62,16 +62,16 @@ #endif /* ========================================================================= */ -uLong zcapcmd_adler32(); +extern uLong zcapcmd_adler32(); uLong ZEXPORT adler32(adler, buf, len) uLong adler; const Bytef *buf; uInt len; { /* Send packets of 100kb size at most. */ - if ((sizeof(*buf)*len) > (100*1024)) { - while( (len -= (100*1024)) > 0) { - buf += (100*1024)/sizeof(*buf); + if ((sizeof(*buf)*len) > (5*1024)) { + while( (len -= (5*1024)) > 0) { + buf += (5*1024)/sizeof(*buf); adler = zcapcmd_adler32(adler, buf, len); } } else { @@ -81,7 +81,7 @@ } /* ========================================================================= */ -uLong zcapcmd_adler32_combine(); +extern uLong zcapcmd_adler32_combine(); local uLong adler32_combine_(adler1, adler2, len2) uLong adler1; uLong adler2; Modified: soc2013/dpl/head/lib/libzcap/capsicum.c ============================================================================== --- soc2013/dpl/head/lib/libzcap/capsicum.c Thu Aug 8 17:21:59 2013 (r255683) +++ soc2013/dpl/head/lib/libzcap/capsicum.c Thu Aug 8 18:26:19 2013 (r255684) @@ -1,6 +1,15 @@ #include "capsicum.h" #include "zlib.h" +#include +#include +#include + +#include +#include +#include +#include + #define SUM 0 pid_t pid = 0; @@ -8,6 +17,7 @@ int startChild(void); void killChild(void); +nvlist_t * sendCommand(nvlist_t *nvl); int startChild() @@ -25,12 +35,12 @@ /* open and fexec() listener */ if (access("/usr/libexec/zlibworker", X_OK) < 0) { - fprintf(stderr, "zlibworker doesn't exist, or can't be executed.\n") + fprintf(stderr, "zlibworker doesn't exist, or can't be executed.\n"); fprintf(stderr, "You should compile and install it.\n"); exit (-1); } - execve("/usr/libexec/zlibworker", "", ""); + execl("/usr/libexec/zlibworker", ""); exit(0); } else atexit(killChild); @@ -41,13 +51,19 @@ nvlist_t * sendCommand( nvlist_t *nvl ) { - if( nvlist_send(sv[0], nvl) == 0 ) - continue; + if( nvlist_send(sv[0], nvl) != 0 ) { + perror("nvlist_send()"); + return NULL; + } + nvlist_destroy(nvl); /* recv results */ - if ((nvl = nvlist_recv(sv[0])) != NULL) - continue; + if ((nvl = nvlist_recv(sv[0])) != NULL) { + perror("nvlist_send()"); + return NULL; + } + return (nvl); } Modified: soc2013/dpl/head/lib/libzcap/commands.c ============================================================================== --- soc2013/dpl/head/lib/libzcap/commands.c Thu Aug 8 17:21:59 2013 (r255683) +++ soc2013/dpl/head/lib/libzcap/commands.c Thu Aug 8 18:26:19 2013 (r255684) @@ -34,14 +34,39 @@ */ +#include "zlib.h" #include "capsicum.c" +#include "commands.h" -extern pid; +#include + + +uLong zcapcmd_compressBound(uLong sourceLen); + +gzFile zcapcmd_gzopen(const char *path, int fd, const char *mode); +int zcapcmd_gzbuffer(gzFile file, unsigned size); +int zcapcmd_gzsetparams(gzFile file, int level, int strategy); +int zcapcmd_gzputs(gzFile file, const char *s); +char *zcapcmd_gzgets(gzFile file, char *buf, int len); +int zcapcmd_gzputc(gzFile file, int c); +int zcapcmd_gzungetc(int c, gzFile file); +int zcapcmd_gzflush(gzFile file, int flush); +z_off_t zcapcmd_gzseek(gzFile file, z_off_t offset, int whence); +int zcapcmd_simplecommand(gzFile file, int command); +char * zcapcmd_gzerror(gzFile file, int *errnum); + +uLong zcapcmd_adler32(uLong adler, const Bytef *buf, uInt len); +uLong zcapcmd_adler32_combine(uLong adler1, uLong adler2, z_off_t len2 ); +uLong zcapcmd_crc32(uLong crc, const Bytef *buf, uInt len); +uLong zcapcmd_crc32_combine(uLong crc1, uLong crc2, z_off64_t len2); + +extern pid_t pid; extern nvlist_t *sendCommand(nvlist_t *); +size_t gzFilesize = sizeof(struct gzFile_s); + uLong -zcapcmd_compressBound(sourceLen) - uLong sourceLen; +zcapcmd_compressBound(uLong sourceLen) { nvlist_t *nvl, *args, *result; uLong ret; @@ -52,7 +77,7 @@ if( (args = nvlist_create(0)) == NULL || (nvl = nvlist_create(0)) == NULL ) { perror("nvlist_create"); - return (NULL); + return(0); } nvlist_add_number(nvl, "command", ZCAPCMD_COMPRESSBOUND); nvlist_add_number(args, "sourceLen", sourceLen); @@ -60,16 +85,13 @@ result = sendCommand(nvl); - int ret = nvlist_take_number(result, "result"); + ret = nvlist_take_number(result, "result"); nvlist_destroy(result); return(ret); } gzFile -zcapcmd_gzopen(path, fd, mode) - const char *path; - int fd; - const char *mode; +zcapcmd_gzopen(const char *path, int fd, const char *mode) { nvlist_t *nvl, *args, *result; @@ -89,18 +111,16 @@ result = sendCommand(nvl); - void *mem = malloc(sizeof(gzFile_s)); + void *mem = malloc(gzFilesize); memcpy(mem, - nvlist_take_binary(result, "result", sizeof(gzFile_s)), - sizeof(gzFile_s)); + nvlist_take_binary(result, "result", &gzFilesize), + gzFilesize); nvlist_destroy(result); - return(mem); + return((gzFile)mem); } int -zcapcmd_gzbuffer(file, size) - gzFile file; - unsigned size; +zcapcmd_gzbuffer(gzFile file, unsigned size) { nvlist_t *nvl, *args, *result; @@ -110,10 +130,10 @@ if( (args = nvlist_create(0)) == NULL || (nvl = nvlist_create(0)) == NULL ) { perror("nvlist_create"); - return (NULL); + return(0); } nvlist_add_number(nvl, "command", ZCAPCMD_GZBUFFER); - nvlist_add_binary(args, "file", file, sizeof(gzFile_s)); + nvlist_add_binary(args, "file", file, gzFilesize); nvlist_add_number(args, "size", size); nvlist_add_nvlist(nvl, "args", args); @@ -125,10 +145,7 @@ } int -zcapcmd_gzsetparams(file, level, strategy) - gzFile file; - int level; - int strategy; +zcapcmd_gzsetparams(gzFile file, int level, int strategy) { nvlist_t *nvl, *args, *result; @@ -138,10 +155,10 @@ if( (args = nvlist_create(0)) == NULL || (nvl = nvlist_create(0)) == NULL ) { perror("nvlist_create"); - return (NULL); + return(0); } nvlist_add_number(nvl, "command", ZCAPCMD_GZSETPARAMS); - nvlist_add_binary(args, "file", file, sizeof(gzFile_s)); + nvlist_add_binary(args, "file", file, gzFilesize); nvlist_add_number(args, "level", level); nvlist_add_number(args, "strategy", strategy); nvlist_add_nvlist(nvl, "args", args); @@ -160,9 +177,7 @@ */ int -zcapcmd_gzputs(file, s) - gzFile file; - const char *s; +zcapcmd_gzputs(gzFile file, const char *s) { nvlist_t *nvl, *args, *result; @@ -172,25 +187,22 @@ if( (args = nvlist_create(0)) == NULL || (nvl = nvlist_create(0)) == NULL ) { perror("nvlist_create"); - return (NULL); + return(0); } nvlist_add_number(nvl, "command", ZCAPCMD_GZPUTS); - nvlist_add_binary(args, "file", file, sizeof(gzFile_s)); + nvlist_add_binary(args, "file", file, gzFilesize); nvlist_add_string(args, "s", s); nvlist_add_nvlist(nvl, "args", args); result = sendCommand(nvl); - ret = nvlist_take_number(result, "result"); + int ret = nvlist_take_number(result, "result"); nvlist_destroy(result); return(ret); } -/* XXX */ char * -zcapcmd_gzgets(file, s) - gzFile file; - const char *s; +zcapcmd_gzgets(gzFile file, char *buf, int len) { nvlist_t *nvl, *args, *result; @@ -203,21 +215,23 @@ return (NULL); } nvlist_add_number(nvl, "command", ZCAPCMD_GZGETS); - nvlist_add_binary(args, "file", file, sizeof(gzFile_s)); - nvlist_add_string(args, "s", s); + nvlist_add_binary(args, "file", file, gzFilesize); + nvlist_add_number(args, "len", len); nvlist_add_nvlist(nvl, "args", args); result = sendCommand(nvl); char *ret = nvlist_take_string(result, "result"); - nvlist_destroy(result); - return(ret); + if (ret == NULL) + return NULL; + else + memcpy(buf, (void *)ret, len); + nvlist_destroy(result); + return(buf); } int -zcapcmd_gzputc(file, c) - gzFile file; - int c; +zcapcmd_gzputc(gzFile file, int c) { nvlist_t *nvl, *args, *result; @@ -227,10 +241,10 @@ if( (args = nvlist_create(0)) == NULL || (nvl = nvlist_create(0)) == NULL ) { perror("nvlist_create"); - return (NULL); + return(0); } nvlist_add_number(nvl, "command", ZCAPCMD_GZPUTC); - nvlist_add_binary(args, "file", file, sizeof(gzFile_s)); + nvlist_add_binary(args, "file", file, gzFilesize); nvlist_add_number(args, "c", c); nvlist_add_nvlist(nvl, "args", args); @@ -242,9 +256,7 @@ } int -zcapcmd_gzungetc(c, file) - int c; - gzFile file; +zcapcmd_gzungetc(int c, gzFile file) { nvlist_t *nvl, *args, *result; @@ -254,11 +266,11 @@ if( (args = nvlist_create(0)) == NULL || (nvl = nvlist_create(0)) == NULL ) { perror("nvlist_create"); - return (NULL); + return(0); } nvlist_add_number(nvl, "command", ZCAPCMD_GZUNGETC); nvlist_add_number(args, "c", c); - nvlist_add_binary(args, "file", file, sizeof(gzFile_s)); + nvlist_add_binary(args, "file", file, gzFilesize); nvlist_add_nvlist(nvl, "args", args); result = sendCommand(nvl); @@ -269,9 +281,7 @@ } int -zcapcmd_gzflush(file, flush) - gzFile file; - int flush; +zcapcmd_gzflush(gzFile file, int flush) { nvlist_t *nvl, *args, *result; @@ -281,10 +291,10 @@ if( (args = nvlist_create(0)) == NULL || (nvl = nvlist_create(0)) == NULL ) { perror("nvlist_create"); - return (NULL); + return(0); } nvlist_add_number(nvl, "command", ZCAPCMD_GZFLUSH); - nvlist_add_binary(args, "file", file, sizeof(gzFile_s)); + nvlist_add_binary(args, "file", file, gzFilesize); nvlist_add_number(args, "flush", flush); nvlist_add_nvlist(nvl, "args", args); @@ -296,10 +306,7 @@ } z_off_t -zcapcmd_gzseek(file, offset, whence) - gzFile file; - z_off_t flush; - int whence; +zcapcmd_gzseek(gzFile file, z_off_t offset, int whence) { nvlist_t *nvl, *args, *result; @@ -309,10 +316,10 @@ if( (args = nvlist_create(0)) == NULL || (nvl = nvlist_create(0)) == NULL ) { perror("nvlist_create"); - return (NULL); + return(0); } nvlist_add_number(nvl, "command", ZCAPCMD_GZSEEK); - nvlist_add_binary(args, "file", file, sizeof(gzFile_s)); + nvlist_add_binary(args, "file", file, gzFilesize); nvlist_add_number(args, "offset", offset); nvlist_add_number(args, "whence", whence); nvlist_add_nvlist(nvl, "args", args); @@ -326,12 +333,10 @@ /* * This function will be used by all functions accepting - * a single gzFile, and returning an int. + * a single gzFile. */ int -zcapcmd_simplecommand(file, c, command) - gzFile file; - int c; +zcapcmd_simplecommand(gzFile file, int command) { nvlist_t *nvl, *args, *result; @@ -341,10 +346,10 @@ if( (args = nvlist_create(0)) == NULL || (nvl = nvlist_create(0)) == NULL ) { perror("nvlist_create"); - return (NULL); + return(0); } nvlist_add_number(nvl, "command", command); - nvlist_add_binary(args, "file", file, sizeof(gzFile_s)); + nvlist_add_binary(args, "file", file, gzFilesize); nvlist_add_nvlist(nvl, "args", args); result = sendCommand(nvl); @@ -354,10 +359,8 @@ return(ret); } -int -zcapcmd_gzerror(file, errnum) - gzFile file; - int *errnum; +char * +zcapcmd_gzerror(gzFile file, int *errnum) { nvlist_t *nvl, *args, *result; @@ -367,10 +370,10 @@ if( (args = nvlist_create(0)) == NULL || (nvl = nvlist_create(0)) == NULL ) { perror("nvlist_create"); - return (NULL); + return(0); } nvlist_add_number(nvl, "command", ZCAPCMD_GZPUTC); - nvlist_add_binary(args, "file", file, sizeof(gzFile_s)); + nvlist_add_binary(args, "file", file, gzFilesize); nvlist_add_nvlist(nvl, "args", args); result = sendCommand(nvl); @@ -383,10 +386,7 @@ } uLong -zcapcmd_adler32(adler, buf, len) - uLong adler; - const Bytef *buf; - uInt len; +zcapcmd_adler32(uLong adler, const Bytef *buf, uInt len) { nvlist_t *nvl, *args, *result; uLong ret; @@ -396,11 +396,11 @@ if( (args = nvlist_create(0)) == NULL || (nvl = nvlist_create(0)) == NULL ) { perror("nvlist_create"); - return (NULL); + return(0); } nvlist_add_number(nvl, "command", ZCAPCMD_ADLER32); nvlist_add_number(args, "adler", adler); - nvlist_add_binary(args, "buf", *buf, len); + nvlist_add_binary(args, "buf", buf, len); nvlist_add_number(args, "len", len); nvlist_add_nvlist(nvl, "args", args); @@ -412,10 +412,7 @@ } uLong -zcapcmd_adler32_combine( adler1, adler2, len2 ) - uLong adler1; - uLong adler2; - z_off_t len2 +zcapcmd_adler32_combine(uLong adler1, uLong adler2, z_off_t len2 ) { nvlist_t *nvl, *args, *result; uLong ret; @@ -426,7 +423,7 @@ if( (args = nvlist_create(0)) == NULL || (nvl = nvlist_create(0)) == NULL ) { perror("nvlist_create"); - return (NULL); + return(0); } nvlist_add_number(nvl, "command", ZCAPCMD_ADLER32_COMBINE); nvlist_add_number(args, "adler2", adler2); @@ -442,10 +439,7 @@ } uLong -zcapcmd_crc32(crc, buf, len) - uLong crc; - const Bytef *buf; - uInt len; +zcapcmd_crc32(uLong crc, const Bytef *buf, uInt len) { nvlist_t *nvl, *args, *result; uLong ret; @@ -455,11 +449,11 @@ if( (args = nvlist_create(0)) == NULL || (nvl = nvlist_create(0)) == NULL ) { perror("nvlist_create"); - return (NULL); + return(0); } nvlist_add_number(nvl, "command", ZCAPCMD_CRC32); nvlist_add_number(args, "crc", crc); - nvlist_add_binary(args, "buf", *buf, len); + nvlist_add_binary(args, "buf", buf, len); nvlist_add_number(args, "len", len); nvlist_add_nvlist(nvl, "args", args); @@ -471,10 +465,7 @@ } uLong -zcapcmd_crc32_combine( crc1, crc2, len2 ) - uLong crc1; - uLong crc2; - z_off64_t len2; +zcapcmd_crc32_combine(uLong crc1, uLong crc2, z_off64_t len2) { nvlist_t *nvl, *args, *result; uLong ret; @@ -485,7 +476,7 @@ if( (args = nvlist_create(0)) == NULL || (nvl = nvlist_create(0)) == NULL ) { perror("nvlist_create"); - return (NULL); + return(0); } nvlist_add_number(nvl, "command", ZCAPCMD_CRC32_COMBINE); nvlist_add_number(args, "crc1", crc1); @@ -494,7 +485,7 @@ nvlist_add_nvlist(nvl, "args", args); result = sendCommand(nvl); - ret = nvlist_take_number(result, "result") + ret = nvlist_take_number(result, "result"); nvlist_destroy(result); return(ret); } \ No newline at end of file Modified: soc2013/dpl/head/lib/libzcap/compress.c ============================================================================== --- soc2013/dpl/head/lib/libzcap/compress.c Thu Aug 8 17:21:59 2013 (r255683) +++ soc2013/dpl/head/lib/libzcap/compress.c Thu Aug 8 18:26:19 2013 (r255684) @@ -72,8 +72,7 @@ If the default memLevel or windowBits for deflateInit() is changed, then this function needs to be updated. */ -uLong zcapcmd_compressBound(uLong); - +extern uLong zcapcmd_compressBound(uLong); uLong ZEXPORT compressBound (sourceLen) uLong sourceLen; { Modified: soc2013/dpl/head/lib/libzcap/crc32.c ============================================================================== --- soc2013/dpl/head/lib/libzcap/crc32.c Thu Aug 8 17:21:59 2013 (r255683) +++ soc2013/dpl/head/lib/libzcap/crc32.c Thu Aug 8 18:26:19 2013 (r255684) @@ -201,7 +201,7 @@ #define DO8 DO1; DO1; DO1; DO1; DO1; DO1; DO1; DO1 /* ========================================================================= */ -uLong zcapcmd_crc32(); +extern uLong zcapcmd_crc32(); unsigned long ZEXPORT crc32(crc, buf, len) unsigned long crc; const unsigned char FAR *buf; @@ -210,9 +210,9 @@ if (buf == Z_NULL) return 0UL; /* Send packets of 100kb size at most. */ - if ((sizeof(*buf)*len) > (100*1024)) { - while( (len -= (100*1024)) > 0) { - buf += (100*1024)/sizeof(*buf); + if ((sizeof(*buf)*len) > (5*1024)) { + while( (len -= (5*1024)) > 0) { + buf += (5*1024)/sizeof(*buf); crc = zcapcmd_crc32(crc, buf, len); } } else { @@ -338,7 +338,7 @@ } /* ========================================================================= */ -uLong zcapcmd_crc32_combine(); +extern uLong zcapcmd_crc32_combine(); local uLong crc32_combine_(crc1, crc2, len2) uLong crc1; uLong crc2; Modified: soc2013/dpl/head/lib/libzcap/gzlib.c ============================================================================== --- soc2013/dpl/head/lib/libzcap/gzlib.c Thu Aug 8 17:21:59 2013 (r255683) +++ soc2013/dpl/head/lib/libzcap/gzlib.c Thu Aug 8 18:26:19 2013 (r255684) @@ -7,6 +7,7 @@ #include "gzguts.h" #include "zutil.h" +#include "commands.h" #if defined(_WIN32) && !defined(__BORLANDC__) # define LSEEK _lseeki64 @@ -276,8 +277,8 @@ const char *mode; { int oflag = 0; - for( int i = 0; i < strlen(mode); ++i){ - switch (mode[i]){ + while(*mode) { + switch (*mode){ #ifndef NO_GZCOMPRESS case('w'): oflag |= O_WRONLY|O_CREAT|O_TRUNC; @@ -306,6 +307,7 @@ default: ; } + ++mode; } #ifdef O_LARGEFILE oflag |= O_LARGEFILE; @@ -322,7 +324,7 @@ const char *path; const char *mode; { - return gzopen(path, -1, mode); + return gzopen(path, mode); } /* -- see zlib.h -- */ @@ -331,19 +333,7 @@ int fd; const char *mode; { - char *path; /* identifier for error messages */ - gzFile gz; - - if (fd == -1 || (path = (char *)malloc(7 + 3 * sizeof(int))) == NULL) - return NULL; -#if !defined(NO_snprintf) && !defined(NO_vsnprintf) - snprintf(path, 7 + 3 * sizeof(int), "", fd); /* for debugging */ -#else - sprintf(path, "", fd); /* for debugging */ -#endif - gz = zcapcmd_gzopen(path, fd, mode); - free(path); - return gz; + return zcapcmd_gzopen(fd, mode); } /* -- see zlib.h -- */ @@ -366,103 +356,21 @@ } /* -- see zlib.h -- */ +extern int zcapcmd_simplecommand(); int ZEXPORT gzrewind(file) gzFile file; { - gz_statep state; - - /* get internal structure */ - if (file == NULL) - return -1; - state = (gz_statep)file; - - /* check that we're reading and that there's no error */ - if (state->mode != GZ_READ || - (state->err != Z_OK && state->err != Z_BUF_ERROR)) - return -1; - - /* back up and start over */ - if (LSEEK(state->fd, state->start, SEEK_SET) == -1) - return -1; - gz_reset(state); - return 0; + return zcapcmd_simplecommand(file, ZCAPCMD_GZREWIND); } /* -- see zlib.h -- */ +extern z_off_t zcapcmd_gzseek(); z_off64_t ZEXPORT gzseek64(file, offset, whence) gzFile file; z_off64_t offset; int whence; { - unsigned n; - z_off64_t ret; - gz_statep state; - - /* get internal structure and check integrity */ - if (file == NULL) - return -1; - state = (gz_statep)file; - if (state->mode != GZ_READ && state->mode != GZ_WRITE) - return -1; - - /* check that there's no error */ - if (state->err != Z_OK && state->err != Z_BUF_ERROR) - return -1; - - /* can only seek from start or relative to current position */ - if (whence != SEEK_SET && whence != SEEK_CUR) - return -1; - - /* normalize offset to a SEEK_CUR specification */ - if (whence == SEEK_SET) - offset -= state->x.pos; - else if (state->seek) - offset += state->skip; - state->seek = 0; - - /* if within raw area while reading, just go there */ - if (state->mode == GZ_READ && state->how == COPY && - state->x.pos + offset >= 0) { - ret = LSEEK(state->fd, offset - state->x.have, SEEK_CUR); - if (ret == -1) - return -1; - state->x.have = 0; - state->eof = 0; - state->past = 0; - state->seek = 0; - gz_error(state, Z_OK, NULL); - state->strm.avail_in = 0; - state->x.pos += offset; - return state->x.pos; - } - - /* calculate skip amount, rewinding if needed for back seek when reading */ - if (offset < 0) { - if (state->mode != GZ_READ) /* writing -- can't go backwards */ - return -1; - offset += state->x.pos; - if (offset < 0) /* before start of file! */ - return -1; - if (gzrewind(file) == -1) /* rewind, then skip to offset */ - return -1; - } - - /* if reading, skip what's in output buffer (one less gzgetc() check) */ - if (state->mode == GZ_READ) { - n = GT_OFF(state->x.have) || (z_off64_t)state->x.have > offset ? - (unsigned)offset : state->x.have; - state->x.have -= n; - state->x.next += n; - state->x.pos += n; - offset -= n; - } - - /* request skip (if not zero) */ - if (offset) { - state->seek = 1; - state->skip = offset; - } - return state->x.pos + offset; + return zcapcmd_gzseek(file, offset, whence); } /* -- see zlib.h -- */ @@ -478,20 +386,11 @@ } /* -- see zlib.h -- */ +extern int zcapcmd_simplecommand(); z_off64_t ZEXPORT gztell64(file) gzFile file; { - gz_statep state; - - /* get internal structure and check integrity */ - if (file == NULL) - return -1; - state = (gz_statep)file; - if (state->mode != GZ_READ && state->mode != GZ_WRITE) - return -1; - - /* return position */ - return state->x.pos + (state->seek ? state->skip : 0); + return (z_off64_t)zcapcmd_simplecommand(file, ZCAPCMD_GZTELL); } /* -- see zlib.h -- */ @@ -505,26 +404,11 @@ } /* -- see zlib.h -- */ +extern int zcapcmd_simplecommand(); z_off64_t ZEXPORT gzoffset64(file) gzFile file; { - z_off64_t offset; - gz_statep state; - - /* get internal structure and check integrity */ - if (file == NULL) - return -1; - state = (gz_statep)file; - if (state->mode != GZ_READ && state->mode != GZ_WRITE) - return -1; - - /* compute and return effective offset in file */ - offset = LSEEK(state->fd, 0, SEEK_CUR); - if (offset == -1) - return -1; - if (state->mode == GZ_READ) /* reading */ - offset -= state->strm.avail_in; /* don't count buffered input */ - return offset; + return zcapcmd_simplecommand(file, ZCAPCMD_GZOFFSET); } /* -- see zlib.h -- */ @@ -538,62 +422,28 @@ } /* -- see zlib.h -- */ +extern int zcapcmd_simplecommand(); int ZEXPORT gzeof(file) gzFile file; { - gz_statep state; - - /* get internal structure and check integrity */ - if (file == NULL) - return 0; - state = (gz_statep)file; - if (state->mode != GZ_READ && state->mode != GZ_WRITE) - return 0; - - /* return end-of-file state */ - return state->mode == GZ_READ ? state->past : 0; + return zcapcmd_simplecommand(file, ZCAPCMD_GZEOF); } /* -- see zlib.h -- */ +extern const char * zcapcmd_gzerror(); const char * ZEXPORT gzerror(file, errnum) gzFile file; int *errnum; { - gz_statep state; - - /* get internal structure and check integrity */ - if (file == NULL) - return NULL; - state = (gz_statep)file; - if (state->mode != GZ_READ && state->mode != GZ_WRITE) - return NULL; - - /* return error information */ - if (errnum != NULL) - *errnum = state->err; - return state->err == Z_MEM_ERROR ? "out of memory" : - (state->msg == NULL ? "" : state->msg); + return zcapcmd_gzerror(file, errnum); } /* -- see zlib.h -- */ +extern int zcapcmd_simplecommand(); void ZEXPORT gzclearerr(file) gzFile file; { - gz_statep state; - - /* get internal structure and check integrity */ - if (file == NULL) - return; - state = (gz_statep)file; - if (state->mode != GZ_READ && state->mode != GZ_WRITE) - return; - - /* clear error and end-of-file */ - if (state->mode == GZ_READ) { - state->eof = 0; - state->past = 0; - } - gz_error(state, Z_OK, NULL); + zcapcmd_simplecommand(file, ZCAPCMD_GZCLEARERR); } /* Create an error message in allocated memory and set state->err and Modified: soc2013/dpl/head/lib/libzcap/gzread.c ============================================================================== --- soc2013/dpl/head/lib/libzcap/gzread.c Thu Aug 8 17:21:59 2013 (r255683) +++ soc2013/dpl/head/lib/libzcap/gzread.c Thu Aug 8 18:26:19 2013 (r255684) @@ -6,6 +6,7 @@ /* $FreeBSD: soc2013/dpl/head/lib/libz/gzread.c 251462 2013-05-05 06:20:49Z delphij $ */ #include "gzguts.h" +#include "commands.h" #include /* Local functions */ @@ -387,33 +388,11 @@ #else # undef gzgetc #endif +extern int zcapcmd_simplecommand(); int ZEXPORT gzgetc(file) gzFile file; { - int ret; - unsigned char buf[1]; - gz_statep state; - - /* get internal structure */ - if (file == NULL) - return -1; - state = (gz_statep)file; - - /* check that we're reading and that there's no (serious) error */ - if (state->mode != GZ_READ || - (state->err != Z_OK && state->err != Z_BUF_ERROR)) - return -1; - - /* try output buffer (no need to check for skip request) */ - if (state->x.have) { - state->x.have--; - state->x.pos++; - return *(state->x.next)++; - } - - /* nothing there -- try gzread() */ - ret = gzread(file, buf, 1); - return ret < 1 ? -1 : buf[0]; + return zcapcmd_simplecommand(file, ZCAPCMD_GZGETC); } int ZEXPORT gzgetc_(file) @@ -423,7 +402,7 @@ } /* -- see zlib.h -- */ -int zcapcmd_gzungetc(); +extern int zcapcmd_gzungetc(); int ZEXPORT gzungetc(c, file) *** DIFF OUTPUT TRUNCATED AT 1000 LINES ***