本文整理汇总了C++中caml_sys_error函数的典型用法代码示例。如果您正苦于以下问题:C++ caml_sys_error函数的具体用法?C++ caml_sys_error怎么用?C++ caml_sys_error使用的例子?那么恭喜您, 这里精选的函数代码示例或许可以为您提供帮助。
在下文中一共展示了caml_sys_error函数的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的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
示例16: caml_sys_read_directory
CAMLprim value caml_sys_read_directory(value path)
{
CAMLparam1(path);
CAMLlocal1(result);
struct ext_table tbl;
caml_ext_table_init(&tbl, 50);
if (caml_read_directory(String_val(path), &tbl) == -1){
caml_ext_table_free(&tbl, 1);
caml_sys_error(path);
}
caml_ext_table_add(&tbl, NULL);
result = caml_copy_string_array((char const **) tbl.contents);
caml_ext_table_free(&tbl, 1);
CAMLreturn(result);
}
开发者ID:jessicah,项目名称:snowflake-jocaml,代码行数:16,代码来源:sys.c
示例17: caml_channel_size
CAMLexport file_offset caml_channel_size(struct channel *channel)
{
file_offset offset;
file_offset end;
int fd;
/* We extract data from [channel] before dropping the OCaml lock, in case
someone else touches the block. */
fd = channel->fd;
offset = channel->offset;
caml_enter_blocking_section();
end = 0;
caml_sys_error(NO_ARG);
caml_leave_blocking_section();
return end;
}
开发者ID:pgj,项目名称:mirage-platform,代码行数:16,代码来源:io.c
示例18: caml_install_signal_handler
CAMLprim value caml_install_signal_handler(value signal_number, value action)
{
CAMLparam2 (signal_number, action);
CAMLlocal1 (res);
int sig, act, oldact;
sig = caml_convert_signal_number(Int_val(signal_number));
if (sig < 0 || sig >= NSIG)
caml_invalid_argument("Sys.signal: unavailable signal");
switch(action) {
case Val_int(0): /* Signal_default */
act = 0;
break;
case Val_int(1): /* Signal_ignore */
act = 1;
break;
default: /* Signal_handle */
act = 2;
break;
}
oldact = caml_set_signal_action(sig, act);
switch (oldact) {
case 0: /* was Signal_default */
res = Val_int(0);
break;
case 1: /* was Signal_ignore */
res = Val_int(1);
break;
case 2: /* was Signal_handle */
res = caml_alloc_small (1, 0);
Field(res, 0) = Field(caml_signal_handlers, sig);
break;
default: /* error in caml_set_signal_action */
caml_sys_error(NO_ARG);
}
if (Is_block(action)) {
if (caml_signal_handlers == 0) {
caml_signal_handlers = caml_alloc(NSIG, 0);
caml_register_global_root(&caml_signal_handlers);
}
caml_modify(&Field(caml_signal_handlers, sig), Field(action, 0));
}
caml_process_pending_signals();
CAMLreturn (res);
}
开发者ID:mzp,项目名称:coq-for-ipad,代码行数:45,代码来源:signals.c
示例19: caml_sys_system_command
CAMLprim value caml_sys_system_command(value command)
{
CAMLparam1 (command);
int status, retcode;
char *buf;
buf = caml_strdup(String_val(command));
caml_enter_blocking_section ();
status = system(buf);
caml_leave_blocking_section ();
caml_stat_free(buf);
if (status == -1) caml_sys_error(command);
if (WIFEXITED(status))
retcode = WEXITSTATUS(status);
else
retcode = 255;
CAMLreturn (Val_int(retcode));
}
开发者ID:BrianMulhall,项目名称:ocaml,代码行数:18,代码来源:sys.c
示例20: caml_channel_size
CAMLexport file_offset caml_channel_size(struct channel *channel)
{
file_offset offset;
file_offset end;
int fd;
/* We extract data from [channel] before dropping the Caml lock, in case
someone else touches the block. */
fd = channel->fd;
offset = channel->offset;
caml_enter_blocking_section();
end = lseek(fd, 0, SEEK_END);
if (end == -1 || lseek(fd, offset, SEEK_SET) != offset) {
caml_leave_blocking_section();
caml_sys_error(NO_ARG);
}
caml_leave_blocking_section();
return end;
}
开发者ID:OCamlPro,项目名称:OCamlPro-OCaml-Branch,代码行数:19,代码来源:io.c
注:本文中的caml_sys_error函数示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论