* cygwin.din: Add fchdir symbols.
* path.cc (chdir): Guard against invalid parameter. (fchdir): New function. * include/cygwin/version.h: Bump API minor version to 40. * uinfo.cc (internal_getlogin): Remove unused variable.
This commit is contained in:
parent
d4217d5680
commit
463513f0e2
@ -1,3 +1,11 @@
|
|||||||
|
Sun Jun 10 11:56:00 2001 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
|
* cygwin.din: Add fchdir symbols.
|
||||||
|
* path.cc (chdir): Guard against invalid parameter.
|
||||||
|
(fchdir): New function.
|
||||||
|
* include/cygwin/version.h: Bump API minor version to 40.
|
||||||
|
* uinfo.cc (internal_getlogin): Remove unused variable.
|
||||||
|
|
||||||
Sat Jun 9 23:20:00 2001 Corinna Vinschen <corinna@vinschen.de>
|
Sat Jun 9 23:20:00 2001 Corinna Vinschen <corinna@vinschen.de>
|
||||||
|
|
||||||
* syscalls.cc (seteuid): Set environment variables USERNAME and
|
* syscalls.cc (seteuid): Set environment variables USERNAME and
|
||||||
|
@ -191,6 +191,8 @@ _f_atan2
|
|||||||
__f_atan2 = _f_atan2
|
__f_atan2 = _f_atan2
|
||||||
_f_atan2f
|
_f_atan2f
|
||||||
__f_atan2f = _f_atan2f
|
__f_atan2f = _f_atan2f
|
||||||
|
fchdir
|
||||||
|
_fchdir = fchdir
|
||||||
fchmod
|
fchmod
|
||||||
_fchmod = fchmod
|
_fchmod = fchmod
|
||||||
fchown
|
fchown
|
||||||
|
@ -133,10 +133,11 @@ details. */
|
|||||||
37: [f]pathconv support _PC_POSIX_PERMISSIONS and _PC_POSIX_SECURITY
|
37: [f]pathconv support _PC_POSIX_PERMISSIONS and _PC_POSIX_SECURITY
|
||||||
38: vscanf, vscanf_r, and random pthread functions
|
38: vscanf, vscanf_r, and random pthread functions
|
||||||
39: asctime_r, ctime_r, gmtime_r, localtime_r
|
39: asctime_r, ctime_r, gmtime_r, localtime_r
|
||||||
|
40: fchdir
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#define CYGWIN_VERSION_API_MAJOR 0
|
#define CYGWIN_VERSION_API_MAJOR 0
|
||||||
#define CYGWIN_VERSION_API_MINOR 39
|
#define CYGWIN_VERSION_API_MINOR 40
|
||||||
|
|
||||||
/* There is also a compatibity version number associated with the
|
/* There is also a compatibity version number associated with the
|
||||||
shared memory regions. It is incremented when incompatible
|
shared memory regions. It is incremented when incompatible
|
||||||
|
@ -2994,8 +2994,14 @@ int
|
|||||||
chdir (const char *dir)
|
chdir (const char *dir)
|
||||||
{
|
{
|
||||||
MALLOC_CHECK;
|
MALLOC_CHECK;
|
||||||
syscall_printf ("dir %s", dir);
|
|
||||||
path_conv path (dir, PC_FULL | PC_SYM_FOLLOW);
|
path_conv path (dir, PC_FULL | PC_SYM_FOLLOW);
|
||||||
|
if (path.error)
|
||||||
|
{
|
||||||
|
set_errno (path.error);
|
||||||
|
syscall_printf ("-1 = chdir (%s)", dir);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
syscall_printf ("dir %s", dir);
|
||||||
|
|
||||||
char *s;
|
char *s;
|
||||||
/* Incredibly. Windows allows you to specify a path with trailing
|
/* Incredibly. Windows allows you to specify a path with trailing
|
||||||
@ -3005,13 +3011,6 @@ chdir (const char *dir)
|
|||||||
for (s = strchr (dir, '\0'); --s >= dir && isspace ((unsigned int) (*s & 0xff)); )
|
for (s = strchr (dir, '\0'); --s >= dir && isspace ((unsigned int) (*s & 0xff)); )
|
||||||
*s = '\0';
|
*s = '\0';
|
||||||
|
|
||||||
if (path.error)
|
|
||||||
{
|
|
||||||
set_errno (path.error);
|
|
||||||
syscall_printf ("-1 = chdir (%s)", dir);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
/* Look for trailing path component consisting entirely of dots. This
|
/* Look for trailing path component consisting entirely of dots. This
|
||||||
is needed only in case of chdir since Windows simply ignores count
|
is needed only in case of chdir since Windows simply ignores count
|
||||||
of dots > 2 here instead of returning an error code. Counts of dots
|
of dots > 2 here instead of returning an error code. Counts of dots
|
||||||
@ -3068,6 +3067,23 @@ chdir (const char *dir)
|
|||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
extern "C"
|
||||||
|
int
|
||||||
|
fchdir (int fd)
|
||||||
|
{
|
||||||
|
sigframe thisframe (mainthread);
|
||||||
|
|
||||||
|
if (cygheap->fdtab.not_open (fd))
|
||||||
|
{
|
||||||
|
syscall_printf ("-1 = fchdir (%d)", fd);
|
||||||
|
set_errno (EBADF);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
int ret = chdir (cygheap->fdtab[fd]->get_name ());
|
||||||
|
syscall_printf ("%d = fchdir (%d)", ret, fd);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
/******************** Exported Path Routines *********************/
|
/******************** Exported Path Routines *********************/
|
||||||
|
|
||||||
/* Cover functions to the path conversion routines.
|
/* Cover functions to the path conversion routines.
|
||||||
|
@ -153,7 +153,6 @@ internal_getlogin (cygheap_user &user)
|
|||||||
cygsid gsid (NO_SID);
|
cygsid gsid (NO_SID);
|
||||||
if (ret)
|
if (ret)
|
||||||
{
|
{
|
||||||
char dom[INTERNET_MAX_HOST_NAME_LENGTH + 1];
|
|
||||||
cygsid psid;
|
cygsid psid;
|
||||||
|
|
||||||
for (int pidx = 0; (pw = internal_getpwent (pidx)); ++pidx)
|
for (int pidx = 0; (pw = internal_getpwent (pidx)); ++pidx)
|
||||||
|
Loading…
x
Reference in New Issue
Block a user