diff --git a/libgloss/ChangeLog b/libgloss/ChangeLog index 1c3e16267..522721553 100644 --- a/libgloss/ChangeLog +++ b/libgloss/ChangeLog @@ -1,3 +1,7 @@ +2010-08-27 Christophe Lyon + + * syscalls.c (_isatty): Fix return value. + 2010-07-23 Naveen.H.S Gina Verlekar diff --git a/libgloss/arm/syscalls.c b/libgloss/arm/syscalls.c index 0e0a5dae0..15cc69f61 100644 --- a/libgloss/arm/syscalls.c +++ b/libgloss/arm/syscalls.c @@ -770,24 +770,30 @@ int _isatty (int fd) { struct fdent *pfd; + int tty; pfd = findslot (fd); if (pfd == NULL) { errno = EBADF; - return -1; + return 0; } #ifdef ARM_RDI_MONITOR - return checkerror (do_AngelSWI (AngelSWI_Reason_IsTTY, &pfd->handle)); + tty = do_AngelSWI (AngelSWI_Reason_IsTTY, &pfd->handle); #else register r0 asm("r0"); r0 = pfd->handle; asm ("swi %a2" : "=r" (r0) : "0"(r0), "i" (SWI_IsTTY)); - return checkerror (r0); + tty = r0; #endif + + if (tty == 1) + return 1; + errno = get_errno (); + return 0; } int