2020-03-09 19:22:15 -04:00
|
|
|
// Copyright 2018-2020 the Deno authors. All rights reserved. MIT license.
|
|
|
|
import { sendSync, sendAsync } from "../dispatch_json.ts";
|
|
|
|
|
|
|
|
export interface OpenOptions {
|
|
|
|
read?: boolean;
|
|
|
|
write?: boolean;
|
|
|
|
append?: boolean;
|
|
|
|
truncate?: boolean;
|
|
|
|
create?: boolean;
|
|
|
|
createNew?: boolean;
|
2020-03-16 15:02:41 -04:00
|
|
|
/** Permissions to use if creating the file (defaults to `0o666`, before
|
|
|
|
* the process's umask).
|
|
|
|
* It's an error to specify mode without also setting create or createNew to `true`.
|
|
|
|
* Ignored on Windows. */
|
|
|
|
mode?: number;
|
2020-03-09 19:22:15 -04:00
|
|
|
}
|
|
|
|
|
|
|
|
export type OpenMode = "r" | "r+" | "w" | "w+" | "a" | "a+" | "x" | "x+";
|
|
|
|
|
|
|
|
export function openSync(
|
|
|
|
path: string,
|
2020-03-16 15:02:41 -04:00
|
|
|
openMode: OpenMode | undefined,
|
2020-03-09 19:22:15 -04:00
|
|
|
options: OpenOptions | undefined
|
|
|
|
): number {
|
2020-03-16 15:02:41 -04:00
|
|
|
const mode: number | undefined = options?.mode;
|
|
|
|
return sendSync("op_open", { path, options, openMode, mode });
|
2020-03-09 19:22:15 -04:00
|
|
|
}
|
|
|
|
|
2020-03-20 09:38:34 -04:00
|
|
|
export function open(
|
2020-03-09 19:22:15 -04:00
|
|
|
path: string,
|
2020-03-16 15:02:41 -04:00
|
|
|
openMode: OpenMode | undefined,
|
2020-03-09 19:22:15 -04:00
|
|
|
options: OpenOptions | undefined
|
|
|
|
): Promise<number> {
|
2020-03-16 15:02:41 -04:00
|
|
|
const mode: number | undefined = options?.mode;
|
2020-03-16 05:22:16 -04:00
|
|
|
return sendAsync("op_open", {
|
2020-03-09 19:22:15 -04:00
|
|
|
path,
|
|
|
|
options,
|
2020-03-16 15:02:41 -04:00
|
|
|
openMode,
|
2020-03-09 19:22:15 -04:00
|
|
|
mode
|
|
|
|
});
|
|
|
|
}
|