// IfsTelnetListAux.bcpl -- Overflow from the List command
// Copyright Xerox Corporation 1979, 1981
// Last modified April 25, 1981 4:29 PM by Taft
get "IfsRs.decl"
get "IfsTelnet.decl"
external
[
// outgoing procedures
CollectListSubcommands; ListHeaders
// incoming procedures
CreateKeywordTable; InsertKeyword; DestroyKeywordTable
TelnetCommandLoop; TelnetSubcommandPrompt
Ws
]
//---------------------------------------------------------------------------
let CollectListSubcommands() = valof
//---------------------------------------------------------------------------
// Collects subcommands for the List command and returns the options word.
[
let kt = CreateKeywordTable(15)
InsertKeyword(kt, "Type")!0 = listType
InsertKeyword(kt, "Length")!0 = listLength
InsertKeyword(kt, "Bytes")!0 = listLength
InsertKeyword(kt, "Size")!0 = listSize
InsertKeyword(kt, "Pages")!0 = listSize
InsertKeyword(kt, "Creation")!0 = listCreation
InsertKeyword(kt, "Write")!0 = listWrite
InsertKeyword(kt, "Read")!0 = listRead
InsertKeyword(kt, "Backup")!0 = listBackup
InsertKeyword(kt, "Times")!0 = listTimes
InsertKeyword(kt, "Author")!0 = listAuthor
InsertKeyword(kt, "Protection")!0 = listProtection
InsertKeyword(kt, "Verbose")!0 =
listType+listSize+listCreation+listRead+listAuthor
InsertKeyword(kt, "Everything")!0 = -1
let options = 0
TelnetCommandLoop(kt, TelnetSubcommandPrompt(), true, lv options,
0, 0, ListSubcommand)
DestroyKeywordTable(kt)
resultis options
]
//---------------------------------------------------------------------------
and ListSubcommand(cs, entry, lvOptions) be @lvOptions = @lvOptions % entry!0
//---------------------------------------------------------------------------
//---------------------------------------------------------------------------
and ListHeaders(options) be
//---------------------------------------------------------------------------
// Prints headers for List command output
[
Ws("*n ")
if (options&listType) ne 0 then Ws(" Type ")
if (options&listLength) ne 0 then Ws(" Bytes")
if (options&listSize) ne 0 then Ws(" Pgs")
let timeSpace = (options&listTimes) ne 0? " ", ""
if (options&listCreation) ne 0 then [ Ws(" Creation"); Ws(timeSpace) ]
if (options&listWrite) ne 0 then [ Ws(" Write "); Ws(timeSpace) ]
if (options&listRead) ne 0 then [ Ws(" Read "); Ws(timeSpace) ]
if (options&listBackup) ne 0 then [ Ws(" Backup "); Ws(timeSpace) ]
if (options&listAuthor) ne 0 then Ws(" Author")
if (options&listProtection) ne 0 then Ws(" Protection")
]