Strip file extension from a path. Returns heap-allocated string. * "src/index.ts" → "src/index", "lib/main" → "lib/main" */
| 150 | /* Strip file extension from a path. Returns heap-allocated string. |
| 151 | * "src/index.ts" → "src/index", "lib/main" → "lib/main" */ |
| 152 | static char *strip_extension(const char *path) { |
| 153 | size_t len = strlen(path); |
| 154 | for (size_t i = len; i > 0; i--) { |
| 155 | if (path[i - SKIP_ONE] == '.') { |
| 156 | return cbm_strndup(path, i - SKIP_ONE); |
| 157 | } |
| 158 | if (path[i - SKIP_ONE] == '/') { |
| 159 | break; |
| 160 | } |
| 161 | } |
| 162 | return strdup(path); |
| 163 | } |
| 164 | |
| 165 | /* Join directory + relative entry path, normalize. |
| 166 | * "packages/foo" + "src/index.ts" → "packages/foo/src/index" (stripped ext) */ |
no test coverage detected