static IDL_VPTR IDL_CDECL IDL_mg_heapid(int argc, IDL_VPTR *argv) { IDL_ENSURE_SCALAR(argv[0]); if (argv[0]->type != IDL_TYP_PTR && argv[0]->type != IDL_TYP_OBJREF) { IDL_MessageFromBlock(msg_block, M_MG_WRONG_TYPE, IDL_MSG_RET); } return IDL_GettmpULong(argv[0]->value.hvid); }
// // idlpgr_ReadRegister // // Read contents of specified register // IDL_VPTR IDL_CDECL idlpgr_ReadRegister(int argc, IDL_VPTR argv[]) { fc2Error error; fc2Context context; unsigned int address, value; context = (fc2Context) IDL_ULong64Scalar(argv[0]); address = (unsigned int) IDL_ULongScalar(argv[1]); error = fc2ReadRegister(context, address, &value); if (error) IDL_MessageFromBlock(msgs, M_IDLPGR_ERRORCODE, IDL_MSG_LONGJMP, "Could not read from specified register", error); return IDL_GettmpULong((IDL_ULONG) value); }
/* host = MG_NET_NAME2HOST(name) Converts the ASCII host name into an unsigned long host value. If name is not specified, the local host name is used. */ static IDL_VPTR IDL_CDECL mg_net_name2host(int argc, IDL_VPTR argv[], char *argk) { struct hostent *hp; char *pName, host_name[256]; if (argc == 0) { if (gethostname(host_name, 256) == -1) { host_name[0] = '\0'; } pName = host_name; } else { IDL_ENSURE_STRING(argv[0]); IDL_ENSURE_SCALAR(argv[0]); pName = IDL_STRING_STR(&(argv[0]->value.str)); } hp = gethostbyname(pName); if (!hp) return(IDL_GettmpLong(0)); return(IDL_GettmpULong(((struct in_addr *) (hp->h_addr))->s_addr)); }
/* err = MG_NET_QUERY(socket [, AVAILABLE_BYTES=a] [, IS_LISTENER=l] [, LOCAL_HOST=lh] [, LOCAL_PORT=lp] [, REMOTE_HOST=rh] [, REMOTE_PORT=rp]) Returns various information about the socket in question. AVAILABLE_BYTES: number of bytes available for reading. REMOTE_HOST: host number of the remote host the socket is connected to. IS_LISTENER: true if the socket was created using MG_NET_CREATEPORT() */ static IDL_VPTR IDL_CDECL mg_net_query(int argc, IDL_VPTR argv[], char *argk) { IDL_LONG i; IDL_VPTR vpPlainArgs[1],vpTmp; struct sockaddr_in peer_addr; int addr_len, err; IDL_LONG iRet = 0; static IDL_VPTR vpRHost, vpAvail, vpListen, vpLPort, vpRPort, vpLHost; static IDL_KW_PAR kw_pars[] = { IDL_KW_FAST_SCAN, { "AVAILABLE_BYTES", IDL_TYP_UNDEF, 1, IDL_KW_OUT | IDL_KW_ZERO, 0, IDL_CHARA(vpAvail) }, { "IS_LISTENER", IDL_TYP_UNDEF, 1, IDL_KW_OUT | IDL_KW_ZERO, 0, IDL_CHARA(vpListen) }, { "LOCAL_HOST", IDL_TYP_UNDEF, 1, IDL_KW_OUT | IDL_KW_ZERO, 0, IDL_CHARA(vpLHost) }, { "LOCAL_PORT", IDL_TYP_UNDEF, 1, IDL_KW_OUT | IDL_KW_ZERO, 0, IDL_CHARA(vpLPort) }, { "REMOTE_HOST", IDL_TYP_UNDEF, 1, IDL_KW_OUT | IDL_KW_ZERO, 0, IDL_CHARA(vpRHost) }, { "REMOTE_PORT", IDL_TYP_UNDEF, 1, IDL_KW_OUT | IDL_KW_ZERO, 0, IDL_CHARA(vpRPort) }, { NULL} }; IDL_KWCleanup(IDL_KW_MARK); IDL_KWGetParams(argc, argv, argk, kw_pars, vpPlainArgs, 1); i = IDL_LongScalar(vpPlainArgs[0]); if ((i < 0) || (i >= MAX_SOCKETS)) { IDL_KWCleanup(IDL_KW_CLEAN); return(IDL_GettmpLong(-1)); } if (vpRHost || vpRPort) { addr_len = sizeof(struct sockaddr_in); err = getpeername(net_list[i].socket, (struct sockaddr *) &peer_addr, &addr_len); if (err != 0) { iRet = -1; } else { if (vpRHost) { vpTmp = IDL_GettmpULong(peer_addr.sin_addr.s_addr); IDL_VarCopy(vpTmp, vpRHost); } if (vpRPort) { vpTmp = IDL_GettmpLong((long) ntohs(peer_addr.sin_port)); IDL_VarCopy(vpTmp, vpRPort); } } } if (vpAvail) { int len; err = IOCTL(net_list[i].socket, FIONREAD, &len); if (err != 0) { iRet = -1; } else { vpTmp = IDL_GettmpULong(len); IDL_VarCopy(vpTmp, vpAvail); } } if (vpListen) { vpTmp = IDL_GettmpLong(net_list[i].iState == NET_LISTEN); IDL_VarCopy(vpTmp, vpListen); } if (vpLPort || vpLHost) { addr_len = sizeof(struct sockaddr_in); err = getsockname(net_list[i].socket, (struct sockaddr *) &peer_addr, &addr_len); if (err != 0) { iRet = -1; } else { if (vpLHost) { vpTmp = IDL_GettmpULong(peer_addr.sin_addr.s_addr); IDL_VarCopy(vpTmp, vpLHost); } if (vpLPort) { vpTmp = IDL_GettmpLong((long) ntohs(peer_addr.sin_port)); IDL_VarCopy(vpTmp, vpLPort); } } } IDL_KWCleanup(IDL_KW_CLEAN); return(IDL_GettmpLong(iRet)); }
// unsigned int mysql_get_proto_info(MYSQL *mysql) static IDL_VPTR IDL_mg_mysql_get_proto_info(int argc, IDL_VPTR *argv) { unsigned int info = mysql_get_proto_info((MYSQL *)argv[0]->value.ptrint); return IDL_GettmpULong(info); }
// unsigned int mysql_field_count(MYSQL *mysql) static IDL_VPTR IDL_mg_mysql_field_count(int argc, IDL_VPTR *argv) { unsigned int count = mysql_field_count((MYSQL *)argv[0]->value.ptrint); return IDL_GettmpULong(count); }
// unsigned int STDCALL mysql_num_fields(MYSQL_RES *res); static IDL_VPTR IDL_mg_mysql_num_fields(int argc, IDL_VPTR *argv) { unsigned int num_fields = mysql_num_fields((MYSQL_RES *)argv[0]->value.ptrint); return IDL_GettmpULong(num_fields); }
// unsigned int mysql_errno(MYSQL *mysql) static IDL_VPTR IDL_mg_mysql_errno(int argc, IDL_VPTR *argv) { unsigned int err = mysql_errno((MYSQL *)argv[0]->value.ptrint); return IDL_GettmpULong(err); }