You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@lucy.apache.org by nw...@apache.org on 2012/12/27 19:20:55 UTC
[lucy-commits] [4/12] git commit: refs/heads/cfc-sprintf - Add CFCUtil_sprintf
utility function
Add CFCUtil_sprintf utility function
Works like sprintf but returns a dynamically allocated string similar to
asprintf.
Project: http://git-wip-us.apache.org/repos/asf/lucy/repo
Commit: http://git-wip-us.apache.org/repos/asf/lucy/commit/0751cbe2
Tree: http://git-wip-us.apache.org/repos/asf/lucy/tree/0751cbe2
Diff: http://git-wip-us.apache.org/repos/asf/lucy/diff/0751cbe2
Branch: refs/heads/cfc-sprintf
Commit: 0751cbe25f9362a3887afdf9a6424ad9cb24d9dc
Parents: 9436cce
Author: Nick Wellnhofer <we...@aevum.de>
Authored: Wed Dec 26 19:55:52 2012 +0100
Committer: Nick Wellnhofer <we...@aevum.de>
Committed: Wed Dec 26 19:55:52 2012 +0100
----------------------------------------------------------------------
clownfish/compiler/src/CFCUtil.c | 21 +++++++++++++++++++++
clownfish/compiler/src/CFCUtil.h | 6 ++++++
2 files changed, 27 insertions(+), 0 deletions(-)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/lucy/blob/0751cbe2/clownfish/compiler/src/CFCUtil.c
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCUtil.c b/clownfish/compiler/src/CFCUtil.c
index f76c9a8..56fb287 100644
--- a/clownfish/compiler/src/CFCUtil.c
+++ b/clownfish/compiler/src/CFCUtil.c
@@ -14,6 +14,8 @@
* limitations under the License.
*/
+#include "charmony.h"
+
#include <string.h>
#include <stdlib.h>
#include <ctype.h>
@@ -53,6 +55,25 @@ CFCUtil_strndup(const char *string, size_t len) {
}
char*
+CFCUtil_sprintf(const char *fmt, ...) {
+ va_list args;
+ va_start(args, fmt);
+#if defined(CHY_HAS_C99_SNPRINTF)
+ size_t size = vsnprintf(NULL, 0, fmt, args);
+#elif defined(CHY_HAS__SCPRINTF)
+ size_t size = _vscprintf(fmt, args);
+#else
+ #error "snprintf or replacement not available."
+#endif
+ va_end(args);
+ char *string = (char*)MALLOCATE(size + 1);
+ va_start(args, fmt);
+ vsprintf(string, fmt, args);
+ va_end(args);
+ return string;
+}
+
+char*
CFCUtil_cat(char *string, ...) {
va_list args;
char *appended;
http://git-wip-us.apache.org/repos/asf/lucy/blob/0751cbe2/clownfish/compiler/src/CFCUtil.h
----------------------------------------------------------------------
diff --git a/clownfish/compiler/src/CFCUtil.h b/clownfish/compiler/src/CFCUtil.h
index 0d714c5..df78500 100644
--- a/clownfish/compiler/src/CFCUtil.h
+++ b/clownfish/compiler/src/CFCUtil.h
@@ -52,6 +52,12 @@ CFCUtil_strdup(const char *string);
char*
CFCUtil_strndup(const char *string, size_t len);
+/** Return a dynamically allocated string with content defined by a printf
+ * format string and additional arguments. Similar to asprintf().
+ */
+char*
+CFCUtil_sprintf(const char *fmt, ...);
+
/** Concatenate a NULL-terminated list of strings onto the first, reallocating
* with each argument.
*/