37 lines
771 B
C
37 lines
771 B
C
#include <string.h>
|
|
|
|
#include "utils.h"
|
|
|
|
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);
|
|
}
|