Changeset 21402

Show
Ignore:
Timestamp:
10/16/08 09:08:06 (5 years ago)
Author:
tokuhirom
Message:

added getservbyname

Location:
lang/cplusplus/llv8call/trunk
Files:
2 modified

Legend:

Unmodified
Added
Removed
  • lang/cplusplus/llv8call/trunk/ext/socket/socket.cc

    r21401 r21402  
    303303END 
    304304 
     305FUNCTION(_getservbyname) 
     306    // @prototype getservbyname(servicename[, protocolname]) 
     307    ARG_BETWEEN(1,2); 
     308    ARG_str(servicename,  0); 
     309    ARG_str(protocolname, 1); 
     310    char *protoname = NULL; 
     311    if (args.Length() == 2) { 
     312        protoname = *protocolname; 
     313    } 
     314    struct servent * ent = getservbyname(*servicename, protoname); 
     315    if (ent) { 
     316        return Uint32::New( ntohs(ent->s_port) ); 
     317    } else { 
     318        return ThrowException(String::New("service/proto not found")); 
     319    } 
     320END 
     321 
    305322FUNCTION(_accept) 
    306323    EXTERNAL_SOCKET(); 
     
    715732        BIND_CM("gethostbyname",  _gethostbyname); 
    716733        BIND_CM("getprotobyname", _getprotobyname); 
     734        BIND_CM("getservbyname",  _getservbyname); 
    717735        BIND_CM("inet_aton",      _inet_aton); 
    718736        BIND_CM("inet_ntoa",      _inet_ntoa); 
  • lang/cplusplus/llv8call/trunk/t/100_socket/02_misc.js

    r21400 r21402  
    11require('t/util.js'); 
    22 
    3 plan({tests:8}); 
     3plan({tests:12}); 
    44 
    55check_lib("org.coderepos.socket", 'Socket'); 
     
    1414is(Socket.getprotobyname('tcp'), 6, 'getprotobyname'); 
    1515 
     16is(Socket.getservbyname('http'), 80, 'getservbyname'); 
     17is(Socket.getservbyname('snmp'), 161, 'getservbyname'); 
     18is(Socket.getservbyname('snmp', 'udp'), 161, 'getservbyname(snmp,udp)'); 
     19is(Socket.getservbyname('http', 'tcp'), 80, 'getservbyname'); 
     20