with
  Ada.Strings.Unbounded,
  Ada.Text_IO,
  POSIX,
  POSIX.IO,
  POSIX.Process_Primitives;

with
  EUP.Text_IO;

procedure Standard_Input_Redirection_1 is
   procedure Copy_3_Lines is
      Line : Ada.Strings.Unbounded.Unbounded_String;
   begin
      for I in 1 .. 3 loop
         EUP.Text_IO.Get_Line (File => EUP.Text_IO.Standard_Input,
                               Item => Line);
         EUP.Text_IO.Put_Line (File => EUP.Text_IO.Standard_Output,
                               Item => Line);
      end loop;
   end Copy_3_Lines;

   use type POSIX.IO.File_Descriptor;
   File : EUP.Text_IO.File_Type;
begin
   Copy_3_Lines;

   EUP.Text_IO.Close (File => POSIX.IO.Standard_Input);
   EUP.Text_IO.Open (File => File,
                     Name => String'("/etc/passwd"),
                     Mode => POSIX.IO.Read_Only);
   if File /= POSIX.IO.Standard_Input then
      EUP.Text_IO.Put_Line
        (File => EUP.Text_IO.Standard_Error,
         Item => String'("Could not open data as file descriptor 0."));
      POSIX.Process_Primitives.Exit_Process (Status => 1);
   end if;

   Copy_3_Lines;
exception
   when Ada.Text_IO.End_Error =>
      null;
end Standard_Input_Redirection_1;

