summaryrefslogtreecommitdiff
path: root/contrib/file/funcs.c
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/file/funcs.c')
-rw-r--r--contrib/file/funcs.c98
1 files changed, 10 insertions, 88 deletions
diff --git a/contrib/file/funcs.c b/contrib/file/funcs.c
index 5ea27f42c12f7..44cbdf1af3543 100644
--- a/contrib/file/funcs.c
+++ b/contrib/file/funcs.c
@@ -11,6 +11,8 @@
* 2. 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.
+ * 3. The name of the author may not be used to endorse or promote products
+ * derived from this software without specific prior written permission.
*
* THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
* ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
@@ -30,18 +32,10 @@
#include <stdlib.h>
#include <string.h>
#include <ctype.h>
-#if defined(HAVE_WCHAR_H)
-#include <wchar.h>
-#endif
#ifndef lint
-FILE_RCSID("@(#)$Id: funcs.c,v 1.19 2006/03/02 22:10:26 christos Exp $")
+FILE_RCSID("@(#)$Id: funcs.c,v 1.12 2004/06/04 14:40:20 christos Exp $")
#endif /* lint */
-
-#ifndef HAVE_VSNPRINTF
-int vsnprintf(char *, size_t, const char *, va_list);
-#endif
-
/*
* Like printf, only we print to a buffer and advance it.
*/
@@ -118,11 +112,11 @@ file_badread(struct magic_set *ms)
#ifndef COMPILE_ONLY
protected int
-file_buffer(struct magic_set *ms, int fd, const void *buf, size_t nb)
+file_buffer(struct magic_set *ms, const void *buf, size_t nb)
{
int m;
/* try compression stuff */
- if ((m = file_zmagic(ms, fd, buf, nb)) == 0) {
+ if ((m = file_zmagic(ms, buf, nb)) == 0) {
/* Check if we have a tar file */
if ((m = file_is_tar(ms, buf, nb)) == 0) {
/* try tests in /etc/magic (or surrogate magic file) */
@@ -131,10 +125,7 @@ file_buffer(struct magic_set *ms, int fd, const void *buf, size_t nb)
if ((m = file_ascmagic(ms, buf, nb)) == 0) {
/* abandon hope, all ye who remain here */
if (file_printf(ms, ms->flags & MAGIC_MIME ?
- (nb ? "application/octet-stream" :
- "application/empty") :
- (nb ? "data" :
- "empty")) == -1)
+ "application/octet-stream" : "data") == -1)
return -1;
m = 1;
}
@@ -158,13 +149,6 @@ file_reset(struct magic_set *ms)
return 0;
}
-#define OCTALIFY(n, o) \
- *(n)++ = '\\', \
- *(n)++ = (((uint32_t)*(o) >> 6) & 3) + '0', \
- *(n)++ = (((uint32_t)*(o) >> 3) & 7) + '0', \
- *(n)++ = (((uint32_t)*(o) >> 0) & 7) + '0', \
- (o)++
-
protected const char *
file_getbuffer(struct magic_set *ms)
{
@@ -187,78 +171,16 @@ file_getbuffer(struct magic_set *ms)
ms->o.pbuf = nbuf;
}
-#if defined(HAVE_WCHAR_H) && defined(HAVE_MBRTOWC) && defined(HAVE_WCWIDTH)
- {
- mbstate_t state;
- wchar_t nextchar;
- int mb_conv = 1;
- size_t bytesconsumed;
- char *eop;
- (void)memset(&state, 0, sizeof(mbstate_t));
-
- np = ms->o.pbuf;
- op = ms->o.buf;
- eop = op + strlen(ms->o.buf);
-
- while (op < eop) {
- bytesconsumed = mbrtowc(&nextchar, op, eop - op,
- &state);
- if (bytesconsumed == (size_t)(-1) ||
- bytesconsumed == (size_t)(-2)) {
- mb_conv = 0;
- break;
- }
-
- if (iswprint(nextchar) ) {
- (void)memcpy(np, op, bytesconsumed);
- op += bytesconsumed;
- np += bytesconsumed;
- } else {
- while (bytesconsumed-- > 0)
- OCTALIFY(np, op);
- }
- }
- *np = '\0';
-
- /* Parsing succeeded as a multi-byte sequence */
- if (mb_conv != 0)
- return ms->o.pbuf;
- }
-#endif
-
for (np = ms->o.pbuf, op = ms->o.buf; *op; op++) {
if (isprint((unsigned char)*op)) {
*np++ = *op;
} else {
- OCTALIFY(np, op);
+ *np++ = '\\';
+ *np++ = ((*op >> 6) & 3) + '0';
+ *np++ = ((*op >> 3) & 7) + '0';
+ *np++ = ((*op >> 0) & 7) + '0';
}
}
*np = '\0';
return ms->o.pbuf;
}
-
-/*
- * Yes these suffer from buffer overflows, but if your OS does not have
- * these functions, then maybe you should consider replacing your OS?
- */
-#ifndef HAVE_VSNPRINTF
-int
-vsnprintf(char *buf, size_t len, const char *fmt, va_list ap)
-{
- return vsprintf(buf, fmt, ap);
-}
-#endif
-
-#ifndef HAVE_SNPRINTF
-/*ARGSUSED*/
-int
-snprintf(char *buf, size_t len, const char *fmt, ...)
-{
- int rv;
- va_list ap;
- va_start(ap, fmt);
- rv = vsprintf(buf, fmt, ap);
- va_end(ap);
- return rv;
-}
-#endif