⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 uposixwin.c

📁 Scheme跨平台编译器
💻 C
📖 第 1 页 / 共 5 页
字号:
		Bit 3: Share standard error if bit is set.    Returns: zero return value indicates failure.*/static int C_fcallC_process(const char * app, const char * cmdlin, const char ** env,	  int * phandle,	  int * pstdin_fd, int * pstdout_fd, int * pstderr_fd,	  int params){    int i;    int success = TRUE;    const int f_share_io[3] = { params & 1, params & 2, params & 4};    int io_fds[3] = { -1, -1, -1 };    HANDLE	child_io_handles[3] = { NULL, NULL, NULL },	standard_io_handles[3] = {	    GetStdHandle(STD_INPUT_HANDLE),	    GetStdHandle(STD_OUTPUT_HANDLE),	    GetStdHandle(STD_ERROR_HANDLE)};    const char modes[3] = "rww";    HANDLE cur_process = GetCurrentProcess(), child_process = NULL;    void* envblk = NULL;    /****** create io handles & fds ***/    for (i=0; i<3 && success; ++i)    {	if (f_share_io[i])	{	    success = DuplicateHandle(		cur_process, standard_io_handles[i],		cur_process, &child_io_handles[i],		0, FALSE, DUPLICATE_SAME_ACCESS);	}	else	{	    HANDLE a, b;	    success = CreatePipe(&a,&b,NULL,0);	    if(success)	    {		HANDLE parent_end;		if (modes[i]=='r') { child_io_handles[i]=a; parent_end=b; }		else		   { parent_end=a; child_io_handles[i]=b; }		success = (io_fds[i] = _open_osfhandle((long)parent_end,0)) >= 0;	    }	}    }    /****** make handles inheritable */    for (i=0; i<3 && success; ++i)	success = SetHandleInformation(child_io_handles[i], HANDLE_FLAG_INHERIT, -1);#if 0 /* Requires a sorted list by key! */    /****** create environment block if necessary ****/    if (env && success)    {	char** p;	int len = 0;	for (p = env; *p; ++p) len += strlen(*p) + 1;	if (envblk = C_malloc(len + 1))	{	    char* pb = (char*)envblk;	    for (p = env; *p; ++p)	    {		strcpy(pb, *p);		pb += strlen(*p) + 1;	    }	    *pb = '\0';	}	else	    success = FALSE;    }#endif    /****** finally spawn process ****/    if (success)    {	PROCESS_INFORMATION pi;	STARTUPINFO si;	ZeroMemory(&pi,sizeof pi);	ZeroMemory(&si,sizeof si);	si.cb = sizeof si;	si.dwFlags = STARTF_USESTDHANDLES;	si.hStdInput = child_io_handles[0];	si.hStdOutput = child_io_handles[1];	si.hStdError = child_io_handles[2];	/* FIXME passing 'app' param causes failure & possible stack corruption */	success = CreateProcess(	    NULL, (char*)cmdlin, NULL, NULL, TRUE, 0, envblk, NULL, &si, &pi);	if (success)	{	    child_process=pi.hProcess;	    CloseHandle(pi.hThread);	}	else	    set_last_errno();    }    else	set_last_errno();    /****** cleanup & return *********/    /* parent must close child end */    for (i=0; i<3; ++i) CloseHandle(child_io_handles[i]);    if (success)    {	*phandle = (int)child_process;	*pstdin_fd = io_fds[0];	*pstdout_fd = io_fds[1];	*pstderr_fd = io_fds[2];    }    else    {	for (i=0; i<3; ++i) _close(io_fds[i]);    }    return success;}static C_PTABLE_ENTRY *create_ptable(void);C_noret_decl(C_scheduler_toplevel)C_externimport void C_ccall C_scheduler_toplevel(C_word c,C_word d,C_word k) C_noret;C_noret_decl(C_regex_toplevel)C_externimport void C_ccall C_regex_toplevel(C_word c,C_word d,C_word k) C_noret;C_noret_decl(C_extras_toplevel)C_externimport void C_ccall C_extras_toplevel(C_word c,C_word d,C_word k) C_noret;C_noret_decl(C_utils_toplevel)C_externimport void C_ccall C_utils_toplevel(C_word c,C_word d,C_word k) C_noret;C_noret_decl(C_files_toplevel)C_externimport void C_ccall C_files_toplevel(C_word c,C_word d,C_word k) C_noret;static C_TLS C_word lf[399];static double C_possibly_force_alignment;/* from k3978 */static C_word C_fcall stub654(C_word C_buf,C_word C_a0,C_word C_a1,C_word C_a2,C_word C_a3,C_word C_a4,C_word C_a5,C_word C_a6,C_word C_a7) C_regparm;C_regparm static C_word C_fcall stub654(C_word C_buf,C_word C_a0,C_word C_a1,C_word C_a2,C_word C_a3,C_word C_a4,C_word C_a5,C_word C_a6,C_word C_a7){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;char * t0=(char * )C_string_or_null(C_a0);char * t1=(char * )C_string_or_null(C_a1);void * t2=(void * )C_c_pointer_or_null(C_a2);int *t3=(int *)C_c_pointer_or_null(C_a3);int *t4=(int *)C_c_pointer_or_null(C_a4);int *t5=(int *)C_c_pointer_or_null(C_a5);int *t6=(int *)C_c_pointer_or_null(C_a6);int t7=(int )C_unfix(C_a7);C_r=C_mk_bool(C_process(t0,t1,t2,t3,t4,t5,t6,t7));return C_r;}/* from close-handle in k2775 in k1570 in k1566 in k1562 in k1558 in k1554 in k1550 in k1176 in k1173 in k1170 in k1167 in k1164 in k1161 */static C_word C_fcall stub642(C_word C_buf,C_word C_a0) C_regparm;C_regparm static C_word C_fcall stub642(C_word C_buf,C_word C_a0){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int t0=(int )C_truep(C_a0);C_r=C_fix((C_word)close_handle(t0));return C_r;}/* from current-process-id in k2775 in k1570 in k1566 in k1562 in k1558 in k1554 in k1550 in k1176 in k1173 in k1170 in k1167 in k1164 in k1161 */static C_word C_fcall stub630(C_word C_buf) C_regparm;C_regparm static C_word C_fcall stub630(C_word C_buf){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;C_r=C_fix((C_word)C_getpid());return C_r;}/* from k3620 */static C_word C_fcall stub533(C_word C_buf,C_word C_a0,C_word C_a1,C_word C_a2) C_regparm;C_regparm static C_word C_fcall stub533(C_word C_buf,C_word C_a0,C_word C_a1,C_word C_a2){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int t0=(int )C_unfix(C_a0);void * t1=(void * )C_data_pointer_or_null(C_a1);int t2=(int )C_unfix(C_a2);C_set_exec_env(t0,t1,t2);return C_r;}/* from k3614 */static C_word C_fcall stub523(C_word C_buf,C_word C_a0,C_word C_a1,C_word C_a2) C_regparm;C_regparm static C_word C_fcall stub523(C_word C_buf,C_word C_a0,C_word C_a1,C_word C_a2){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int t0=(int )C_unfix(C_a0);void * t1=(void * )C_data_pointer_or_null(C_a1);int t2=(int )C_unfix(C_a2);C_set_exec_arg(t0,t1,t2);return C_r;}/* from ex0 */static C_word C_fcall stub452(C_word C_buf,C_word C_a0) C_regparm;C_regparm static C_word C_fcall stub452(C_word C_buf,C_word C_a0){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int t0=(int )C_unfix(C_a0);_exit(t0);return C_r;}/* from local-timezone-abbreviation in k2775 in k1570 in k1566 in k1562 in k1558 in k1554 in k1550 in k1176 in k1173 in k1170 in k1167 in k1164 in k1161 */#define return(x) C_cblock C_r = (C_mpointer(&C_a,(void*)(x))); goto C_ret; C_cblockendstatic C_word C_fcall stub447(C_word C_buf) C_regparm;C_regparm static C_word C_fcall stub447(C_word C_buf){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;char *z = (daylight ? _tzname[1] : _tzname[0]);return(z);C_ret:#undef returnreturn C_r;}/* from strftime */static C_word C_fcall stub427(C_word C_buf,C_word C_a0,C_word C_a1) C_regparm;C_regparm static C_word C_fcall stub427(C_word C_buf,C_word C_a0,C_word C_a1){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;C_word t0=(C_word )(C_a0);C_word t1=(C_word )(C_a1);C_r=C_mpointer(&C_a,(void*)C_strftime(t0,t1));return C_r;}/* from asctime */static C_word C_fcall stub421(C_word C_buf,C_word C_a0) C_regparm;C_regparm static C_word C_fcall stub421(C_word C_buf,C_word C_a0){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;C_word t0=(C_word )(C_a0);C_r=C_mpointer(&C_a,(void*)C_asctime(t0));return C_r;}/* from ctime */static C_word C_fcall stub412(C_word C_buf,C_word C_a0) C_regparm;C_regparm static C_word C_fcall stub412(C_word C_buf,C_word C_a0){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int t0=(int )C_num_to_int(C_a0);C_r=C_mpointer(&C_a,(void*)C_ctime(t0));return C_r;}/* from get */static C_word C_fcall stub395(C_word C_buf,C_word C_a0) C_regparm;C_regparm static C_word C_fcall stub395(C_word C_buf,C_word C_a0){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int t0=(int )C_unfix(C_a0);C_r=C_mpointer(&C_a,(void*)C_getenventry(t0));return C_r;}/* from strerror */static C_word C_fcall stub3(C_word C_buf,C_word C_a0) C_regparm;C_regparm static C_word C_fcall stub3(C_word C_buf,C_word C_a0){C_word C_r=C_SCHEME_UNDEFINED,*C_a=(C_word*)C_buf;int t0=(int )C_unfix(C_a0);C_r=C_mpointer(&C_a,(void*)strerror(t0));return C_r;}C_noret_decl(C_posix_toplevel)C_externexport void C_ccall C_posix_toplevel(C_word c,C_word t0,C_word t1) C_noret;C_noret_decl(f_1163)static void C_ccall f_1163(C_word c,C_word t0,C_word t1) C_noret;C_noret_decl(f_1166)static void C_ccall f_1166(C_word c,C_word t0,C_word t1) C_noret;C_noret_decl(f_1169)static void C_ccall f_1169(C_word c,C_word t0,C_word t1) C_noret;C_noret_decl(f_1172)static void C_ccall f_1172(C_word c,C_word t0,C_word t1) C_noret;C_noret_decl(f_1175)static void C_ccall f_1175(C_word c,C_word t0,C_word t1) C_noret;C_noret_decl(f_1178)static void C_ccall f_1178(C_word c,C_word t0,C_word t1) C_noret;C_noret_decl(f_1552)static void C_ccall f_1552(C_word c,C_word t0,C_word t1) C_noret;C_noret_decl(f_1556)static void C_ccall f_1556(C_word c,C_word t0,C_word t1) C_noret;C_noret_decl(f_1560)static void C_ccall f_1560(C_word c,C_word t0,C_word t1) C_noret;C_noret_decl(f_1564)static void C_ccall f_1564(C_word c,C_word t0,C_word t1) C_noret;C_noret_decl(f_1568)static void C_ccall f_1568(C_word c,C_word t0,C_word t1) C_noret;C_noret_decl(f_1572)static void C_ccall f_1572(C_word c,C_word t0,C_word t1) C_noret;C_noret_decl(f_2777)static void C_ccall f_2777(C_word c,C_word t0,C_word t1) C_noret;C_noret_decl(f_4935)static void C_ccall f_4935(C_word c,C_word t0,C_word t1,C_word t2) C_noret;C_noret_decl(f_4932)static void C_ccall f_4932(C_word c,C_word t0,C_word t1,C_word t2) C_noret;C_noret_decl(f_4925)static void C_ccall f_4925(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4919)static void C_ccall f_4919(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4913)static void C_ccall f_4913(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4907)static void C_ccall f_4907(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4901)static void C_ccall f_4901(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4895)static void C_ccall f_4895(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4889)static void C_ccall f_4889(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4883)static void C_ccall f_4883(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4877)static void C_ccall f_4877(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4871)static void C_ccall f_4871(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4865)static void C_ccall f_4865(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4859)static void C_ccall f_4859(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4853)static void C_ccall f_4853(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4847)static void C_ccall f_4847(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4841)static void C_ccall f_4841(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4835)static void C_ccall f_4835(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4829)static void C_ccall f_4829(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4823)static void C_ccall f_4823(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4817)static void C_ccall f_4817(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4811)static void C_ccall f_4811(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4805)static void C_ccall f_4805(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4799)static void C_ccall f_4799(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4793)static void C_ccall f_4793(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4787)static void C_ccall f_4787(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4781)static void C_ccall f_4781(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4775)static void C_ccall f_4775(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4769)static void C_ccall f_4769(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4763)static void C_ccall f_4763(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4757)static void C_ccall f_4757(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4751)static void C_ccall f_4751(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4745)static void C_ccall f_4745(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4739)static void C_ccall f_4739(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4733)static void C_ccall f_4733(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4727)static void C_ccall f_4727(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4721)static void C_ccall f_4721(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4715)static void C_ccall f_4715(C_word c,C_word t0,C_word t1,...) C_noret;C_noret_decl(f_4709)static void C_ccall f_4709(C_word c,C_word t0,C_word t1,...) C_noret;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -