blob: b768143c6240080716c990cc318e5001053578d9 [file] [log] [blame]
% File src/library/base/man/octmode.Rd
% Part of the R package, https://www.R-project.org
% Copyright 1995-2011 R Core Team
% Distributed under GPL 2 or later
\name{octmode}
\alias{as.octmode}
\alias{format.octmode}
\alias{print.octmode}
\alias{as.character.octmode}
\alias{[.octmode}
\alias{!.octmode}
\alias{|.octmode}
\alias{&.octmode}
%% FIXME: xor() is not generic (yet?).
%% \alias{xor.octmode}
\alias{octmode}
\title{Display Numbers in Octal}
\description{
Convert or print integers in octal format, with as many digits as are
needed to display the largest, using leading zeroes as necessary.
}
\usage{
as.octmode(x)
\method{as.character}{octmode}(x, \dots)
\method{format}{octmode}(x, width = NULL, \dots)
\method{print}{octmode}(x, \dots)
}
\arguments{
\item{x}{An object, for the methods inheriting from class \code{"octmode"}.}
\item{width}{\code{NULL} or a positive integer specifying the minimum
field width to be used, with padding by leading zeroes.}
\item{\dots}{further arguments passed to or from other methods.}
}
\details{
Class \code{"octmode"} consists of integer vectors with that class
attribute, used merely to ensure that they are printed in octal
notation, specifically for Unix-like file permissions such as
\code{755}. Subsetting (\code{\link{[}}) works too.
If \code{width = NULL} (the default), the output is padded with
leading zeroes to the smallest width needed for all the non-missing
elements.
\code{as.octmode} can convert integers (of \link{type} \code{"integer"} or
\code{"double"}) and character vectors whose elements contain only
digits \code{0-7} (or are \code{NA}) to class \code{"octmode"}.
There is a \code{\link{!}} method and methods for \code{\link{|}} and
\code{\link{&}}:
%% FIXME: xor() is not generic (yet?).
%% and \code{\link{xor}}:
these recycle their arguments to the length of the longer and then
apply the operators bitwise to each element.
}
\seealso{
These are auxiliary functions for \code{\link{file.info}}.
\code{\link{hexmode}}, \code{\link{sprintf}} for other options in
converting integers to octal, \code{\link{strtoi}} to convert octal
strings to integers.
}
\examples{
(on <- as.octmode(c(16, 32, 127:129))) # "020" "040" "177" "200" "201"
unclass(on[3:4]) # subsetting
## manipulate file modes
fmode <- as.octmode("170")
(fmode | "644") & "755"
\donttest{
umask <- Sys.umask(NA) # depends on platform
c(fmode, "666", "755") & !umask
}}
\keyword{utilities}
\keyword{print}