mumuaws/
lib.rs

1// src/lib.rs
2mod 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 all necessary AWS functions with panic-protected bridges
28        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}