blob: 8f877dd83d014ec9362f7d0a55f90cc6837b87f1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
|
/* ISC license. */
#include <limits.h>
#include <errno.h>
#include <skalibs/bytestr.h>
#include <skalibs/stralloc.h>
#include <skalibs/djbunix.h>
#ifndef PATH_MAX
# define PATH_MAX 4095
#endif
char *realpath_tmp (char const *name, char *buf, stralloc *tmp)
{
unsigned int tmpbase = tmp->len ;
if (sarealpath(tmp, name) == -1) return (char *)0 ;
if (tmp->len - tmpbase > PATH_MAX)
{
tmp->len = tmpbase ;
return (errno = ENAMETOOLONG, (char *)0) ;
}
byte_copy(buf, tmp->len - tmpbase, tmp->s + tmpbase) ;
buf[tmp->len - tmpbase] = 0 ;
tmp->len = tmpbase ;
return buf ;
}
|