| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233 |
- Index: src/apprentice.c
- --- src/apprentice.c.orig 2008-07-26 17:03:55 +0200
- +++ src/apprentice.c 2008-08-30 22:53:20 +0200
- @@ -697,6 +697,7 @@
- file_oomem(ms, maxmagic * sizeof(*marray));
- return -1;
- }
- + memset(marray, 0, maxmagic * sizeof(*marray));
- marraycount = 0;
-
- /* print silly verbose header for USG compat. */
- Index: src/compress.c
- --- src/compress.c.orig 2008-07-26 17:03:55 +0200
- +++ src/compress.c 2008-08-30 22:53:20 +0200
- @@ -167,7 +167,7 @@
- * `safe' read for sockets and pipes.
- */
- protected ssize_t
- -sread(int fd, void *buf, size_t n, int canbepipe)
- +file_sread(int fd, void *buf, size_t n, int canbepipe)
- {
- int rv, cnt;
- #ifdef FIONREAD
- @@ -261,7 +261,7 @@
- if (swrite(tfd, startbuf, nbytes) != (ssize_t)nbytes)
- r = 1;
- else {
- - while ((r = sread(fd, buf, sizeof(buf), 1)) > 0)
- + while ((r = file_sread(fd, buf, sizeof(buf), 1)) > 0)
- if (swrite(tfd, buf, (size_t)r) != r)
- break;
- }
- @@ -463,7 +463,7 @@
- n = 0;
- goto err;
- }
- - if ((r = sread(fdout[0], *newch, HOWMANY, 0)) <= 0) {
- + if ((r = file_sread(fdout[0], *newch, HOWMANY, 0)) <= 0) {
- #ifdef DEBUG
- (void)fprintf(stderr, "Read failed (%s)\n",
- strerror(errno));
- Index: src/file.h
- --- src/file.h.orig 2008-07-26 17:03:55 +0200
- +++ src/file.h 2008-08-30 22:53:20 +0200
- @@ -370,7 +370,7 @@
- protected void file_showstr(FILE *, const char *, size_t);
- protected size_t file_mbswidth(const char *);
- protected const char *file_getbuffer(struct magic_set *);
- -protected ssize_t sread(int, void *, size_t, int);
- +protected ssize_t file_sread(int, void *, size_t, int);
- protected int file_check_mem(struct magic_set *, unsigned int);
- protected int file_looks_utf8(const unsigned char *, size_t, unichar *, size_t *);
-
- @@ -391,9 +391,11 @@
- #endif
-
- #ifndef HAVE_VASPRINTF
- +#define vasprintf file_vasprintf
- int vasprintf(char **, const char *, va_list);
- #endif
- #ifndef HAVE_ASPRINTF
- +#define asprintf file_asprintf
- int asprintf(char **ptr, const char *format_string, ...);
- #endif
-
- Index: src/funcs.c
- --- src/funcs.c.orig 2008-07-26 17:03:55 +0200
- +++ src/funcs.c 2008-08-30 22:53:20 +0200
- @@ -29,6 +29,7 @@
- #include <stdarg.h>
- #include <stdlib.h>
- #include <string.h>
- +#include <limits.h>
- #include <ctype.h>
- #if defined(HAVE_WCHAR_H)
- #include <wchar.h>
- @@ -346,3 +347,108 @@
- #endif /* ENABLE_CONDITIONALS */
- return 0;
- }
- +
- +/*
- + * From bsd-asprintf.c in OpenSSH:
- + * Copyright (c) 2004 Darren Tucker.
- + *
- + * Based originally on asprintf.c from OpenBSD:
- + * Copyright (c) 1997 Todd C. Miller <Todd.Miller@courtesan.com>
- + *
- + * Permission to use, copy, modify, and distribute this software for any
- + * purpose with or without fee is hereby granted, provided that the above
- + * copyright notice and this permission notice appear in all copies.
- + *
- + * THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES
- + * WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF
- + * MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR
- + * ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES
- + * WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN
- + * ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF
- + * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
- + */
- +
- +#ifndef HAVE_ASPRINTF
- +int asprintf(char **str, const char *fmt, ...)
- +{
- + va_list ap;
- + int ret;
- +
- + *str = NULL;
- + va_start(ap, fmt);
- + ret = vasprintf(str, fmt, ap);
- + va_end(ap);
- +
- + return ret;
- +}
- +#endif
- +
- +#ifndef HAVE_VASPRINTF
- +
- +#ifdef HAVE_LIMITS_H
- +#include <limits.h>
- +#endif
- +
- +#include <errno.h>
- +#include <stdarg.h>
- +#include <stdlib.h>
- +
- +#ifndef VA_COPY
- +# ifdef HAVE_VA_COPY
- +# define VA_COPY(dest, src) va_copy(dest, src)
- +# else
- +# ifdef HAVE___VA_COPY
- +# define VA_COPY(dest, src) __va_copy(dest, src)
- +# else
- +# define VA_COPY(dest, src) (dest) = (src)
- +# endif
- +# endif
- +#endif
- +
- +#define INIT_SZ 128
- +
- +int vasprintf(char **str, const char *fmt, va_list ap)
- +{
- + int ret = -1;
- + va_list ap2;
- + char *string, *newstr;
- + size_t len;
- +
- + VA_COPY(ap2, ap);
- + if ((string = malloc(INIT_SZ)) == NULL)
- + goto fail;
- +
- + ret = vsnprintf(string, INIT_SZ, fmt, ap2);
- + if (ret >= 0 && ret < INIT_SZ) { /* succeeded with initial alloc */
- + *str = string;
- + } else if (ret == INT_MAX || ret < 0) { /* Bad length */
- + free(string);
- + goto fail;
- + } else { /* bigger than initial, realloc allowing for nul */
- + len = (size_t)ret + 1;
- + if ((newstr = realloc(string, len)) == NULL) {
- + free(string);
- + goto fail;
- + } else {
- + va_end(ap2);
- + VA_COPY(ap2, ap);
- + ret = vsnprintf(newstr, len, fmt, ap2);
- + if (ret >= 0 && (size_t)ret < len) {
- + *str = newstr;
- + } else { /* failed with realloc'ed string, give up */
- + free(newstr);
- + goto fail;
- + }
- + }
- + }
- + va_end(ap2);
- + return (ret);
- +
- +fail:
- + *str = NULL;
- + errno = ENOMEM;
- + va_end(ap2);
- + return (-1);
- +}
- +#endif
- +
- Index: src/getopt_long.h
- --- /dev/null 2008-08-30 22:55:00 +0200
- +++ src/getopt_long.h 2008-08-30 22:53:20 +0200
- @@ -0,0 +1,14 @@
- +#ifndef __GETOPT_LONG_H
- +#define __GETOPT_LONG_H 1
- +struct option {
- + const char *name;
- + int has_arg;
- + int *flag;
- + int val;
- +};
- +#define no_argument 0
- +#define required_argument 1
- +#define optional_argument 2
- +int getopt_long(int argc, char * const *argv, const char *optstring, const struct option *longopts, int *longindex);
- +
- +#endif
- Index: src/magic.c
- --- src/magic.c.orig 2008-07-26 17:03:55 +0200
- +++ src/magic.c 2008-08-30 22:53:20 +0200
- @@ -334,7 +334,7 @@
- if (ispipe) {
- ssize_t r = 0;
-
- - while ((r = sread(fd, (void *)&buf[nbytes],
- + while ((r = file_sread(fd, (void *)&buf[nbytes],
- (size_t)(HOWMANY - nbytes), 1)) > 0) {
- nbytes += r;
- if (r < PIPE_BUF) break;
- Index: src/softmagic.c
- --- src/softmagic.c.orig 2008-07-28 19:25:21 +0200
- +++ src/softmagic.c 2008-08-30 22:53:20 +0200
- @@ -302,10 +302,9 @@
- }
-
- #ifndef HAVE_STRNDUP
- -char * strndup(const char *, size_t);
- -
- -char *
- -strndup(const char *str, size_t n)
- +#define strndup(str,n) magic_strndup(str,n)
- +static char *
- +magic_strndup(const char *str, size_t n)
- {
- size_t len;
- char *copy;
|