<PROGRAMLISTING>
Source and Target Specification and Logic
     
     Synopsis:
          Posix:
               host[:path]
               host
               host:
               /path  # Absolute path

          Swbis Extension:
               [user@]host[:path]
               :path

          Swbis Multi-hop Target Extension:
               # '@@' is the target delimiter
               target@@target[@@targetN...]
               [user@]host[@@[user@]host[@@...]][:path] 
               
     A more formal description:

     target : HOST_CHARACTER_STRING ':' PATHNAME_CHARACTER_STRING
            | HOST_CHARACTER_STRING ':'
            | HOST_CHARACTER_STRING 
            | PATHNAME_CHARACTER_STRING 
            | ':' PATHNAME_CHARACTER_STRING   # Impl extension
            ; 

       PATHNAME_CHARACTER_STRING must be an absolute path unless
                       a HOST_CHARACTER_STRING is given.  Allowing
                       a relative path is a feature of the swbis
                       implementation.

                NOTE: A '.' as a target is an implementation
                      extension and means extract in current
                      directory.
 
                NOTE: A '-' indicating stdout/stdin is an 
                      implementation extension.

                NOTE: A ':' in the first character indicates a filename.
                      This is an implementation extension.

       HOST_CHARACTER_STRING is an IP or hostname.

    Examples:
       Copy the  distribution /var/tmp/foo.tar.gz at 192.168.1.10
              swcopy -s /var/tmp/foo.tar.gz @192.168.1.10:/root


Implementation Extension Syntax (multi ssh-hop) :
    Syntax:
    %start   wtarget    # the Implementation Extension Target
    wtarget   : wtarget DELIM sshtarget
              | sshtarget
              ; 
    sshtarget : user '@' target # Note: only the last target
              | target          # may have a PATHNAME
              ;
    target   : HOST_CHARACTER_STRING
             | HOST_CHARACTER_STRING ':' PATHNAME_CHARACTER_STRING
             ;
    user     : PORTABLE_CHARACTER_STRING  # The user name

    DELIM    : '@@'   # The multi-hop delimiter.
             ;  
</PROGRAMLISTING>
