blob: 210d85de079da4bb3338f281898b4be82c3988af [file] [log] [blame]
/*
* Copyright (C) Igor Sysoev
* Copyright (C) NGINX, Inc.
*/
#include <njs_main.h>
void
njs_file_basename(const njs_str_t *path, njs_str_t *name)
{
const u_char *p, *end;
end = path->start + path->length;
p = end - 1;
/* Stripping dir prefix. */
while (p >= path->start && *p != '/') { p--; }
p++;
name->start = (u_char *) p;
name->length = end - p;
}
void
njs_file_dirname(const njs_str_t *path, njs_str_t *name)
{
const u_char *p, *end;
if (path->length == 0) {
goto current_dir;
}
p = path->start + path->length - 1;
/* Stripping basename. */
while (p >= path->start && *p != '/') { p--; }
end = p + 1;
if (end == path->start) {
goto current_dir;
}
/* Stripping trailing slashes. */
while (p >= path->start && *p == '/') { p--; }
p++;
if (p == path->start) {
p = end;
}
name->start = path->start;
name->length = p - path->start;
return;
current_dir:
*name = njs_str_value(".");
}