# infer_ext_from_filename.c Infer file extension from filename ending with .md --- ## Includes ```c #include #include "utils.h" ``` --- ## Function Descriptions ### `infer_ext_from_filename` Infer the file extension from a filename that ends with `.md`. #### Parameters - `path`: Pointer to the filename string. #### Return Value Returns a pointer to a static buffer containing the inferred extension, or `NULL` if no valid ```c const char * infer_ext_from_filename(const char *path) { static char ext_buffer[32]; const char *md_ext; const char *before_md; const char *dot; size_t len; size_t ext_len; if (NULL == path) return (NULL); len = strlen(path); if (len < 6) return (NULL); md_ext = path + len - 3; if (0 != strcmp(md_ext, ".md")) return (NULL); before_md = md_ext - 1; while (before_md > path && '.' != *before_md) before_md--; if (before_md == path || '.' != *before_md) return (NULL); dot = before_md; if (dot + 1 >= md_ext) return (NULL); ext_len = md_ext - (dot + 1); if (ext_len >= sizeof(ext_buffer)) return (NULL); memcpy(ext_buffer, dot + 1, ext_len); ext_buffer[ext_len] = '\0'; return (ext_buffer); } ```