1mod register;
3mod functions;
4
5use std::ffi::c_void;
6use core_mumu::parser::interpreter::Interpreter;
7use register::hello::register_aws_hello;
8use register::bye::register_aws_bye;
9use register::credentials::register_aws_credentials;
10use register::s3_list::register_s3_list;
11use register::s3_upload::register_s3_upload;
12use register::s3_fetch::register_s3_fetch;
13use register::s3_create_bucket::register_s3_create_bucket;
14
15#[no_mangle]
16pub unsafe extern "C" fn Cargo_lock(
17 interp_ptr: *mut c_void,
18 _extra: *const c_void,
19) -> i32 {
20 let result = std::panic::catch_unwind(|| {
21 if interp_ptr.is_null() {
22 eprintln!("[aws-mumu] FATAL: NULL interpreter pointer");
23 return -1;
24 }
25 let interp: &mut Interpreter = &mut *(interp_ptr as *mut Interpreter);
26
27 register_aws_hello(interp);
29 register_aws_bye(interp);
30 register_aws_credentials(interp);
31 register_s3_list(interp);
32 register_s3_upload(interp);
33 register_s3_fetch(interp);
34 register_s3_create_bucket(interp);
35
36 0
37 });
38 match result {
39 Ok(code) => code,
40 Err(e) => {
41 eprintln!("[aws-mumu] FATAL panic in Cargo_lock: {e:?}");
42 if std::env::var("RUST_BACKTRACE").is_ok() {
43 eprintln!("{:?}", std::backtrace::Backtrace::force_capture());
44 }
45 -101
46 }
47 }
48}