X-Git-Url: http://www.chiark.greenend.org.uk/ucgi/~ian/git?a=blobdiff_plain;f=dgram%2Fsockaddr.c;h=c5592ea986abbfa52f1ddafe8e89ac0a9541ade4;hb=3340221c68f8c948db9d2d3b553692fe642dd0f8;hp=2a388d018226f63603088421f86fc9dc24af9879;hpb=79480f2c416419bcde9b9ac78f5f10bd4cc724e3;p=chiark-tcl.git diff --git a/dgram/sockaddr.c b/dgram/sockaddr.c index 2a388d0..c5592ea 100644 --- a/dgram/sockaddr.c +++ b/dgram/sockaddr.c @@ -62,10 +62,10 @@ void sockaddr_free(const SockAddr_Value *v) { /* Sockaddr Tcl type */ static void sockaddr_t_dup(Tcl_Obj *src, Tcl_Obj *dup) { - objfreeir(dup); sockaddr_create(OBJ_SOCKADDR(dup), sockaddr_addr(OBJ_SOCKADDR(src)), sockaddr_len(OBJ_SOCKADDR(src))); + dup->typePtr= &hbytes_type; } static void sockaddr_t_free(Tcl_Obj *o) { @@ -137,7 +137,7 @@ static int sockaddr_t_sfa(Tcl_Interp *ip, Tcl_Obj *o) { else { assert(str[0]=='/' && str[1]!='/'); path=str; } if (strlen(str) >= sizeof(s.sun.sun_path)) - return staticerr(ip, "AF_UNIX path too long"); + return staticerr(ip, "AF_UNIX path too long", "SOCKADDR AFUNIX LENGTH"); strcpy(s.sun.sun_path, path); @@ -159,21 +159,24 @@ static int sockaddr_t_sfa(Tcl_Interp *ip, Tcl_Obj *o) { } TFREE(copy); - if (!iprv) return staticerr(ip, "bad IPv4 address syntax"); + if (!iprv) + return staticerr(ip, "bad IPv4 address syntax", "SOCKADDR SYNTAX IPV4"); comma++; if (!strcmp(comma,"*")) { s.sin.sin_port= 0; } else { errno=0; port_l=strtoul(comma,&ep,10); - if (errno || *ep) return staticerr(ip, "bad IPv4 port"); - if (port_l > 65535) return staticerr(ip, "IPv4 port out of range"); + if (errno || *ep) + return staticerr(ip, "bad IPv4 port", "SOCKADDR SYNTAX IPV4"); + if (port_l > 65535) + return staticerr(ip, "IPv4 port out of range", "SOCKADDR SYNTAX IPV4"); s.sin.sin_port= htons(port_l); } } else { - return staticerr(ip, "bad socket address syntax"); + return staticerr(ip, "bad socket address syntax", "SOCKADDR SYNTAX OTHER"); }