Skip to content

Commit be5654b

Browse files
committed
fix: fix private openFile function
Do not resolve symbolic links when `resolveSymlinks` is `false`. Do not create file is `O_CREAT` is not set. Throw `ENOENT` if `O_CREAT` is not set and the file does not exist.
1 parent a5e99fe commit be5654b

File tree

1 file changed

+3
-2
lines changed

1 file changed

+3
-2
lines changed

src/volume.ts

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -904,10 +904,10 @@ export class Volume {
904904

905905
private openFile(filename: string, flagsNum: number, modeNum: number, resolveSymlinks: boolean = true): File {
906906
const steps = filenameToSteps(filename);
907-
let link: Link = this.getResolvedLink(steps);
907+
let link: Link = resolveSymlinks ? this.getResolvedLink(steps) : this.getLink(steps);
908908

909909
// Try creating a new file, if it does not exist.
910-
if(!link) {
910+
if(!link && (flagsNum & O_CREAT)) {
911911
// const dirLink: Link = this.getLinkParent(steps);
912912
const dirLink: Link = this.getResolvedLink(steps.slice(0, steps.length - 1));
913913
// if(!dirLink) throwError(ENOENT, 'open', filename);
@@ -919,6 +919,7 @@ export class Volume {
919919
}
920920

921921
if(link) return this.openLink(link, flagsNum, resolveSymlinks);
922+
throwError(ENOENT, 'open', filename);
922923
}
923924

924925
private openBase(filename: string, flagsNum: number, modeNum: number, resolveSymlinks: boolean = true): number {

0 commit comments

Comments
 (0)