blob: 9fc4802345a3486a37a57b42dcc80232787686f5 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
|
/* ISC license. */
#include <skalibs/bytestr.h>
#include <skalibs/stralloc.h>
#include <skalibs/djbunix.h>
int sadirname (stralloc *sa, char const *s, unsigned int len)
{
if (!len) return stralloc_catb(sa, ".", 1) ;
while (len && (s[len-1] == '/')) len-- ;
if (!len) return stralloc_catb(sa, "/", 1) ;
{
register unsigned int i = byte_rchr(s, len, '/') ;
return (i == len) ? stralloc_catb(sa, ".", 1) :
(i == 0) ? stralloc_catb(sa, "/", 1) :
stralloc_catb(sa, s, i) ;
}
}
|