- filename_no_sh = strdup(filename);
- if (!filename_no_sh)
- return -ENOMEM;
- if (endswith(filename, ".sh"))
- filename_no_sh[strlen(filename)-3] = '\0';
+ filename_no_sh = strdupa(filename);
+ e = endswith(filename, ".sh");
+ if (e) {
+ *e = '\0';
+ filename = filename_no_sh;
+ }