[Turn off line numbering]1: arg url, interface, orig_url; 2: var dir, lock, page, script_name, meth; 3: 4: script_name = ""; 5: dir = $directories; 6: page = $directories; 7: if (dir.get_lock()) 8: lock = dir; 9: catch ~keynf { 10: while (url && page.has_ancestor($directories)) { 11: page = dir.entry(url[1]); 12: script_name += "/" + url[1]; 13: url = url.subrange(2); 14: if (page.get_lock()) 15: lock = page; 16: if (page.has_ancestor($directories)) 17: dir = page; 18: } 19: } 20: if (page.has_ancestor($directories)) { 21: if (!url && orig_url.last() != "/") { 22: return ['redirect, orig_url + "/"]; 23: } else { 24: if (url) 25: return 'pagenf; 26: page = page.default_page(); 27: if (page.get_lock()) 28: lock = page; 29: } 30: } 31: if (url && (| (meth = tosym(url[1])) |)) { 32: if ((| page.find_method(meth) |)) { 33: interface.set_info('generate, meth); 34: script_name += "/" + url[1]; 35: url = url.subrange(2); 36: } else { 37: interface.set_info('generate, 'generate); 38: } 39: } else { 40: interface.set_info('generate, 'generate); 41: } 42: if (page) { 43: interface.set_info('script_name, script_name); 44: interface.set_info('path_info, "/" + url.join("/")); 45: interface.set_info('directory_object, dir); 46: interface.set_info('lock_object, lock); 47: return page; 48: } else { 49: return 'pagenf; 50: }
// Brad Roberts
// Bruce Mitchener, Jr.
// Created 16-May-1997 as a part of ColdCore, see: @help Credit