summaryrefslogtreecommitdiff
path: root/src/vsnprintf.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/vsnprintf.c')
-rw-r--r--src/vsnprintf.c125
1 files changed, 0 insertions, 125 deletions
diff --git a/src/vsnprintf.c b/src/vsnprintf.c
deleted file mode 100644
index 48eb58782..000000000
--- a/src/vsnprintf.c
+++ /dev/null
@@ -1,125 +0,0 @@
-/* Copyright (c) 1993
- * Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
- * Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
- * Copyright (c) 1987 Oliver Laumann
- *
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program (see the file COPYING); if not, write to the
- * Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA
- *
- ****************************************************************
- */
-
-
-/* Implementation of vsnprintf() for systems that don't have it
- * (e.g. Solaris 2.5). This hasn't been tested much in the context of
- * Mailman; it was ripped from screen 3.7.6's misc.c file which contains
- * the above copyright.
- *
- * This code has been modified slightly:
- *
- * - use prototypes unconditionally
- * - Don't use macros for stdargs calls
- * - Reformat to Python C standard
- *
- * RMS says it's okay to include this code in Mailman but it should be kept
- * in a separate file.
- *
- * TBD: This file needs a security audit.
- */
-
-#ifndef HAVE_VSNPRINTF
-#include <strings.h>
-#include <stdarg.h>
-
-int vsnprintf(char* s, size_t n, const char* fmt, va_list stack)
-{
- char *f, *sf = 0;
- int i, on, argl = 0;
- char myf[10], buf[20];
- char *arg, *myfp;
-
- on = n;
- f = (char*)fmt;
- arg = 0;
- while (arg || (sf = index(f, '%')) || (sf = f + strlen(f))) {
- if (arg == 0) {
- arg = f;
- argl = sf - f;
- }
- if (argl) {
- i = argl > n - 1 ? n - 1 : argl;
- strncpy(s, arg, i);
- s += i;
- n -= i;
- if (i < argl) {
- *s = 0;
- return on;
- }
- }
- arg = 0;
- if (sf == 0)
- continue;
- f = sf;
- sf = 0;
- if (!*f)
- break;
- myfp = myf;
- *myfp++ = *f++;
- while (((*f >= '0' && *f <='9') || *f == '#')
- && myfp - myf < 8)
- {
- *myfp++ = *f++;
- }
- *myfp++ = *f;
- *myfp = 0;
- if (!*f++)
- break;
- switch(f[-1])
- {
- case '%':
- arg = "%";
- break;
- case 'c':
- case 'o':
- case 'd':
- case 'x':
- i = va_arg(stack, int);
- sprintf(buf, myf, i);
- arg = buf;
- break;
- case 's':
- arg = va_arg(stack, char *);
- if (arg == 0)
- arg = "NULL";
- break;
- default:
- arg = "";
- break;
- }
- argl = strlen(arg);
- }
- *s = 0;
- return on - n;
-
- va_end(stack);
-}
-#endif /* !HAVE_VSNPRINTF */
-
-
-/*
- * Local Variables:
- * c-file-style: "python"
- * End:
- */