From 89634e50c459f7e7233b0b79da4dea181d138266 Mon Sep 17 00:00:00 2001 From: Marco Thomas Date: Fri, 4 Jul 2025 15:05:18 +0900 Subject: [PATCH] fix(interpreter): load prog name as argv[0] --- src/interpreter/computer.rs | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/src/interpreter/computer.rs b/src/interpreter/computer.rs index e1d9c6a..c799e10 100644 --- a/src/interpreter/computer.rs +++ b/src/interpreter/computer.rs @@ -1,5 +1,6 @@ use clap::Parser; use core::fmt; +use std::path::Path; use crate::{ Args, @@ -50,9 +51,12 @@ impl Computer { } fn init_stack(&mut self) -> Result<(), InterpreterError> { - let args = Args::parse(); - let argv = args.argv; - let argc = argv.len() + 1; + let mut args = Args::parse(); + let path = &args.path.unwrap(); + let filename = Path::new(path).file_name().unwrap().to_str().unwrap(); + let mut argv = Vec::from([filename.to_string()]); + argv.append(&mut args.argv); + let argc = argv.len(); let mut argv_ptrs = Vec::new(); let envs = Vec::from(["PATH=/usr:/usr/bin".to_string()]);