File contents (noted below as file transmission) can be sent in
one of two forms. The simpler form is a number of bytes, followed by a
linefeed, followed by the specified number of bytes of file contents.
These are the entire contents of the specified file. Second, if both
client and server support `gzip-file-contents
', a `z
' may
precede the length, and the `file contents' sent are actually compressed
with `gzip
' (RFC1952/1951) compression. The length specified is
that of the compressed version of the file.
In neither case are the file content followed by any additional data. The transmission of a file will end with a linefeed iff that file (or its compressed form) ends with a linefeed.
The encoding of file contents depends on the value for the `-k
'
option. If the file is binary (as specified by the `-kb
' option in
the appropriate place), then it is just a certain number of octets, and
the protocol contributes nothing towards determining the encoding (using
the file name is one widespread, if not universally popular, mechanism).
If the file is text (not binary), then the file is sent as a series of
lines, separated by linefeeds. If the keyword expansion is set to
something other than `-ko
', then it is expected that the file
conform to the RCS expectations regarding keyword expansion---in
particular, that it is in a character set such as ASCII in which 0x24 is
a dollar sign (`$
').