From 8b9ae3fbf85093ffc3470654630ca76a25b599ad Mon Sep 17 00:00:00 2001 From: Timothy Pearson Date: Sun, 11 Jan 2015 23:53:50 -0600 Subject: [PATCH] Add vsprintf method to QString --- src/tools/qstring.cpp | 18 +++++++++++++----- src/tools/qstring.h | 9 +++++++++ 2 files changed, 22 insertions(+), 5 deletions(-) diff --git a/src/tools/qstring.cpp b/src/tools/qstring.cpp index 1c796fe..1288fd7 100644 --- a/src/tools/qstring.cpp +++ b/src/tools/qstring.cpp @@ -4,6 +4,7 @@ ** ** Created : 920722 ** +** Copyright (C) 2015 Timothy Pearson. All rights reserved. ** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved. ** ** This file is part of the tools module of the Qt GUI Toolkit. @@ -2604,12 +2605,10 @@ QString QString::multiArg( int numArgs, const QString& a1, const QString& a2, */ #ifndef QT_NO_SPRINTF -QString &QString::sprintf( const char* cformat, ... ) +QString &QString::sprintf(const char *cformat, ...) { - QLocale locale(QLocale::C); - va_list ap; - va_start( ap, cformat ); + va_start(ap, cformat); if ( !cformat || !*cformat ) { // Qt 1.x compat @@ -2617,6 +2616,16 @@ QString &QString::sprintf( const char* cformat, ... ) return *this; } + QString &s = vsprintf(cformat, ap); + + va_end(ap); + return s; +} + +QString &QString::vsprintf( const char* cformat, va_list ap ) +{ + QLocale locale(QLocale::C); + // Parse cformat QString result; @@ -2933,7 +2942,6 @@ QString &QString::sprintf( const char* cformat, ... ) result.append(subst.rightJustify(width)); } - va_end(ap); *this = result; return *this; diff --git a/src/tools/qstring.h b/src/tools/qstring.h index 8715395..82b8a0e 100644 --- a/src/tools/qstring.h +++ b/src/tools/qstring.h @@ -4,6 +4,7 @@ ** ** Created : 920609 ** +** Copyright (C) 2015 Timothy Pearson. All rights reserved. ** Copyright (C) 1992-2008 Trolltech ASA. All rights reserved. ** ** This file is part of the tools module of the Qt GUI Toolkit. @@ -63,6 +64,9 @@ #endif #endif +#ifndef QT_NO_SPRINTF +#include +#endif /***************************************************************************** QString class @@ -452,6 +456,11 @@ public: QString &sprintf( const char* format, ... ) #if defined(Q_CC_GNU) && !defined(__INSURE__) __attribute__ ((format (printf, 2, 3))) +#endif + ; + QString &vsprintf(const char *format, va_list ap) +#if defined(Q_CC_GNU) && !defined(__INSURE__) + __attribute__ ((format (printf, 2, 0))) #endif ; #endif