1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124 | ------------------------------------------------------------------------------
-- --
-- POSIX.5b VALIDATION TEST SUITE --
-- --
-- P 0 3 0 1 0 1 b --
-- --
-- B o d y --
-- --
-- --
-- Copyright (c) 1995-1998 Florida State University (FSU). All Rights --
-- Reserved. --
-- --
-- This is free software; you can redistribute it and/or modify it under --
-- terms of the GNU General Public License as published by the Free --
-- Software Foundation; either version 2, or (at your option) any later --
-- version. This software is distributed in the hope that it will be --
-- useful, but WITHOUT ANY WARRANTY; without even the implied warranty of --
-- MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU --
-- General Public License for more details. You should have received a --
-- copy of the GNU General Public License distributed with GNARL; see --
-- file COPYING. If not, write to the Free Software Foundation, 59 --
-- Temple Place - Suite 330, Boston, MA 02111-1307, USA. --
-- --
-- Under contract GS-35F-4506G, the U. S. Government obtained unlimited --
-- rights in the software and documentation contained herein. Unlimited --
-- rights are defined in DFAR 252,227-7013(a)(19). By making this public --
-- release, the Government intends to confer upon all recipients --
-- unlimited rights equal to those held by the Government. These rights --
-- include rights to use, duplicate, release or disclose the released --
-- data an computer software in whole or in part, in any manner and for --
-- any purpose whatsoever, and to have or permit others to do so. --
-- --
-- DISCLAIMER -- ALL MATERIALS OR INFORMATION HEREIN RELEASED, MADE --
-- AVAILABLE OR DISCLOSED ARE AS IS. THE GOVERNMENT MAKES NO EXPRESS OR --
-- IMPLIED WARRANTY AS TO ANY MATTER WHATSOEVER, INCLUDING THE CONDITIONS --
-- OF THE SOFTWARE, DOCUMENTATION OR OTHER INFORMATION RELEASED, MADE --
-- AVAILABLE OR DISCLOSED, OR THE OWNERSHIP, MERCHANTABILITY, OR FITNESS --
-- FOR A PARTICULAR PURPOSE OF SAID MATERIAL. --
-- --
------------------------------------------------------------------------------
-- [$Revision: 1.7 $]
-- Test package POSIX_Process_Primitives,
-- defined by IEEE Std 1003.5b Section 3.1,
-- for consistency with package Ada.Command_Line.
-- ....
-- This test needs more work; it is presently incomplete.
with Ada.Command_Line,
POSIX,
POSIX_Process_Environment,
POSIX_Process_Primitives,
POSIX_Report;
procedure p030101b is
use POSIX,
POSIX_Process_Environment,
POSIX_Process_Primitives,
POSIX_Report;
-- Cases to be tested by child process
Normal_Completion : constant := 1;
Normal_Completion_With_Ada_Status : constant := 2;
Unhandled_Exception : constant := 3;
POSIX_Exit_Process : constant := 4;
Arg_Count : Integer := 0;
procedure Print_Arg (S : POSIX_String; Quit : in out Boolean);
procedure Print_Arg (S : POSIX_String; Quit : in out Boolean) is
begin
Quit := False;
Comment ("Argument (" & Integer'Image (Arg_Count) &
" =" & To_String (S));
end Print_Arg;
procedure Print_Args is new For_Every_Item (Print_Arg);
begin
Comment ("child process for test p030101");
Print_Args (Argument_List);
-------------------------------------------------------------------------
-- Check for inconsistent argument counts
Assert (Ada.Command_Line.Argument_Count =
Length (Argument_List) - 1, "A001");
-------------------------------------------------------------------------
begin
-- Check first argument
Assert (Ada.Command_Line.Command_Name =
To_String (Value (Argument_List, 1)),
"A002");
-- Check second argument
Assert (Ada.Command_Line.Argument (1) =
To_String (Value (Argument_List, 2)),
"A003");
exception when E : others => Unexpected_Exception (E, "A004");
end;
-----------------------------------------------------------
if Child = Normal_Completion then
return;
elsif Child = Normal_Completion_With_Ada_Status then
Ada.Command_Line.Set_Exit_Status (77);
return;
elsif Child = Unhandled_Exception then
raise Program_Error;
elsif Child = POSIX_Exit_Process then
Exit_Process (78);
-- Fail if abnormal -child argument value
else Fail ("A005");
end if;
exception when E : others =>
if Child = Unhandled_Exception then raise;
else Fatal_Exception (E, "A006");
end if;
end p030101b;
|