libio: Ensure proper std file descriptors

This commit is contained in:
Sebastian Huber
2016-12-09 09:18:57 +01:00
parent 9622f7796f
commit af8ced5e2d

View File

@@ -17,20 +17,17 @@
#include <rtems/libio.h> #include <rtems/libio.h>
#include <fcntl.h> #include <fcntl.h>
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h>
/* /*
* This is a replaceable stub which opens the console, if present. * This is a replaceable stub which opens the console, if present.
*/ */
void rtems_libio_post_driver(void) void rtems_libio_post_driver(void)
{ {
int stdin_fd;
int stdout_fd;
int stderr_fd;
/* /*
* Attempt to open /dev/console. * Attempt to open /dev/console.
*/ */
if ((stdin_fd = open("/dev/console", O_RDONLY, 0)) == -1) { if (open("/dev/console", O_RDONLY, 0) != STDIN_FILENO) {
/* /*
* There may not be a console driver so this is OK. * There may not be a console driver so this is OK.
*/ */
@@ -41,11 +38,13 @@ void rtems_libio_post_driver(void)
* But if we find /dev/console once, we better find it twice more * But if we find /dev/console once, we better find it twice more
* or something is REALLY wrong. * or something is REALLY wrong.
*/ */
if ((stdout_fd = open("/dev/console", O_WRONLY, 0)) == -1) if (open("/dev/console", O_WRONLY, 0) != STDOUT_FILENO) {
rtems_fatal_error_occurred( 0x55544431 ); /* error STD1 */ rtems_fatal_error_occurred( 0x55544431 );
}
if ((stderr_fd = open("/dev/console", O_WRONLY, 0)) == -1) if (open("/dev/console", O_WRONLY, 0) != STDERR_FILENO) {
rtems_fatal_error_occurred( 0x55544432 ); /* error STD2 */ rtems_fatal_error_occurred( 0x55544432 );
}
atexit(rtems_libio_exit); atexit(rtems_libio_exit);
} }