Annotation of OpenXM_contrib/PHC/Ada/System/machines.adb, Revision 1.1.1.1
1.1 maekawa 1: with System_Call;
2: with text_io,integer_io; use text_io,integer_io;
3:
4: package body Machines is
5:
6: function getpid return integer;
7: pragma interface(C, getpid);
8:
9: function Process_ID return integer is
10: begin
11: return getpid;
12: end Process_ID;
13:
14: function Integer_to_String ( i : integer ) return string is
15:
16: answer : string(1..20);
17: nb : natural := 0;
18: tmp : integer := i;
19:
20: function Number_to_Character ( n : integer ) return character is
21: begin
22: case n is
23: when 0 => return '0';
24: when 1 => return '1';
25: when 2 => return '2';
26: when 3 => return '3';
27: when 4 => return '4';
28: when 5 => return '5';
29: when 6 => return '6';
30: when 7 => return '7';
31: when 8 => return '8';
32: when 9 => return '9';
33: when others => return ' ';
34: end case;
35: end Number_to_Character;
36:
37: begin
38: if tmp = 0
39: then nb := nb + 1;
40: answer(nb) := Number_to_Character(0);
41: end if;
42: while tmp /= 0 loop
43: nb := nb + 1;
44: answer(nb) := Number_to_Character(tmp mod 10);
45: tmp := tmp / 10;
46: end loop;
47: declare
48: res : string(1..nb);
49: begin
50: for j in res'range loop
51: res(j) := answer(nb-j+1);
52: end loop;
53: return res;
54: end;
55: end Integer_to_String;
56:
57: function Process_ID return string is
58: begin
59: return Integer_to_String(getpid);
60: end Process_ID;
61:
62: function User_Name ( pid : string ) return string is
63:
64: temp : file_type;
65: name : string(1..80);
66: last : natural;
67:
68: begin
69: System_Call.Call("whoami > /tmp/user_name" & pid);
70: Open(temp,in_file,"/tmp/user_name" & pid);
71: get_line(temp,name,last);
72: Close(temp);
73: System_Call.Call("rm /tmp/user_name" & pid);
74: return name(1..last);
75: exception
76: when others => return "???";
77: end User_Name;
78:
79: function Architecture ( pid : string ) return string is
80:
81: temp : file_type;
82: answer : string(1..80);
83: last : natural;
84:
85: begin
86: System_Call.Call("uname -a > /tmp/arch_type" & pid);
87: Open(temp,in_file,"/tmp/arch_type" & pid);
88: get_line(temp,answer,last);
89: Close(temp);
90: System_Call.Call("rm /tmp/arch_type" & pid);
91: return answer(1..last);
92: exception
93: when others => return "???";
94: end Architecture;
95:
96: function Architecture ( pid : string; machine : string ) return string is
97:
98: temp : file_type;
99: answer : string(1..80);
100: last : natural;
101:
102: begin
103: System_Call.Call("rsh " & machine & " uname -a > /tmp/arch_type" & pid);
104: Open(temp,in_file,"/tmp/arch_type" & pid);
105: get_line(temp,answer,last);
106: Close(temp);
107: System_Call.Call("rm /tmp/arch_type" & pid);
108: return answer(1..last);
109: exception
110: when others => return "???";
111: end Architecture;
112:
113: function Host_Name ( pid : string ) return string is
114:
115: temp : file_type;
116: answer : string(1..80);
117: last : natural;
118:
119: begin
120: System_Call.Call("hostname > /tmp/host_name" & pid);
121: Open(temp,in_file,"/tmp/host_name" & pid);
122: get_line(temp,answer,last);
123: Close(temp);
124: System_Call.Call("rm /tmp/host_name" & pid);
125: return answer(1..last);
126: exception
127: when others => return "???";
128: end Host_Name;
129:
130: function Date ( pid : string ) return string is
131:
132: temp : file_type;
133: answer : string(1..80);
134: last : natural;
135:
136: begin
137: System_Call.Call("date > /tmp/date" & pid);
138: Open(temp,in_file,"/tmp/date" & pid);
139: get_line(temp,answer,last);
140: Close(temp);
141: System_Call.Call("rm /tmp/date" & pid);
142: return answer(1..last);
143: exception
144: when others => return "???";
145: end Date;
146:
147: end Machines;
FreeBSD-CVSweb <freebsd-cvsweb@FreeBSD.org>