mirror of
https://github.com/systemd/systemd.git
synced 2025-02-04 21:47:31 +03:00
util: modernize readlink_malloc() a bit
This commit is contained in:
parent
c50e4f95d8
commit
2d2ebd6b8f
@ -761,28 +761,31 @@ char *strappend(const char *s, const char *suffix) {
|
||||
return strnappend(s, suffix, suffix ? strlen(suffix) : 0);
|
||||
}
|
||||
|
||||
int readlink_malloc(const char *p, char **r) {
|
||||
int readlink_malloc(const char *p, char **ret) {
|
||||
size_t l = 100;
|
||||
int r;
|
||||
|
||||
assert(p);
|
||||
assert(r);
|
||||
assert(ret);
|
||||
|
||||
for (;;) {
|
||||
char *c;
|
||||
ssize_t n;
|
||||
|
||||
if (!(c = new(char, l)))
|
||||
c = new(char, l);
|
||||
if (!c)
|
||||
return -ENOMEM;
|
||||
|
||||
if ((n = readlink(p, c, l-1)) < 0) {
|
||||
int ret = -errno;
|
||||
n = readlink(p, c, l-1);
|
||||
if (n < 0) {
|
||||
r = -errno;
|
||||
free(c);
|
||||
return ret;
|
||||
return r;
|
||||
}
|
||||
|
||||
if ((size_t) n < l-1) {
|
||||
c[n] = 0;
|
||||
*r = c;
|
||||
*ret = c;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user