fix varags usage, tcl_printf(), tcl_fprintf(), tcl_vfprintf()
This commit is contained in:
parent
f38aa32b5f
commit
891e4fdef1
|
|
@ -1,3 +1,7 @@
|
|||
2012-02-07 Holger Vogt / Robert Larice
|
||||
* src/tclspice.c :
|
||||
fix varags usage, tcl_printf(), tcl_fprintf(), tcl_vfprintf()
|
||||
|
||||
2012-02-07 Robert Larice
|
||||
* src/include/ngspice/devdefs.h ,
|
||||
* src/spicelib/devices/dev.c ,
|
||||
|
|
|
|||
|
|
@ -186,7 +186,7 @@ HANDLE outheap;
|
|||
|
||||
|
||||
void tcl_stdflush(FILE *f);
|
||||
int tcl_vfprintf(FILE *f, const char *fmt, ...);
|
||||
int tcl_vfprintf(FILE *f, const char *fmt, va_list args);
|
||||
int Spice_Init(Tcl_Interp *interp);
|
||||
int Tcl_ExecutePerLoop(void);
|
||||
void triggerEventCheck(ClientData clientData,int flags);
|
||||
|
|
@ -2408,7 +2408,7 @@ bot:
|
|||
/* Redefine the vfprintf() functions for use with tkcon */
|
||||
/*------------------------------------------------------*/
|
||||
|
||||
int tcl_vfprintf(FILE *f, const char *fmt, ...)
|
||||
int tcl_vfprintf(FILE *f, const char *fmt, va_list args)
|
||||
{
|
||||
#define ostr_sz 128
|
||||
static char outstr[ostr_sz] = "puts -nonewline std";
|
||||
|
|
@ -2417,27 +2417,25 @@ int tcl_vfprintf(FILE *f, const char *fmt, ...)
|
|||
#define ostr_off 19
|
||||
char *outptr, *bigstr = NULL, *finalstr = NULL;
|
||||
int i, nchars, result, escapes = 0;
|
||||
va_list arg;
|
||||
|
||||
va_start (arg, fmt);
|
||||
if((fileno(f) != STDOUT_FILENO && fileno(f) != STDERR_FILENO &&
|
||||
f != stderr && f != stdout )
|
||||
#ifdef THREADS
|
||||
|| ( fl_running && bgtid == thread_self())
|
||||
#endif
|
||||
)
|
||||
return fprintf(f,fmt, arg);
|
||||
return vfprintf(f, fmt, args);
|
||||
|
||||
strcpy (outstr + ostr_off, (f == stderr) ? "err \"" : "out \"");
|
||||
//5 characters for ->out "<-
|
||||
outptr = outstr;
|
||||
nchars = snprintf(outptr + ostr_off + 5, ostr_sz - 5 - ostr_off, fmt, arg);
|
||||
nchars = vsnprintf(outptr + ostr_off + 5, ostr_sz - 5 - ostr_off, fmt, args);
|
||||
if (nchars >= ostr_sz - 5 - ostr_off)
|
||||
{
|
||||
bigstr = Tcl_Alloc(nchars + 26);
|
||||
strncpy(bigstr, outptr, 24);
|
||||
outptr = bigstr;
|
||||
snprintf(outptr + 24, nchars + 2, fmt, arg);
|
||||
vsnprintf(outptr + 24, nchars + 2, fmt, args);
|
||||
}
|
||||
else if (nchars == -1) nchars = 126;
|
||||
|
||||
|
|
@ -2482,11 +2480,12 @@ int tcl_vfprintf(FILE *f, const char *fmt, ...)
|
|||
|
||||
int tcl_fprintf(FILE *f, const char *format, ...)
|
||||
{
|
||||
va_list arg;
|
||||
va_list args;
|
||||
int rtn;
|
||||
|
||||
va_start (arg, format);
|
||||
rtn = tcl_vfprintf(f, format, arg);
|
||||
va_start (args, format);
|
||||
rtn = tcl_vfprintf(f, format, args);
|
||||
va_end(args);
|
||||
|
||||
return rtn;
|
||||
}
|
||||
|
|
@ -2497,11 +2496,12 @@ int tcl_fprintf(FILE *f, const char *format, ...)
|
|||
|
||||
int tcl_printf(const char *format, ...)
|
||||
{
|
||||
va_list arg;
|
||||
va_list args;
|
||||
int rtn;
|
||||
|
||||
va_start (arg, format);
|
||||
rtn = tcl_vfprintf(stdout, format, arg);
|
||||
va_start (args, format);
|
||||
rtn = tcl_vfprintf(stdout, format, args);
|
||||
va_end(args);
|
||||
|
||||
return rtn;
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in New Issue