// IfsMailAnonAccess.bcpl -- Distribution list retrieval kludge // Copyright Xerox Corporation 1979, 1980, 1981 // Last modified November 14, 1981 10:41 AM by Taft get "IfsFtpProt.decl" get "IfsMail.decl" get "Ifs.decl" get "IfsSystemInfo.decl" external [ // outgoing procedures MtpSAnonymousAccess // incoming procedures FtpSSendMark VFileReadPage; LockCell; UnlockCell Login; CheckLocalRegistry ExpandTemplate; Free // incoming statics infoVMD; mail; CtxRunning; sysZone ] //--------------------------------------------------------------------------- let MtpSAnonymousAccess(remotePL) = valof //--------------------------------------------------------------------------- // Called from FtpSRetrieve when the current server is a Mail server // rather than an FTP server. // If permitted, login as "Mail" and force the server-filename to // include the standard directory for distribution lists and // the extension ".dl". [ // See if "Distribution-lists" mail system parameter specified let nameDirDL = lv VFileReadPage(infoVMD, msPage)>>MS.nameDirDL unless mail>>Mail.enabled & nameDirDL>>String.length ne 0 do resultis FtpSSendMark(markNo, ecAnonRetrieve) // Force login as "Mail" (fails only if no Mail directory exists) let sfil = remotePL>>PL.SFIL let ec = nil CheckLocalRegistry(sfil, lv ec, false) if ec eq 0 then ec = Login("Mail", nil, CtxRunning>>FtpCtx.userInfo, true) if ec ne 0 resultis FtpSSendMark(markNo, ec) // Force filename to have standard directory and extension for i = sfil>>String.length to 1 by -1 do // strip off trailing ".xxx" if sfil>>String.char↑i eq $. then [ sfil>>String.length = i-1; break ] if sfil>>String.char↑(sfil>>String.length) eq $↑ then sfil>>String.length = sfil>>String.length-1 // strip off trailing "↑" nameDirDL = lv VFileReadPage(infoVMD, msPage)>>MS.nameDirDL LockCell(lv nameDirDL) remotePL>>PL.SFIL = ExpandTemplate("<$S>$S.dl", nameDirDL, sfil) UnlockCell(lv nameDirDL) Free(sysZone, sfil) resultis true ]