util: simplify get_ctty()

This commit is contained in:
Lennart Poettering 2014-02-19 17:52:28 +01:00
parent 480a61ae74
commit 833fce2857

View file

@ -2526,9 +2526,11 @@ int get_ctty_devnr(pid_t pid, dev_t *d) {
}
int get_ctty(pid_t pid, dev_t *_devnr, char **r) {
int k;
char fn[sizeof("/dev/char/")-1 + 2*DECIMAL_STR_MAX(unsigned) + 1 + 1], *s, *b, *p;
char fn[sizeof("/dev/char/")-1 + 2*DECIMAL_STR_MAX(unsigned) + 1 + 1], *b = NULL;
_cleanup_free_ char *s = NULL;
const char *p;
dev_t devnr;
int k;
assert(r);
@ -2546,14 +2548,8 @@ int get_ctty(pid_t pid, dev_t *_devnr, char **r) {
/* This is an ugly hack */
if (major(devnr) == 136) {
if (asprintf(&b, "pts/%lu", (unsigned long) minor(devnr)) < 0)
return -ENOMEM;
*r = b;
if (_devnr)
*_devnr = devnr;
return 0;
asprintf(&b, "pts/%lu", (unsigned long) minor(devnr));
goto finish;
}
/* Probably something like the ptys which have no
@ -2561,14 +2557,7 @@ int get_ctty(pid_t pid, dev_t *_devnr, char **r) {
* vaguely useful. */
b = strdup(fn + 5);
if (!b)
return -ENOMEM;
*r = b;
if (_devnr)
*_devnr = devnr;
return 0;
goto finish;
}
if (startswith(s, "/dev/"))
@ -2579,8 +2568,8 @@ int get_ctty(pid_t pid, dev_t *_devnr, char **r) {
p = s;
b = strdup(p);
free(s);
finish:
if (!b)
return -ENOMEM;