📄 posixunix.c
字号:
else { C_strcpy(buf, sx); buf[ n1 ] = '='; C_strcpy(buf + n1 + 1, sy); return(C_fix(putenv(buf))); }}#endifstatic void C_fcall C_set_arg_string(char **where, int i, char *a, int len) { char *ptr; if(a != NULL) { ptr = (char *)C_malloc(len + 1); C_memcpy(ptr, a, len); ptr[ len ] = '\0'; } else ptr = NULL; where[ i ] = ptr;}static void C_fcall C_free_arg_string(char **where) { while((*where) != NULL) C_free(*(where++));}static void C_set_timeval(C_word num, struct timeval *tm){ if((num & C_FIXNUM_BIT) != 0) { tm->tv_sec = C_unfix(num); tm->tv_usec = 0; } else { double i; tm->tv_usec = (int)(modf(C_flonum_magnitude(num), &i) * 1000000); tm->tv_sec = (int)i; }}#define C_set_exec_arg(i, a, len) C_set_arg_string(C_exec_args, i, a, len)#define C_free_exec_args() C_free_arg_string(C_exec_args)#define C_set_exec_env(i, a, len) C_set_arg_string(C_exec_env, i, a, len)#define C_free_exec_env() C_free_arg_string(C_exec_env)#define C_execvp(f) C_fix(execvp(C_data_pointer(f), C_exec_args))#define C_execve(f) C_fix(execve(C_data_pointer(f), C_exec_args, C_exec_env))#if defined(__FreeBSD__) || defined(C_MACOSX) || defined(__NetBSD__) || defined(__OpenBSD__) || defined(__sgi__) || defined(sgi) || defined(__DragonFly__) || defined(__SUNPRO_C)static C_TLS int C_uw;# define C_WIFEXITED(n) (C_uw = C_unfix(n), C_mk_bool(WIFEXITED(C_uw)))# define C_WIFSIGNALED(n) (C_uw = C_unfix(n), C_mk_bool(WIFSIGNALED(C_uw)))# define C_WIFSTOPPED(n) (C_uw = C_unfix(n), C_mk_bool(WIFSTOPPED(C_uw)))# define C_WEXITSTATUS(n) (C_uw = C_unfix(n), C_fix(WEXITSTATUS(C_uw)))# define C_WTERMSIG(n) (C_uw = C_unfix(n), C_fix(WTERMSIG(C_uw)))# define C_WSTOPSIG(n) (C_uw = C_unfix(n), C_fix(WSTOPSIG(C_uw)))#else# define C_WIFEXITED(n) C_mk_bool(WIFEXITED(C_unfix(n)))# define C_WIFSIGNALED(n) C_mk_bool(WIFSIGNALED(C_unfix(n)))# define C_WIFSTOPPED(n) C_mk_bool(WIFSTOPPED(C_unfix(n)))# define C_WEXITSTATUS(n) C_fix(WEXITSTATUS(C_unfix(n)))# define C_WTERMSIG(n) C_fix(WTERMSIG(C_unfix(n)))# define C_WSTOPSIG(n) C_fix(WSTOPSIG(C_unfix(n)))#endif#ifdef __CYGWIN__# define C_mkfifo(fn, m) C_fix(-1);#else# define C_mkfifo(fn, m) C_fix(mkfifo((char *)C_data_pointer(fn), C_unfix(m)))#endif#define C_flock_setup(t, s, n) (C_flock.l_type = C_unfix(t), C_flock.l_start = C_num_to_int(s), C_flock.l_whence = SEEK_SET, C_flock.l_len = C_num_to_int(n), C_SCHEME_UNDEFINED)#define C_flock_test(p) (fcntl(fileno(C_port_file(p)), F_GETLK, &C_flock) >= 0 ? (C_flock.l_type == F_UNLCK ? C_fix(0) : C_fix(C_flock.l_pid)) : C_SCHEME_FALSE)#define C_flock_lock(p) C_fix(fcntl(fileno(C_port_file(p)), F_SETLK, &C_flock))#define C_flock_lockw(p) C_fix(fcntl(fileno(C_port_file(p)), F_SETLKW, &C_flock))#ifndef FILENAME_MAX# define FILENAME_MAX 1024#endifstatic C_TLS sigset_t C_sigset;#define C_sigemptyset(d) (sigemptyset(&C_sigset), C_SCHEME_UNDEFINED)#define C_sigaddset(s) (sigaddset(&C_sigset, C_unfix(s)), C_SCHEME_UNDEFINED)#define C_sigdelset(s) (sigdelset(&C_sigset, C_unfix(s)), C_SCHEME_UNDEFINED)#define C_sigismember(s) C_mk_bool(sigismember(&C_sigset, C_unfix(s)))#define C_sigprocmask_set(d) C_fix(sigprocmask(SIG_SETMASK, &C_sigset, NULL))#define C_sigprocmask_block(d) C_fix(sigprocmask(SIG_BLOCK, &C_sigset, NULL))#define C_sigprocmask_unblock(d) C_fix(sigprocmask(SIG_UNBLOCK, &C_sigset, NULL))#define C_open(fn, fl, m) C_fix(open(C_c_string(fn), C_unfix(fl), C_unfix(m)))#define C_read(fd, b, n) C_fix(read(C_unfix(fd), C_data_pointer(b), C_unfix(n)))#define C_write(fd, b, n) C_fix(write(C_unfix(fd), C_data_pointer(b), C_unfix(n)))#define C_mkstemp(t) C_fix(mkstemp(C_c_string(t)))#define C_ftell(p) C_fix(ftell(C_port_file(p)))#define C_fseek(p, n, w) C_mk_nbool(fseek(C_port_file(p), C_unfix(n), C_unfix(w)))#define C_lseek(fd, o, w) C_fix(lseek(C_unfix(fd), C_unfix(o), C_unfix(w)))#define C_zero_fd_set(i) FD_ZERO(&C_fd_sets[ i ])#define C_set_fd_set(i, fd) FD_SET(fd, &C_fd_sets[ i ])#define C_test_fd_set(i, fd) FD_ISSET(fd, &C_fd_sets[ i ])#define C_C_select(m) C_fix(select(C_unfix(m), &C_fd_sets[ 0 ], &C_fd_sets[ 1 ], NULL, NULL))#define C_C_select_t(m, t) (C_set_timeval(t, &C_timeval), \ C_fix(select(C_unfix(m), &C_fd_sets[ 0 ], &C_fd_sets[ 1 ], NULL, &C_timeval)))#define C_ctime(n) (C_secs = (n), ctime(&C_secs))#if defined(__SVR4)/* Seen here: http://lists.samba.org/archive/samba-technical/2002-November/025571.html */static time_t timegm(struct tm *t){ time_t tl, tb; struct tm *tg; tl = mktime (t); if (tl == -1) { t->tm_hour--; tl = mktime (t); if (tl == -1) return -1; /* can't deal with output from strptime */ tl += 3600; } tg = gmtime (&tl); tg->tm_isdst = 0; tb = mktime (tg); if (tb == -1) { tg->tm_hour--; tb = mktime (tg); if (tb == -1) return -1; /* can't deal with output from gmtime */ tb += 3600; } return (tl - (tb - tl));}#endif#define C_tm_set_08(v) \ (memset(&C_tm, 0, sizeof(struct tm)), \ C_tm.tm_sec = C_unfix(C_block_item(v, 0)), \ C_tm.tm_min = C_unfix(C_block_item(v, 1)), \ C_tm.tm_hour = C_unfix(C_block_item(v, 2)), \ C_tm.tm_mday = C_unfix(C_block_item(v, 3)), \ C_tm.tm_mon = C_unfix(C_block_item(v, 4)), \ C_tm.tm_year = C_unfix(C_block_item(v, 5)), \ C_tm.tm_wday = C_unfix(C_block_item(v, 6)), \ C_tm.tm_yday = C_unfix(C_block_item(v, 7)), \ C_tm.tm_isdst = (C_block_item(v, 8) != C_SCHEME_FALSE))#define C_tm_set_9(v) \ (C_tm.tm_gmtoff = C_unfix(C_block_item(v, 9)))#define C_tm_get_08(v) \ (C_set_block_item(v, 0, C_fix(C_tm.tm_sec)), \ C_set_block_item(v, 1, C_fix(C_tm.tm_min)), \ C_set_block_item(v, 2, C_fix(C_tm.tm_hour)), \ C_set_block_item(v, 3, C_fix(C_tm.tm_mday)), \ C_set_block_item(v, 4, C_fix(C_tm.tm_mon)), \ C_set_block_item(v, 5, C_fix(C_tm.tm_year)), \ C_set_block_item(v, 6, C_fix(C_tm.tm_wday)), \ C_set_block_item(v, 7, C_fix(C_tm.tm_yday)), \ C_set_block_item(v, 8, (C_tm.tm_isdst ? C_SCHEME_TRUE : C_SCHEME_FALSE)))#define C_tm_get_9(v) \ (C_set_block_item(v, 9, C_fix(C_tm.tm_gmtoff)))#if !defined(C_GNU_ENV) || defined(__CYGWIN__) || defined(__uClinux__)static struct tm *C_tm_set (C_word v){ C_tm_set_08 (v); return &C_tm;}static C_wordC_tm_get (C_word v){ C_tm_get_08 (v); return v;}#elsestatic struct tm *C_tm_set (C_word v){ C_tm_set_08 (v); C_tm_set_9 (v); return &C_tm;}static C_wordC_tm_get (C_word v){ C_tm_get_08 (v); C_tm_get_9 (v); return v;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -