PvaException::PvaException(const char* message, va_list messageArgs) : std::exception(), error(), errorCode(GenericErrorCode) { char messageBuffer[MaxMessageLength]; epicsVsnprintf(messageBuffer, MaxMessageLength, message, messageArgs); error = std::string(messageBuffer); }
InvalidState::InvalidState(const char* message, ...) : PvaException() { va_list messageArgs; va_start(messageArgs, message); char messageBuffer[MaxMessageLength]; epicsVsnprintf(messageBuffer, MaxMessageLength, message, messageArgs); setMessage(std::string(messageBuffer)); va_end(messageArgs); }
int epicsShareAPI epicsSnprintf (char *str, size_t len, const char *fmt, ...) { int rtn; va_list pvar; va_start (pvar, fmt); rtn = epicsVsnprintf (str, len, fmt, pvar); va_end (pvar); return (rtn); }
epicsShareFunc int epicsShareAPI epicsSnprintf( char *str, size_t size, const char *format, ...) { int nchars; va_list pvar; va_start(pvar,format); nchars = epicsVsnprintf(str,size,format,pvar); va_end (pvar); return(nchars); }
/* * vsnprintf with truncation message */ static int tvsnPrint(char *str, size_t size, const char *format, va_list ap) { static const char tmsg[] = "<<TRUNCATED>>\n"; int nchar = epicsVsnprintf(str, size, format ? format : "", ap); if (nchar >= size) { if (size > sizeof tmsg) strcpy(str + size - sizeof tmsg, tmsg); nchar = size - 1; } return nchar; }
char *allocSNPrintf(size_t N, const char *fmt, ...) { char *mem = (char*)calloc(1, N); if(!mem) throw std::bad_alloc(); va_list args; va_start(args, fmt); epicsVsnprintf(mem, N, fmt, args); va_end(args); mem[N-1] = '\0'; return mem; }