You are looking at historical revision 31259 of this page. It may differ significantly from its current revision.

install

Description

A Scheme implementation of the Unix utility install.

Documentation

[procedure] (install-file FILES TARGET #!key OWNER GROUP (MODE 755) PRESERVE-TIME)

File(s) are copied to the target file or directory. If the destination is a directory, then the file is copied into the directory with its original filename. If the target file already exists, it is overwritten if permissions allow. install attempts to prevent installing a file onto itself. Installing /dev/null (nul on Windows) creates an empty file. mode must be expressed in octal notation; mode, owner and group are ignored on Windows. The return value is unspecified.

[procedure] (install-dir DIRECTORIES #!key OWNER GROUP (MODE 755))

Create all components of the given directory(ies). mode must be expressed in octal notation; mode, owner and group are ignored on Windows. The return value is unspecified.

[syntax] (install [-p] [-g GROUP] [-m MODE] [-o OWNER] SRC DST)
[syntax] (install [-p] [-g GROUP] [-m MODE] [-o OWNER] SRC ... DIR)
[syntax] (install [-g GROUP] [-m MODE] [-o OWNER] -d DIR ...)

Handy command-line-like syntax around install-file and install-directory.

[procedure] (file=? FILE1 FILE2)

Determine whether two paths represents the same file.

Examples

(use install)

(install -?)
(install -d "/tmp/tests")
(install -d "C:\\tmp\\tests")
(install -d "C:/tmp/tests")
(install -d "/tmp/tests/a" "/tmp/tests/b")
(install -d -m 644 "/tmp/tests")

(install -m 644 "file1" "/tmp/tests")
(install -m 644 "file1" "file2")
(install -m 644 "file1" "file2" "/tmp/tests")
(install -o "mikele" -m 644 "file1" "/tmp/tests")
(install -m 644 -p "file1" "/tmp/tests")
(install "/dev/null" "/usr/bin/empty")
(install "nul" "C:/bin/empty")

(install-file "file1" "/tmp/tests")
(install-file '("file1") "/tmp/tests")
(install-file '("file1" "file2") "/tmp/tests")
(install-file (glob "file*") "/tmp/tests")
(install-file "file1" "/tmp/tests" mode: 644)

(install-directory "/tmp/tests")
(install-directory '("/tmp/tests"))
(install-directory '("/tmp/tests/a" "/tmp/tests/b"))
(install-directory "/tmp/tests" group: 0 owner: "mikele")

(begin (create-symbolic-link "vi" "emacs")
       (file=? "emacs" "vi"))                                ;; #t
(begin (change-directory "C:\\Windows")
       (file=? "C:\\Windows\\notepad.exe" "notepad.exe"))    ;; #t

Requirements

None.

About this egg

The source code is hosted at Bitbucket. Feel free to send pull requests or open an issue there. Alternatively, send an e-mail to the chicken-users mailing list for information or requests.

Version History

1.0.1
Initial release

Author

Michele La Monaca