5 <ENTRY GET-PIPE READ-DESC WRITE-DESC READ-SAFE-BUFFER>
13 PIPE-IJFN <OR FIX FALSE>
14 PIPE-DEV <OR STRING FALSE>
20 PIPE-OJFN <OR FIX FALSE>
21 PIPE-PIPE <UVECTOR [2 FIX]>
24 <COND (<NOT <GASSIGNED? NEW-CHANNEL-TYPE>>
25 <SETG NEW-CHANNEL-TYPE ,TIME>)>
27 <NEW-CHANNEL-TYPE PIPE DEFAULT
30 READ-SAFE-BUFFER PIPE-READ-SAFE
31 READ-BUFFER PIPE-READ-BUFFER
32 READ-BYTE PIPE-READ-BYTE
33 WRITE-BUFFER PIPE-WRITE-BUFFER
34 WRITE-BYTE PIPE-WRITE-BYTE
37 <SETG LEN-BUF <UVECTOR 0>>
38 <GDECL (LEN-BUF) UVECTOR>
40 <DEFINE PIPE-OPEN (STYPE OPER "TUPLE" STUFF "AUX" (PUV <UVECTOR 0 0>) RES)
41 #DECL ((PUV) UVECTOR (RES) <OR UVECTOR FALSE>)
42 <COND (<SET RES <CALL PIPE .PUV>>
43 <CHTYPE [<READ-DESC .PUV>
45 <WRITE-DESC .PUV> .PUV " "] PIPE>)>>
47 <DEFINE PIPE-CLOSE (CHANNEL OPER "OPTIONAL" (WHICH <>)
48 "AUX" (PIPE <CHANNEL-DATA .CHANNEL>) JFN)
49 #DECL ((CHANNEL) CHANNEL (PIPE) PIPE)
51 <SET JFN <NTH <PIPE-PIPE .PIPE> .WHICH>>
52 <CALL SYSCALL CLOSE .JFN>
53 <COND (<==? .WHICH ,READ-DESC>
55 (<PIPE-OJFN .PIPE <>>)>)
57 <COND (<PIPE-IJFN .PIPE><CALL SYSCALL CLOSE <PIPE-IJFN .PIPE>>)>
58 <COND (<PIPE-OJFN .PIPE><CALL SYSCALL CLOSE <PIPE-OJFN .PIPE>>)>)>>
60 <DEFINE PIPE-READ-SAFE (CHANNEL OPER STRING "OPTIONAL" (LEN <LENGTH .STRING>)
61 "AUX" (PIPE <CHANNEL-DATA .CHANNEL>) RES
63 #DECL ((CHANNEL) CHANNEL (LEN) FIX (STRING) STRING (PIPE) PIPE
65 <COND (<SET RES <CALL SYSCALL IOCTL <PIPE-IJFN .PIPE> ,FIONREAD .BUF>>
66 <SET LEN <MIN .LEN <1 .BUF> <LENGTH .STRING>>>
68 <COND (<SET RES <CALL SYSCALL READ
69 <PIPE-IJFN .PIPE> .STRING .LEN>>
74 <DEFINE PIPE-READ-BUFFER (CHANNEL OPER STRING "OPTIONAL" (LEN <LENGTH .STRING>)
75 "AUX" (PIPE <CHANNEL-DATA .CHANNEL>) RES)
76 #DECL ((CHANNEL) CHANNEL (STRING) STRING (LEN) FIX (PIPE) PIPE)
77 <COND (<SET RES <ISYSCALL READ <PIPE-IJFN .PIPE> .STRING .LEN>>
81 <DEFINE PIPE-READ-BYTE (CHANNEL OPER "AUX" (PIPE <CHANNEL-DATA .CHANNEL>) RES)
82 #DECL ((CHANNEL) CHANNEL (PIPE) PIPE)
83 <COND (<SET RES <ISYSCALL READ <PIPE-IJFN .PIPE> <PIPE-BUF .PIPE> 1>>
87 <DEFINE PIPE-WRITE-BUFFER (CHANNEL OPER BUF "OPTIONAL" (LEN <LENGTH .BUF>)
88 "AUX" (PIPE <CHANNEL-DATA .CHANNEL>) RES)
89 #DECL ((CHANNEL) CHANNEL (BUF) STRING (LEN) FIX (PIPE) PIPE)
90 <COND (<SET RES <CALL SYSCALL WRITE <PIPE-OJFN .PIPE> .BUF .LEN>>
94 <DEFINE PIPE-WRITE-BYTE (CHANNEL OPER BYTE "AUX" (PIPE <CHANNEL-DATA .CHANNEL>)
95 RES (BUF <PIPE-BUF .PIPE>))
96 #DECL ((CHANNEL) CHANNEL (BYTE) CHARACTER (PIPE) PIPE (BUF) STRING)
98 <COND (<SET RES <CALL SYSCALL WRITE <PIPE-OFJN .PIPE> .BUF 1>>
102 <DEFINE GET-PIPE (CHANNEL OPER "AUX" (PIPE <CHANNEL-DATA .CHANNEL>))
103 #DECL ((CHANNEL) CHANNEL (PIPE) PIPE)