Browse Source

introduce tvprintf()

pre-master-46
rlar 12 years ago
parent
commit
80dd41451f
  1. 9
      src/include/ngspice/stringutil.h
  2. 29
      src/misc/string.c

9
src/include/ngspice/stringutil.h

@ -3,11 +3,14 @@
* 1999 E. Rouat
************/
#ifndef ngspice_STRINGUTIL_H
#define ngspice_STRINGUTIL_H
#include "ngspice/config.h"
#include "ngspice/bool.h"
#ifndef ngspice_STRINGUTIL_H
#define ngspice_STRINGUTIL_H
#include <stdarg.h>
int prefix(register char *p, register char *s);
char * copy(const char *str);
@ -24,6 +27,8 @@ char * gettok(char **s);
char * gettok_instance(char **);
char * gettok_char(char **s, char p, bool inc_p, bool nested);
extern char *tvprintf(const char *fmt, va_list args);
#ifdef __GNUC__
extern char *tprintf(const char *fmt, ...) __attribute__ ((format (__printf__, 1, 2)));
#else

29
src/misc/string.c

@ -53,24 +53,21 @@ copy_substring(const char *str, const char *end)
}
char*
tprintf(const char *fmt, ...)
char *
tvprintf(const char *fmt, va_list args)
{
char buf[1024];
char *p = buf;
int size = sizeof(buf);
va_list args;
for (;;) {
int nchars;
va_list ap;
va_start(args, fmt);
nchars = vsnprintf(p, (size_t) size, fmt, args);
va_end(args);
va_copy(ap, args);
nchars = vsnprintf(p, (size_t) size, fmt, ap);
va_end(ap);
if (nchars == -1) { // compatibility to old implementations
size *= 2;
@ -91,6 +88,20 @@ tprintf(const char *fmt, ...)
}
char *
tprintf(const char *fmt, ...)
{
char *rv;
va_list ap;
va_start(ap, fmt);
rv = tvprintf(fmt, ap);
va_end(ap);
return rv;
}
/* Determine whether sub is a substring of str. */
/* Like strstr( ) XXX */

Loading…
Cancel
Save