parent $misc object $file var $root dbref 'file var $root child_index 1 var $root fertile 0 var $root manager $file var $root owned [$file] var $root owners [$file] var $root writable [] var $root readable ['parameters, 'methods, 'code] var $root inited 1 var $file content_type "" var $file data 0 var $file header 0 var $file filename "Generic File" method init_file (> .perms(caller(), $root) <); data = 0; header = 0; content_type = "text/plain"; . method uninit_file (> .perms(caller(), $root) <); data = 0; header = 0; content_type = "text/plain"; . method set_header arg new_header; var type, valid_types; (> .perms(sender()) <); if (type(new_header) != 'list) throw(~type, "Header must be a list of strings."); header = new_header; . method set_data arg new_data; var type, valid_types; (> .perms(sender()) <); type = type(new_data); valid_types = ['list, 'buffer]; if (!(type in valid_types)) throw(~type, "Data must be one of: " + ($data.unparse(valid_types))); data = new_data; . method header if (!('parameter in (.is_readable_by(sender())))) throw(~perm, ((sender().namef('xref)) + " does not have permission to see parameters on ") + (.namef('xref))); return header; . method content_type return content_type; . method set_content_type arg type; (> .perms(sender()) <); if (type(type) != 'string) throw(~type, "Content-type must be sent as a string."); content_type = type; . method filename arg [args]; if (!args) return filename; else if ((args[1]) == 'full) return ((filename + " (") + (.dbref())) + ")"; . method set_filename arg fname; var x; (> .perms(sender()) <); if (type(fname) != 'string) throw(~type, ("Filename for " + (.namef('xref))) + " must be submitted as a string."); for x in [1 .. strlen(fname)] { if ((fname[x]) in "!@#$%^&*()+-=~`'{}[]|/?\"\\,<>;: ") throw(~type, "Filenames cannot contain any of: !@#$%^&*()+-=~`'{}[]|/?\"\\,<>;: "); } filename = fname; . method find_file arg path; var child, found; if ((!('parameters in (.is_readable_by(sender())))) && (!(sender() in (.parents())))) throw(~perm, ((sender().dbref()) + " does not have permission to see the filesystem from ") + (.filename())); if (type(path) != 'list) path = explode(path, "/"); if (!path) return 0; if ((listlen(path) == 1) && ((path[1]) == (.filename()))) return; for child in (.children()) { found = child.find_file(sublist(path, 2)); if (found) return found; } return 0; . method generate_html arg [args]; var out; out = []; if ('parameters in (.is_readable_by(sender()))) { out = .data(); if (out && (type(out) != 'buffer)) out = ["<hr width=50% align=center>", ("<center><b>Filename: " + (.filename())) + "</b></center><P>", @out]; } return (> pass(@args) <) + (out || []); . method file_data if (!('parameters in (.is_readable_by(sender())))) throw(~perm, ((sender().namef('xref)) + " does not have permission to see parameters on ") + (.namef('xref))); return data; .