posix_errno_t efile_marshal_path(ErlNifEnv *env, ERL_NIF_TERM path, efile_path_t *result) { if(!enif_inspect_binary(env, path, result)) { return EINVAL; } if(has_invalid_null_termination(result)) { return EINVAL; } return 0; }
posix_errno_t efile_marshal_path(ErlNifEnv *env, ERL_NIF_TERM path, efile_path_t *result) { ErlNifBinary raw_path; if(!enif_inspect_binary(env, path, &raw_path)) { return EINVAL; } else if(raw_path.size % sizeof(WCHAR)) { return EINVAL; } if(has_invalid_null_termination(&raw_path)) { return EINVAL; } return get_full_path(env, (WCHAR*)raw_path.data, result); }