N_NIMCALL(void, socketerror_514027)(Socketimpl513407* socket, NI err, NIM_BOOL async, NI32 lasterror) { { { NIM_BOOL LOC3; NI32 laste; LOC3 = 0; LOC3 = (err == ((NI) -1)); if (!(LOC3)) goto LA4; LOC3 = NIM_TRUE; LA4: ; if (!LOC3) goto LA5; { if (!(((NI) (lasterror)) == ((NI) -1))) goto LA9; laste = getsocketerror_514001(socket); } goto LA7; LA9: ; { laste = lasterror; } LA7: ; { if (!async) goto LA14; { NIM_BOOL LOC18; LOC18 = 0; LOC18 = (laste == EAGAIN); if (LOC18) goto LA19; LOC18 = (laste == EWOULDBLOCK); LA19: ; if (!LOC18) goto LA20; goto BeforeRet; } goto LA16; LA20: ; { raiseoserror_115809(laste); } LA16: ; } goto LA12; LA14: ; { raiseoserror_115809(laste); } LA12: ; } LA5: ; }BeforeRet: ; }
N_NIMCALL(void, close_231248)(Memfile230208* f) { NIM_BOOL error; NI32 lasterr; error = NIM_FALSE; lasterr = 0; { int LOC5; NIM_BOOL LOC6; int LOC7; if (!!(((*f).handle == ((NI32) 0)))) goto LA3; LOC5 = 0; LOC5 = munmap((*f).mem, (*f).size); error = !((LOC5 == ((NI32) 0))); lasterr = oslasterror_115833(); LOC6 = 0; LOC7 = 0; LOC7 = close((*f).handle); LOC6 = !((LOC7 == ((NI32) 0))); if (LOC6) goto LA8; LOC6 = error; LA8: ; error = LOC6; } LA3: ; (*f).size = ((NI) 0); (*f).mem = NIM_NIL; (*f).handle = ((int) 0); { if (!error) goto LA11; raiseoserror_115809(lasterr); } LA11: ; }
N_NIMCALL(NimStringDesc*, nosgetCurrentDir)(void) { NimStringDesc* result; result = 0; result = mnewString(((NI) 512)); { NCSTRING LOC3; NI LOC6; LOC3 = 0; LOC3 = getcwd(result->data, ((NI) 512)); if (!!((LOC3 == NIM_NIL))) goto LA4; LOC6 = 0; LOC6 = strlen(result->data); result = setLengthStr(result, ((NI) (LOC6))); } goto LA1; LA4: ; { NI32 LOC8; LOC8 = 0; LOC8 = oslasterror_115833(); raiseoserror_115809(LOC8); } LA1: ; return result; }
N_NIMCALL(void, acceptaddr_514813)(Socketimpl513407* server, Socketimpl513407** client, NimStringDesc** address, NU8 flags) { struct sockaddr_in sockaddress; socklen_t addrlen; int sock; memset((void*)(&sockaddress), 0, sizeof(sockaddress)); addrlen = ((socklen_t) (((NI)sizeof(struct sockaddr_in)))); sock = accept((*server).fd, ((struct sockaddr*) ((&sockaddress))), (&addrlen)); { NI32 err; if (!(sock == osinvalidsocket_508651)) goto LA3; err = oslasterror_115833(); { NIM_BOOL LOC7; LOC7 = 0; LOC7 = isdisconnectionerror_513481(flags, err); if (!LOC7) goto LA8; acceptaddr_514813(server, client, address, flags); } LA8: ; raiseoserror_115809(err); } goto LA1; LA3: ; { NCSTRING LOC11; (*(*client)).fd = sock; (*(*client)).isbuffered = (*server).isbuffered; LOC11 = 0; LOC11 = inet_ntoa(sockaddress.sin_addr); unsureAsgnRef((void**) (&(*address)), cstrToNimstr(LOC11)); } LA1: ; }
N_NIMCALL(void*, mapmem_230219)(Memfile230208* m, NU8 mode, NI mappedsize, NI offset) { void* result; NIM_BOOL readonly; int LOC5; NI32 LOC11; nimfr("mapMem", "memfiles.nim") result = 0; nimln(41, "memfiles.nim"); readonly = (mode == ((NU8) 0)); nimln(53, "memfiles.nim"); { if (!!((((NI) 0) < mappedsize))) goto LA3; failedassertimpl_87017(((NimStringDesc*) &TMP3729)); } LA3: ; nimln(54, "memfiles.nim"); LOC5 = 0; nimln(57, "memfiles.nim"); { if (!readonly) goto LA8; LOC5 = PROT_READ; } goto LA6; LA8: ; { LOC5 = (NI32)(PROT_READ | PROT_WRITE); } LA6: ; LOC11 = 0; nimln(58, "memfiles.nim"); { if (!readonly) goto LA14; LOC11 = (NI32)(MAP_PRIVATE | Mappopulate_109116); } goto LA12; LA14: ; { LOC11 = (NI32)(MAP_SHARED | Mappopulate_109116); } LA12: ; result = mmap(NIM_NIL, mappedsize, LOC5, LOC11, (*m).handle, ((off_t) (offset))); nimln(60, "memfiles.nim"); { NI32 LOC21; if (!(result == ((void*) (MAP_FAILED)))) goto LA19; nimln(61, "memfiles.nim"); LOC21 = 0; LOC21 = oslasterror_115833(); raiseoserror_115809(LOC21); } LA19: ; popFrame(); return result; }
N_NIMCALL(void, bindaddr_514620)(Socketimpl513407* socket, NU16 port, NimStringDesc* address) { { struct sockaddr_in name; if (!((address) && (address)->Sup.len == 0)) goto LA3; memset((void*)(&name), 0, sizeof(name)); name.sin_family = toint_508829(((NU8) 2)); name.sin_port = htons_510017(((NI16) (port))); name.sin_addr.s_addr = htonl_510007(INADDR_ANY); { int LOC7; NI32 LOC10; LOC7 = 0; LOC7 = bindaddr_509214((*socket).fd, ((struct sockaddr*) ((&name))), ((socklen_t) (((NI)sizeof(struct sockaddr_in))))); if (!(LOC7 < ((NI32) 0))) goto LA8; LOC10 = 0; LOC10 = oslasterror_115833(); raiseoserror_115809(LOC10); } LA8: ; } goto LA1; LA3: ; { struct addrinfo* ailist; ailist = getaddrinfo_509408(address, port, ((NU8) 2), ((NU8) 1), ((NU8) 6)); { int LOC14; NI32 LOC17; LOC14 = 0; LOC14 = bindaddr_509214((*socket).fd, (*ailist).ai_addr, (*ailist).ai_addrlen); if (!(LOC14 < ((NI32) 0))) goto LA15; dealloc_509621(ailist); LOC17 = 0; LOC17 = oslasterror_115833(); raiseoserror_115809(LOC17); } LA15: ; dealloc_509621(ailist); } LA1: ; }
N_NIMCALL(void, listen_514610)(Socketimpl513407* socket, int backlog) { { int LOC3; NI32 LOC6; LOC3 = 0; LOC3 = listen_509227((*socket).fd, backlog); if (!(LOC3 < ((NI32) 0))) goto LA4; LOC6 = 0; LOC6 = oslasterror_115833(); raiseoserror_115809(LOC6); } LA4: ; }
N_NIMCALL(void, unmapmem_230608)(Memfile230208* f, void* p, NI size) { nimfr("unmapMem", "memfiles.nim") nimln(72, "memfiles.nim"); { int LOC3; NI32 LOC6; LOC3 = 0; LOC3 = munmap(p, size); if (!!((LOC3 == ((NI32) 0)))) goto LA4; LOC6 = 0; LOC6 = oslasterror_115833(); raiseoserror_115809(LOC6); } LA4: ; popFrame(); }
N_NIMCALL(Socketimpl513407*, newsocket_513830)(NU8 domain, NU8 typ, NU8 protocol, NIM_BOOL buffered) { Socketimpl513407* result; int fd; result = 0; fd = newrawsocket_509004(domain, typ, protocol); { NI32 LOC5; if (!(fd == osinvalidsocket_508651)) goto LA3; LOC5 = 0; LOC5 = oslasterror_115833(); raiseoserror_115809(LOC5); } LA3: ; result = newsocket_513708(fd, buffered); return result; }
N_NIMCALL(void, close_231249)(Memfile230208* f) { NIM_BOOL error; NI32 lasterr; nimfr("close", "memfiles.nim") nimln(222, "memfiles.nim"); error = NIM_FALSE; lasterr = 0; nimln(232, "memfiles.nim"); { int LOC5; NIM_BOOL LOC6; int LOC7; if (!!(((*f).handle == ((NI32) 0)))) goto LA3; nimln(233, "memfiles.nim"); LOC5 = 0; LOC5 = munmap((*f).mem, (*f).size); error = !((LOC5 == ((NI32) 0))); nimln(234, "memfiles.nim"); lasterr = oslasterror_115833(); nimln(235, "memfiles.nim"); LOC6 = 0; LOC7 = 0; LOC7 = close((*f).handle); LOC6 = !((LOC7 == ((NI32) 0))); if (LOC6) goto LA8; LOC6 = error; LA8: ; error = LOC6; } LA3: ; nimln(237, "memfiles.nim"); (*f).size = ((NI) 0); nimln(238, "memfiles.nim"); (*f).mem = NIM_NIL; nimln(244, "memfiles.nim"); (*f).handle = ((int) 0); nimln(246, "memfiles.nim"); { if (!error) goto LA11; raiseoserror_115809(lasterr); } LA11: ; popFrame(); }
N_NIMCALL(void, rawcreatedir_122843)(NimStringDesc* dir) { { NIM_BOOL LOC3; int LOC4; NI32 LOC8; LOC3 = 0; LOC4 = 0; LOC4 = mkdir(dir->data, ((mode_t) 511)); LOC3 = !((LOC4 == ((NI32) 0))); if (!(LOC3)) goto LA5; LOC3 = !((errno == EEXIST)); LA5: ; if (!LOC3) goto LA6; LOC8 = 0; LOC8 = oslasterror_115833(); raiseoserror_115809(LOC8); } LA6: ; }
N_NIMCALL(void, putenv_121669)(NimStringDesc* key, NimStringDesc* val) { NI indx; indx = findenvvar_121605(key); { NimStringDesc* LOC5; if (!(((NI) 0) <= indx)) goto LA3; LOC5 = 0; LOC5 = rawNewString(key->Sup.len + val->Sup.len + 1); appendString(LOC5, key); appendChar(LOC5, 61); appendString(LOC5, val); asgnRefNoCycle((void**) (&environment_121009->data[indx]), LOC5); } goto LA1; LA3: ; { NimStringDesc* LOC7; NimStringDesc* LOC8; LOC7 = 0; LOC7 = rawNewString(key->Sup.len + val->Sup.len + 1); appendString(LOC7, key); appendChar(LOC7, 61); appendString(LOC7, val); environment_121009 = (TY121008*) incrSeq(&(environment_121009)->Sup, sizeof(NimStringDesc*)); LOC8 = 0; LOC8 = environment_121009->data[environment_121009->Sup.len-1]; environment_121009->data[environment_121009->Sup.len-1] = copyStringRC1(LOC7); if (LOC8) nimGCunrefNoCycle(LOC8); indx = (environment_121009 ? (environment_121009->Sup.len-1) : -1); } LA1: ; { int LOC11; NI32 LOC14; LOC11 = 0; LOC11 = putenv(environment_121009->data[indx]->data); if (!!((LOC11 == ((NI32) 0)))) goto LA12; LOC14 = 0; LOC14 = oslasterror_115833(); raiseoserror_115809(LOC14); } LA12: ; }
N_NIMCALL(NimStringDesc*, nosexpandFilename)(NimStringDesc* filename) { NimStringDesc* result; NCSTRING r; NI LOC6; result = 0; result = mnewString(((NI) (PATH_MAX))); r = realpath(filename->data, result->data); { NI32 LOC5; if (!r == 0) goto LA3; LOC5 = 0; LOC5 = oslasterror_115833(); raiseoserror_115809(LOC5); } LA3: ; LOC6 = 0; LOC6 = strlen(result->data); result = setLengthStr(result, ((NI) (LOC6))); return result; }
N_NIMCALL(time_t, nosgetLastModificationTime)(NimStringDesc* file) { time_t result; struct stat res; { result = 0; memset((void*)(&res), 0, sizeof(res)); { int LOC3; NI32 LOC6; LOC3 = 0; LOC3 = stat(file->data, (&res)); if (!(LOC3 < ((NI32) 0))) goto LA4; LOC6 = 0; LOC6 = oslasterror_115833(); raiseoserror_115809(LOC6); } LA4: ; result = res.st_mtime; goto BeforeRet; }BeforeRet: ; return result; }
N_NIMCALL(Memfile230208, open_230807)(NimStringDesc* filename, NU8 mode, NI mappedsize, NI offset, NI newfilesize) { Memfile230208 result; NIM_BOOL readonly; int flags; int LOC59; NI32 LOC65; nimfr("open", "memfiles.nim") memset((void*)(&result), 0, sizeof(result)); nimln(96, "memfiles.nim"); { NIM_BOOL LOC3; LOC3 = 0; LOC3 = (newfilesize == ((NI) -1)); if (LOC3) goto LA4; LOC3 = !((mode == ((NU8) 0))); LA4: ; if (!!(LOC3)) goto LA5; failedassertimpl_87017(((NimStringDesc*) &TMP3730)); } LA5: ; nimln(97, "memfiles.nim"); readonly = (mode == ((NU8) 0)); nimln(178, "memfiles.nim"); { if (!readonly) goto LA9; flags = O_RDONLY; } goto LA7; LA9: ; { flags = O_RDWR; } LA7: ; nimln(180, "memfiles.nim"); { NI32 permissionsmode; if (!!((newfilesize == ((NI) -1)))) goto LA14; nimln(181, "memfiles.nim"); flags = (NI32)((NI32)(flags | O_CREAT) | O_TRUNC); nimln(182, "memfiles.nim"); permissionsmode = (NI32)(S_IRUSR | S_IWUSR); nimln(183, "memfiles.nim"); result.handle = open(filename->data, flags, permissionsmode); } goto LA12; LA14: ; { nimln(185, "memfiles.nim"); result.handle = open(filename->data, flags); } LA12: ; nimln(187, "memfiles.nim"); { NI32 LOC26; if (!(result.handle == ((NI32) -1))) goto LA19; nimln(100, "memfiles.nim"); result.mem = NIM_NIL; nimln(101, "memfiles.nim"); result.size = ((NI) 0); nimln(175, "memfiles.nim"); { int LOC25; if (!!((result.handle == ((NI32) 0)))) goto LA23; LOC25 = 0; LOC25 = close(result.handle); } LA23: ; nimln(176, "memfiles.nim"); nimln(190, "memfiles.nim"); LOC26 = 0; LOC26 = oslasterror_115833(); raiseoserror_115809(LOC26); } LA19: ; nimln(192, "memfiles.nim"); { if (!!((newfilesize == ((NI) -1)))) goto LA29; nimln(193, "memfiles.nim"); { int LOC33; NI32 LOC41; LOC33 = 0; LOC33 = ftruncate(result.handle, ((off_t) (newfilesize))); if (!(LOC33 == ((NI32) -1))) goto LA34; nimln(100, "memfiles.nim"); result.mem = NIM_NIL; nimln(101, "memfiles.nim"); result.size = ((NI) 0); nimln(175, "memfiles.nim"); { int LOC40; if (!!((result.handle == ((NI32) 0)))) goto LA38; LOC40 = 0; LOC40 = close(result.handle); } LA38: ; nimln(176, "memfiles.nim"); nimln(194, "memfiles.nim"); LOC41 = 0; LOC41 = oslasterror_115833(); raiseoserror_115809(LOC41); } LA34: ; } LA29: ; nimln(196, "memfiles.nim"); { if (!!((mappedsize == ((NI) -1)))) goto LA44; nimln(197, "memfiles.nim"); result.size = mappedsize; } goto LA42; LA44: ; { struct stat stat; memset((void*)(&stat), 0, sizeof(stat)); nimln(200, "memfiles.nim"); { int LOC49; LOC49 = 0; LOC49 = fstat(result.handle, (&stat)); if (!!((LOC49 == ((NI32) -1)))) goto LA50; nimln(203, "memfiles.nim"); result.size = ((NI) (stat.st_size)); } goto LA47; LA50: ; { NI32 LOC58; nimln(100, "memfiles.nim"); result.mem = NIM_NIL; nimln(101, "memfiles.nim"); result.size = ((NI) 0); nimln(175, "memfiles.nim"); { int LOC57; if (!!((result.handle == ((NI32) 0)))) goto LA55; LOC57 = 0; LOC57 = close(result.handle); } LA55: ; nimln(176, "memfiles.nim"); nimln(205, "memfiles.nim"); LOC58 = 0; LOC58 = oslasterror_115833(); raiseoserror_115809(LOC58); } LA47: ; } LA42: ; nimln(207, "memfiles.nim"); LOC59 = 0; nimln(210, "memfiles.nim"); { if (!readonly) goto LA62; LOC59 = PROT_READ; } goto LA60; LA62: ; { LOC59 = (NI32)(PROT_READ | PROT_WRITE); } LA60: ; LOC65 = 0; nimln(211, "memfiles.nim"); { if (!readonly) goto LA68; LOC65 = (NI32)(MAP_PRIVATE | Mappopulate_109116); } goto LA66; LA68: ; { LOC65 = (NI32)(MAP_SHARED | Mappopulate_109116); } LA66: ; result.mem = mmap(NIM_NIL, result.size, LOC59, LOC65, result.handle, ((off_t) (offset))); nimln(215, "memfiles.nim"); { NI32 LOC80; if (!(result.mem == ((void*) (MAP_FAILED)))) goto LA73; nimln(100, "memfiles.nim"); result.mem = NIM_NIL; nimln(101, "memfiles.nim"); result.size = ((NI) 0); nimln(175, "memfiles.nim"); { int LOC79; if (!!((result.handle == ((NI32) 0)))) goto LA77; LOC79 = 0; LOC79 = close(result.handle); } LA77: ; nimln(176, "memfiles.nim"); nimln(216, "memfiles.nim"); LOC80 = 0; LOC80 = oslasterror_115833(); raiseoserror_115809(LOC80); } LA73: ; popFrame(); return result; }
N_NIMCALL(NI, waitfor_516819)(Socketimpl513407* socket, NF* waited, NI timeout, NI size, NimStringDesc* funcname) { NI result; { result = 0; result = ((NI) 1); { if (!(size <= ((NI) 0))) goto LA3; } LA3: ; { if (!(timeout == ((NI) -1))) goto LA7; result = size; goto BeforeRet; } LA7: ; { NIM_BOOL LOC11; NIM_BOOL LOC12; LOC11 = 0; LOC12 = 0; LOC12 = (*socket).isbuffered; if (!(LOC12)) goto LA13; LOC12 = !(((*socket).isbufferedU.S1.buflen == ((NI) 0))); LA13: ; LOC11 = LOC12; if (!(LOC11)) goto LA14; LOC11 = !(((*socket).isbufferedU.S1.buflen == (*socket).isbufferedU.S1.currpos)); LA14: ; if (!LOC11) goto LA15; result = (NI)((*socket).isbufferedU.S1.buflen - (*socket).isbufferedU.S1.currpos); result = ((result <= size) ? result : size); } goto LA9; LA15: ; { NF starttime; NI selret; NF LOC33; { Timeouterror513415* e_517013; NimStringDesc* LOC22; if (!((NI)(timeout - ((NI) (((NF)((*waited)) * (NF)(1.0000000000000000e+03))))) < ((NI) 1))) goto LA20; e_517013 = 0; e_517013 = (Timeouterror513415*) newObj((&NTI517014), sizeof(Timeouterror513415)); (*e_517013).Sup.Sup.m_type = (&NTI513415); LOC22 = 0; LOC22 = rawNewString(funcname->Sup.len + 21); appendString(LOC22, ((NimStringDesc*) &TMP5000)); appendString(LOC22, funcname); appendString(LOC22, ((NimStringDesc*) &TMP5001)); asgnRefNoCycle((void**) (&(*e_517013).Sup.message), LOC22); raiseException((Exception*)e_517013, "TimeoutError"); } LA20: ; starttime = ntepochTime(); selret = select_516207(socket, (NI)(timeout - ((NI) (((NF)((*waited)) * (NF)(1.0000000000000000e+03)))))); { NI32 LOC27; if (!(selret < ((NI) 0))) goto LA25; LOC27 = 0; LOC27 = oslasterror_115833(); raiseoserror_115809(LOC27); } LA25: ; { Timeouterror513415* e_517206; NimStringDesc* LOC32; if (!!((selret == ((NI) 1)))) goto LA30; e_517206 = 0; e_517206 = (Timeouterror513415*) newObj((&NTI517014), sizeof(Timeouterror513415)); (*e_517206).Sup.Sup.m_type = (&NTI513415); LOC32 = 0; LOC32 = rawNewString(funcname->Sup.len + 21); appendString(LOC32, ((NimStringDesc*) &TMP5000)); appendString(LOC32, funcname); appendString(LOC32, ((NimStringDesc*) &TMP5001)); asgnRefNoCycle((void**) (&(*e_517206).Sup.message), LOC32); raiseException((Exception*)e_517206, "TimeoutError"); } LA30: ; LOC33 = 0; LOC33 = ntepochTime(); HEX2BHEX3D_102688(waited, ((NF)(LOC33) - (NF)(starttime))); } LA9: ; }BeforeRet: ; return result; }
N_NIMCALL(Memfile230208, open_230807)(NimStringDesc* filename, NU8 mode, NI mappedsize, NI offset, NI newfilesize) { Memfile230208 result; NIM_BOOL readonly; int flags; int LOC53; NI32 LOC59; memset((void*)(&result), 0, sizeof(result)); readonly = (mode == ((NU8) 0)); { if (!readonly) goto LA3; flags = O_RDONLY; } goto LA1; LA3: ; { flags = O_RDWR; } LA1: ; { NI32 permissionsmode; if (!!((newfilesize == ((NI) -1)))) goto LA8; flags = (NI32)((NI32)(flags | O_CREAT) | O_TRUNC); permissionsmode = (NI32)(S_IRUSR | S_IWUSR); result.handle = open(filename->data, flags, permissionsmode); } goto LA6; LA8: ; { result.handle = open(filename->data, flags); } LA6: ; { NI32 LOC20; if (!(result.handle == ((NI32) -1))) goto LA13; result.mem = NIM_NIL; result.size = ((NI) 0); { int LOC19; if (!!((result.handle == ((NI32) 0)))) goto LA17; LOC19 = 0; LOC19 = close(result.handle); } LA17: ; LOC20 = 0; LOC20 = oslasterror_115833(); raiseoserror_115809(LOC20); } LA13: ; { if (!!((newfilesize == ((NI) -1)))) goto LA23; { int LOC27; NI32 LOC35; LOC27 = 0; LOC27 = ftruncate(result.handle, ((off_t) (newfilesize))); if (!(LOC27 == ((NI32) -1))) goto LA28; result.mem = NIM_NIL; result.size = ((NI) 0); { int LOC34; if (!!((result.handle == ((NI32) 0)))) goto LA32; LOC34 = 0; LOC34 = close(result.handle); } LA32: ; LOC35 = 0; LOC35 = oslasterror_115833(); raiseoserror_115809(LOC35); } LA28: ; } LA23: ; { if (!!((mappedsize == ((NI) -1)))) goto LA38; result.size = mappedsize; } goto LA36; LA38: ; { struct stat stat; memset((void*)(&stat), 0, sizeof(stat)); { int LOC43; LOC43 = 0; LOC43 = fstat(result.handle, (&stat)); if (!!((LOC43 == ((NI32) -1)))) goto LA44; result.size = ((NI) (stat.st_size)); } goto LA41; LA44: ; { NI32 LOC52; result.mem = NIM_NIL; result.size = ((NI) 0); { int LOC51; if (!!((result.handle == ((NI32) 0)))) goto LA49; LOC51 = 0; LOC51 = close(result.handle); } LA49: ; LOC52 = 0; LOC52 = oslasterror_115833(); raiseoserror_115809(LOC52); } LA41: ; } LA36: ; LOC53 = 0; { if (!readonly) goto LA56; LOC53 = PROT_READ; } goto LA54; LA56: ; { LOC53 = (NI32)(PROT_READ | PROT_WRITE); } LA54: ; LOC59 = 0; { if (!readonly) goto LA62; LOC59 = (NI32)(MAP_PRIVATE | Mappopulate_108316); } goto LA60; LA62: ; { LOC59 = (NI32)(MAP_SHARED | Mappopulate_108316); } LA60: ; result.mem = mmap(NIM_NIL, result.size, LOC53, LOC59, result.handle, ((off_t) (offset))); { NI32 LOC74; if (!(result.mem == ((void*) (MAP_FAILED)))) goto LA67; result.mem = NIM_NIL; result.size = ((NI) 0); { int LOC73; if (!!((result.handle == ((NI32) 0)))) goto LA71; LOC73 = 0; LOC73 = close(result.handle); } LA71: ; LOC74 = 0; LOC74 = oslasterror_115833(); raiseoserror_115809(LOC74); } LA67: ; return result; }