# File src/library/utils/R/filetest.R # Part of the R package, http://www.R-project.org # # Copyright (C) 1995-2012 The R Core Team # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # A copy of the GNU General Public License is available at # http://www.r-project.org/Licenses/ ### ** file_test file_test <- function(op, x, y) { ## Provide shell-style '-f', '-d', '-x', '-nt' and '-ot' tests. ## Note that file.exists() only tests existence ('test -e' on some ## systems), and that our '-f' tests for existence and not being a ## directory (the GNU variant tests for being a regular file). ## Note: vectorized in x and y. switch(op, "-f" = !is.na(isdir <- file.info(x)$isdir) & !isdir, "-d" = !is.na(isdir <- file.info(x)$isdir) & isdir, "-nt" = (!is.na(mt.x <- file.info(x)$mtime) & !is.na(mt.y <- file.info(y)$mtime) & (mt.x > mt.y)), "-ot" = (!is.na(mt.x <- file.info(x)$mtime) & !is.na(mt.y <- file.info(y)$mtime) & (mt.x < mt.y)), "-x" = (file.access(x, 1L) == 0L), stop(gettextf("test '%s' is not available", op), domain = NA)) }