
    <<CommandUtil.Mesa>>
        <<Copyright © 1985 by Xerox Corporation.  All rights reserved.>>
        <<Satterthwaite, December 10, 1982 10:32 am>>
        <<Russ Atkinson, 19-Dec-80 13:22:44>>
        <<Maxwell, August 19, 1983 8:39 am>>
        <<Paul Rovner, October 4, 1983 4:59 pm>>
        <<Russ Atkinson (RRA) March 6, 1985 10:03:29 pm PST>>
    <<>>
    DIRECTORY
        IO USING [STREAM],
        Rope USING [ROPE];

    CommandUtil: DEFINITIONS = {OPEN Rope;

        PairList: TYPE = LIST OF RECORD[key, val: ROPE];
        Switches: TYPE = PACKED ARRAY CHAR ['a..'z] OF BOOL;

        Echo: PROC [
            d: IO.STREAM,
            operator: ROPE,
            argList, resultList: PairList,
            switches: ROPE];
        GetSwitches: PROC [switches: ROPE, default: Switches] RETURNS[Switches];
        GetNthPair: PROC [list: PairList, n: CARDINAL, delete: BOOL_FALSE]
            RETURNS [key,value: ROPE];
        GetNth: PROC [list: PairList, n: CARDINAL, delete: BOOL_FALSE]
            RETURNS [ROPE] = INLINE {
            RETURN [GetNthPair[list, n, delete].value]};
        KeyValue: PROC [key: ROPE, list: PairList, delete: BOOL_FALSE]
            RETURNS [ROPE];
        ListLength: PROC [list: PairList] RETURNS [CARDINAL];
        Parse: PROC [s: IO.STREAM]
            RETURNS [operator: ROPE, argList, resultList: PairList, switches: ROPE];
        SetExtension: PROC [root, defaultExt: ROPE] RETURNS [name: ROPE];
        GetRootName: PROC[name: ROPE] RETURNS [root: ROPE];
        SkipNonBlank: PROC [s: IO.STREAM, n: CARDINAL_1];

        Failed: ERROR;

        }.

