void ns_unix_error(int errcode, char *cmdname, value cmdarg) { CAMLparam0(); CAMLlocal4(res,name,err,arg); name = err = arg = Val_unit; Begin_roots3 (name, err, arg); arg = cmdarg == Nothing ? copy_string("") : cmdarg; name = copy_string(cmdname); err = cst_to_constr(errcode, ns_error_table, sizeof(ns_error_table)/sizeof(int)); if (unix_error_exn == NULL) { unix_error_exn = caml_named_value("Ocamllib.Unix_error"); if (unix_error_exn == NULL) invalid_argument("Exception Ocamllib.Unix_error not initialized, please link Ocamllib.cma"); } res = alloc_small(4, 0); Field(res, 0) = *unix_error_exn; Field(res, 1) = err; Field(res, 2) = name; Field(res, 3) = arg; End_roots(); mlraise(res); CAMLreturn0; }
static void caml_zlib_not_supported(void) { value bucket; if (caml_zlib_error_exn == NULL) { caml_zlib_error_exn = caml_named_value("Cryptokit.Error"); if (caml_zlib_error_exn == NULL) invalid_argument("Exception Cryptokit.Error not initialized"); } bucket = alloc_small(2, 0); Field(bucket, 0) = *caml_zlib_error_exn; Field(bucket, 1) = Val_int(12); /* Compression_not_supported */ mlraise(bucket); }
static void mlresolv_error(int errcode) { value res; value err; err = alloc_small(1, 0); Field(err, 0) = Val_int(errcode); Begin_roots1(err); res = alloc_small(2, 0); Field(res, 0) = *mlresolv_error_exn; Field(res, 1) = err; End_roots(); mlraise(res); }
static void camlzip_bzerror(char * fn, int err) { char * msg; value s1 = Val_unit, s2 = Val_unit, bucket = Val_unit; if (camlzip_bzerror_exn == NULL) { camlzip_bzerror_exn = caml_named_value("Bzlib.Error"); if (camlzip_bzerror_exn == NULL) invalid_argument("Exception Bzlib.Error not initialized"); } Begin_roots3(s1, s2, bucket); s1 = copy_string(fn); switch (err) { case BZ_CONFIG_ERROR: s2 = Val_int(0); break; case BZ_SEQUENCE_ERROR: s2 = Val_int(1); break; case BZ_PARAM_ERROR: s2 = Val_int(2); break; case BZ_MEM_ERROR: s2 = Val_int(3); break; case BZ_DATA_ERROR: s2 = Val_int(4); break; case BZ_DATA_ERROR_MAGIC: s2 = Val_int(5); break; default: s2 = Val_int(6); } bucket = alloc_small(3, 0); Field(bucket, 0) = *camlzip_bzerror_exn; Field(bucket, 1) = s1; Field(bucket, 2) = s2; End_roots(); mlraise(bucket); }
static void camlzip_error(char * fn, value vzs) { char * msg; value s1 = Val_unit, s2 = Val_unit, bucket = Val_unit; msg = ZStream_val(vzs)->msg; if (msg == NULL) msg = ""; if (camlzip_error_exn == NULL) { camlzip_error_exn = caml_named_value("Zlib.Error"); if (camlzip_error_exn == NULL) invalid_argument("Exception Zlib.Error not initialized"); } Begin_roots3(s1, s2, bucket); s1 = copy_string(fn); s2 = copy_string(msg); bucket = alloc_small(3, 0); Field(bucket, 0) = *camlzip_error_exn; Field(bucket, 1) = s1; Field(bucket, 2) = s2; End_roots(); mlraise(bucket); }
void unix_error(int errcode, char *cmdname, value cmdarg) { value res; value name = Val_unit, err = Val_unit, arg = Val_unit; int errconstr; Begin_roots3 (name, err, arg); arg = cmdarg == Nothing ? copy_string("") : cmdarg; name = copy_string(cmdname); err = unix_error_of_code (errcode); if (unix_error_exn == NULL) { unix_error_exn = caml_named_value("Unix.Unix_error"); if (unix_error_exn == NULL) invalid_argument("Exception Unix.Unix_error not initialized, please link unix.cma"); } res = alloc_small(4, 0); Field(res, 0) = *unix_error_exn; Field(res, 1) = err; Field(res, 2) = name; Field(res, 3) = arg; End_roots(); mlraise(res); }
static void caml_zlib_error(char * fn, value vzs) { char * msg; value s1 = Val_unit, s2 = Val_unit, tuple = Val_unit, bucket = Val_unit; msg = ZStream_val(vzs)->msg; if (msg == NULL) msg = ""; if (caml_zlib_error_exn == NULL) { caml_zlib_error_exn = caml_named_value("Cryptokit.Error"); if (caml_zlib_error_exn == NULL) invalid_argument("Exception Cryptokit.Error not initialized"); } Begin_roots4(s1, s2, tuple, bucket); s1 = copy_string(fn); s2 = copy_string(msg); tuple = alloc_small(2, 0); Field(tuple, 0) = s1; Field(tuple, 1) = s2; bucket = alloc_small(2, 0); Field(bucket, 0) = *caml_zlib_error_exn; Field(bucket, 1) = tuple; End_roots(); mlraise(bucket); }