* configure.in: Remove testsuite from SUBDIRS.
* configure: Regenerate.
+2001-10-24 Christopher Faylor <cgf@redhat.com>
+
+ * Makefile.in: Only build testsuite directory on first 'make check'.
+ * configure.in: Remove testsuite from SUBDIRS.
+ * configure: Regenerate.
+
2001-10-12 Christopher Faylor <cgf@redhat.com>
* Makefile.in: Add -nostdinc to CXXFLAGS.
infodir:=@infodir@
includedir:=@includedir@
-SUBDIRS=@SUBDIRS@
+SUBDIRS=@SUBDIRS@ testsuite
INSTALL_SUBDIRS=${patsubst %,install_%,$(SUBDIRS)}
CLEAN_SUBDIRS=${patsubst %,clean_%,$(SUBDIRS)}
info:
$(SUBDIRS):
- @$(MAKE) -C $@ all
+ @if cd $@ 2>/dev/null; then \
+ $(MAKE) all; \
+ fi || exit 0
$(INSTALL_SUBDIRS):
- @$(MAKE) -C ${patsubst install_%,%,$@} install
+ @if cd ${patsubst install_%,%,$@} 2>/dev/null; then \
+ make install; \
+ fi || exit 0
$(CLEAN_SUBDIRS):
- @$(MAKE) -C ${patsubst clean_%,%,$@} clean
+ @if cd ${patsubst clean_%,%,$@} 2>/dev/null; then \
+ make install; \
+ fi || exit 0
.PRECIOUS: Makefile
config.status: configure
$(SHELL) config.status --recheck
-check:
- @$(MAKE) -C testsuite check
+check: cygwin
+ @if [ -d testsuite ]; then \
+ cd testsuite; \
+ else \
+ mkdir testsuite; \
+ cd testsuite; \
+ sed -n -e '1,/^done/{' -e 's%/cygwin%/testsuite%g; ' -e 'p; }' ../cygwin/config.status > config.status; \
+ chmod a+x config.status; \
+ sh ./config.status --recheck; \
+ sh ./config.status; \
+ fi; \
+ $(MAKE) check
test -d $srcdir/bz2lib && SUBDIRS="$SUBDIRS bz2lib"
test -d $srcdir/cinstall && SUBDIRS="$SUBDIRS cinstall"
test -d $srcdir/subauth && SUBDIRS="$SUBDIRS subauth"
- SUBDIRS="$SUBDIRS utils doc testsuite"
+ SUBDIRS="$SUBDIRS utils doc"
;;
esac
s%@CXX@%$CXX%g
s%@subdirs@%$subdirs%g
s%@SET_MAKE@%$SET_MAKE%g
-s%@SUBDIRS@%$SUBDIRS%g
+s%@SUBDIRS testsuite@%$SUBDIRS testsuite%g
CEOF
EOF
test -d $srcdir/bz2lib && SUBDIRS="$SUBDIRS bz2lib"
test -d $srcdir/cinstall && SUBDIRS="$SUBDIRS cinstall"
test -d $srcdir/subauth && SUBDIRS="$SUBDIRS subauth"
- SUBDIRS="$SUBDIRS utils doc testsuite"
+ SUBDIRS="$SUBDIRS utils doc"
;;
esac
HANDLE shared_h;
HANDLE console_h;
HANDLE etc_changed_h;
+ char *cygwin_regname;
cwdstuff cwd;
dtable fdtab;
details. */
#include "winsup.h"
+#include <errno.h>
#include "security.h"
#include "fhandler.h"
#include "sync.h"
#include "shared_info.h"
#include "cygwin_version.h"
#include "perprocess.h"
+#include "cygerrno.h"
+#include "fhandler.h"
+#include "path.h"
+#include "dtable.h"
+#include "cygheap.h"
static external_pinfo *
fillout_pinfo (pid_t pid, int winpid)
return get_cygdrive_info (user, system, user_flags, system_flags);
}
+ case CW_SET_CYGWIN_REGISTRY_NAME:
+ {
+# define cr ((char *) arg)
+ if (check_null_empty_str_errno (cr))
+ return (DWORD) NULL;
+ cygheap->cygwin_regname = (char *) crealloc (cygheap->cygwin_regname,
+ strlen (cr) + 1);
+ strcpy (cygheap->cygwin_regname, cr);
+ case CW_GET_CYGWIN_REGISTRY_NAME:
+ return (DWORD) cygheap->cygwin_regname;
+# undef cr
+ }
+
default:
return (DWORD) -1;
}
if (shared_console_info)
return shared_console_info;
- shared_console_info = (tty_min *) open_shared (NULL, cygheap->console_h,
+ shared_console_info = (tty_min *) open_shared (NULL, 0, cygheap->console_h,
sizeof (*shared_console_info),
NULL);
ProtectHandle (cygheap->console_h);
CW_GET_CYGDRIVE_PREFIXES,
CW_GETPINFO_FULL,
CW_INIT_EXCEPTIONS,
- CW_GET_CYGDRIVE_INFO
+ CW_GET_CYGDRIVE_INFO,
+ CW_SET_CYGWIN_REGISTRY_NAME,
+ CW_GET_CYGWIN_REGISTRY_NAME
} cygwin_getinfo_types;
#define CW_NEXTPID 0x80000000 // or with pid to get next one
int pcheck_case = PCHECK_RELAXED; /* Determines the case check behaviour. */
+#define CYGWIN_REGNAME (cygheap->cygwin_regname ?: CYGWIN_INFO_CYGWIN_REGISTRY_NAME)
+
/* Determine if path prefix matches current cygdrive */
#define iscygdrive(path) \
(path_prefix_p (mount_table->cygdrive, (path), mount_table->cygdrive_len))
/* Then read mounts from system-wide mount table. */
reg_key r1 (HKEY_LOCAL_MACHINE, KEY_READ, "SOFTWARE",
- CYGWIN_INFO_CYGNUS_REGISTRY_NAME,
- CYGWIN_INFO_CYGWIN_REGISTRY_NAME,
+ CYGWIN_INFO_CYGNUS_REGISTRY_NAME, CYGWIN_REGNAME,
CYGWIN_INFO_CYGWIN_MOUNT_REGISTRY_NAME,
NULL);
read_mounts (r1);
{
/* reg_key for system mounts in HKEY_LOCAL_MACHINE. */
reg_key reg_sys (HKEY_LOCAL_MACHINE, KEY_ALL_ACCESS, "SOFTWARE",
- CYGWIN_INFO_CYGNUS_REGISTRY_NAME,
- CYGWIN_INFO_CYGWIN_REGISTRY_NAME,
+ CYGWIN_INFO_CYGNUS_REGISTRY_NAME, CYGWIN_REGNAME,
CYGWIN_INFO_CYGWIN_MOUNT_REGISTRY_NAME,
NULL);
sys_mount_table_counter++;
cygwin_shared->sys_mount_table_counter++;
reg_key reg_sys (HKEY_LOCAL_MACHINE, KEY_ALL_ACCESS, "SOFTWARE",
- CYGWIN_INFO_CYGNUS_REGISTRY_NAME,
- CYGWIN_INFO_CYGWIN_REGISTRY_NAME,
+ CYGWIN_INFO_CYGNUS_REGISTRY_NAME, CYGWIN_REGNAME,
CYGWIN_INFO_CYGWIN_MOUNT_REGISTRY_NAME,
NULL);
res = reg_sys.kill (posix_path);
/* reg_key for system path prefix in HKEY_LOCAL_MACHINE. */
reg_key r2 (HKEY_LOCAL_MACHINE, KEY_READ, "SOFTWARE",
- CYGWIN_INFO_CYGNUS_REGISTRY_NAME,
- CYGWIN_INFO_CYGWIN_REGISTRY_NAME,
+ CYGWIN_INFO_CYGNUS_REGISTRY_NAME, CYGWIN_REGNAME,
CYGWIN_INFO_CYGWIN_MOUNT_REGISTRY_NAME,
NULL);
/* reg_key for user path prefix in HKEY_CURRENT_USER or system path prefix in
HKEY_LOCAL_MACHINE. */
reg_key r (top, KEY_ALL_ACCESS, "SOFTWARE",
- CYGWIN_INFO_CYGNUS_REGISTRY_NAME,
- CYGWIN_INFO_CYGWIN_REGISTRY_NAME,
+ CYGWIN_INFO_CYGNUS_REGISTRY_NAME, CYGWIN_REGNAME,
CYGWIN_INFO_CYGWIN_MOUNT_REGISTRY_NAME,
NULL);
/* reg_key for user path prefix in HKEY_CURRENT_USER or system path prefix in
HKEY_LOCAL_MACHINE. */
reg_key r (top, KEY_ALL_ACCESS, "SOFTWARE",
- CYGWIN_INFO_CYGNUS_REGISTRY_NAME,
- CYGWIN_INFO_CYGWIN_REGISTRY_NAME,
+ CYGWIN_INFO_CYGNUS_REGISTRY_NAME, CYGWIN_REGNAME,
CYGWIN_INFO_CYGWIN_MOUNT_REGISTRY_NAME,
NULL);
/* Get the system path prefix from HKEY_LOCAL_MACHINE. */
reg_key r2 (HKEY_LOCAL_MACHINE, KEY_READ, "SOFTWARE",
- CYGWIN_INFO_CYGNUS_REGISTRY_NAME,
- CYGWIN_INFO_CYGWIN_REGISTRY_NAME,
+ CYGWIN_INFO_CYGNUS_REGISTRY_NAME, CYGWIN_REGNAME,
CYGWIN_INFO_CYGWIN_MOUNT_REGISTRY_NAME,
NULL);
int res2 = r2.get_string (CYGWIN_INFO_CYGDRIVE_PREFIX, system, MAX_PATH, "");
}
void * __stdcall
-open_shared (const char *name, HANDLE &shared_h, DWORD size, void *addr)
+open_shared (const char *name, int n, HANDLE &shared_h, DWORD size, void *addr)
{
void *shared;
mapname = NULL;
else
{
- mapname = shared_name (name, 0);
+ mapname = shared_name (name, n);
shared_h = OpenFileMappingA (FILE_MAP_READ | FILE_MAP_WRITE,
TRUE, mapname);
}
/* Initialize general shared memory */
HANDLE shared_h = cygheap ? cygheap->shared_h : NULL;
cygwin_shared = (shared_info *) open_shared ("shared",
+ CYGWIN_VERSION_SHARED_DATA,
shared_h,
sizeof (*cygwin_shared),
cygwin_shared_address);
ProtectHandle (cygheap->shared_h);
heap_init ();
- mount_table = (mount_info *) open_shared (user_name, cygwin_mount_h,
+ mount_table = (mount_info *) open_shared (user_name, MOUNT_VERSION,
+ cygwin_mount_h,
sizeof (mount_info), 0);
debug_printf ("opening mount table for '%s' at %p", cygheap->user.name (),
mount_table_address);
debug_printf ("initializing mount table");
mount_table->init (); /* Initialize the mount table. */
}
+ else if (mount_table->version != MOUNT_VERSION)
+ multiple_cygwin_die ();
+
}
void __stdcall
scheme should be satisfactory for a long while yet. */
#define MAX_MOUNTS 30
-#define MOUNT_VERSION 0x01010103
+#define MOUNT_VERSION 27 // increment when mount table changes
class reg_key;
class mount_info
#define cygheap_address shared_align_past ((mount_info *) shared_align_past (cygwin_shared))
char *__stdcall shared_name (const char *, int);
-void *__stdcall open_shared (const char *name, HANDLE &shared_h, DWORD size, void *addr);
+void *__stdcall open_shared (const char *name, int n, HANDLE &shared_h, DWORD size, void *addr);
MINGW_LDFLAGS:=$(ALL_LDFLAGS) $(MINGW_LIB)
DUMPER_LDFLAGS:=$(ALL_LDFLAGS) $(DUMPER_LIB)
-PROGS:=mount$(EXEEXT) umount$(EXEEXT) ps$(EXEEXT) kill$(EXEEXT) \
- mkpasswd$(EXEEXT) mkgroup$(EXEEXT) cygpath$(EXEEXT) cygcheck$(EXEEXT) \
- passwd$(EXEEXT) getfacl$(EXEEXT) setfacl$(EXEEXT) strace$(EXEEXT) \
- regtool$(EXEEXT) ssp$(EXEEXT)
+PROGS:= cygcheck.exe cygpath.exe cygme.exe getfacl.exe kill.exe mkgroup.exe \
+ mkpasswd.exe mount.exe passwd.exe ps.exe regtool.exe setfacl.exe \
+ ssp.exe strace.exe umount.exe
CLEAN_PROGS:=$(PROGS)
ifdef build_dumper
/* mount.cc
- Copyright 1996, 1997, 1998, 1999 Cygnus Solutions.
+ Copyright 1996, 1997, 1998, 1999, 2000, 2001 Red Hat, Inc.
This file is part of Cygwin.