Skip to content

Commit 7dac401

Browse files
authored
Fix INI file truncation and duplication (#136)
Addresses #134 Also prevents adding the extension include line twice.
1 parent 1da812c commit 7dac401

File tree

1 file changed

+7
-2
lines changed

1 file changed

+7
-2
lines changed

crates/cli/src/lib.rs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -10,7 +10,7 @@ use dialoguer::{Confirm, Select};
1010

1111
use std::{
1212
fs::OpenOptions,
13-
io::{BufRead, BufReader, Write},
13+
io::{BufRead, BufReader, Seek, SeekFrom, Write},
1414
path::PathBuf,
1515
process::{Command, Stdio},
1616
};
@@ -207,6 +207,8 @@ impl Install {
207207
let line = line.with_context(|| "Failed to read line from `php.ini`")?;
208208
if !line.contains(&ext_line) {
209209
new_lines.push(line);
210+
} else {
211+
bail!("Extension already enabled.");
210212
}
211213
}
212214

@@ -216,6 +218,8 @@ impl Install {
216218
}
217219

218220
new_lines.push(ext_line);
221+
file.seek(SeekFrom::Start(0))?;
222+
file.set_len(0)?;
219223
file.write(new_lines.join("\n").as_bytes())
220224
.with_context(|| "Failed to update `php.ini`")?;
221225
}
@@ -318,7 +322,6 @@ impl Remove {
318322
.read(true)
319323
.write(true)
320324
.create(true)
321-
.truncate(true)
322325
.open(php_ini)
323326
.with_context(|| "Failed to open `php.ini`")?;
324327

@@ -330,6 +333,8 @@ impl Remove {
330333
}
331334
}
332335

336+
file.seek(SeekFrom::Start(0))?;
337+
file.set_len(0)?;
333338
file.write(new_lines.join("\n").as_bytes())
334339
.with_context(|| "Failed to update `php.ini`")?;
335340
}

0 commit comments

Comments
 (0)