summaryrefslogtreecommitdiff
path: root/libbb/auto_string.c
diff options
context:
space:
mode:
Diffstat (limited to 'libbb/auto_string.c')
-rw-r--r--libbb/auto_string.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/libbb/auto_string.c b/libbb/auto_string.c
new file mode 100644
index 0000000..ae94006
--- /dev/null
+++ b/libbb/auto_string.c
@@ -0,0 +1,23 @@
+/* vi: set sw=4 ts=4: */
+/*
+ * Utility routines.
+ *
+ * Copyright (C) 2015 Denys Vlasenko
+ *
+ * Licensed under GPLv2, see file LICENSE in this source tree.
+ */
+//kbuild:lib-y += auto_string.o
+
+#include "libbb.h"
+
+char* FAST_FUNC auto_string(char *str)
+{
+ static char *saved[4];
+ static uint8_t cur_saved; /* = 0 */
+
+ free(saved[cur_saved]);
+ saved[cur_saved] = str;
+ cur_saved = (cur_saved + 1) & (ARRAY_SIZE(saved)-1);
+
+ return str;
+}