Assorted Nanopaint-related Fixes (#96293)

This commit is contained in:
Y0SH1M4S73R
2026-06-01 22:17:58 -04:00
committed by GitHub
parent 65dbc1accf
commit 33785492f6
5 changed files with 29 additions and 10 deletions
@@ -126,8 +126,8 @@
if("PRG_savelog")
if(!channel)
return
var/logname = stripped_input(params["log_name"])
if(!logname)
var/logname = trim(params["log_name"], MAX_MESSAGE_LEN)
if(!length(logname) || !filter_filename_pda(logname))
return
var/datum/computer_file/data/text/logfile = new()
// Now we will generate HTML-compliant file that can actually be viewed/printed.
@@ -119,8 +119,8 @@ GLOBAL_LIST_INIT(print_types, init_print_types())
var/datum/computer_file/file = computer.find_file_by_name(params["name"])
if(!file)
return
var/newname = reject_bad_name(params["new_name"], allow_numbers = TRUE, cap_after_symbols = FALSE, cap_at_start = FALSE)
if(!newname || newname != params["new_name"])
var/newname = trim(params["new_name"], MAX_MESSAGE_LEN)
if(!length(newname) || !filter_filename_pda(newname))
playsound(computer, 'sound/machines/terminal/terminal_error.ogg', 25, FALSE)
return
file.filename = newname
@@ -131,8 +131,8 @@ GLOBAL_LIST_INIT(print_types, init_print_types())
var/datum/computer_file/file = computer.find_file_by_name(params["name"], computer.inserted_disk)
if(!file)
return
var/newname = reject_bad_name(params["new_name"], allow_numbers = TRUE, cap_after_symbols = FALSE, cap_at_start = FALSE)
if(!newname || newname != params["new_name"])
var/newname = trim(params["new_name"], MAX_MESSAGE_LEN)
if(!length(newname) || !filter_filename_pda(newname))
playsound(computer, 'sound/machines/terminal/terminal_error.ogg', 25, FALSE)
return
file.filename = newname
@@ -175,11 +175,14 @@ GLOBAL_LIST_INIT(nanopaint_supported_filetypes, zebra_typecacheof(list(\
return
dialog = null
var/uid = params["uid"]
var/new_file_name = params["name"]
var/new_file_name = trim(params["name"], MAX_MESSAGE_LEN)
var/saving_to_disk = params["onDisk"]
var/datum/computer_file/new_file_type = text2path(params["typepath"])
var/extension = new_file_type::filetype
var/datum/computer_file/existing_file
if(!length(new_file_name))
dialog = list("type" = "error", "message" = "No name specified.")
return TRUE
if(saving_to_disk)
if(!computer.inserted_disk)
dialog = list("type" = "error", "message" = "[new_file_name] - The disk has been removed.")
@@ -208,6 +211,12 @@ GLOBAL_LIST_INIT(nanopaint_supported_filetypes, zebra_typecacheof(list(\
else
INVOKE_ASYNC(src, PROC_REF(write_to_file), user, existing_file)
return TRUE
if(is_ic_filtered_for_pdas(new_file_name) || is_soft_ic_filtered_for_pdas(new_file_name))
dialog = list("type" = "error", "message" = "The entered file name violates company policy.")
return TRUE
if(!filter_illegal_filename_chars(new_file_name))
dialog = list("type" = "error", "message" = "[new_file_name] - File names cannot include the following characters. \n \\ / : * ? \" < > |")
return TRUE
INVOKE_ASYNC(src, PROC_REF(save_file), user, new_file_name, new_file_type, saving_to_disk && computer.inserted_disk)
return TRUE
@@ -283,7 +292,7 @@ GLOBAL_LIST_INIT(nanopaint_supported_filetypes, zebra_typecacheof(list(\
/datum/computer_file/program/nanopaint/proc/save_file(mob/user, name, file_type, obj/item/disk/computer/target_disk)
var/datum/computer_file/file = new file_type()
file.filename = reject_bad_name(name, allow_numbers = TRUE, cap_after_symbols = FALSE, cap_at_start = FALSE)
file.filename = name
var/file_stored
if(target_disk)
file_stored = target_disk.add_file(file)