summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--misc.c17
-rw-r--r--misc.h2
2 files changed, 19 insertions, 0 deletions
diff --git a/misc.c b/misc.c
index ce286cb..52c5c67 100644
--- a/misc.c
+++ b/misc.c
@@ -1,3 +1,4 @@
+#include <ctype.h>
#include <string.h>
#include <stdarg.h>
#include <stdio.h>
@@ -127,6 +128,22 @@ char *sanitize_str(char *str) {
return san_str;
}
+char *find_alpha(const char *str) {
+ for (; !isalpha(*str); str++);
+ return str;
+}
+
+char *create_num_str(const char *str, int num) {
+ char *name;
+ int lead_num = strtol(str, &name, 10);
+ const char *sep = (*name != '-') ? "-" : "";
+ const char *s = find_alpha(name);
+
+ name = calloc(format_len("%04d%s%s", num, sep, s), sizeof(char));
+ sprintf(name, "%04d%s%s", num, sep, str);
+ return name;
+}
+
int format_len(const char *fmt, ...) {
int len = 0;
va_list args;
diff --git a/misc.h b/misc.h
index d9829a5..9d07f81 100644
--- a/misc.h
+++ b/misc.h
@@ -9,5 +9,7 @@ extern char *dir_path_name(const char *root, char *name);
extern int delm_span(char *str, const char delm);
extern int sanitize_strlen(char *str);
extern char *sanitize_str(char *str);
+extern char *find_alpha(const char *str);
+extern char *create_num_str(const char *str, int num);
extern int format_len(const char *fmt, ...);
#endif