//checks if a file exists and contains text //returns text as a string if these conditions are met /proc/return_file_text(filename) if(fexists(filename) == 0) error("File not found ([filename])") return var/text = file2text(filename) if(!text) error("File empty ([filename])") return return text //Sends resource files to client cache /client/proc/getFiles() for(var/file in args) src << browse_rsc(file) /client/proc/browse_files(root="data/logs/", max_iterations=10, list/valid_extensions=list(".txt",".log",".htm")) var/path = root for(var/i=0, i 0) to_chat(src, span_red("Error: file_spam_check(): Spam. Please wait [round(time_to_wait/10)] seconds.")) return 1 fileaccess_timer = world.time + FTPDELAY return 0 #undef FTPDELAY /// Returns the md5 of a file at a given path. /proc/md5filepath(path) . = md5(file(path)) /// Save file as an external file then md5 it. /// Used because md5ing files stored in the rsc sometimes gives incorrect md5 results. /proc/md5asfile(file) var/static/notch = 0 // its importaint this code can handle md5filepath sleeping instead of hard blocking, if it's converted to use rust_g. var/filename = "tmp/md5asfile.[world.realtime].[world.timeofday].[world.time].[world.tick_usage].[notch]" notch = WRAP(notch+1, 0, 2**15) fcopy(file, filename) . = md5filepath(filename) fdel(filename)