diff options
Diffstat (limited to 'stdlib/files.c')
| -rw-r--r-- | stdlib/files.c | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/stdlib/files.c b/stdlib/files.c index 4a4220e7..cf777689 100644 --- a/stdlib/files.c +++ b/stdlib/files.c @@ -75,6 +75,19 @@ public char *file_base_name(const char *path) char *buf = GC_MALLOC_ATOMIC(len+1); strncpy(buf, path, len); buf[len] = '\0'; + return buf; +} + +public char *file_base_id(const char *path) +{ + const char *slash = strrchr(path, '/'); + if (slash) path = slash + 1; + assert(!isdigit(*path)); + const char *end = strchrnul(path, '.'); + size_t len = (size_t)(end - path); + char *buf = GC_MALLOC_ATOMIC(len+1); + strncpy(buf, path, len); + buf[len] = '\0'; for (char *p = buf; *p; p++) { if (!isalnum(*p)) *p = '_'; |
