Skip to content
Projeler
Gruplar
Parçacıklar
Yardım
Yükleniyor...
Oturum aç / Kaydol
Gezinmeyi değiştir
C
cpython
Proje
Proje
Ayrıntılar
Etkinlik
Cycle Analytics
Depo (repository)
Depo (repository)
Dosyalar
Kayıtlar (commit)
Dallar (branch)
Etiketler
Katkıda bulunanlar
Grafik
Karşılaştır
Grafikler
Konular (issue)
0
Konular (issue)
0
Liste
Pano
Etiketler
Kilometre Taşları
Birleştirme (merge) Talepleri
0
Birleştirme (merge) Talepleri
0
CI / CD
CI / CD
İş akışları (pipeline)
İşler
Zamanlamalar
Grafikler
Paketler
Paketler
Wiki
Wiki
Parçacıklar
Parçacıklar
Üyeler
Üyeler
Collapse sidebar
Close sidebar
Etkinlik
Grafik
Grafikler
Yeni bir konu (issue) oluştur
İşler
Kayıtlar (commit)
Konu (issue) Panoları
Kenar çubuğunu aç
Batuhan Osman TASKAYA
cpython
Commits
75b6f1c8
Kaydet (Commit)
75b6f1c8
authored
Ock 18, 1995
tarafından
Jack Jansen
Dosyalara gözat
Seçenekler
Dosyalara Gözat
İndir
Eposta Yamaları
Sade Fark
- Ported to powerpc
- Fixed bug with accept() call - Better error checking
üst
fa4fd8ef
Hide whitespace changes
Inline
Side-by-side
Showing
4 changed files
with
146 additions
and
63 deletions
+146
-63
macdnrmodule.c
Mac/Unsupported/mactcp/macdnrmodule.c
+7
-10
mactcpmodule.c
Mac/Unsupported/mactcp/mactcpmodule.c
+92
-12
tcpglue.c
Mac/Unsupported/mactcp/tcpglue.c
+16
-29
tcpglue.h
Mac/Unsupported/mactcp/tcpglue.h
+31
-12
No files found.
Mac/Unsupported/mactcp/macdnrmodule.c
Dosyayı görüntüle @
75b6f1c8
...
...
@@ -190,8 +190,10 @@ dnrr_getattr(self, name)
if
(
rv
)
return
rv
;
err_clear
();
if
(
self
->
waiting
)
if
(
!
dnrwait
(
self
)
)
if
(
!
dnrwait
(
self
)
)
{
err_setstr
(
ErrorObject
,
"Resolver busy"
);
return
NULL
;
}
tp
=
self
->
type
;
return
getmember
((
char
*
)
&
self
->
hinfo
,
dnrr_mlists
[
tp
],
name
);
}
...
...
@@ -293,7 +295,7 @@ dnr_StrToAddr(self, args)
if
(
err
==
cacheFault
)
{
rv
->
waiting
++
;
INCREF
(
rv
);
}
else
{
}
else
if
(
err
)
{
DECREF
(
rv
);
PyErr_Mac
(
ErrorObject
,
err
);
return
NULL
;
...
...
@@ -321,7 +323,7 @@ dnr_AddrToName(self, args)
if
(
err
==
cacheFault
)
{
rv
->
waiting
++
;
INCREF
(
rv
);
}
else
{
}
else
if
(
err
)
{
DECREF
(
rv
);
PyErr_Mac
(
ErrorObject
,
err
);
return
NULL
;
...
...
@@ -369,7 +371,7 @@ dnr_HInfo(self, args)
if
(
err
==
cacheFault
)
{
rv
->
waiting
++
;
INCREF
(
rv
);
}
else
{
}
else
if
(
err
)
{
DECREF
(
rv
);
PyErr_Mac
(
ErrorObject
,
err
);
return
NULL
;
...
...
@@ -401,17 +403,12 @@ dnr_MXInfo(self, args)
if
(
err
==
cacheFault
)
{
rv
->
waiting
++
;
INCREF
(
rv
);
}
else
{
}
else
if
(
err
)
{
DECREF
(
rv
);
PyErr_Mac
(
ErrorObject
,
err
);
return
NULL
;
}
return
(
object
*
)
rv
;
if
(
!
newgetargs
(
args
,
""
))
return
NULL
;
INCREF
(
None
);
return
None
;
}
/* List of methods defined in the module */
...
...
Mac/Unsupported/mactcp/mactcpmodule.c
Dosyayı görüntüle @
75b6f1c8
...
...
@@ -30,8 +30,21 @@ OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE.
#include <Desk.h>
/* State of a tcp stream, in the connectionState field */
#define STATE_CLOSED 0
#define STATE_LISTEN 2
#define STATE_ESTAB 8
#define STATE_CWAIT 18
static
object
*
ErrorObject
;
TCPIOCompletionUPP
upp_tcp_done
;
TCPNotifyUPP
upp_tcp_asr
;
#if 0
UDPIOCompletionUPP upp_udp_done;
#endif
UDPNotifyUPP
upp_udp_asr
;
/* ----------------------------------------------------- */
/* Declarations for objects of type MacTCP connection status */
...
...
@@ -64,6 +77,8 @@ staticforward typeobject Tcpgstype;
typedef
struct
{
OB_HEAD
TCPiopb
iop
;
long
localhost
;
/* Our IP address */
short
localport
;
/* Our port number */
object
*
asr
;
/* Optional async notification routine */
int
asr_ec
;
/* error code parameter to asr */
int
asr_reason
;
/* detail for some errors */
...
...
@@ -241,6 +256,34 @@ static typeobject Tcpgstype = {
/* End of code for MacTCP global status objects */
/* -------------------------------------------------------- */
static
int
tcps_checkstate
(
self
,
state
,
state2
)
tcpsobject
*
self
;
int
state
,
state2
;
{
OSErr
err
;
TCPStatusPB
*
pb
;
char
buf
[
80
];
if
(
self
->
async_busy
)
{
err_setstr
(
ErrorObject
,
"Operation not allowed, PassiveOpen in progress"
);
return
-
1
;
}
if
(
state
<
0
&&
state2
<
0
)
return
0
;
err
=
xTCPStatus
(
&
self
->
iop
,
&
pb
);
if
(
err
)
{
PyErr_Mac
(
ErrorObject
,
err
);
return
-
1
;
}
if
(
state
==
pb
->
connectionState
||
state2
==
pb
->
connectionState
)
return
0
;
sprintf
(
buf
,
"Operation not allowed, connection state=%d"
,
pb
->
connectionState
);
err_setstr
(
ErrorObject
,
buf
);
return
-
1
;
}
static
int
tcps_asr_safe
(
arg
)
void
*
arg
;
...
...
@@ -276,14 +319,14 @@ tcps_asr(str, ec, self, reason, icmp)
}
static
void
tcps_
open
done
(
pb
)
tcps_done
(
pb
)
TCPiopb
*
pb
;
{
tcpsobject
*
self
=
(
tcpsobject
*
)
pb
->
csParam
.
open
.
userDataPtr
;
if
(
pb
!=
&
self
->
iop
||
!
self
->
async_busy
)
{
/* Oops... problems */
printf
(
"tcps_
open
done: unexpected call
\n
"
);
printf
(
"tcps_done: unexpected call
\n
"
);
return
;
}
self
->
async_busy
=
0
;
...
...
@@ -339,15 +382,19 @@ tcps_PassiveOpen(self, args)
if
(
!
newgetargs
(
args
,
"h"
,
&
port
))
return
NULL
;
if
(
tcps_checkstate
(
self
,
-
1
,
-
1
)
<
0
)
return
NULL
;
self
->
async_busy
=
1
;
self
->
async_err
=
0
;
err
=
xTCPPassiveOpen
(
&
self
->
iop
,
port
,
(
TCPIOCompletionProc
)
tcps_open
done
,
err
=
xTCPPassiveOpen
(
&
self
->
iop
,
port
,
upp_tcp_
done
,
(
void
*
)
self
);
if
(
err
)
{
self
->
async_busy
=
0
;
PyErr_Mac
(
ErrorObject
,
err
);
return
NULL
;
}
self
->
localhost
=
self
->
iop
.
csParam
.
open
.
localHost
;
self
->
localport
=
self
->
iop
.
csParam
.
open
.
localPort
;
INCREF
(
None
);
return
None
;
}
...
...
@@ -363,11 +410,15 @@ tcps_ActiveOpen(self, args)
if
(
!
newgetargs
(
args
,
"hlh"
,
&
lport
,
&
rhost
,
&
rport
))
return
NULL
;
err
=
xTCPActiveOpen
(
&
self
->
iop
,
lport
,
rhost
,
rport
,
(
TCPIOCompletionProc
)
0
);
if
(
tcps_checkstate
(
self
,
-
1
,
-
1
)
<
0
)
return
NULL
;
err
=
xTCPActiveOpen
(
&
self
->
iop
,
lport
,
rhost
,
rport
,
(
TCPIOCompletionUPP
)
0
);
if
(
err
)
{
PyErr_Mac
(
ErrorObject
,
err
);
return
NULL
;
}
self
->
localhost
=
self
->
iop
.
csParam
.
open
.
localHost
;
self
->
localport
=
self
->
iop
.
csParam
.
open
.
localPort
;
INCREF
(
None
);
return
None
;
}
...
...
@@ -385,11 +436,13 @@ tcps_Send(self, args)
if
(
!
newgetargs
(
args
,
"s#|ii"
,
&
buf
,
&
bufsize
,
&
push
,
&
urgent
))
return
NULL
;
if
(
tcps_checkstate
(
self
,
STATE_ESTAB
,
STATE_CWAIT
)
<
0
)
return
NULL
;
wds
.
length
=
bufsize
;
wds
.
ptr
=
buf
;
wds
.
terminus
=
0
;
err
=
xTCPSend
(
&
self
->
iop
,
(
wdsEntry
*
)
&
wds
,
(
Boolean
)
push
,
(
Boolean
)
urgent
,
(
TCPIOCompletion
Proc
)
0
);
(
TCPIOCompletion
UPP
)
0
);
if
(
err
)
{
PyErr_Mac
(
ErrorObject
,
err
);
return
NULL
;
...
...
@@ -412,8 +465,10 @@ tcps_Rcv(self, args)
if
(
!
newgetargs
(
args
,
"i"
,
&
timeout
))
return
NULL
;
if
(
tcps_checkstate
(
self
,
-
1
,
-
1
)
<
0
)
return
NULL
;
memset
((
char
*
)
&
rds
,
0
,
sizeof
(
rds
));
err
=
xTCPNoCopyRcv
(
&
self
->
iop
,
rds
,
1
,
timeout
,
(
TCPIOCompletion
Proc
)
0
);
err
=
xTCPNoCopyRcv
(
&
self
->
iop
,
rds
,
1
,
timeout
,
(
TCPIOCompletion
UPP
)
0
);
if
(
err
)
{
PyErr_Mac
(
ErrorObject
,
err
);
return
NULL
;
...
...
@@ -421,7 +476,7 @@ tcps_Rcv(self, args)
urgent
=
self
->
iop
.
csParam
.
receive
.
urgentFlag
;
mark
=
self
->
iop
.
csParam
.
receive
.
markFlag
;
rv
=
newsizedstringobject
((
char
*
)
rds
[
0
].
ptr
,
rds
[
0
].
length
);
err
=
xTCPBufReturn
(
&
self
->
iop
,
rds
,
(
TCPIOCompletion
Proc
)
0
);
err
=
xTCPBufReturn
(
&
self
->
iop
,
rds
,
(
TCPIOCompletion
UPP
)
0
);
if
(
err
)
{
/* Should not happen */
printf
(
"mactcp module: BufReturn failed?
\n
"
);
PyErr_Mac
(
ErrorObject
,
err
);
...
...
@@ -440,7 +495,7 @@ tcps_Close(self, args)
if
(
!
newgetargs
(
args
,
""
))
return
NULL
;
err
=
xTCPClose
(
&
self
->
iop
,
(
TCPIOCompletion
Proc
)
0
);
err
=
xTCPClose
(
&
self
->
iop
,
(
TCPIOCompletion
UPP
)
0
);
if
(
err
)
{
PyErr_Mac
(
ErrorObject
,
err
);
return
NULL
;
...
...
@@ -477,6 +532,8 @@ tcps_Status(self, args)
if
(
!
newgetargs
(
args
,
""
))
return
NULL
;
if
(
tcps_checkstate
(
self
,
-
1
,
-
1
)
<
0
)
return
NULL
;
err
=
xTCPStatus
(
&
self
->
iop
,
&
pb
);
if
(
err
)
{
PyErr_Mac
(
ErrorObject
,
err
);
...
...
@@ -485,6 +542,21 @@ tcps_Status(self, args)
return
(
object
*
)
newtcpcsobject
(
pb
);
}
static
object
*
tcps_GetSockName
(
self
,
args
)
tcpsobject
*
self
;
object
*
args
;
{
/* This routine is needed so we can get at the local port even when
** a PassiveOpen is in progress (when we can't do a Status call).
** This is needed for socket listen(); getsockname(); accept() emulation
** as used by ftp and the like.
*/
if
(
!
newgetargs
(
args
,
""
))
return
NULL
;
return
mkvalue
(
"(lh)"
,
self
->
localhost
,
self
->
localport
);
}
static
struct
methodlist
tcps_methods
[]
=
{
{
"isdone"
,
(
method
)
tcps_isdone
,
1
},
{
"wait"
,
(
method
)
tcps_wait
,
1
},
...
...
@@ -495,6 +567,7 @@ static struct methodlist tcps_methods[] = {
{
"Close"
,
(
method
)
tcps_Close
,
1
},
{
"Abort"
,
(
method
)
tcps_Abort
,
1
},
{
"Status"
,
(
method
)
tcps_Status
,
1
},
{
"GetSockName"
,
(
method
)
tcps_GetSockName
,
1
},
{
NULL
,
NULL
}
/* sentinel */
};
...
...
@@ -535,7 +608,7 @@ newtcpsobject(bufsize)
if
(
self
==
NULL
)
return
NULL
;
memset
((
char
*
)
&
self
->
iop
,
0
,
sizeof
(
self
->
iop
));
err
=
xTCPCreate
(
bufsize
,
(
TCPNotifyProc
)
tcps
_asr
,
(
void
*
)
self
,
&
self
->
iop
);
err
=
xTCPCreate
(
bufsize
,
upp_tcp
_asr
,
(
void
*
)
self
,
&
self
->
iop
);
if
(
err
)
{
DEL
(
self
);
PyErr_Mac
(
ErrorObject
,
err
);
...
...
@@ -626,7 +699,7 @@ udps_Read(self, args)
if
(
!
newgetargs
(
args
,
"i"
,
&
timeout
))
return
NULL
;
err
=
xUDPRead
(
&
self
->
iop
,
timeout
,
(
UDPIOCompletion
Proc
)
0
);
err
=
xUDPRead
(
&
self
->
iop
,
timeout
,
(
UDPIOCompletion
UPP
)
0
);
if
(
err
)
{
PyErr_Mac
(
ErrorObject
,
err
);
return
NULL
;
...
...
@@ -659,7 +732,7 @@ udps_Write(self, args)
wds
.
length
=
bufsize
;
wds
.
ptr
=
buf
;
wds
.
terminus
=
0
;
err
=
xUDPWrite
(
&
self
->
iop
,
host
,
port
,
&
wds
,
(
UDPIOCompletion
Proc
)
0
);
err
=
xUDPWrite
(
&
self
->
iop
,
host
,
port
,
&
wds
,
(
UDPIOCompletion
UPP
)
0
);
if
(
err
)
{
PyErr_Mac
(
ErrorObject
,
err
);
return
NULL
;
...
...
@@ -715,7 +788,7 @@ newudpsobject(bufsize, port)
return
NULL
;
memset
((
char
*
)
&
self
->
iop
,
0
,
sizeof
(
self
->
iop
));
self
->
port
=
port
;
err
=
xUDPCreate
(
&
self
->
iop
,
bufsize
,
&
self
->
port
,
(
UDPNotifyProc
)
udps
_asr
,
err
=
xUDPCreate
(
&
self
->
iop
,
bufsize
,
&
self
->
port
,
upp_udp
_asr
,
(
void
*
)
self
);
if
(
err
)
{
DEL
(
self
);
...
...
@@ -899,6 +972,13 @@ initmactcp()
d
=
getmoduledict
(
m
);
ErrorObject
=
newstringobject
(
"mactcp.error"
);
dictinsert
(
d
,
"error"
,
ErrorObject
);
upp_tcp_done
=
NewTCPIOCompletionProc
(
tcps_done
);
upp_tcp_asr
=
NewTCPNotifyProc
(
tcps_asr
);
#if 0
upp_udp_done = NewUDPIOCompletionProc(udps_done);
#endif
upp_udp_asr
=
NewUDPNotifyProc
(
udps_asr
);
/* XXXX Add constants here */
...
...
Mac/Unsupported/mactcp/tcpglue.c
Dosyayı görüntüle @
75b6f1c8
...
...
@@ -15,11 +15,6 @@
#include "tcpglue.h"
#include <Devices.h>
#ifndef __MWERKS__
#define TCPIOCompletionUPP TCPIOCompletionProc
#define NewTCPIOCompletionProc(x) (x)
#endif
/* __MWERKS__ */
static
short
driver
=
0
;
#ifndef __powerc
...
...
@@ -56,7 +51,7 @@ OSErr xOpenDriver()
*/
OSErr
xTCPCreate
(
buflen
,
notify
,
udp
,
pb
)
int
buflen
;
TCPNotify
Proc
notify
;
TCPNotify
UPP
notify
;
void
*
udp
;
TCPiopb
*
pb
;
{
...
...
@@ -73,7 +68,7 @@ OSErr xTCPCreate(buflen,notify,udp, pb)
/*
* start listening for a TCP connection
*/
OSErr
xTCPPassiveOpen
(
TCPiopb
*
pb
,
short
port
,
TCPIOCompletion
Proc
completion
,
OSErr
xTCPPassiveOpen
(
TCPiopb
*
pb
,
short
port
,
TCPIOCompletion
UPP
completion
,
void
*
udp
)
{
if
(
driver
==
0
)
...
...
@@ -101,7 +96,7 @@ OSErr xTCPPassiveOpen(TCPiopb *pb, short port, TCPIOCompletionProc completion,
* connect to a remote TCP
*/
OSErr
xTCPActiveOpen
(
TCPiopb
*
pb
,
short
port
,
long
rhost
,
short
rport
,
TCPIOCompletion
Proc
completion
)
TCPIOCompletion
UPP
completion
)
{
if
(
driver
==
0
)
return
(
invalidStreamPtr
);
...
...
@@ -128,7 +123,7 @@ OSErr xTCPNoCopyRcv(pb,rds,rdslen,timeout,completion)
rdsEntry
*
rds
;
int
rdslen
;
int
timeout
;
TCPIOCompletion
Proc
completion
;
TCPIOCompletion
UPP
completion
;
{
if
(
driver
==
0
)
...
...
@@ -142,7 +137,7 @@ OSErr xTCPNoCopyRcv(pb,rds,rdslen,timeout,completion)
return
(
xPBControl
(
pb
,
completion
));
}
OSErr
xTCPBufReturn
(
TCPiopb
*
pb
,
rdsEntry
*
rds
,
TCPIOCompletion
Proc
completion
)
OSErr
xTCPBufReturn
(
TCPiopb
*
pb
,
rdsEntry
*
rds
,
TCPIOCompletion
UPP
completion
)
{
pb
->
ioCRefNum
=
driver
;
pb
->
csCode
=
TCPRcvBfrReturn
;
...
...
@@ -154,7 +149,7 @@ OSErr xTCPBufReturn(TCPiopb *pb,rdsEntry *rds,TCPIOCompletionProc completion)
/*
* send data
*/
OSErr
xTCPSend
(
TCPiopb
*
pb
,
wdsEntry
*
wds
,
Boolean
push
,
Boolean
urgent
,
TCPIOCompletion
Proc
completion
)
OSErr
xTCPSend
(
TCPiopb
*
pb
,
wdsEntry
*
wds
,
Boolean
push
,
Boolean
urgent
,
TCPIOCompletion
UPP
completion
)
{
if
(
driver
==
0
)
return
invalidStreamPtr
;
...
...
@@ -174,7 +169,7 @@ OSErr xTCPSend(TCPiopb *pb, wdsEntry *wds, Boolean push, Boolean urgent, TCPIOCo
/*
* close a connection
*/
OSErr
xTCPClose
(
TCPiopb
*
pb
,
TCPIOCompletion
Proc
completion
)
OSErr
xTCPClose
(
TCPiopb
*
pb
,
TCPIOCompletion
UPP
completion
)
{
if
(
driver
==
0
)
return
(
invalidStreamPtr
);
...
...
@@ -306,7 +301,7 @@ OSErr xTCPStatus(TCPiopb *pb, TCPStatusPB **spb)
/*
* create a UDP stream, hook it to a socket.
*/
OSErr
xUDPCreate
(
UDPiopb
*
pb
,
int
buflen
,
ip_port
*
port
,
UDPNotify
Proc
asr
,
void
*
udp
)
OSErr
xUDPCreate
(
UDPiopb
*
pb
,
int
buflen
,
ip_port
*
port
,
UDPNotify
UPP
asr
,
void
*
udp
)
{
OSErr
io
;
...
...
@@ -327,7 +322,7 @@ OSErr xUDPCreate(UDPiopb *pb,int buflen,ip_port *port, UDPNotifyProc asr, void *
/*
* ask for incoming data
*/
OSErr
xUDPRead
(
UDPiopb
*
pb
,
int
timeout
,
UDPIOCompletion
Proc
completion
)
OSErr
xUDPRead
(
UDPiopb
*
pb
,
int
timeout
,
UDPIOCompletion
UPP
completion
)
{
if
(
driver
==
0
)
...
...
@@ -337,7 +332,7 @@ OSErr xUDPRead(UDPiopb *pb, int timeout, UDPIOCompletionProc completion)
pb
->
csCode
=
UDPRead
;
pb
->
csParam
.
receive
.
timeOut
=
timeout
;
pb
->
csParam
.
receive
.
secondTimeStamp
=
0
/* must be zero */
;
return
(
xPBControl
(
(
TCPiopb
*
)
pb
,
(
TCPIOCompletion
Proc
)
completion
));
return
(
xPBControl
(
(
TCPiopb
*
)
pb
,
(
TCPIOCompletion
UPP
)
completion
));
}
OSErr
xUDPBfrReturn
(
UDPiopb
*
pb
,
char
*
buff
)
...
...
@@ -349,14 +344,14 @@ OSErr xUDPBfrReturn(UDPiopb *pb, char *buff)
pb
->
ioCRefNum
=
driver
;
pb
->
csCode
=
UDPBfrReturn
;
pb
->
csParam
.
receive
.
rcvBuff
=
buff
;
return
(
xPBControl
(
(
TCPiopb
*
)
pb
,(
TCPIOCompletion
Proc
)
-
1
)
);
return
(
xPBControl
(
(
TCPiopb
*
)
pb
,(
TCPIOCompletion
UPP
)
-
1
)
);
}
/*
* send data
*/
OSErr
xUDPWrite
(
UDPiopb
*
pb
,
ip_addr
host
,
ip_port
port
,
miniwds
*
wds
,
UDPIOCompletion
Proc
completion
)
UDPIOCompletion
UPP
completion
)
{
if
(
driver
==
0
)
...
...
@@ -369,7 +364,7 @@ OSErr xUDPWrite(UDPiopb *pb,ip_addr host,ip_port port,miniwds *wds,
pb
->
csParam
.
send
.
wdsPtr
=
(
Ptr
)
wds
;
pb
->
csParam
.
send
.
checkSum
=
true
;
pb
->
csParam
.
send
.
sendLength
=
0
/* must be zero */
;
return
(
xPBControl
(
(
TCPiopb
*
)
pb
,
(
TCPIOCompletion
Proc
)
completion
));
return
(
xPBControl
(
(
TCPiopb
*
)
pb
,
(
TCPIOCompletion
UPP
)
completion
));
}
/*
...
...
@@ -443,7 +438,7 @@ OSErr xTCPRcv(pb,buf,buflen,timeout,completion)
Ptr
buf
;
int
buflen
;
int
timeout
;
TCPIOCompletion
Proc
completion
;
TCPIOCompletion
UPP
completion
;
{
if
(
driver
==
0
)
...
...
@@ -457,7 +452,7 @@ OSErr xTCPRcv(pb,buf,buflen,timeout,completion)
return
(
xPBControl
(
pb
,
completion
));
}
OSErr
xPBControl
(
TCPiopb
*
pb
,
TCPIOCompletion
Proc
completion
)
OSErr
xPBControl
(
TCPiopb
*
pb
,
TCPIOCompletion
UPP
completion
)
{
#ifndef __MWERKS__
pb
->
ioNamePtr
=
ReturnA5
();
...
...
@@ -468,22 +463,14 @@ OSErr xPBControl(TCPiopb *pb,TCPIOCompletionProc completion)
(
pb
)
->
ioCompletion
=
0L
;
return
(
PBControl
((
ParmBlkPtr
)(
pb
),
false
));
/* sync */
}
else
if
(
completion
==
(
TCPIOCompletion
Proc
)
-
1L
)
else
if
(
completion
==
(
TCPIOCompletion
UPP
)
-
1L
)
{
(
pb
)
->
ioCompletion
=
0L
;
return
(
PBControl
((
ParmBlkPtr
)(
pb
),
true
));
/* async */
}
else
{
#if 0
/* If I understand the PowerPC calling correctly this is the right
** code, but the MetroWerks headers seem to disagree. We'll see... -- Jack
*/
TCPIOCompletionUPP comp_upp = NewTCPIOCompletionProc(completion);
(pb)->ioCompletion = comp_upp;
#else
(
pb
)
->
ioCompletion
=
completion
;
#endif
return
(
PBControl
((
ParmBlkPtr
)(
pb
),
true
));
/* async */
}
}
...
...
Mac/Unsupported/mactcp/tcpglue.h
Dosyayı görüntüle @
75b6f1c8
...
...
@@ -14,6 +14,21 @@
#include <UDPPB.h>
#include <AddressXlation.h>
#ifndef __MWERKS__
#define TCPIOCompletionUPP TCPIOCompletionProc
#define TCPNotifyUPP TCPNotifyProc
#define UDPIOCompletionUPP UDPIOCompletionProc
#define UDPNotifyUPP UDPNotifyProc
#define NewTCPIOCompletionProc(x) (x)
#define NewTCPNotifyProc(x) (x)
#define NewUDPIOCompletionProc(x) (x)
#define NewUDPNotifyProc(x) (x)
#endif
/* __MWERKS__ */
#if defined(powerc) || defined (__powerc)
#pragma options align=mac68k
#endif
typedef
struct
miniwds
{
unsigned
short
length
;
...
...
@@ -21,26 +36,30 @@ typedef struct miniwds
unsigned
short
terminus
;
/* must be zero'd for use */
}
miniwds
;
#if defined(powerc) || defined(__powerc)
#pragma options align=reset
#endif
OSErr
xOpenDriver
(
void
);
OSErr
xPBControl
(
TCPiopb
*
pb
,
TCPIOCompletion
Proc
completion
);
OSErr
xPBControl
(
TCPiopb
*
pb
,
TCPIOCompletion
UPP
completion
);
OSErr
xPBControlSync
(
TCPiopb
*
pb
);
OSErr
xTCPCreate
(
int
buflen
,
TCPNotify
Proc
notify
,
void
*
udp
,
TCPiopb
*
pb
);
OSErr
xTCPPassiveOpen
(
TCPiopb
*
pb
,
short
port
,
TCPIOCompletion
Proc
completion
,
void
*
udp
);
OSErr
xTCPActiveOpen
(
TCPiopb
*
pb
,
short
port
,
long
rhost
,
short
rport
,
TCPIOCompletion
Proc
completion
);
OSErr
xTCPRcv
(
TCPiopb
*
pb
,
char
*
buf
,
int
buflen
,
int
timeout
,
TCPIOCompletion
Proc
completion
);
OSErr
xTCPNoCopyRcv
(
TCPiopb
*
,
rdsEntry
*
,
int
,
int
,
TCPIOCompletion
Proc
);
OSErr
xTCPBufReturn
(
TCPiopb
*
pb
,
rdsEntry
*
rds
,
TCPIOCompletion
Proc
completion
);
OSErr
xTCPSend
(
TCPiopb
*
pb
,
wdsEntry
*
wds
,
Boolean
push
,
Boolean
urgent
,
TCPIOCompletion
Proc
completion
);
OSErr
xTCPClose
(
TCPiopb
*
pb
,
TCPIOCompletion
Proc
completion
);
OSErr
xTCPCreate
(
int
buflen
,
TCPNotify
UPP
notify
,
void
*
udp
,
TCPiopb
*
pb
);
OSErr
xTCPPassiveOpen
(
TCPiopb
*
pb
,
short
port
,
TCPIOCompletion
UPP
completion
,
void
*
udp
);
OSErr
xTCPActiveOpen
(
TCPiopb
*
pb
,
short
port
,
long
rhost
,
short
rport
,
TCPIOCompletion
UPP
completion
);
OSErr
xTCPRcv
(
TCPiopb
*
pb
,
char
*
buf
,
int
buflen
,
int
timeout
,
TCPIOCompletion
UPP
completion
);
OSErr
xTCPNoCopyRcv
(
TCPiopb
*
,
rdsEntry
*
,
int
,
int
,
TCPIOCompletion
UPP
);
OSErr
xTCPBufReturn
(
TCPiopb
*
pb
,
rdsEntry
*
rds
,
TCPIOCompletion
UPP
completion
);
OSErr
xTCPSend
(
TCPiopb
*
pb
,
wdsEntry
*
wds
,
Boolean
push
,
Boolean
urgent
,
TCPIOCompletion
UPP
completion
);
OSErr
xTCPClose
(
TCPiopb
*
pb
,
TCPIOCompletion
UPP
completion
);
OSErr
xTCPAbort
(
TCPiopb
*
pb
);
OSErr
xTCPRelease
(
TCPiopb
*
pb
);
OSErr
xUDPCreate
(
UDPiopb
*
pb
,
int
buflen
,
ip_port
*
port
,
UDPNotify
Proc
asr
,
void
*
udp
);
OSErr
xUDPRead
(
UDPiopb
*
pb
,
int
timeout
,
UDPIOCompletion
Proc
completion
);
OSErr
xUDPCreate
(
UDPiopb
*
pb
,
int
buflen
,
ip_port
*
port
,
UDPNotify
UPP
asr
,
void
*
udp
);
OSErr
xUDPRead
(
UDPiopb
*
pb
,
int
timeout
,
UDPIOCompletion
UPP
completion
);
OSErr
xUDPBfrReturn
(
UDPiopb
*
pb
,
char
*
buff
);
OSErr
xUDPWrite
(
UDPiopb
*
pb
,
ip_addr
host
,
ip_port
port
,
miniwds
*
wds
,
UDPIOCompletion
Proc
completion
);
UDPIOCompletion
UPP
completion
);
OSErr
xUDPRelease
(
UDPiopb
*
pb
);
ip_addr
xIPAddr
(
void
);
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment