static L websMadeByProgram(S progID) { new L webs; // TODO: clean up file handle in case of error IterableIterator l = scanLog_safeUnstructure_iterator(progID, "webs-made.txt"); S src = progID; for (O o : l) pcall { S structure = (S) getOpt(o, 'structure); if (structure != null) webs.add(web_intern(web_setSourceIfEmpty((Web) unstructure(structure), src))); } ret webs; }