Monday, November 08, 2010 at 12:05 AM.
system.verbs.builtins.radio.upstream.getUpstreamSpec
on getUpstreamSpec (adrfile, adradrspec) { <<Changes <<10/22/01; 11:13:37 PM by JES <<Change <account> and <email> to <usernum> when reading the file, for backward compatibility. If there's an error, log it to the events log, instead of doing a dialog.alert. <<8/14/01; 1:23:09 PM by JES <<If the spec is an xmlStorageSystem spec, and it has an email element instead of an account element, use email for account in the spec table. <<6/23/01; 11:10:41 AM by DW <<Return the address of an upstream spec table for the file. <<For examples look in system.temp.radio.upstreamSpecCache. <<Return false if we fail. local (f = nameof (adrfile^), fname = file.filefrompath (f), atts); radio.webServer.gatherAttributes (f, @atts); if not defined (atts.upstream) { //no #upstream.xml file in folder or parent folder return (false)}; local (fxml = atts.upstream); adrfile^.baseUpstreamFolder = file.folderFromPath (fxml); local (adrspec); bundle { //set up the spec for the file local (flread = true); adrspec = @system.temp.radio.upstreamSpecCache.[fxml]; if defined (adrspec^) { if file.modified (fxml) < adrspec^.timeLastRead { flread = false}}; if flread { try { local (xmltext = string (file.readwholefile (fxml)), xstruct); xml.compile (xmltext, @xstruct); <<scratchpad.xstruct = xstruct local (adrupstream = xml.getAddress (@xstruct, "upstream")); new (tabletype, adrspec); adrspec^.timeLastRead = clock.now (); adrspec^.type = xml.getAttribute (adrupstream, "type")^; for adrsub in adrupstream { local (name = nameof (adrsub^)); if name beginswith "/" { continue}; name = xml.convertToDisplayName (name); if adrspec^.type == "xmlStorageSystem" { //8/14/01 JES: account, not email if (name == "email") or (name == "account") { name = "usernum"}}; adrspec^.[name] = adrsub^}} <<adrspec^.password = user.radio.prefs.passwords.[adrspec^.passwordname] else { radio.log.add ("Read upstream spec", "Error: " + tryError, clock.ticks ()); return (false)}}}; adradrspec^ = adrspec; return (true)} <<bundle //test code <<local (adrspec) <<getUpstreamSpec (@user.radio.settings.files.["Backup:Radio UserLand:www:system:upstream:sh6:#upstream.xml"], @adrspec) <<edit (adrspec)
This listing is for code that runs in the OPML Editor environment. I created these listings because I wanted the search engines to index it, so that when I want to look up something in my codebase I don't have to use the much slower search functionality in my object database. Dave Winer.