当前位置: 首页>>代码示例>>C++>>正文


C++ caml_sys_error函数代码示例

本文整理汇总了C++中caml_sys_error函数的典型用法代码示例。如果您正苦于以下问题:C++ caml_sys_error函数的具体用法?C++ caml_sys_error怎么用?C++ caml_sys_error使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。


在下文中一共展示了caml_sys_error函数的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。

示例1: caml_sys_getcwd

CAMLprim value caml_sys_getcwd(value unit)
{
  char buff[4096];
#ifdef HAS_GETCWD
  if (getcwd(buff, sizeof(buff)) == 0) caml_sys_error(NO_ARG);
#else
  if (getwd(buff) == 0) caml_sys_error(NO_ARG);
#endif /* HAS_GETCWD */
  return caml_copy_string(buff);
}
开发者ID:jessicah,项目名称:snowflake-jocaml,代码行数:10,代码来源:sys.c

示例2: caml_seek_out

CAMLexport void caml_seek_out(struct channel *channel, file_offset dest)
{
  caml_flush(channel);
  caml_sys_error(NO_ARG);
  caml_leave_blocking_section();
  channel->offset = dest;
}
开发者ID:pgj,项目名称:mirage-platform,代码行数:7,代码来源:io.c

示例3: caml_sys_remove

CAMLprim value caml_sys_remove(value name)
{
  int ret;
  ret = unlink(String_val(name));
  if (ret != 0) caml_sys_error(name);
  return Val_unit;
}
开发者ID:jessicah,项目名称:snowflake-jocaml,代码行数:7,代码来源:sys.c

示例4: caml_sys_is_directory

CAMLprim value caml_sys_is_directory(value name)
{
  CAMLparam1(name);
#ifdef _WIN32
  struct _stati64 st;
#else
  struct stat st;
#endif
  char * p;
  int ret;

  p = caml_strdup(String_val(name));
  caml_enter_blocking_section();
#ifdef _WIN32
  ret = _stati64(p, &st);
#else
  ret = stat(p, &st);
#endif
  caml_leave_blocking_section();
  caml_stat_free(p);

  if (ret == -1) caml_sys_error(name);
#ifdef S_ISDIR
  CAMLreturn(Val_bool(S_ISDIR(st.st_mode)));
#else
  CAMLreturn(Val_bool(st.st_mode & S_IFDIR));
#endif
}
开发者ID:BrianMulhall,项目名称:ocaml,代码行数:28,代码来源:sys.c

示例5: caml_ml_close_channel

CAMLprim value caml_ml_close_channel(value vchannel)
{
  int result;
  int do_syscall;
  int fd;

  /* For output channels, must have flushed before */
  struct channel * channel = Channel(vchannel);
  if (channel->fd != -1){
    fd = channel->fd;
    channel->fd = -1;
    do_syscall = 1;
  }else{
    do_syscall = 0;
    result = 0;
  }
  /* Ensure that every read or write on the channel will cause an
     immediate caml_flush_partial or caml_refill, thus raising a Sys_error
     exception */
  channel->curr = channel->max = channel->end;

  if (do_syscall) {
    caml_enter_blocking_section();
    result = close(fd);
    caml_leave_blocking_section();
  }

  if (result == -1) caml_sys_error (NO_ARG);
  return Val_unit;
}
开发者ID:bobzhang,项目名称:ocaml,代码行数:30,代码来源:io.c

示例6: caml_sys_io_error

CAMLexport void caml_sys_io_error(value arg)
{
  if (errno == EAGAIN || errno == EWOULDBLOCK) {
    caml_raise_sys_blocked_io();
  } else {
    caml_sys_error(arg);
  }
}
开发者ID:jessicah,项目名称:snowflake-jocaml,代码行数:8,代码来源:sys.c

示例7: caml_ml_set_binary_mode

CAMLprim value caml_ml_set_binary_mode(value vchannel, value mode)
{
#if defined(_WIN32) || defined(__CYGWIN__)
  struct channel * channel = Channel(vchannel);
  if (setmode(channel->fd, Bool_val(mode) ? O_BINARY : O_TEXT) == -1)
    caml_sys_error(NO_ARG);
#endif
  return Val_unit;
}
开发者ID:bobzhang,项目名称:ocaml,代码行数:9,代码来源:io.c

示例8: caml_sys_is_directory

CAMLprim value caml_sys_is_directory(value name)
{
  struct stat st;
  if (stat(String_val(name), &st) == -1) caml_sys_error(name);
#ifdef S_ISDIR
  return Val_bool(S_ISDIR(st.st_mode));
#else
  return Val_bool(st.st_mode & S_IFDIR);
#endif
}
开发者ID:jessicah,项目名称:snowflake-jocaml,代码行数:10,代码来源:sys.c

示例9: caml_channel_size

CAMLexport file_offset caml_channel_size(struct channel *channel)
{
  file_offset end;

  end = lseek(channel->fd, 0, SEEK_END);
  if (end == -1 ||
      lseek(channel->fd, channel->offset, SEEK_SET) != channel->offset) {
    caml_sys_error(NO_ARG);
  }
  return end;
}
开发者ID:joechenq,项目名称:multi-script,代码行数:11,代码来源:ocaml_io.c

示例10: caml_seek_in

CAMLexport void caml_seek_in(struct channel *channel, file_offset dest)
{
  if (dest >= channel->offset - (channel->max - channel->buff) &&
      dest <= channel->offset) {
    channel->curr = channel->max - (channel->offset - dest);
  } else {
    if (lseek(channel->fd, dest, SEEK_SET) != dest) caml_sys_error(NO_ARG);
    channel->offset = dest;
    channel->curr = channel->max = channel->buff;
  }
}
开发者ID:joechenq,项目名称:multi-script,代码行数:11,代码来源:ocaml_io.c

示例11: caml_seek_out

CAMLexport void caml_seek_out(struct channel *channel, file_offset dest)
{
  caml_flush(channel);
  caml_enter_blocking_section();
  if (lseek(channel->fd, dest, SEEK_SET) != dest) {
    caml_leave_blocking_section();
    caml_sys_error(NO_ARG);
  }
  caml_leave_blocking_section();
  channel->offset = dest;
}
开发者ID:bobzhang,项目名称:ocaml,代码行数:11,代码来源:io.c

示例12: caml_seek_in

CAMLexport void caml_seek_in(struct channel *channel, file_offset dest)
{
  if (dest >= channel->offset - (channel->max - channel->buff) &&
      dest <= channel->offset) {
    channel->curr = channel->max - (channel->offset - dest);
  } else {
    caml_sys_error(NO_ARG);
    caml_leave_blocking_section();
    channel->offset = dest;
    channel->curr = channel->max = channel->buff;
  }
}
开发者ID:pgj,项目名称:mirage-platform,代码行数:12,代码来源:io.c

示例13: caml_sys_chdir

CAMLprim value caml_sys_chdir(value dirname)
{
  CAMLparam1(dirname);
  char * p;
  int ret;
  p = caml_strdup(String_val(dirname));
  caml_enter_blocking_section();
  ret = chdir(p);
  caml_leave_blocking_section();
  caml_stat_free(p);
  if (ret != 0) caml_sys_error(dirname);
  CAMLreturn(Val_unit);
}
开发者ID:BrianMulhall,项目名称:ocaml,代码行数:13,代码来源:sys.c

示例14: caml_sys_remove

CAMLprim value caml_sys_remove(value name)
{
  CAMLparam1(name);
  char * p;
  int ret;
  p = caml_strdup(String_val(name));
  caml_enter_blocking_section();
  ret = unlink(p);
  caml_leave_blocking_section();
  caml_stat_free(p);
  if (ret != 0) caml_sys_error(name);
  CAMLreturn(Val_unit);
}
开发者ID:BrianMulhall,项目名称:ocaml,代码行数:13,代码来源:sys.c

示例15: caml_sys_rename

CAMLprim value caml_sys_rename(value oldname, value newname)
{
  char * p_old;
  char * p_new;
  int ret;
  p_old = caml_strdup(String_val(oldname));
  p_new = caml_strdup(String_val(newname));
  caml_enter_blocking_section();
  ret = rename(p_old, p_new);
  caml_leave_blocking_section();
  caml_stat_free(p_new);
  caml_stat_free(p_old);
  if (ret != 0)
    caml_sys_error(NO_ARG);
  return Val_unit;
}
开发者ID:BrianMulhall,项目名称:ocaml,代码行数:16,代码来源:sys.c


注:本文中的caml_sys_error函数示例由纯净天空整理自Github/MSDocs等开源代码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。