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

📄 posixunix.c

📁 Scheme跨平台编译器
💻 C
📖 第 1 页 / 共 5 页
字号:
  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 + -