diff options
| author | Bruce Hill <bruce@bruce-hill.com> | 2024-10-10 01:09:17 -0400 |
|---|---|---|
| committer | Bruce Hill <bruce@bruce-hill.com> | 2024-10-10 01:09:17 -0400 |
| commit | 67702b2d77d8474c2a7fe7f1816f4eb9a0a98af1 (patch) | |
| tree | 0294659e9ef662577c175af0c5989ab9a8f254c5 /stdlib/files.c | |
| parent | a2490f4a500fca4b84e5652d31fc621f9f20742b (diff) | |
Fix issue with non-ID chars in filenames
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 = '_'; |
