diff --git a/main.cpp b/main.cpp index 796bdfd..3da57ea 100644 --- a/main.cpp +++ b/main.cpp @@ -151,22 +151,18 @@ int main(int argc,const char* argv[]) {"--debug",VM_DEBUG},{"-dbg",VM_DEBUG} }; uint32_t cmd=0; - bool recog_file=false; std::string filename; std::vector vm_argv; for(int i=1;i +#pragma comment(lib,"ws2_32") + +class WSAmanager{ +private: + WSAData data; +public: + WSAmanager(){ + WSAStartup(0x1010,&data); + } + ~WSAmanager(){ + WSACleanup(); + } +}; + +static WSAmanager win; +#else +#include +#endif + +extern "C" nasal_ref nas_socket(std::vector& args,nasal_gc& gc){ + if(args.size()!=3) + return builtin_err("socket","invalid arguments"); + if(args[0].type!=vm_num || args[1].type!=vm_num || args[2].type!=vm_num) + return builtin_err("socket","\"af\", \"type\", \"protocol\" should be number"); + int sd=socket(args[0].num(),args[1].num(),args[2].num()); + return {vm_num,(double)sd}; +} + +extern "C" nasal_ref nas_closesocket(std::vector& args,nasal_gc& gc){ + if(args.size()!=1) + return builtin_err("closesocket","invalid arguments"); + if(args[0].type!=vm_num) + return builtin_err("closesocket","\"\" should be number"); +#ifdef _WIN32 + return {vm_num,(double)closesocket(args[0].num())}; +#else + return {vm_num,(double)close(args[0].num())}; +#endif +} \ No newline at end of file