|
|
@ -4,6 +4,7 @@ |
|
|
#include <fcntl.h> |
|
|
#include <fcntl.h> |
|
|
#include <unistd.h> |
|
|
#include <unistd.h> |
|
|
#include <limits.h> |
|
|
#include <limits.h> |
|
|
|
|
|
#include "syscall.h" |
|
|
|
|
|
|
|
|
char *ctermid(char *s) |
|
|
char *ctermid(char *s) |
|
|
{ |
|
|
{ |
|
|
@ -13,11 +14,11 @@ char *ctermid(char *s) |
|
|
if (!s2) s2 = malloc(L_ctermid); |
|
|
if (!s2) s2 = malloc(L_ctermid); |
|
|
s = s2; |
|
|
s = s2; |
|
|
} |
|
|
} |
|
|
fd = open("/dev/tty", O_WRONLY | O_NOCTTY); |
|
|
fd = open("/dev/tty", O_WRONLY | O_NOCTTY | O_CLOEXEC); |
|
|
if (fd < 0) |
|
|
if (fd < 0) |
|
|
return strcpy(s, ""); |
|
|
return strcpy(s, ""); |
|
|
if (ttyname_r(fd, s, L_ctermid)) |
|
|
if (ttyname_r(fd, s, L_ctermid)) |
|
|
strcpy(s, ""); |
|
|
strcpy(s, ""); |
|
|
close(fd); |
|
|
__syscall(SYS_close, fd); |
|
|
return s; |
|
|
return s; |
|
|
} |
|
|
} |
|
|
|