const char *FileName::forceExt(const char *name, const char *ext) { const char *e = FileName::ext(name); if (e) // if already has an extension { size_t len = e - name; size_t extlen = strlen(ext); char *s = (char *)mem.malloc(len + extlen + 1); memcpy(s,name,len); memcpy(s + len, ext, extlen + 1); return s; } else return defaultExt(name, ext); // doesn't have one }
FileName *FileName::forceExt(const char *name, const char *ext) { char *e; char *s; size_t len; size_t extlen; e = FileName::ext(name); if (e) // if already has an extension { len = e - name; extlen = strlen(ext); s = (char *)alloca(len + extlen + 1); memcpy(s,name,len); memcpy(s + len, ext, extlen + 1); return new FileName(s, 0); } else return defaultExt(name, ext); // doesn't have one }