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 <fcntl.h>
#include <stdlib.h>
#include <unistd.h>
/*
* This is a replaceable stub which opens the console, if present.
*/
void rtems_libio_post_driver(void)
{
int stdin_fd;
int stdout_fd;
int stderr_fd;
/*
* 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.
*/
@@ -41,11 +38,13 @@ void rtems_libio_post_driver(void)
* But if we find /dev/console once, we better find it twice more
* or something is REALLY wrong.
*/
if ((stdout_fd = open("/dev/console", O_WRONLY, 0)) == -1)
rtems_fatal_error_occurred( 0x55544431 ); /* error STD1 */
if (open("/dev/console", O_WRONLY, 0) != STDOUT_FILENO) {
rtems_fatal_error_occurred( 0x55544431 );
}
if ((stderr_fd = open("/dev/console", O_WRONLY, 0)) == -1)
rtems_fatal_error_occurred( 0x55544432 ); /* error STD2 */
if (open("/dev/console", O_WRONLY, 0) != STDERR_FILENO) {
rtems_fatal_error_occurred( 0x55544432 );
}
atexit(rtems_libio_exit);
}