This will permit some upcoming changes to remove some compiler warnings.
const char *, int);
extern char *pathcat(char *, const char *, int, const char *,
const char *);
- extern int pathgetlink(const char *, char *, size_t);
+ extern size_t pathgetlink(const char *, char *, size_t);
extern int pathexists(char *, int);
extern int chresc(const char *, char **);
#include <ast/error.h>
#include <sys/types.h>
#include <sys/stat.h>
+#include <stdint.h>
#include <string.h>
char *pathcanon(char *path, int flags)
c = *(t - 1);
*(t - 1) = 0;
- int len = pathgetlink(phys, buf, sizeof(buf));
+ size_t len = pathgetlink(phys, buf, sizeof(buf));
*(t - 1) = c;
- if (len > 0) {
+ if (len != SIZE_MAX && len > 0) {
if ((t + len + 1) >= e) { /* make sure path fits in buf */
strcpy(path, s);
return 0;
p = r = path;
v = s = t = p;
strcpy(p, buf);
- } else if (len < 0 && errno == ENOENT) {
+ } else if (len == SIZE_MAX && errno == ENOENT) {
if (flags & PATH_EXISTS) {
strcpy(path, s);
return 0;
#include <ast/compat_unistd.h>
#endif
#include <stddef.h>
+#include <stdint.h>
/*
* return external representation for symbolic link text of name in buf
* the link text string length is returned
*/
-int pathgetlink(const char *name, char *buf, size_t siz)
+size_t pathgetlink(const char *name, char *buf, size_t siz)
{
#ifdef _WIN32
- return (-1);
+ return SIZE_MAX;
#else
int n;
if ((n = readlink(name, buf, siz)) < 0)
- return (-1);
+ return SIZE_MAX;
if (n >= siz) {
errno = EINVAL;
- return (-1);
+ return SIZE_MAX;
}
buf[n] = 0;
return (n);