newlib/winsup/cygwin/include/sys/mount.h
Johannes Schindelin fb71716d2c Introduce the 'usertemp' filesystem type
* mount.cc (mount_info::from_fstab_line): Support mounting the current
	user's temp folder as /tmp/.  This is particularly useful a feature
	when Cygwin's own files are write-protected.

	* pathnames.xml: document the new usertemp file system type

Detailed explanation:

In the context of Windows, there is a per-user directory for temporary
files, by default specified via the environment variable %TEMP%. Let's
allow to use that directory for our /tmp/ directory.

With this patch, we introduce the special filesystem type "usertemp":
By specifying

	none /tmp usertemp binary,posix=0 0 0

in /etc/fstab, the /tmp/ directory gets auto-mounted to the directory
specified by the %TEMP% variable.

This feature comes handy in particularly in scenarios where the
administrator might want to write-protect the entire Cygwin directory
yet still needs to allow users to write into the /tmp/ directory.
This is the case in the context of Git for Windows, where the
Cygwin (MSys2) root directory lives inside C:\Program Files and hence
/tmp/ would not be writable otherwise.

Signed-off-by: Johannes Schindelin <johannes.schindelin@gmx.de>
2015-12-07 17:37:44 +01:00

60 lines
2.0 KiB
C

/* sys/mount.h
Copyright 1998, 1999, 2000, 2001, 2002, 2003, 2005, 2008, 2009, 2010, 2012,
2014 Red Hat, Inc.
This file is part of Cygwin.
This software is a copyrighted work licensed under the terms of the
Cygwin license. Please consult the file "CYGWIN_LICENSE" for
details. */
#ifndef _SYS_MOUNT_H
#define _SYS_MOUNT_H
#define BLOCK_SIZE 1024
#define BLOCK_SIZE_BITS 10
#ifdef __cplusplus
extern "C" {
#endif
enum
{
MOUNT_SYMLINK = 0x00001, /* "mount point" is a symlink */
MOUNT_BINARY = 0x00002, /* "binary" format read/writes */
MOUNT_SYSTEM = 0x00008, /* mount point came from system table */
MOUNT_EXEC = 0x00010, /* Any file in the mounted directory
gets 'x' bit */
MOUNT_CYGDRIVE = 0x00020, /* mount point refers to cygdrive
device mount */
MOUNT_CYGWIN_EXEC = 0x00040, /* file or directory is or contains a
cygwin executable */
MOUNT_SPARSE = 0x00080, /* Support automatic sparsifying of
files. */
MOUNT_NOTEXEC = 0x00100, /* don't check files for executable magic */
MOUNT_DEVFS = 0x00200, /* /device "filesystem" */
MOUNT_PROC = 0x00400, /* /proc "filesystem" */
MOUNT_RO = 0x01000, /* read-only "filesystem" */
MOUNT_NOACL = 0x02000, /* support reading/writing ACLs */
MOUNT_NOPOSIX = 0x04000, /* Case insensitve path handling */
MOUNT_OVERRIDE = 0x08000, /* Allow overriding of root */
MOUNT_IMMUTABLE = 0x10000, /* Mount point can't be changed */
MOUNT_AUTOMATIC = 0x20000, /* Mount point was added automatically */
MOUNT_DOS = 0x40000, /* convert leading spaces and trailing
dots and spaces to private use area */
MOUNT_IHASH = 0x80000, /* Enforce hash values for inode numbers */
MOUNT_BIND = 0x100000, /* Allows bind syntax in fstab file. */
MOUNT_USER_TEMP = 0x200000 /* Mount the user's $TMP. */
};
int mount (const char *, const char *, unsigned __flags);
int umount (const char *);
int cygwin_umount (const char *__path, unsigned __flags);
#ifdef __cplusplus
};
#endif
#endif /* _SYS_MOUNT_H */