* mount.cc (mount_info::init): Remove call to from_registry. Print

message that fstab is missing.
	(mount_info::from_fstab): Use CYGWIN_INFO_CYGDRIVE_DEFAULT_PREFIX
	instead of constant string.
	(mount_info::read_mounts): Remove.
	(mount_info::from_registry): Remove.
	(mount_info::read_cygdrive_info_from_registry): Remove.
	* postinstall: Enable code to create fstab entries from old registry
	entries.
	* registry.cc (reg_key::reg_key): Drop CYGWIN_INFO_CYGNUS_REGISTRY_NAME
	from registry key.
	* shared_info.h (mount_info::read_mounts): Remove declaration.
	(mount_info::from_registry): Ditto.
	(mount_info::to_registry): Ditto.
	(mount_info::read_cygdrive_info_from_registry): Ditto.
	* winver.rc (CYGWIN_REGISTRY_KEY): Remove.
	(LegalCopyright): Fix to include 2008.
	(RegistryKey): Set to CYGWIN_INFO_CYGWIN_REGISTRY_NAME.
	* include/cygwin/version.h (CYGWIN_INFO_CYGNUS_REGISTRY_NAME): Remove.
This commit is contained in:
Corinna Vinschen 2008-04-21 14:00:24 +00:00
parent 2bc35e6299
commit c7364f1496
7 changed files with 67 additions and 178 deletions

View File

@ -1,3 +1,25 @@
2008-04-21 Corinna Vinschen <corinna@vinschen.de>
* mount.cc (mount_info::init): Remove call to from_registry. Print
message that fstab is missing.
(mount_info::from_fstab): Use CYGWIN_INFO_CYGDRIVE_DEFAULT_PREFIX
instead of constant string.
(mount_info::read_mounts): Remove.
(mount_info::from_registry): Remove.
(mount_info::read_cygdrive_info_from_registry): Remove.
* postinstall: Enable code to create fstab entries from old registry
entries.
* registry.cc (reg_key::reg_key): Drop CYGWIN_INFO_CYGNUS_REGISTRY_NAME
from registry key.
* shared_info.h (mount_info::read_mounts): Remove declaration.
(mount_info::from_registry): Ditto.
(mount_info::to_registry): Ditto.
(mount_info::read_cygdrive_info_from_registry): Ditto.
* winver.rc (CYGWIN_REGISTRY_KEY): Remove.
(LegalCopyright): Fix to include 2008.
(RegistryKey): Set to CYGWIN_INFO_CYGWIN_REGISTRY_NAME.
* include/cygwin/version.h (CYGWIN_INFO_CYGNUS_REGISTRY_NAME): Remove.
2008-04-21 Corinna Vinschen <corinna@vinschen.de> 2008-04-21 Corinna Vinschen <corinna@vinschen.de>
* kernel32.cc (CreateFileMappingW): Fix bug in reserve/commit handling. * kernel32.cc (CreateFileMappingW): Fix bug in reserve/commit handling.

View File

@ -364,7 +364,6 @@ details. */
/* Identifiers used in the Win32 registry. */ /* Identifiers used in the Win32 registry. */
#define CYGWIN_INFO_CYGNUS_REGISTRY_NAME "Cygnus Solutions"
#define CYGWIN_INFO_CYGWIN_REGISTRY_NAME "Cygwin" #define CYGWIN_INFO_CYGWIN_REGISTRY_NAME "Cygwin"
#define CYGWIN_INFO_PROGRAM_OPTIONS_NAME "Program Options" #define CYGWIN_INFO_PROGRAM_OPTIONS_NAME "Program Options"
#define CYGWIN_INFO_CYGWIN_MOUNT_REGISTRY_NAME "mounts v2" #define CYGWIN_INFO_CYGWIN_MOUNT_REGISTRY_NAME "mounts v2"

View File

@ -25,7 +25,6 @@ details. */
#include "dtable.h" #include "dtable.h"
#include "cygheap.h" #include "cygheap.h"
#include "shared_info.h" #include "shared_info.h"
#include "registry.h"
#include "cygtls.h" #include "cygtls.h"
#include "tls_pbuf.h" #include "tls_pbuf.h"
#include <ntdll.h> #include <ntdll.h>
@ -77,15 +76,11 @@ mount_info::init ()
{ {
nmounts = 0; nmounts = 0;
if (from_fstab (false) | from_fstab (true)) /* The single | is correct! */ if (from_fstab (false) | from_fstab (true)) /* The single | is correct! */
return; return;
/* FIXME: Remove fetching from registry before releasing 1.7.0. */ /* FIXME: Remove warning message before releasing 1.7.0. */
small_printf ("Huh? No /etc/fstab file? Using default root and cygdrive prefix...\n");
/* Fetch the mount table and cygdrive-related information from
the registry. */
system_printf ("Fallback to fetching mounts from registry");
from_registry ();
} }
static void static void
@ -908,7 +903,7 @@ mount_info::from_fstab (bool user)
This allows to override it with mount, unless the sysadmin created This allows to override it with mount, unless the sysadmin created
a cygdrive entry in /etc/fstab. */ a cygdrive entry in /etc/fstab. */
cygdrive_flags = MOUNT_BINARY | MOUNT_CYGDRIVE; cygdrive_flags = MOUNT_BINARY | MOUNT_CYGDRIVE;
strcpy (cygdrive, "/cygdrive/"); strcpy (cygdrive, CYGWIN_INFO_CYGDRIVE_DEFAULT_PREFIX "/");
cygdrive_len = strlen (cygdrive); cygdrive_len = strlen (cygdrive);
} }
@ -963,122 +958,6 @@ done:
return true; return true;
} }
/* read_mounts: Given a specific regkey, read mounts from under its
key. */
/* FIXME: Remove before releasing 1.7.0. */
void
mount_info::read_mounts (reg_key& r)
{
tmp_pathbuf tp;
char *native_path = tp.c_get ();
/* FIXME: The POSIX path is stored as value name right now, which is
restricted to 256 bytes. */
char posix_path[CYG_MAX_PATH];
HKEY key = r.get_key ();
DWORD i, posix_path_size;
int res;
/* Loop through subkeys */
/* FIXME: we would like to not check MAX_MOUNTS but the heap in the
shared area is currently statically allocated so we can't have an
arbitrarily large number of mounts. */
for (i = 0; ; i++)
{
int mount_flags;
posix_path_size = sizeof (posix_path);
/* FIXME: if maximum posix_path_size is 256, we're going to
run into problems if we ever try to store a mount point that's
over 256 but is under CYG_MAX_PATH. */
res = RegEnumKeyEx (key, i, posix_path, &posix_path_size, NULL,
NULL, NULL, NULL);
if (res == ERROR_NO_MORE_ITEMS)
break;
else if (res != ERROR_SUCCESS)
{
debug_printf ("RegEnumKeyEx failed, error %d!", res);
break;
}
/* Get a reg_key based on i. */
reg_key subkey = reg_key (key, KEY_READ, posix_path, NULL);
/* Fetch info from the subkey. */
subkey.get_string ("native", native_path, NT_MAX_PATH, "");
mount_flags = subkey.get_int ("flags", 0);
/* Add mount_item corresponding to registry mount point. */
res = mount_table->add_item (native_path, posix_path, mount_flags);
if (res && get_errno () == EMFILE)
break; /* The number of entries exceeds MAX_MOUNTS */
}
}
/* from_registry: Build the entire mount table from the registry. Also,
read in cygdrive-related information from its registry location. */
/* FIXME: Remove before releasing 1.7.0. */
void
mount_info::from_registry ()
{
/* Retrieve cygdrive-related information. */
read_cygdrive_info_from_registry ();
nmounts = 0;
/* First read mounts from user's table.
Then read mounts from system-wide mount table while deimpersonated . */
for (int i = 0; i < 2; i++)
{
if (i)
cygheap->user.deimpersonate ();
reg_key r (i, KEY_READ, CYGWIN_INFO_CYGWIN_MOUNT_REGISTRY_NAME, NULL);
read_mounts (r);
if (i)
cygheap->user.reimpersonate ();
}
}
/* read_cygdrive_info_from_registry: Read the default prefix and flags
to use when creating cygdrives from the special user registry
location used to store cygdrive information. */
/* FIXME: Remove before releasing 1.7.0. */
void
mount_info::read_cygdrive_info_from_registry ()
{
/* First read cygdrive from user's registry.
If failed, then read cygdrive from system-wide registry
while deimpersonated. */
for (int i = 0; i < 2; i++)
{
if (i)
cygheap->user.deimpersonate ();
reg_key r (i, KEY_READ, CYGWIN_INFO_CYGWIN_MOUNT_REGISTRY_NAME, NULL);
if (i)
cygheap->user.reimpersonate ();
if (r.get_string (CYGWIN_INFO_CYGDRIVE_PREFIX, cygdrive, sizeof (cygdrive),
CYGWIN_INFO_CYGDRIVE_DEFAULT_PREFIX) != ERROR_SUCCESS && i == 0)
continue;
/* Fetch user cygdrive_flags from registry; returns MOUNT_CYGDRIVE on error. */
cygdrive_flags = r.get_int (CYGWIN_INFO_CYGDRIVE_FLAGS,
MOUNT_CYGDRIVE | MOUNT_BINARY);
/* Sanitize */
if (i == 0)
cygdrive_flags &= ~MOUNT_SYSTEM;
else
cygdrive_flags |= MOUNT_SYSTEM;
slashify (cygdrive, cygdrive, 1);
cygdrive_len = strlen (cygdrive);
break;
}
}
/* write_cygdrive_info: Store default prefix and flags /* write_cygdrive_info: Store default prefix and flags
to use when creating cygdrives to the special user shared mem to use when creating cygdrives to the special user shared mem
location used to store cygdrive information. */ location used to store cygdrive information. */

View File

@ -128,53 +128,50 @@ then
EOF EOF
# usr_bin=""
# TODO: Enable the below code for the first official release. usr_lib=""
# key='\HKLM\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2'
#usr_bin="" for subkey in $(regtool -q list "$key")
#usr_lib="" do
#key='\HKLM\SOFTWARE\Cygnus Solutions\Cygwin\mounts v2' if [[ "$subkey" =~ /.* ]]
#for subkey in $(regtool -q list "$key") then
#do [ "$subkey" = "/usr/bin" ] && usr_bin="1"
# if [[ "$subkey" =~ /.* ]] [ "$subkey" = "/usr/lib" ] && usr_lib="1"
# then nat=$(regtool -q get "$key\\$subkey\native")
# [ "$subkey" = "/usr/bin" ] && usr_bin="1" nat="${nat//\\//}"
# [ "$subkey" = "/usr/lib" ] && usr_lib="1" nat="${nat// /\\040}"
# nat=$(regtool -q get "$key\\$subkey\native") psx="${subkey// /\\040}"
# nat="${nat//\\//}" flags=$(regtool -q get "$key\\$subkey\flags")
# nat="${nat// /\\040}" echo -n "${nat} ${psx} some_fs "
# psx="${subkey// /\\040}" print_flags $flags
# flags=$(regtool -q get "$key\\$subkey\flags") echo " 0 0"
# echo -n "${nat} ${psx} some_fs " fi >> ${FSTAB}
# print_flags $flags done
# echo " 0 0" [ -z "$usr_bin" ] &&
# fi >> ${FSTAB}
#done
#[ -z "$usr_bin" ] &&
echo "${CYGROOT//\\//}/bin /usr/bin ${FS_TYPE} binary 0 0" >> ${FSTAB} echo "${CYGROOT//\\//}/bin /usr/bin ${FS_TYPE} binary 0 0" >> ${FSTAB}
#[ -z "$usr_lib" ] && [ -z "$usr_lib" ] &&
echo "${CYGROOT//\\//}/lib /usr/lib ${FS_TYPE} binary 0 0" >> ${FSTAB} echo "${CYGROOT//\\//}/lib /usr/lib ${FS_TYPE} binary 0 0" >> ${FSTAB}
#cygd="" cygd=""
#prefix=$(regtool -q get "$key\cygdrive prefix") prefix=$(regtool -q get "$key\cygdrive prefix")
#flags=$(regtool -q get "$key\cygdrive flags") flags=$(regtool -q get "$key\cygdrive flags")
#[ -z "$flags" ] && flags=2 [ -z "$flags" ] && flags=2
## Don't take system and cygdrive flags into account when testing # Don't take system and cygdrive flags into account when testing
#if [ -n "$prefix" \ if [ -n "$prefix" \
# -a \( "$prefix" != "/cygdrive" -o "$(( $flags & ~0x28 ))" -ne 2 \) ] -a \( "$prefix" != "/cygdrive" -o "$(( $flags & ~0x28 ))" -ne 2 \) ]
#then then
# cygd="1" cygd="1"
# psx="${prefix// /\\040}" psx="${prefix// /\\040}"
# echo -n "none ${psx} cygdrive " echo -n "none ${psx} cygdrive "
# print_flags $flags print_flags $flags
# echo ",user 0 0" echo ",user 0 0"
#fi >> ${FSTAB} fi >> ${FSTAB}
#if [ -z "$cygd" ] if [ -z "$cygd" ]
#then then
echo "# This is default anyway:" >> ${FSTAB} echo "# This is default anyway:" >> ${FSTAB}
echo "# none /cygdrive cygdrive binary,user 0 0" >> ${FSTAB} echo "# none /cygdrive cygdrive binary,user 0 0" >> ${FSTAB}
#fi fi
IFS="$_OLD_IFS" IFS="$_OLD_IFS"
fi fi

View File

@ -55,7 +55,6 @@ reg_key::reg_key (bool isHKLM, REGSAM access, ...): _disposition (0)
} }
OK: OK:
new (this) reg_key (top, access, "SOFTWARE", new (this) reg_key (top, access, "SOFTWARE",
CYGWIN_INFO_CYGNUS_REGISTRY_NAME,
CYGWIN_INFO_CYGWIN_REGISTRY_NAME, NULL); CYGWIN_INFO_CYGWIN_REGISTRY_NAME, NULL);
if (top != HKEY_LOCAL_MACHINE) if (top != HKEY_LOCAL_MACHINE)
RegCloseKey (top); RegCloseKey (top);

View File

@ -77,7 +77,6 @@ class mount_info
bool from_fstab_line (char *line, bool user); bool from_fstab_line (char *line, bool user);
bool from_fstab (bool user); bool from_fstab (bool user);
void from_registry ();
unsigned set_flags_from_win32_path (const char *path); unsigned set_flags_from_win32_path (const char *path);
int conv_to_win32_path (const char *src_path, char *dst, device&, int conv_to_win32_path (const char *src_path, char *dst, device&,
@ -99,12 +98,9 @@ class mount_info
private: private:
void sort (); void sort ();
void read_mounts (reg_key& r);
void mount_slash (); void mount_slash ();
void to_registry ();
int cygdrive_win32_path (const char *src, char *dst, int& unit); int cygdrive_win32_path (const char *src, char *dst, int& unit);
void read_cygdrive_info_from_registry ();
}; };
class user_info class user_info

View File

@ -6,9 +6,6 @@
#define CYGWIN_DLL_NAME CYGWIN_VERSION_DLL_IDENTIFIER STRINGIFY(.dll) #define CYGWIN_DLL_NAME CYGWIN_VERSION_DLL_IDENTIFIER STRINGIFY(.dll)
#define CYGWIN_REGISTRY_KEY CYGWIN_INFO_CYGNUS_REGISTRY_NAME "\\" \
CYGWIN_INFO_CYGWIN_REGISTRY_NAME
#define CYGWIN_API_VERSION STRINGIFY(CYGWIN_VERSION_API_MAJOR) "." \ #define CYGWIN_API_VERSION STRINGIFY(CYGWIN_VERSION_API_MAJOR) "." \
STRINGIFY(CYGWIN_VERSION_API_MINOR) STRINGIFY(CYGWIN_VERSION_API_MINOR)
@ -36,13 +33,13 @@ BEGIN
VALUE "FileDescription", "Cygwin\256 POSIX Emulation DLL" VALUE "FileDescription", "Cygwin\256 POSIX Emulation DLL"
VALUE "FileVersion", STRINGIFY(CYGWIN_VERSION) VALUE "FileVersion", STRINGIFY(CYGWIN_VERSION)
VALUE "InternalName", CYGWIN_DLL_NAME VALUE "InternalName", CYGWIN_DLL_NAME
VALUE "LegalCopyright", "Copyright \251 Red Hat, Inc. 1996-2003" VALUE "LegalCopyright", "Copyright \251 Red Hat, Inc. 1996-2008"
VALUE "OriginalFilename", CYGWIN_DLL_NAME VALUE "OriginalFilename", CYGWIN_DLL_NAME
VALUE "ProductName", "Cygwin" VALUE "ProductName", "Cygwin"
VALUE "ProductVersion", STRINGIFY(CYGWIN_VERSION) VALUE "ProductVersion", STRINGIFY(CYGWIN_VERSION)
VALUE "APIVersion", CYGWIN_API_VERSION VALUE "APIVersion", CYGWIN_API_VERSION
VALUE "SharedMemoryVersion", STRINGIFY(CYGWIN_VERSION_SHARED_DATA) VALUE "SharedMemoryVersion", STRINGIFY(CYGWIN_VERSION_SHARED_DATA)
VALUE "RegistryKey", CYGWIN_REGISTRY_KEY VALUE "RegistryKey", CYGWIN_INFO_CYGWIN_REGISTRY_NAME
VALUE "BuildDate", CYGWIN_BUILD_DATE_TIME VALUE "BuildDate", CYGWIN_BUILD_DATE_TIME
END END
END END