* Copyright (C) 2024 Red Hat, Inc.
* SPDX-License-Identifier: LGPL-2.1-or-later
*/
function drop_slashes(path : string): string {
let pos = path.length;
while (pos > 1 && path[pos - 1] === "/")
pos -= 1;
return pos === path.length ? path : path.substring(0, pos);
}
export function dirname(path : string): string {
const norm = drop_slashes(path);
const pos = norm.lastIndexOf("/");
if (pos < 0)
return ".";
else if (pos === 0)
return "/";
else
return drop_slashes(norm.substring(0, pos));
}
export function basename(path : string): string {
const norm = drop_slashes(path);
const pos = norm.lastIndexOf("/");
if (pos < 0)
return norm;
else if (pos === 0 && norm.length === 1)
return "/";
else
return norm.substring(pos + 1);
}
export function path_join(dir: string, base: string) {
const normdir = drop_slashes(dir);
return (normdir === "/" ? "" : normdir) + "/" + base;
}