forked from Imagelibrary/rtems
libio: Ensure proper std file descriptors
This commit is contained in:
@@ -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);
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user