1
2
3.orphanTmpFiles <- function() {
4
5	objects <- ls(envir=globalenv())
6	ftmp <- list()
7	for (i in seq_along(objects)) {
8		x <- get(objects[i], envir=globalenv())
9		if (inherits(x, "SpatRaster")) {
10			ftmp[[i]] <- sources(x)$source
11		}
12	}
13	ftmp <- unique(unlist(ftmp))
14	ftmp <- ftmp[ftmp != ""]
15	pattrn <- "^spat_.*tif$"
16	i <- grep(pattrn, basename(ftmp))
17	ftmp <- ftmp[i]
18	ff <- list.files(tempdir(), pattern=pattrn, full.names=TRUE)
19	i <- !(basename(ff) %in% basename(ftmp))
20	ff[i]
21
22}
23
24
25
26
27tmpFiles <- function(current=TRUE, orphan=FALSE, old=FALSE, remove=FALSE) {
28
29	if (!(old | current | orphan)) {
30		error("tmpFiles", "at least one of 'orphan', 'current' and 'old' must be set to TRUE")
31	}
32
33	opt <- spatOptions()
34	d <- opt$tempdir
35	f <- NULL
36	if (old) {
37		if (normalizePath(tempdir()) != normalizePath(d)) {
38			warn("tmpFiles", "old files can only be found if terra uses the R tempdir")
39		} else {
40			f <- list.files(dirname(d), recursive=TRUE, pattern="^spat_", full.names=TRUE)
41			f <- grep("Rtmp", f, value=TRUE)
42			if ((length(f) > 0) && (!current)) {
43				i <- grep(d, f)
44				if (length(i) > 0) {
45					f <- f[-i]
46				}
47			}
48		}
49	}
50
51	if (current) {
52		ff <- list.files(d, pattern="^spat", full.names=TRUE)
53		f <- c(f, ff)
54	} else if (orphan) {
55		fo <- .orphanTmpFiles()
56		f <- c(f, fo) # for if old=TRUE
57	}
58
59
60	if (remove) {
61		file.remove(f)
62		return(invisible(f))
63	} else {
64		return(f)
65	}
66}
67
68