dereferencing registers to access stack variables
deref register to access stack variable for `directory_exists/1` deref register to access stack variable for `directory_files/2` deref register to access stack variable for `delete_directory/1` deref register to access stack variable for `delete_file/1` deref registers to access stack variable for `file_copy/2` deref register to access stack variable for `file_exists/1` deref register to access stack variable for `file_size/2` deref register to access stack variable from `file_time` function deref register to access stack variable for `make_directory/1` deref register to access stack variable for `make_directory_path/1` deref register to access stack variable for `path_canonical/2` deref registers to access stack variables for `rename_file/2` Signed-off-by: Thierry Marianne <thierry@marianne.io>
This commit is contained in:
@@ -1988,7 +1988,7 @@ impl Machine {
|
|||||||
pub(crate) fn directory_files(&mut self) -> CallResult {
|
pub(crate) fn directory_files(&mut self) -> CallResult {
|
||||||
if let Some(dir) = self
|
if let Some(dir) = self
|
||||||
.machine_st
|
.machine_st
|
||||||
.value_to_str_like(self.machine_st.registers[1])
|
.value_to_str_like(self.deref_register(1))
|
||||||
{
|
{
|
||||||
let str = dir.as_str();
|
let str = dir.as_str();
|
||||||
let path = std::path::Path::new(&*str);
|
let path = std::path::Path::new(&*str);
|
||||||
@@ -2041,7 +2041,7 @@ impl Machine {
|
|||||||
pub(crate) fn file_size(&mut self) {
|
pub(crate) fn file_size(&mut self) {
|
||||||
if let Some(file) = self
|
if let Some(file) = self
|
||||||
.machine_st
|
.machine_st
|
||||||
.value_to_str_like(self.machine_st.registers[1])
|
.value_to_str_like(self.deref_register(1))
|
||||||
{
|
{
|
||||||
let len = Number::arena_from(
|
let len = Number::arena_from(
|
||||||
fs::metadata(&*file.as_str()).unwrap().len(),
|
fs::metadata(&*file.as_str()).unwrap().len(),
|
||||||
@@ -2066,7 +2066,7 @@ impl Machine {
|
|||||||
pub(crate) fn file_exists(&mut self) {
|
pub(crate) fn file_exists(&mut self) {
|
||||||
if let Some(file) = self
|
if let Some(file) = self
|
||||||
.machine_st
|
.machine_st
|
||||||
.value_to_str_like(self.machine_st.registers[1])
|
.value_to_str_like(self.deref_register(1))
|
||||||
{
|
{
|
||||||
let file_str = file.as_str();
|
let file_str = file.as_str();
|
||||||
|
|
||||||
@@ -2084,7 +2084,7 @@ impl Machine {
|
|||||||
pub(crate) fn directory_exists(&mut self) {
|
pub(crate) fn directory_exists(&mut self) {
|
||||||
if let Some(dir) = self
|
if let Some(dir) = self
|
||||||
.machine_st
|
.machine_st
|
||||||
.value_to_str_like(self.machine_st.registers[1])
|
.value_to_str_like(self.deref_register(1))
|
||||||
{
|
{
|
||||||
let dir_str = dir.as_str();
|
let dir_str = dir.as_str();
|
||||||
|
|
||||||
@@ -2102,7 +2102,7 @@ impl Machine {
|
|||||||
pub(crate) fn file_time(&mut self) {
|
pub(crate) fn file_time(&mut self) {
|
||||||
if let Some(file) = self
|
if let Some(file) = self
|
||||||
.machine_st
|
.machine_st
|
||||||
.value_to_str_like(self.machine_st.registers[1])
|
.value_to_str_like(self.deref_register(1))
|
||||||
{
|
{
|
||||||
let which = cell_as_atom!(self.deref_register(2));
|
let which = cell_as_atom!(self.deref_register(2));
|
||||||
|
|
||||||
@@ -2141,7 +2141,7 @@ impl Machine {
|
|||||||
pub(crate) fn make_directory(&mut self) {
|
pub(crate) fn make_directory(&mut self) {
|
||||||
if let Some(dir) = self
|
if let Some(dir) = self
|
||||||
.machine_st
|
.machine_st
|
||||||
.value_to_str_like(self.machine_st.registers[1])
|
.value_to_str_like(self.deref_register(1))
|
||||||
{
|
{
|
||||||
match fs::create_dir(&*dir.as_str()) {
|
match fs::create_dir(&*dir.as_str()) {
|
||||||
Ok(_) => {}
|
Ok(_) => {}
|
||||||
@@ -2158,7 +2158,7 @@ impl Machine {
|
|||||||
pub(crate) fn make_directory_path(&mut self) {
|
pub(crate) fn make_directory_path(&mut self) {
|
||||||
if let Some(dir) = self
|
if let Some(dir) = self
|
||||||
.machine_st
|
.machine_st
|
||||||
.value_to_str_like(self.machine_st.registers[1])
|
.value_to_str_like(self.deref_register(1))
|
||||||
{
|
{
|
||||||
match fs::create_dir_all(&*dir.as_str()) {
|
match fs::create_dir_all(&*dir.as_str()) {
|
||||||
Ok(_) => {}
|
Ok(_) => {}
|
||||||
@@ -2175,7 +2175,7 @@ impl Machine {
|
|||||||
pub(crate) fn delete_file(&mut self) {
|
pub(crate) fn delete_file(&mut self) {
|
||||||
if let Some(file) = self
|
if let Some(file) = self
|
||||||
.machine_st
|
.machine_st
|
||||||
.value_to_str_like(self.machine_st.registers[1])
|
.value_to_str_like(self.deref_register(1))
|
||||||
{
|
{
|
||||||
match fs::remove_file(&*file.as_str()) {
|
match fs::remove_file(&*file.as_str()) {
|
||||||
Ok(_) => {}
|
Ok(_) => {}
|
||||||
@@ -2190,11 +2190,11 @@ impl Machine {
|
|||||||
pub(crate) fn rename_file(&mut self) {
|
pub(crate) fn rename_file(&mut self) {
|
||||||
if let Some(file) = self
|
if let Some(file) = self
|
||||||
.machine_st
|
.machine_st
|
||||||
.value_to_str_like(self.machine_st.registers[1])
|
.value_to_str_like(self.deref_register(1))
|
||||||
{
|
{
|
||||||
if let Some(renamed) = self
|
if let Some(renamed) = self
|
||||||
.machine_st
|
.machine_st
|
||||||
.value_to_str_like(self.machine_st.registers[2])
|
.value_to_str_like(self.deref_register(2))
|
||||||
{
|
{
|
||||||
if fs::rename(&*file.as_str(), &*renamed.as_str()).is_ok() {
|
if fs::rename(&*file.as_str(), &*renamed.as_str()).is_ok() {
|
||||||
return;
|
return;
|
||||||
@@ -2209,11 +2209,11 @@ impl Machine {
|
|||||||
pub(crate) fn file_copy(&mut self) {
|
pub(crate) fn file_copy(&mut self) {
|
||||||
if let Some(file) = self
|
if let Some(file) = self
|
||||||
.machine_st
|
.machine_st
|
||||||
.value_to_str_like(self.machine_st.registers[1])
|
.value_to_str_like(self.deref_register(1))
|
||||||
{
|
{
|
||||||
if let Some(copied) = self
|
if let Some(copied) = self
|
||||||
.machine_st
|
.machine_st
|
||||||
.value_to_str_like(self.machine_st.registers[2])
|
.value_to_str_like(self.deref_register(2))
|
||||||
{
|
{
|
||||||
if fs::copy(&*file.as_str(), &*copied.as_str()).is_ok() {
|
if fs::copy(&*file.as_str(), &*copied.as_str()).is_ok() {
|
||||||
return;
|
return;
|
||||||
@@ -2228,7 +2228,7 @@ impl Machine {
|
|||||||
pub(crate) fn delete_directory(&mut self) {
|
pub(crate) fn delete_directory(&mut self) {
|
||||||
if let Some(dir) = self
|
if let Some(dir) = self
|
||||||
.machine_st
|
.machine_st
|
||||||
.value_to_str_like(self.machine_st.registers[1])
|
.value_to_str_like(self.deref_register(1))
|
||||||
{
|
{
|
||||||
match fs::remove_dir(&*dir.as_str()) {
|
match fs::remove_dir(&*dir.as_str()) {
|
||||||
Ok(_) => {}
|
Ok(_) => {}
|
||||||
@@ -2285,7 +2285,7 @@ impl Machine {
|
|||||||
pub(crate) fn path_canonical(&mut self) -> CallResult {
|
pub(crate) fn path_canonical(&mut self) -> CallResult {
|
||||||
if let Some(path) = self
|
if let Some(path) = self
|
||||||
.machine_st
|
.machine_st
|
||||||
.value_to_str_like(self.machine_st.registers[1])
|
.value_to_str_like(self.deref_register(1))
|
||||||
{
|
{
|
||||||
if let Ok(canonical) = fs::canonicalize(&*path.as_str()) {
|
if let Ok(canonical) = fs::canonicalize(&*path.as_str()) {
|
||||||
let cs = match canonical.to_str() {
|
let cs = match canonical.to_str() {
|
||||||
|
|||||||
Reference in New Issue
Block a user