diff --git a/src/Terminal/commands/cat.ts b/src/Terminal/commands/cat.ts index a0234e44b..22453571e 100644 --- a/src/Terminal/commands/cat.ts +++ b/src/Terminal/commands/cat.ts @@ -16,7 +16,8 @@ export function cat( terminal.error("Incorrect usage of cat command. Usage: cat [file]"); return; } - const filename = terminal.getFilepath(args[0] + ""); + const relative_filename = args[0] + ""; + const filename = terminal.getFilepath(relative_filename); if (!filename.endsWith(".msg") && !filename.endsWith(".lit") && !filename.endsWith(".txt")) { terminal.error( "Only .msg, .txt, and .lit files are viewable with cat (filename must end with .msg, .txt, or .lit)", @@ -39,7 +40,7 @@ export function cat( } } } else if (filename.endsWith(".txt")) { - const txt = terminal.getTextFile(player, filename); + const txt = terminal.getTextFile(player, relative_filename); if (txt != null) { txt.show(); return; diff --git a/src/TextFile.ts b/src/TextFile.ts index 42ae4e500..cf77058c3 100644 --- a/src/TextFile.ts +++ b/src/TextFile.ts @@ -1,6 +1,7 @@ import { dialogBoxCreate } from "./ui/React/DialogBox"; import { BaseServer } from "./Server/BaseServer"; import { Generic_fromJSON, Generic_toJSON, Reviver } from "./utils/JSONReviver"; +import { removeLeadingSlash, isInRootDirectory } from "./Terminal/DirectoryHelpers" /** * Represents a plain text file that is typically stored on a server. @@ -101,7 +102,11 @@ Reviver.constructors.TextFile = TextFile; */ // eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types export function getTextFile(fn: string, server: BaseServer): TextFile | null { - const filename: string = !fn.endsWith(".txt") ? `${fn}.txt` : fn; + let filename: string = !fn.endsWith(".txt") ? `${fn}.txt` : fn; + + if (isInRootDirectory(filename)) { + filename = removeLeadingSlash(filename); + } for (const file of server.textFiles as TextFile[]) { if (file.fn === filename) {