A mode is any number of repetitions of
mode-type = data
separated by ,.
mode-type is an identifier composed of alphanumeric characters. Currently specified: u for user, g for group, o for other (see below for discussion of whether these have their POSIX meaning or are more loose). Unrecognized values of mode-type are silently ignored.
data consists of any data not containing ,, \0 or \n. For u, g, and o mode types, data consists of alphanumeric characters, where r means read, w means write, x means execute, and unrecognized letters are silently ignored.
The two most obvious ways in which the mode matters are: (1) is it writeable? This is used by the developer communication features, and is implemented even on OS/2 (and could be implemented on DOS), whose notion of mode is limited to a readonly bit. (2) is it executable? Unix CVS users need CVS to store this setting (for shell scripts and the like). The current CVS implementation on unix does a little bit more than just maintain these two settings. So all the ins and outs of what the mode means across operating systems haven't really been worked out (e.g. should the VMS port use ACLs to get POSIX semantics for groups?).