X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ianmdlvl/git?a=blobdiff_plain;f=src%2Fshared%2Futil.c;h=6695a85a1c904af9be5e03ef6af90de1d5025f68;hb=ee451d766a64117a41ec36dd71e61683c9d9b83c;hp=06b6077843249ecd1b287aa4b50c097fd0433b49;hpb=40205d706e1210763ff4c98a317556375bd04bcd;p=elogind.git diff --git a/src/shared/util.c b/src/shared/util.c index 06b607784..6695a85a1 100644 --- a/src/shared/util.c +++ b/src/shared/util.c @@ -7433,3 +7433,27 @@ int sethostname_idempotent(const char *s) { return 1; } + +int ptsname_malloc(int fd, char **ret) { + size_t l = 100; + + for (;;) { + char *c; + + c = new(char, l); + if (!c) + return -ENOMEM; + + if (ptsname_r(fd, c, l) == 0) { + *ret = c; + return 0; + } + if (errno != ERANGE) { + free(c); + return -errno; + } + + free(c); + l *= 2; + } +}