| /* SPDX-License-Identifier: BSD-2-Clause */ |
| /* Copyright 1996-2017 The NASM Authors - All Rights Reserved */ |
| |
| /* |
| * nasmlib.c library routines for the Netwide Assembler |
| */ |
| |
| #include "compiler.h" |
| #include "nasmlib.h" |
| #include "error.h" |
| |
| /* |
| * Add/modify a filename extension, assumed to be a period-delimited |
| * field at the very end of the filename. Returns a newly allocated |
| * string buffer. |
| */ |
| const char *filename_set_extension(const char *inname, const char *extension) |
| { |
| const char *q = inname; |
| char *p; |
| size_t elen = strlen(extension); |
| size_t baselen; |
| |
| q = strrchrnul(inname, '.'); /* find extension or end of string */ |
| baselen = q - inname; |
| |
| p = nasm_malloc(baselen + elen + 1); |
| |
| memcpy(p, inname, baselen); |
| memcpy(p+baselen, extension, elen+1); |
| |
| return p; |
| } |