4
0
mirror of git://sourceware.org/git/newlib-cygwin.git synced 2025-02-01 12:00:35 +08:00

* (child_info.h, cygheap.h, dcrt0.cc, dir.cc, fhandler.cc, fhandler.h,

fhandler_clipboard.cc, fhandler_disk_file.cc, fhandler_dsp.cc,
	fhandler_floppy.cc, fhandler_mem.cc, fhandler_random.cc,
	fhandler_tape.cc, fhandler_zero.cc, grp.cc, mmap.cc, passwd.cc,
	pinfo.cc, pinfo.h, pipe.cc, sec_acl.cc, sec_helper.cc, security.cc,
	security.h, spawn.cc, syscalls.cc, thread.h, uinfo.cc, winsup.h):
	Change usage of uid_t to __uid16_t, gid_t to __gid16_t and
	off_t to __off32_t throughout.  Use INVALID_UID, INVALID_GID and
	INVALID_SEEK instead casting -1 to the appropriate type.
	* winsup.h: Define INVALID_UID, INVALID_GID and INVALID_SEEK.
	* include/cygwin/acl.h: Define internal __aclent16_t and __aclent32_t
	types.  Don't declare acl functions when compiling Cygwin.
	* include/cygwin/grp.h: Declare getgrgid() and getgrnam() with
	correct types for internal usage.
This commit is contained in:
Corinna Vinschen 2002-02-10 13:38:51 +00:00
parent a505db6554
commit de4e0d3001
32 changed files with 231 additions and 189 deletions

View File

@ -1,3 +1,20 @@
2002-02-10 Corinna Vinschen <corinna@vinschen.de>
* (child_info.h, cygheap.h, dcrt0.cc, dir.cc, fhandler.cc, fhandler.h,
fhandler_clipboard.cc, fhandler_disk_file.cc, fhandler_dsp.cc,
fhandler_floppy.cc, fhandler_mem.cc, fhandler_random.cc,
fhandler_tape.cc, fhandler_zero.cc, grp.cc, mmap.cc, passwd.cc,
pinfo.cc, pinfo.h, pipe.cc, sec_acl.cc, sec_helper.cc, security.cc,
security.h, spawn.cc, syscalls.cc, thread.h, uinfo.cc, winsup.h):
Change usage of uid_t to __uid16_t, gid_t to __gid16_t and
off_t to __off32_t throughout. Use INVALID_UID, INVALID_GID and
INVALID_SEEK instead casting -1 to the appropriate type.
* winsup.h: Define INVALID_UID, INVALID_GID and INVALID_SEEK.
* include/cygwin/acl.h: Define internal __aclent16_t and __aclent32_t
types. Don't declare acl functions when compiling Cygwin.
* include/cygwin/grp.h: Declare getgrgid() and getgrnam() with
correct types for internal usage.
2002-02-10 Corinna Vinschen <corinna@vinschen.de> 2002-02-10 Corinna Vinschen <corinna@vinschen.de>
Patch suggested by Pierre A. Humblet <Pierre.Humblet@ieee.org>: Patch suggested by Pierre A. Humblet <Pierre.Humblet@ieee.org>:

View File

@ -70,7 +70,7 @@ class fhandler_base;
class cygheap_exec_info class cygheap_exec_info
{ {
public: public:
uid_t uid; __uid16_t uid;
char *old_title; char *old_title;
int argc; int argc;
char **argv; char **argv;

View File

@ -96,10 +96,10 @@ class cygheap_user
char *pdomain; /* Logon domain of the user */ char *pdomain; /* Logon domain of the user */
PSID psid; /* buffer for user's SID */ PSID psid; /* buffer for user's SID */
public: public:
uid_t orig_uid; /* Remains intact even after impersonation */ __uid16_t orig_uid; /* Remains intact even after impersonation */
uid_t orig_gid; /* Ditto */ __uid16_t orig_gid; /* Ditto */
uid_t real_uid; /* Remains intact on seteuid, replaced by setuid */ __uid16_t real_uid; /* Remains intact on seteuid, replaced by setuid */
gid_t real_gid; /* Ditto */ __gid16_t real_gid; /* Ditto */
/* token is needed if set(e)uid should be called. It can be set by a call /* token is needed if set(e)uid should be called. It can be set by a call
to `set_impersonation_token()'. */ to `set_impersonation_token()'. */

View File

@ -623,7 +623,7 @@ dll_crt0_1 ()
} }
if (child_proc_info->subproc_ready) if (child_proc_info->subproc_ready)
ProtectHandle (child_proc_info->subproc_ready); ProtectHandle (child_proc_info->subproc_ready);
if (myself->uid == USHRT_MAX) if (myself->uid == ILLEGAL_UID)
cygheap->user.set_sid (NULL); cygheap->user.set_sid (NULL);
break; break;
} }

View File

@ -119,7 +119,7 @@ readdir (DIR *dir)
} }
/* telldir */ /* telldir */
extern "C" off_t extern "C" __off32_t
telldir (DIR *dir) telldir (DIR *dir)
{ {
if (check_null_invalid_struct_errno (dir)) if (check_null_invalid_struct_errno (dir))
@ -132,7 +132,7 @@ telldir (DIR *dir)
/* seekdir */ /* seekdir */
extern "C" void extern "C" void
seekdir (DIR *dir, off_t loc) seekdir (DIR *dir, __off32_t loc)
{ {
if (check_null_invalid_struct_errno (dir)) if (check_null_invalid_struct_errno (dir))
return; return;

View File

@ -693,10 +693,10 @@ fhandler_base::write (const void *ptr, size_t len)
return res; return res;
} }
off_t __off32_t
fhandler_base::lseek (off_t offset, int whence) fhandler_base::lseek (__off32_t offset, int whence)
{ {
off_t res; __off32_t res;
/* Seeks on text files is tough, we rewind and read till we get to the /* Seeks on text files is tough, we rewind and read till we get to the
right place. */ right place. */
@ -1181,7 +1181,7 @@ fhandler_base::readdir (DIR *)
return NULL; return NULL;
} }
off_t __off32_t
fhandler_base::telldir (DIR *) fhandler_base::telldir (DIR *)
{ {
set_errno (ENOTDIR); set_errno (ENOTDIR);
@ -1189,7 +1189,7 @@ fhandler_base::telldir (DIR *)
} }
void void
fhandler_base::seekdir (DIR *, off_t) fhandler_base::seekdir (DIR *, __off32_t)
{ {
set_errno (ENOTDIR); set_errno (ENOTDIR);
return; return;

View File

@ -288,13 +288,13 @@ class fhandler_base
virtual char const * ttyname () { return get_name(); } virtual char const * ttyname () { return get_name(); }
virtual int __stdcall read (void *ptr, size_t len) __attribute__ ((regparm (3))); virtual int __stdcall read (void *ptr, size_t len) __attribute__ ((regparm (3)));
virtual int write (const void *ptr, size_t len); virtual int write (const void *ptr, size_t len);
virtual off_t lseek (off_t offset, int whence); virtual __off32_t lseek (__off32_t offset, int whence);
virtual int lock (int, struct flock *); virtual int lock (int, struct flock *);
virtual void dump (); virtual void dump ();
virtual int dup (fhandler_base *child); virtual int dup (fhandler_base *child);
virtual HANDLE mmap (caddr_t *addr, size_t len, DWORD access, virtual HANDLE mmap (caddr_t *addr, size_t len, DWORD access,
int flags, off_t off); int flags, __off32_t off);
virtual int munmap (HANDLE h, caddr_t addr, size_t len); virtual int munmap (HANDLE h, caddr_t addr, size_t len);
virtual int msync (HANDLE h, caddr_t addr, size_t len, int flags); virtual int msync (HANDLE h, caddr_t addr, size_t len, int flags);
virtual BOOL fixup_mmap_after_fork (HANDLE h, DWORD access, DWORD offset, virtual BOOL fixup_mmap_after_fork (HANDLE h, DWORD access, DWORD offset,
@ -347,8 +347,8 @@ class fhandler_base
virtual void set_eof () {} virtual void set_eof () {}
virtual DIR *opendir (path_conv& pc); virtual DIR *opendir (path_conv& pc);
virtual dirent *readdir (DIR *); virtual dirent *readdir (DIR *);
virtual off_t telldir (DIR *); virtual __off32_t telldir (DIR *);
virtual void seekdir (DIR *, off_t); virtual void seekdir (DIR *, __off32_t);
virtual void rewinddir (DIR *); virtual void rewinddir (DIR *);
virtual int closedir (DIR *); virtual int closedir (DIR *);
}; };
@ -382,7 +382,7 @@ class fhandler_socket: public fhandler_base
int ioctl (unsigned int cmd, void *); int ioctl (unsigned int cmd, void *);
int fcntl (int cmd, void *); int fcntl (int cmd, void *);
off_t lseek (off_t, int) { return 0; } __off32_t lseek (__off32_t, int) { return 0; }
int close (); int close ();
void hclose (HANDLE) {close ();} void hclose (HANDLE) {close ();}
int dup (fhandler_base *child); int dup (fhandler_base *child);
@ -417,7 +417,7 @@ class fhandler_pipe: public fhandler_base
unsigned id; unsigned id;
public: public:
fhandler_pipe (DWORD devtype); fhandler_pipe (DWORD devtype);
off_t lseek (off_t offset, int whence); __off32_t lseek (__off32_t offset, int whence);
select_record *select_read (select_record *s); select_record *select_read (select_record *s);
select_record *select_write (select_record *s); select_record *select_write (select_record *s);
select_record *select_except (select_record *s); select_record *select_except (select_record *s);
@ -489,7 +489,7 @@ class fhandler_dev_floppy: public fhandler_dev_raw
virtual int open (path_conv *, int flags, mode_t mode = 0); virtual int open (path_conv *, int flags, mode_t mode = 0);
virtual int close (void); virtual int close (void);
virtual off_t lseek (off_t offset, int whence); virtual __off32_t lseek (__off32_t offset, int whence);
virtual int ioctl (unsigned int cmd, void *buf); virtual int ioctl (unsigned int cmd, void *buf);
}; };
@ -512,7 +512,7 @@ class fhandler_dev_tape: public fhandler_dev_raw
int open (path_conv *, int flags, mode_t mode = 0); int open (path_conv *, int flags, mode_t mode = 0);
int close (void); int close (void);
off_t lseek (off_t offset, int whence); __off32_t lseek (__off32_t offset, int whence);
int __stdcall fstat (struct stat *buf, path_conv *) __attribute__ ((regparm (3))); int __stdcall fstat (struct stat *buf, path_conv *) __attribute__ ((regparm (3)));
@ -548,15 +548,15 @@ class fhandler_disk_file: public fhandler_base
int __stdcall fstat (struct stat *buf, path_conv *pc) __attribute__ ((regparm (3))); int __stdcall fstat (struct stat *buf, path_conv *pc) __attribute__ ((regparm (3)));
int __stdcall fstat_helper (struct stat *buf) __attribute__ ((regparm (2))); int __stdcall fstat_helper (struct stat *buf) __attribute__ ((regparm (2)));
HANDLE mmap (caddr_t *addr, size_t len, DWORD access, int flags, off_t off); HANDLE mmap (caddr_t *addr, size_t len, DWORD access, int flags, __off32_t off);
int munmap (HANDLE h, caddr_t addr, size_t len); int munmap (HANDLE h, caddr_t addr, size_t len);
int msync (HANDLE h, caddr_t addr, size_t len, int flags); int msync (HANDLE h, caddr_t addr, size_t len, int flags);
BOOL fixup_mmap_after_fork (HANDLE h, DWORD access, DWORD offset, BOOL fixup_mmap_after_fork (HANDLE h, DWORD access, DWORD offset,
DWORD size, void *address); DWORD size, void *address);
DIR *opendir (path_conv& pc); DIR *opendir (path_conv& pc);
struct dirent *readdir (DIR *); struct dirent *readdir (DIR *);
off_t telldir (DIR *); __off32_t telldir (DIR *);
void seekdir (DIR *, off_t); void seekdir (DIR *, __off32_t);
void rewinddir (DIR *); void rewinddir (DIR *);
int closedir (DIR *); int closedir (DIR *);
}; };
@ -572,8 +572,8 @@ class fhandler_cygdrive: public fhandler_disk_file
fhandler_cygdrive (int unit); fhandler_cygdrive (int unit);
DIR *opendir (path_conv& pc); DIR *opendir (path_conv& pc);
struct dirent *readdir (DIR *); struct dirent *readdir (DIR *);
off_t telldir (DIR *); __off32_t telldir (DIR *);
void seekdir (DIR *, off_t); void seekdir (DIR *, __off32_t);
void rewinddir (DIR *); void rewinddir (DIR *);
int closedir (DIR *); int closedir (DIR *);
int __stdcall fstat (struct stat *buf, path_conv *pc) __attribute__ ((regparm (3))); int __stdcall fstat (struct stat *buf, path_conv *pc) __attribute__ ((regparm (3)));
@ -606,7 +606,7 @@ class fhandler_serial: public fhandler_base
int tcflow (int); int tcflow (int);
int tcsetattr (int a, const struct termios *t); int tcsetattr (int a, const struct termios *t);
int tcgetattr (struct termios *t); int tcgetattr (struct termios *t);
off_t lseek (off_t, int) { return 0; } __off32_t lseek (__off32_t, int) { return 0; }
int tcflush (int); int tcflush (int);
void dump (); void dump ();
int is_tty () { return 1; } int is_tty () { return 1; }
@ -837,7 +837,7 @@ class fhandler_tty_slave: public fhandler_tty_common
int tcflush (int); int tcflush (int);
int ioctl (unsigned int cmd, void *); int ioctl (unsigned int cmd, void *);
off_t lseek (off_t, int) { return 0; } __off32_t lseek (__off32_t, int) { return 0; }
select_record *select_read (select_record *s); select_record *select_read (select_record *s);
int ready_for_read (int fd, DWORD howlong); int ready_for_read (int fd, DWORD howlong);
}; };
@ -864,7 +864,7 @@ class fhandler_pty_master: public fhandler_tty_common
int tcflush (int); int tcflush (int);
int ioctl (unsigned int cmd, void *); int ioctl (unsigned int cmd, void *);
off_t lseek (off_t, int) { return 0; } __off32_t lseek (__off32_t, int) { return 0; }
char *ptsname (); char *ptsname ();
void set_close_on_exec (int val); void set_close_on_exec (int val);
@ -903,7 +903,7 @@ class fhandler_dev_zero: public fhandler_base
int open (path_conv *, int flags, mode_t mode = 0); int open (path_conv *, int flags, mode_t mode = 0);
int write (const void *ptr, size_t len); int write (const void *ptr, size_t len);
int __stdcall read (void *ptr, size_t len) __attribute__ ((regparm (3))); int __stdcall read (void *ptr, size_t len) __attribute__ ((regparm (3)));
off_t lseek (off_t offset, int whence); __off32_t lseek (__off32_t offset, int whence);
int close (void); int close (void);
void dump (); void dump ();
@ -926,7 +926,7 @@ class fhandler_dev_random: public fhandler_base
int open (path_conv *, int flags, mode_t mode = 0); int open (path_conv *, int flags, mode_t mode = 0);
int write (const void *ptr, size_t len); int write (const void *ptr, size_t len);
int __stdcall read (void *ptr, size_t len) __attribute__ ((regparm (3))); int __stdcall read (void *ptr, size_t len) __attribute__ ((regparm (3)));
off_t lseek (off_t offset, int whence); __off32_t lseek (__off32_t offset, int whence);
int close (void); int close (void);
int dup (fhandler_base *child); int dup (fhandler_base *child);
@ -947,12 +947,12 @@ class fhandler_dev_mem: public fhandler_base
int open (path_conv *, int flags, mode_t mode = 0); int open (path_conv *, int flags, mode_t mode = 0);
int write (const void *ptr, size_t ulen); int write (const void *ptr, size_t ulen);
int __stdcall read (void *ptr, size_t len) __attribute__ ((regparm (3))); int __stdcall read (void *ptr, size_t len) __attribute__ ((regparm (3)));
off_t lseek (off_t offset, int whence); __off32_t lseek (__off32_t offset, int whence);
int close (void); int close (void);
int __stdcall fstat (struct stat *buf, path_conv *) __attribute__ ((regparm (3))); int __stdcall fstat (struct stat *buf, path_conv *) __attribute__ ((regparm (3)));
int dup (fhandler_base *child); int dup (fhandler_base *child);
HANDLE mmap (caddr_t *addr, size_t len, DWORD access, int flags, off_t off); HANDLE mmap (caddr_t *addr, size_t len, DWORD access, int flags, __off32_t off);
int munmap (HANDLE h, caddr_t addr, size_t len); int munmap (HANDLE h, caddr_t addr, size_t len);
int msync (HANDLE h, caddr_t addr, size_t len, int flags); int msync (HANDLE h, caddr_t addr, size_t len, int flags);
BOOL fixup_mmap_after_fork (HANDLE h, DWORD access, DWORD offset, BOOL fixup_mmap_after_fork (HANDLE h, DWORD access, DWORD offset,
@ -969,7 +969,7 @@ class fhandler_dev_clipboard: public fhandler_base
int open (path_conv *, int flags, mode_t mode = 0); int open (path_conv *, int flags, mode_t mode = 0);
int write (const void *ptr, size_t len); int write (const void *ptr, size_t len);
int __stdcall read (void *ptr, size_t len) __attribute__ ((regparm (3))); int __stdcall read (void *ptr, size_t len) __attribute__ ((regparm (3)));
off_t lseek (off_t offset, int whence); __off32_t lseek (__off32_t offset, int whence);
int close (void); int close (void);
int dup (fhandler_base *child); int dup (fhandler_base *child);
@ -977,7 +977,7 @@ class fhandler_dev_clipboard: public fhandler_base
void dump (); void dump ();
private: private:
off_t pos; __off32_t pos;
void *membuffer; void *membuffer;
size_t msize; size_t msize;
bool eof; bool eof;
@ -995,7 +995,7 @@ class fhandler_windows: public fhandler_base
int write (const void *ptr, size_t len); int write (const void *ptr, size_t len);
int __stdcall read (void *ptr, size_t len) __attribute__ ((regparm (3))); int __stdcall read (void *ptr, size_t len) __attribute__ ((regparm (3)));
int ioctl (unsigned int cmd, void *); int ioctl (unsigned int cmd, void *);
off_t lseek (off_t, int) { return 0; } __off32_t lseek (__off32_t, int) { return 0; }
int close (void) { return 0; } int close (void) { return 0; }
void set_close_on_exec (int val); void set_close_on_exec (int val);
@ -1021,7 +1021,7 @@ class fhandler_dev_dsp : public fhandler_base
int write (const void *ptr, size_t len); int write (const void *ptr, size_t len);
int __stdcall read (void *ptr, size_t len) __attribute__ ((regparm (3))); int __stdcall read (void *ptr, size_t len) __attribute__ ((regparm (3)));
int ioctl (unsigned int cmd, void *); int ioctl (unsigned int cmd, void *);
off_t lseek (off_t, int); __off32_t lseek (__off32_t, int);
int close (void); int close (void);
int dup (fhandler_base * child); int dup (fhandler_base * child);
void dump (void); void dump (void);

View File

@ -246,8 +246,8 @@ fhandler_dev_clipboard::read (void *ptr, size_t len)
} }
} }
off_t __off32_t
fhandler_dev_clipboard::lseek (off_t offset, int whence) fhandler_dev_clipboard::lseek (__off32_t offset, int whence)
{ {
/* On reads we check this at read time, not seek time. /* On reads we check this at read time, not seek time.
* On writes we use this to decide how to write - empty and write, or open, copy, empty * On writes we use this to decide how to write - empty and write, or open, copy, empty

View File

@ -65,8 +65,8 @@ fhandler_disk_file::fstat (struct stat *buf, path_conv *pc)
{ {
int res = -1; int res = -1;
int oret; int oret;
uid_t uid; __uid16_t uid;
gid_t gid; __gid16_t gid;
int open_flags = O_RDONLY | O_BINARY | O_DIROPEN; int open_flags = O_RDONLY | O_BINARY | O_DIROPEN;
if (!pc) if (!pc)
@ -455,7 +455,7 @@ fhandler_disk_file::lock (int cmd, struct flock *fl)
startpos = 0; startpos = 0;
break; break;
case SEEK_CUR: case SEEK_CUR:
if ((off_t) (startpos = lseek (0, SEEK_CUR)) == (off_t)-1) if ((__off32_t) (startpos = lseek (0, SEEK_CUR)) == ILLEGAL_SEEK)
return -1; return -1;
break; break;
case SEEK_END: case SEEK_END:
@ -714,14 +714,14 @@ fhandler_disk_file::readdir (DIR *dir)
return res; return res;
} }
off_t __off32_t
fhandler_disk_file::telldir (DIR *dir) fhandler_disk_file::telldir (DIR *dir)
{ {
return dir->__d_position; return dir->__d_position;
} }
void void
fhandler_disk_file::seekdir (DIR *dir, off_t loc) fhandler_disk_file::seekdir (DIR *dir, __off32_t loc)
{ {
rewinddir (dir); rewinddir (dir);
while (loc > dir->__d_position) while (loc > dir->__d_position)
@ -818,14 +818,14 @@ fhandler_cygdrive::readdir (DIR *dir)
return dir->__d_dirent; return dir->__d_dirent;
} }
off_t __off32_t
fhandler_cygdrive::telldir (DIR *dir) fhandler_cygdrive::telldir (DIR *dir)
{ {
return fhandler_disk_file::telldir (dir); return fhandler_disk_file::telldir (dir);
} }
void void
fhandler_cygdrive::seekdir (DIR *dir, off_t loc) fhandler_cygdrive::seekdir (DIR *dir, __off32_t loc)
{ {
if (!iscygdrive_root ()) if (!iscygdrive_root ())
return fhandler_disk_file::seekdir (dir, loc); return fhandler_disk_file::seekdir (dir, loc);

View File

@ -482,8 +482,8 @@ fhandler_dev_dsp::read (void *ptr, size_t len)
return len; return len;
} }
off_t __off32_t
fhandler_dev_dsp::lseek (off_t offset, int whence) fhandler_dev_dsp::lseek (__off32_t offset, int whence)
{ {
return 0; return 0;
} }

View File

@ -77,16 +77,16 @@ fhandler_dev_floppy::close (void)
return fhandler_dev_raw::close (); return fhandler_dev_raw::close ();
} }
off_t __off32_t
fhandler_dev_floppy::lseek (off_t offset, int whence) fhandler_dev_floppy::lseek (__off32_t offset, int whence)
{ {
int ret; int ret;
char buf[512]; char buf[512];
long long drive_size = 0; long long drive_size = 0;
long long lloffset = offset; long long lloffset = offset;
long long current_position; long long current_position;
off_t sector_aligned_offset; __off32_t sector_aligned_offset;
off_t bytes_left; __off32_t bytes_left;
DWORD low; DWORD low;
LONG high = 0; LONG high = 0;
@ -158,12 +158,12 @@ fhandler_dev_floppy::lseek (off_t offset, int whence)
} }
high = lloffset >> 32; high = lloffset >> 32;
low = lloffset & 0xffffffff; low = lloffset & 0xffffffff;
if (high || (off_t) low < 0) if (high || (__off32_t) low < 0)
{ {
set_errno (EFBIG); set_errno (EFBIG);
return -1; return -1;
} }
offset = (off_t) low; offset = (__off32_t) low;
/* FIXME: sector can possibly be not 512 bytes long */ /* FIXME: sector can possibly be not 512 bytes long */
sector_aligned_offset = (offset / 512) * 512; sector_aligned_offset = (offset / 512) * 512;

View File

@ -231,8 +231,8 @@ fhandler_dev_mem::close (void)
return fhandler_base::close (); return fhandler_base::close ();
} }
off_t __off32_t
fhandler_dev_mem::lseek (off_t offset, int whence) fhandler_dev_mem::lseek (__off32_t offset, int whence)
{ {
switch (whence) switch (whence)
{ {
@ -251,13 +251,13 @@ fhandler_dev_mem::lseek (off_t offset, int whence)
default: default:
set_errno (EINVAL); set_errno (EINVAL);
return (off_t) -1; return ILLEGAL_SEEK;
} }
if (pos > mem_size) if (pos > mem_size)
{ {
set_errno (EINVAL); set_errno (EINVAL);
return (off_t) -1; return ILLEGAL_SEEK;
} }
return pos; return pos;
@ -265,7 +265,7 @@ fhandler_dev_mem::lseek (off_t offset, int whence)
HANDLE HANDLE
fhandler_dev_mem::mmap (caddr_t *addr, size_t len, DWORD access, fhandler_dev_mem::mmap (caddr_t *addr, size_t len, DWORD access,
int flags, off_t off) int flags, __off32_t off)
{ {
if ((DWORD) off >= mem_size if ((DWORD) off >= mem_size
|| (DWORD) len >= mem_size || (DWORD) len >= mem_size

View File

@ -132,8 +132,8 @@ fhandler_dev_random::read (void *ptr, size_t len)
return -1; return -1;
} }
off_t __off32_t
fhandler_dev_random::lseek (off_t, int) fhandler_dev_random::lseek (__off32_t, int)
{ {
return 0; return 0;
} }

View File

@ -164,8 +164,8 @@ fhandler_dev_tape::fstat (struct stat *buf, path_conv *pc)
return ret; return ret;
} }
off_t __off32_t
fhandler_dev_tape::lseek (off_t offset, int whence) fhandler_dev_tape::lseek (__off32_t offset, int whence)
{ {
struct mtop op; struct mtop op;
struct mtpos pos; struct mtpos pos;
@ -179,7 +179,7 @@ fhandler_dev_tape::lseek (off_t offset, int whence)
if (ioctl (MTIOCPOS, &pos)) if (ioctl (MTIOCPOS, &pos))
{ {
return (off_t) -1; return ILLEGAL_SEEK;
} }
switch (whence) switch (whence)

View File

@ -41,8 +41,8 @@ fhandler_dev_zero::read (void *ptr, size_t len)
return len; return len;
} }
off_t __off32_t
fhandler_dev_zero::lseek (off_t, int) fhandler_dev_zero::lseek (__off32_t, int)
{ {
return 0; return 0;
} }

View File

@ -32,7 +32,7 @@ details. */
on the first call that needs information from it. */ on the first call that needs information from it. */
static NO_COPY const char *etc_group = "/etc/group"; static NO_COPY const char *etc_group = "/etc/group";
static struct group *group_buf; /* group contents in memory */ static struct __group16 *group_buf; /* group contents in memory */
static int curr_lines; static int curr_lines;
static int max_lines; static int max_lines;
@ -46,7 +46,7 @@ static int grp_pos = 0;
static pwdgrp_check group_state; static pwdgrp_check group_state;
static int static int
parse_grp (struct group &grp, const char *line) parse_grp (struct __group16 &grp, const char *line)
{ {
int len = strlen(line); int len = strlen(line);
char *newline = (char *) malloc (len + 1); char *newline = (char *) malloc (len + 1);
@ -111,7 +111,7 @@ add_grp_line (const char *line)
if (curr_lines == max_lines) if (curr_lines == max_lines)
{ {
max_lines += 10; max_lines += 10;
group_buf = (struct group *) realloc (group_buf, max_lines * sizeof (struct group)); group_buf = (struct __group16 *) realloc (group_buf, max_lines * sizeof (struct __group16));
} }
if (parse_grp (group_buf[curr_lines], line)) if (parse_grp (group_buf[curr_lines], line))
curr_lines++; curr_lines++;
@ -208,10 +208,10 @@ read_etc_group ()
} }
extern "C" extern "C"
struct group * struct __group16 *
getgrgid (gid_t gid) getgrgid (__gid16_t gid)
{ {
struct group * default_grp = NULL; struct __group16 * default_grp = NULL;
if (group_state <= initializing) if (group_state <= initializing)
read_etc_group(); read_etc_group();
@ -227,7 +227,7 @@ getgrgid (gid_t gid)
} }
extern "C" extern "C"
struct group * struct __group16 *
getgrnam (const char *name) getgrnam (const char *name)
{ {
if (group_state <= initializing) if (group_state <= initializing)
@ -249,7 +249,7 @@ endgrent()
} }
extern "C" extern "C"
struct group * struct __group16 *
getgrent() getgrent()
{ {
if (group_state <= initializing) if (group_state <= initializing)
@ -269,7 +269,7 @@ setgrent ()
} }
/* Internal function. ONLY USE THIS INTERNALLY, NEVER `getgrent'!!! */ /* Internal function. ONLY USE THIS INTERNALLY, NEVER `getgrent'!!! */
struct group * struct __group16 *
internal_getgrent (int pos) internal_getgrent (int pos)
{ {
if (group_state <= initializing) if (group_state <= initializing)
@ -281,12 +281,12 @@ internal_getgrent (int pos)
} }
int int
getgroups (int gidsetsize, gid_t *grouplist, gid_t gid, const char *username) getgroups (int gidsetsize, __gid16_t *grouplist, __gid16_t gid, const char *username)
{ {
HANDLE hToken = NULL; HANDLE hToken = NULL;
DWORD size; DWORD size;
int cnt = 0; int cnt = 0;
struct group *gr; struct __group16 *gr;
if (group_state <= initializing) if (group_state <= initializing)
read_etc_group(); read_etc_group();
@ -356,14 +356,14 @@ error:
extern "C" extern "C"
int int
getgroups (int gidsetsize, gid_t *grouplist) getgroups (int gidsetsize, __gid16_t *grouplist)
{ {
return getgroups (gidsetsize, grouplist, myself->gid, cygheap->user.name ()); return getgroups (gidsetsize, grouplist, myself->gid, cygheap->user.name ());
} }
extern "C" extern "C"
int int
initgroups (const char *, gid_t) initgroups (const char *, __gid16_t)
{ {
return 0; return 0;
} }

View File

@ -58,12 +58,27 @@ extern "C" {
#define MASK CLASS_OBJ #define MASK CLASS_OBJ
#define OTHER OTHER_OBJ #define OTHER OTHER_OBJ
typedef struct acl { #ifdef __INSIDE_CYGWIN__
int a_type; /* entry type */ typedef struct __acl16 {
uid_t a_id; /* UID | GID */ int a_type; /* entry type */
mode_t a_perm; /* permissions */ __uid16_t a_id; /* UID | GID */
} aclent_t; mode_t a_perm; /* permissions */
} __aclent16_t;
typedef struct __acl32 {
int a_type; /* entry type */
__uid32_t a_id; /* UID | GID */
mode_t a_perm; /* permissions */
} __aclent32_t;
#endif
typedef struct __acl {
int a_type; /* entry type */
uid_t a_id; /* UID | GID */
mode_t a_perm; /* permissions */
} __aclent_t;
#ifndef __INSIDE_CYGWIN__
int _EXFUN(acl,(const char *path, int cmd, int nentries, aclent_t *aclbufp)); int _EXFUN(acl,(const char *path, int cmd, int nentries, aclent_t *aclbufp));
int _EXFUN(lacl,(const char *path, int cmd, int nentries, aclent_t *aclbufp)); int _EXFUN(lacl,(const char *path, int cmd, int nentries, aclent_t *aclbufp));
int _EXFUN(facl,(int fd, int cmd, int nentries, aclent_t *aclbufp)); int _EXFUN(facl,(int fd, int cmd, int nentries, aclent_t *aclbufp));
@ -75,6 +90,7 @@ int _EXFUN(acltopbits,(aclent_t *aclbufp, int nentries, mode_t *pbitsp));
int _EXFUN(aclfrompbits,(aclent_t *aclbufp, int nentries, mode_t *pbitsp)); int _EXFUN(aclfrompbits,(aclent_t *aclbufp, int nentries, mode_t *pbitsp));
char *_EXFUN(acltotext,(aclent_t *aclbufp, int aclcnt)); char *_EXFUN(acltotext,(aclent_t *aclbufp, int aclcnt));
aclent_t *_EXFUN(aclfromtext,(char *acltextp, int *aclcnt)); aclent_t *_EXFUN(aclfromtext,(char *acltextp, int *aclcnt));
#endif
#ifdef __cplusplus #ifdef __cplusplus
} }

View File

@ -34,6 +34,9 @@ struct __group32
__gid32_t gr_gid; __gid32_t gr_gid;
char **gr_mem; char **gr_mem;
}; };
struct __group16 * getgrgid (__gid16_t gid);
struct __group16 * getgrnam (const char *name);
#endif #endif
#ifdef __cplusplus #ifdef __cplusplus

View File

@ -256,7 +256,7 @@ public:
mmap_record *add_record (mmap_record r); mmap_record *add_record (mmap_record r);
void erase (int i); void erase (int i);
mmap_record *match (DWORD off, DWORD len); mmap_record *match (DWORD off, DWORD len);
off_t match (caddr_t addr, DWORD len, off_t start); __off32_t match (caddr_t addr, DWORD len, __off32_t start);
}; };
list::list () list::list ()
@ -307,14 +307,14 @@ list::match (DWORD off, DWORD len)
} }
/* Used in munmap() */ /* Used in munmap() */
off_t __off32_t
list::match (caddr_t addr, DWORD len, off_t start) list::match (caddr_t addr, DWORD len, __off32_t start)
{ {
for (int i = start + 1; i < nrecs; ++i) for (int i = start + 1; i < nrecs; ++i)
if (addr >= recs[i].get_address () if (addr >= recs[i].get_address ()
&& addr + len <= recs[i].get_address () + recs[i].get_size ()) && addr + len <= recs[i].get_address () + recs[i].get_size ())
return i; return i;
return (off_t)-1; return ILLEGAL_SEEK;
} }
void void
@ -400,7 +400,7 @@ static map *mmapped_areas;
extern "C" extern "C"
caddr_t caddr_t
mmap (caddr_t addr, size_t len, int prot, int flags, int fd, off_t off) mmap (caddr_t addr, size_t len, int prot, int flags, int fd, __off32_t off)
{ {
syscall_printf ("addr %x, len %d, prot %x, flags %x, fd %d, off %d", syscall_printf ("addr %x, len %d, prot %x, flags %x, fd %d, off %d",
addr, len, prot, flags, fd, off); addr, len, prot, flags, fd, off);
@ -589,7 +589,7 @@ munmap (caddr_t addr, size_t len)
list *l = mmapped_areas->lists[it]; list *l = mmapped_areas->lists[it];
if (l) if (l)
{ {
off_t li = -1; __off32_t li = ILLEGAL_SEEK;
if ((li = l->match(addr, len, li)) >= 0) if ((li = l->match(addr, len, li)) >= 0)
{ {
mmap_record *rec = l->recs + li; mmap_record *rec = l->recs + li;
@ -695,7 +695,7 @@ msync (caddr_t addr, size_t len, int flags)
*/ */
HANDLE HANDLE
fhandler_base::mmap (caddr_t *addr, size_t len, DWORD access, fhandler_base::mmap (caddr_t *addr, size_t len, DWORD access,
int flags, off_t off) int flags, __off32_t off)
{ {
set_errno (ENODEV); set_errno (ENODEV);
return INVALID_HANDLE_VALUE; return INVALID_HANDLE_VALUE;
@ -726,7 +726,7 @@ fhandler_base::fixup_mmap_after_fork (HANDLE h, DWORD access, DWORD offset,
/* Implementation for disk files. */ /* Implementation for disk files. */
HANDLE HANDLE
fhandler_disk_file::mmap (caddr_t *addr, size_t len, DWORD access, fhandler_disk_file::mmap (caddr_t *addr, size_t len, DWORD access,
int flags, off_t off) int flags, __off32_t off)
{ {
DWORD protect; DWORD protect;

View File

@ -183,7 +183,7 @@ read_etc_passwd ()
/* Cygwin internal */ /* Cygwin internal */
/* If this ever becomes non-reentrant, update all the getpw*_r functions */ /* If this ever becomes non-reentrant, update all the getpw*_r functions */
static struct passwd * static struct passwd *
search_for (uid_t uid, const char *name) search_for (__uid16_t uid, const char *name)
{ {
struct passwd *res = 0; struct passwd *res = 0;
struct passwd *default_pw = 0; struct passwd *default_pw = 0;
@ -214,7 +214,7 @@ search_for (uid_t uid, const char *name)
} }
extern "C" struct passwd * extern "C" struct passwd *
getpwuid (uid_t uid) getpwuid (__uid16_t uid)
{ {
if (passwd_state <= initializing) if (passwd_state <= initializing)
read_etc_passwd (); read_etc_passwd ();
@ -225,7 +225,7 @@ getpwuid (uid_t uid)
} }
extern "C" int extern "C" int
getpwuid_r (uid_t uid, struct passwd *pwd, char *buffer, size_t bufsize, struct passwd **result) getpwuid_r (__uid16_t uid, struct passwd *pwd, char *buffer, size_t bufsize, struct passwd **result)
{ {
*result = NULL; *result = NULL;
@ -337,7 +337,7 @@ getpwent (void)
} }
extern "C" struct passwd * extern "C" struct passwd *
getpwduid (uid_t) getpwduid (__uid16_t)
{ {
return NULL; return NULL;
} }

View File

@ -87,7 +87,7 @@ pinfo_init (char **envp, int envc)
myself->ppid = 1; myself->ppid = 1;
myself->pgid = myself->sid = myself->pid; myself->pgid = myself->sid = myself->pid;
myself->ctty = -1; myself->ctty = -1;
myself->uid = USHRT_MAX; myself->uid = ILLEGAL_UID;
environ_init (NULL, 0); /* call after myself has been set up */ environ_init (NULL, 0); /* call after myself has been set up */
} }

View File

@ -65,8 +65,8 @@ public:
if not found. This data resides in the shared data area (allowing if not found. This data resides in the shared data area (allowing
tasks to store whatever they want here) so it's for informational tasks to store whatever they want here) so it's for informational
purposes only. */ purposes only. */
uid_t uid; /* User ID */ __uid16_t uid; /* User ID */
gid_t gid; /* Group ID */ __gid16_t gid; /* Group ID */
pid_t pgid; /* Process group ID */ pid_t pgid; /* Process group ID */
pid_t sid; /* Session ID */ pid_t sid; /* Session ID */
int ctty; /* Control tty */ int ctty; /* Control tty */

View File

@ -31,8 +31,8 @@ fhandler_pipe::fhandler_pipe (DWORD devtype)
{ {
} }
off_t __off32_t
fhandler_pipe::lseek (off_t offset, int whence) fhandler_pipe::lseek (__off32_t offset, int whence)
{ {
debug_printf ("(%d, %d)", offset, whence); debug_printf ("(%d, %d)", offset, whence);
set_errno (ESPIPE); set_errno (ESPIPE);

View File

@ -34,8 +34,11 @@ details. */
#include "pinfo.h" #include "pinfo.h"
#include "cygheap.h" #include "cygheap.h"
extern "C" int aclsort (int nentries, int, __aclent16_t *aclbufp);
extern "C" int acl (const char *path, int cmd, int nentries, __aclent16_t *aclbufp);
static int static int
searchace (aclent_t *aclp, int nentries, int type, int id = -1) searchace (__aclent16_t *aclp, int nentries, int type, int id = -1)
{ {
int i; int i;
@ -47,7 +50,7 @@ searchace (aclent_t *aclp, int nentries, int type, int id = -1)
} }
static int static int
setacl (const char *file, int nentries, aclent_t *aclbufp) setacl (const char *file, int nentries, __aclent16_t *aclbufp)
{ {
DWORD sd_size = 4096; DWORD sd_size = 4096;
char sd_buf[4096]; char sd_buf[4096];
@ -106,7 +109,7 @@ setacl (const char *file, int nentries, aclent_t *aclbufp)
cygsid sid; cygsid sid;
struct passwd *pw; struct passwd *pw;
struct group *gr; struct __group16 *gr;
int pos; int pos;
if (!InitializeAcl (acl, 3072, ACL_REVISION)) if (!InitializeAcl (acl, 3072, ACL_REVISION))
@ -213,7 +216,7 @@ setacl (const char *file, int nentries, aclent_t *aclbufp)
} }
static void static void
getace (aclent_t &acl, int type, int id, DWORD win_ace_mask, DWORD win_ace_type) getace (__aclent16_t &acl, int type, int id, DWORD win_ace_mask, DWORD win_ace_type)
{ {
acl.a_type = type; acl.a_type = type;
acl.a_id = id; acl.a_id = id;
@ -238,7 +241,7 @@ getace (aclent_t &acl, int type, int id, DWORD win_ace_mask, DWORD win_ace_type)
} }
static int static int
getacl (const char *file, DWORD attr, int nentries, aclent_t *aclbufp) getacl (const char *file, DWORD attr, int nentries, __aclent16_t *aclbufp)
{ {
DWORD sd_size = 4096; DWORD sd_size = 4096;
char sd_buf[4096]; char sd_buf[4096];
@ -254,8 +257,8 @@ getacl (const char *file, DWORD attr, int nentries, aclent_t *aclbufp)
PSID owner_sid; PSID owner_sid;
PSID group_sid; PSID group_sid;
BOOL dummy; BOOL dummy;
uid_t uid; __uid16_t uid;
gid_t gid; __gid16_t gid;
if (!GetSecurityDescriptorOwner (psd, &owner_sid, &dummy)) if (!GetSecurityDescriptorOwner (psd, &owner_sid, &dummy))
{ {
@ -273,8 +276,8 @@ getacl (const char *file, DWORD attr, int nentries, aclent_t *aclbufp)
} }
gid = cygsid (group_sid).get_gid (); gid = cygsid (group_sid).get_gid ();
aclent_t lacl[MAX_ACL_ENTRIES]; __aclent16_t lacl[MAX_ACL_ENTRIES];
memset (&lacl, 0, MAX_ACL_ENTRIES * sizeof (aclent_t)); memset (&lacl, 0, MAX_ACL_ENTRIES * sizeof (__aclent16_t));
lacl[0].a_type = USER_OBJ; lacl[0].a_type = USER_OBJ;
lacl[0].a_id = uid; lacl[0].a_id = uid;
lacl[1].a_type = GROUP_OBJ; lacl[1].a_type = GROUP_OBJ;
@ -298,7 +301,7 @@ getacl (const char *file, DWORD attr, int nentries, aclent_t *aclbufp)
for (pos = 0; pos < MIN_ACL_ENTRIES; ++pos) for (pos = 0; pos < MIN_ACL_ENTRIES; ++pos)
lacl[pos].a_perm = S_IRWXU | S_IRWXG | S_IRWXO; lacl[pos].a_perm = S_IRWXU | S_IRWXG | S_IRWXO;
pos = nentries < MIN_ACL_ENTRIES ? nentries : MIN_ACL_ENTRIES; pos = nentries < MIN_ACL_ENTRIES ? nentries : MIN_ACL_ENTRIES;
memcpy (aclbufp, lacl, pos * sizeof (aclent_t)); memcpy (aclbufp, lacl, pos * sizeof (__aclent16_t));
return pos; return pos;
} }
@ -389,7 +392,7 @@ getacl (const char *file, DWORD attr, int nentries, aclent_t *aclbufp)
if (pos > nentries) if (pos > nentries)
pos = nentries; pos = nentries;
if (aclbufp) if (aclbufp)
memcpy (aclbufp, lacl, pos * sizeof (aclent_t)); memcpy (aclbufp, lacl, pos * sizeof (__aclent16_t));
aclsort (pos, 0, aclbufp); aclsort (pos, 0, aclbufp);
syscall_printf ("%d = getacl (%s)", pos, file); syscall_printf ("%d = getacl (%s)", pos, file);
return pos; return pos;
@ -398,7 +401,7 @@ getacl (const char *file, DWORD attr, int nentries, aclent_t *aclbufp)
int int
acl_access (const char *path, int flags) acl_access (const char *path, int flags)
{ {
aclent_t acls[MAX_ACL_ENTRIES]; __aclent16_t acls[MAX_ACL_ENTRIES];
int cnt; int cnt;
if ((cnt = acl (path, GETACL, MAX_ACL_ENTRIES, acls)) < 1) if ((cnt = acl (path, GETACL, MAX_ACL_ENTRIES, acls)) < 1)
@ -423,7 +426,7 @@ acl_access (const char *path, int flags)
cygsid owner; cygsid owner;
cygsid group; cygsid group;
struct passwd *pw; struct passwd *pw;
struct group *gr = NULL; struct __group16 *gr = NULL;
if ((pw = getpwuid (acls[i].a_id)) != NULL if ((pw = getpwuid (acls[i].a_id)) != NULL
&& owner.getfrompw (pw)) && owner.getfrompw (pw))
@ -460,7 +463,7 @@ acl_access (const char *path, int flags)
static static
int int
acl_worker (const char *path, int cmd, int nentries, aclent_t *aclbufp, acl_worker (const char *path, int cmd, int nentries, __aclent16_t *aclbufp,
int nofollow) int nofollow)
{ {
extern suffix_info stat_suffixes[]; extern suffix_info stat_suffixes[];
@ -487,7 +490,7 @@ acl_worker (const char *path, int cmd, int nentries, aclent_t *aclbufp,
else if ((nofollow && !lstat (path, &st)) else if ((nofollow && !lstat (path, &st))
|| (!nofollow && !stat (path, &st))) || (!nofollow && !stat (path, &st)))
{ {
aclent_t lacl[4]; __aclent16_t lacl[4];
if (nentries > 0) if (nentries > 0)
{ {
lacl[0].a_type = USER_OBJ; lacl[0].a_type = USER_OBJ;
@ -523,7 +526,7 @@ acl_worker (const char *path, int cmd, int nentries, aclent_t *aclbufp,
if (nentries > 4) if (nentries > 4)
nentries = 4; nentries = 4;
if (aclbufp) if (aclbufp)
memcpy (aclbufp, lacl, nentries * sizeof (aclent_t)); memcpy (aclbufp, lacl, nentries * sizeof (__aclent16_t));
ret = nentries; ret = nentries;
} }
break; break;
@ -561,21 +564,21 @@ acl_worker (const char *path, int cmd, int nentries, aclent_t *aclbufp,
extern "C" extern "C"
int int
acl (const char *path, int cmd, int nentries, aclent_t *aclbufp) acl (const char *path, int cmd, int nentries, __aclent16_t *aclbufp)
{ {
return acl_worker (path, cmd, nentries, aclbufp, 0); return acl_worker (path, cmd, nentries, aclbufp, 0);
} }
extern "C" extern "C"
int int
lacl (const char *path, int cmd, int nentries, aclent_t *aclbufp) lacl (const char *path, int cmd, int nentries, __aclent16_t *aclbufp)
{ {
return acl_worker (path, cmd, nentries, aclbufp, 1); return acl_worker (path, cmd, nentries, aclbufp, 1);
} }
extern "C" extern "C"
int int
facl (int fd, int cmd, int nentries, aclent_t *aclbufp) facl (int fd, int cmd, int nentries, __aclent16_t *aclbufp)
{ {
cygheap_fdget cfd (fd); cygheap_fdget cfd (fd);
if (cfd < 0) if (cfd < 0)
@ -596,7 +599,7 @@ facl (int fd, int cmd, int nentries, aclent_t *aclbufp)
extern "C" extern "C"
int int
aclcheck (aclent_t *aclbufp, int nentries, int *which) aclcheck (__aclent16_t *aclbufp, int nentries, int *which)
{ {
BOOL has_user_obj = FALSE; BOOL has_user_obj = FALSE;
BOOL has_group_obj = FALSE; BOOL has_group_obj = FALSE;
@ -730,7 +733,7 @@ aclcheck (aclent_t *aclbufp, int nentries, int *which)
extern "C" extern "C"
int acecmp (const void *a1, const void *a2) int acecmp (const void *a1, const void *a2)
{ {
#define ace(i) ((const aclent_t *) a##i) #define ace(i) ((const __aclent16_t *) a##i)
int ret = ace(1)->a_type - ace(2)->a_type; int ret = ace(1)->a_type - ace(2)->a_type;
if (!ret) if (!ret)
ret = ace(1)->a_id - ace(2)->a_id; ret = ace(1)->a_id - ace(2)->a_id;
@ -740,7 +743,7 @@ int acecmp (const void *a1, const void *a2)
extern "C" extern "C"
int int
aclsort (int nentries, int, aclent_t *aclbufp) aclsort (int nentries, int, __aclent16_t *aclbufp)
{ {
if (aclcheck (aclbufp, nentries, NULL)) if (aclcheck (aclbufp, nentries, NULL))
return -1; return -1;
@ -749,13 +752,13 @@ aclsort (int nentries, int, aclent_t *aclbufp)
set_errno (EINVAL); set_errno (EINVAL);
return -1; return -1;
} }
qsort((void *) aclbufp, nentries, sizeof (aclent_t), acecmp); qsort((void *) aclbufp, nentries, sizeof (__aclent16_t), acecmp);
return 0; return 0;
} }
extern "C" extern "C"
int int
acltomode (aclent_t *aclbufp, int nentries, mode_t *modep) acltomode (__aclent16_t *aclbufp, int nentries, mode_t *modep)
{ {
int pos; int pos;
@ -790,7 +793,7 @@ acltomode (aclent_t *aclbufp, int nentries, mode_t *modep)
extern "C" extern "C"
int int
aclfrommode(aclent_t *aclbufp, int nentries, mode_t *modep) aclfrommode(__aclent16_t *aclbufp, int nentries, mode_t *modep)
{ {
int pos; int pos;
@ -830,14 +833,14 @@ aclfrommode(aclent_t *aclbufp, int nentries, mode_t *modep)
extern "C" extern "C"
int int
acltopbits (aclent_t *aclbufp, int nentries, mode_t *pbitsp) acltopbits (__aclent16_t *aclbufp, int nentries, mode_t *pbitsp)
{ {
return acltomode (aclbufp, nentries, pbitsp); return acltomode (aclbufp, nentries, pbitsp);
} }
extern "C" extern "C"
int int
aclfrompbits (aclent_t *aclbufp, int nentries, mode_t *pbitsp) aclfrompbits (__aclent16_t *aclbufp, int nentries, mode_t *pbitsp)
{ {
return aclfrommode (aclbufp, nentries, pbitsp); return aclfrommode (aclbufp, nentries, pbitsp);
} }
@ -856,7 +859,7 @@ permtostr (mode_t perm)
extern "C" extern "C"
char * char *
acltotext (aclent_t *aclbufp, int aclcnt) acltotext (__aclent16_t *aclbufp, int aclcnt)
{ {
if (!aclbufp || aclcnt < 1 || aclcnt > MAX_ACL_ENTRIES if (!aclbufp || aclcnt < 1 || aclcnt > MAX_ACL_ENTRIES
|| aclcheck (aclbufp, aclcnt, NULL)) || aclcheck (aclbufp, aclcnt, NULL))
@ -932,7 +935,7 @@ permfromstr (char *perm)
} }
extern "C" extern "C"
aclent_t * __aclent16_t *
aclfromtext (char *acltextp, int *) aclfromtext (char *acltextp, int *)
{ {
if (!acltextp) if (!acltextp)
@ -941,7 +944,7 @@ aclfromtext (char *acltextp, int *)
return NULL; return NULL;
} }
char buf[strlen (acltextp) + 1]; char buf[strlen (acltextp) + 1];
aclent_t lacl[MAX_ACL_ENTRIES]; __aclent16_t lacl[MAX_ACL_ENTRIES];
memset (lacl, 0, sizeof lacl); memset (lacl, 0, sizeof lacl);
int pos = 0; int pos = 0;
strcpy (buf, acltextp); strcpy (buf, acltextp);
@ -993,7 +996,7 @@ aclfromtext (char *acltextp, int *)
c += 5; c += 5;
if (isalpha (*c)) if (isalpha (*c))
{ {
struct group *gr = getgrnam (c); struct __group16 *gr = getgrnam (c);
if (!gr) if (!gr)
{ {
set_errno (EINVAL); set_errno (EINVAL);
@ -1038,9 +1041,9 @@ aclfromtext (char *acltextp, int *)
} }
++pos; ++pos;
} }
aclent_t *aclp = (aclent_t *) malloc (pos * sizeof (aclent_t)); __aclent16_t *aclp = (__aclent16_t *) malloc (pos * sizeof (__aclent16_t));
if (aclp) if (aclp)
memcpy (aclp, lacl, pos * sizeof (aclent_t)); memcpy (aclp, lacl, pos * sizeof (__aclent16_t));
return aclp; return aclp;
} }

View File

@ -129,7 +129,7 @@ cygsid::getfrompw (const struct passwd *pw)
} }
BOOL BOOL
cygsid::getfromgr (const struct group *gr) cygsid::getfromgr (const struct __group16 *gr)
{ {
char *sp = (gr && gr->gr_passwd) ? gr->gr_passwd : NULL; char *sp = (gr && gr->gr_passwd) ? gr->gr_passwd : NULL;
return (*this = sp ?: "") != NULL; return (*this = sp ?: "") != NULL;
@ -176,7 +176,7 @@ cygsid::get_id (BOOL search_grp, int *type)
} }
if (search_grp || type) if (search_grp || type)
{ {
struct group *gr; struct __group16 *gr;
for (int gidx = 0; (gr = internal_getgrent (gidx)); ++gidx) for (int gidx = 0; (gr = internal_getgrent (gidx)); ++gidx)
{ {
if (sid.getfromgr (gr) && sid == psid) if (sid.getfromgr (gr) && sid == psid)
@ -226,7 +226,7 @@ cygsid::get_id (BOOL search_grp, int *type)
*type = GROUP; *type = GROUP;
if (id == -1) if (id == -1)
{ {
struct group *gr = getgrnam (account); struct __group16 *gr = getgrnam (account);
if (gr) if (gr)
id = gr->gr_gid; id = gr->gr_gid;
} }
@ -251,13 +251,13 @@ cygsid::get_id (BOOL search_grp, int *type)
} }
BOOL BOOL
is_grp_member (uid_t uid, gid_t gid) is_grp_member (__uid16_t uid, __gid16_t gid)
{ {
extern int getgroups (int, gid_t *, gid_t, const char *); extern int getgroups (int, __gid16_t *, __gid16_t, const char *);
BOOL grp_member = TRUE; BOOL grp_member = TRUE;
struct passwd *pw = getpwuid (uid); struct passwd *pw = getpwuid (uid);
gid_t grps[NGROUPS_MAX]; __gid16_t grps[NGROUPS_MAX];
int cnt = getgroups (NGROUPS_MAX, grps, int cnt = getgroups (NGROUPS_MAX, grps,
pw ? pw->pw_gid : myself->gid, pw ? pw->pw_gid : myself->gid,
pw ? pw->pw_name : cygheap->user.name ()); pw ? pw->pw_name : cygheap->user.name ());

View File

@ -42,7 +42,6 @@ details. */
#include "ntdll.h" #include "ntdll.h"
#include "lm.h" #include "lm.h"
extern BOOL allow_ntea; extern BOOL allow_ntea;
BOOL allow_ntsec; BOOL allow_ntsec;
/* allow_smbntsec is handled exclusively in path.cc (path_conv::check). /* allow_smbntsec is handled exclusively in path.cc (path_conv::check).
@ -451,7 +450,7 @@ get_user_primary_group (WCHAR *wlogonserver, const char *user,
static int static int
get_supplementary_group_sidlist (const char *username, cygsidlist &grp_list) get_supplementary_group_sidlist (const char *username, cygsidlist &grp_list)
{ {
struct group *gr; struct __group16 *gr;
int cnt = 0; int cnt = 0;
for (int gidx = 0; (gr = internal_getgrent (gidx)); ++gidx) for (int gidx = 0; (gr = internal_getgrent (gidx)); ++gidx)
@ -1086,7 +1085,7 @@ write_sd(const char *file, PSECURITY_DESCRIPTOR sd_buf, DWORD sd_size)
static int static int
get_nt_attribute (const char *file, int *attribute, get_nt_attribute (const char *file, int *attribute,
uid_t *uidret, gid_t *gidret) __uid16_t *uidret, __gid16_t *gidret)
{ {
if (!wincap.has_security ()) if (!wincap.has_security ())
return 0; return 0;
@ -1124,8 +1123,8 @@ get_nt_attribute (const char *file, int *attribute,
return -1; return -1;
} }
uid_t uid = cygsid(owner_sid).get_uid (); __uid16_t uid = cygsid(owner_sid).get_uid ();
gid_t gid = cygsid(group_sid).get_gid (); __gid16_t gid = cygsid(group_sid).get_gid ();
if (uidret) if (uidret)
*uidret = uid; *uidret = uid;
if (gidret) if (gidret)
@ -1235,7 +1234,7 @@ get_nt_attribute (const char *file, int *attribute,
int int
get_file_attribute (int use_ntsec, const char *file, get_file_attribute (int use_ntsec, const char *file,
int *attribute, uid_t *uidret, gid_t *gidret) int *attribute, __uid16_t *uidret, __gid16_t *gidret)
{ {
int res; int res;
@ -1306,7 +1305,7 @@ add_access_denied_ace (PACL acl, int offset, DWORD attributes,
} }
PSECURITY_DESCRIPTOR PSECURITY_DESCRIPTOR
alloc_sd (uid_t uid, gid_t gid, const char *logsrv, int attribute, alloc_sd (__uid16_t uid, __gid16_t gid, const char *logsrv, int attribute,
PSECURITY_DESCRIPTOR sd_ret, DWORD *sd_size_ret) PSECURITY_DESCRIPTOR sd_ret, DWORD *sd_size_ret)
{ {
BOOL dummy; BOOL dummy;
@ -1334,7 +1333,7 @@ alloc_sd (uid_t uid, gid_t gid, const char *logsrv, int attribute,
/* Get SID and name of new group. */ /* Get SID and name of new group. */
cygsid group_sid (NO_SID); cygsid group_sid (NO_SID);
struct group *grp = getgrgid (gid); struct __group16 *grp = getgrgid (gid);
if (grp) if (grp)
{ {
if ((!grp || !group_sid.getfromgr (grp)) if ((!grp || !group_sid.getfromgr (grp))
@ -1575,7 +1574,7 @@ set_security_attribute (int attribute, PSECURITY_ATTRIBUTES psa,
} }
static int static int
set_nt_attribute (const char *file, uid_t uid, gid_t gid, set_nt_attribute (const char *file, __uid16_t uid, __gid16_t gid,
const char *logsrv, int attribute) const char *logsrv, int attribute)
{ {
if (!wincap.has_security ()) if (!wincap.has_security ())
@ -1601,7 +1600,7 @@ set_nt_attribute (const char *file, uid_t uid, gid_t gid,
int int
set_file_attribute (int use_ntsec, const char *file, set_file_attribute (int use_ntsec, const char *file,
uid_t uid, gid_t gid, __uid16_t uid, __gid16_t gid,
int attribute, const char *logsrv) int attribute, const char *logsrv)
{ {
int ret = 0; int ret = 0;

View File

@ -55,7 +55,7 @@ public:
inline PSID set () { return psid = (PSID) sbuf; } inline PSID set () { return psid = (PSID) sbuf; }
BOOL getfrompw (const struct passwd *pw); BOOL getfrompw (const struct passwd *pw);
BOOL getfromgr (const struct group *gr); BOOL getfromgr (const struct __group16 *gr);
int get_id (BOOL search_grp, int *type = NULL); int get_id (BOOL search_grp, int *type = NULL);
inline int get_uid () { return get_id (FALSE); } inline int get_uid () { return get_id (FALSE); }
@ -159,14 +159,14 @@ extern BOOL allow_smbntsec;
and group lists so they are somehow security related. Besides that and group lists so they are somehow security related. Besides that
I didn't find a better place to declare them. */ I didn't find a better place to declare them. */
extern struct passwd *internal_getpwent (int); extern struct passwd *internal_getpwent (int);
extern struct group *internal_getgrent (int); extern struct __group16 *internal_getgrent (int);
/* File manipulation */ /* File manipulation */
int __stdcall set_process_privileges (); int __stdcall set_process_privileges ();
int __stdcall get_file_attribute (int, const char *, int *, int __stdcall get_file_attribute (int, const char *, int *,
uid_t * = NULL, gid_t * = NULL); __uid16_t * = NULL, __gid16_t * = NULL);
int __stdcall set_file_attribute (int, const char *, int); int __stdcall set_file_attribute (int, const char *, int);
int __stdcall set_file_attribute (int, const char *, uid_t, gid_t, int, const char *); int __stdcall set_file_attribute (int, const char *, __uid16_t, __gid16_t, int, const char *);
LONG __stdcall read_sd(const char *file, PSECURITY_DESCRIPTOR sd_buf, LPDWORD sd_size); LONG __stdcall read_sd(const char *file, PSECURITY_DESCRIPTOR sd_buf, LPDWORD sd_size);
LONG __stdcall write_sd(const char *file, PSECURITY_DESCRIPTOR sd_buf, DWORD sd_size); LONG __stdcall write_sd(const char *file, PSECURITY_DESCRIPTOR sd_buf, DWORD sd_size);
BOOL __stdcall add_access_allowed_ace (PACL acl, int offset, DWORD attributes, PSID sid, size_t &len_add, DWORD inherit); BOOL __stdcall add_access_allowed_ace (PACL acl, int offset, DWORD attributes, PSID sid, size_t &len_add, DWORD inherit);
@ -186,7 +186,7 @@ void extract_nt_dom_user (const struct passwd *pw, char *domain, char *user);
BOOL get_logon_server_and_user_domain (char *logonserver, char *domain); BOOL get_logon_server_and_user_domain (char *logonserver, char *domain);
/* sec_helper.cc: Security helper functions. */ /* sec_helper.cc: Security helper functions. */
BOOL __stdcall is_grp_member (uid_t uid, gid_t gid); BOOL __stdcall is_grp_member (__uid16_t uid, __gid16_t gid);
/* `lookup_name' should be called instead of LookupAccountName. /* `lookup_name' should be called instead of LookupAccountName.
* logsrv may be NULL, in this case only the local system is used for lookup. * logsrv may be NULL, in this case only the local system is used for lookup.
* The buffer for ret_sid (40 Bytes) has to be allocated by the caller! */ * The buffer for ret_sid (40 Bytes) has to be allocated by the caller! */

View File

@ -682,7 +682,7 @@ spawn_guts (HANDLE hToken, const char * prog_arg, const char *const *argv,
char wstname[1024]; char wstname[1024];
char dskname[1024]; char dskname[1024];
ciresrv.moreinfo->uid = USHRT_MAX; ciresrv.moreinfo->uid = ILLEGAL_UID;
hwst = GetProcessWindowStation (); hwst = GetProcessWindowStation ();
SetUserObjectSecurity (hwst, &dsi, get_null_sd ()); SetUserObjectSecurity (hwst, &dsi, get_null_sd ());
GetUserObjectInformation (hwst, UOI_NAME, wstname, 1024, &n); GetUserObjectInformation (hwst, UOI_NAME, wstname, 1024, &n);

View File

@ -527,10 +527,10 @@ _open (const char *unix_path, int flags, ...)
return res; return res;
} }
extern "C" off_t extern "C" __off32_t
_lseek (int fd, off_t pos, int dir) _lseek (int fd, __off32_t pos, int dir)
{ {
off_t res; __off32_t res;
sigframe thisframe (mainthread); sigframe thisframe (mainthread);
if (dir != SEEK_SET && dir != SEEK_CUR && dir != SEEK_END) if (dir != SEEK_SET && dir != SEEK_CUR && dir != SEEK_END)
@ -744,11 +744,11 @@ done:
* systems, it is only a stub that always returns zero. * systems, it is only a stub that always returns zero.
*/ */
static int static int
chown_worker (const char *name, unsigned fmode, uid_t uid, gid_t gid) chown_worker (const char *name, unsigned fmode, __uid16_t uid, __gid16_t gid)
{ {
int res; int res;
uid_t old_uid; __uid16_t old_uid;
gid_t old_gid; __gid16_t old_gid;
if (check_null_empty_str_errno (name)) if (check_null_empty_str_errno (name))
return -1; return -1;
@ -785,9 +785,9 @@ chown_worker (const char *name, unsigned fmode, uid_t uid, gid_t gid)
&old_gid); &old_gid);
if (!res) if (!res)
{ {
if (uid == (uid_t) -1) if (uid == ILLEGAL_UID)
uid = old_uid; uid = old_uid;
if (gid == (gid_t) -1) if (gid == ILLEGAL_GID)
gid = old_gid; gid = old_gid;
if (win32_path.isdir()) if (win32_path.isdir())
attrib |= S_IFDIR; attrib |= S_IFDIR;
@ -809,21 +809,21 @@ done:
} }
extern "C" int extern "C" int
chown (const char * name, uid_t uid, gid_t gid) chown (const char * name, __uid16_t uid, __gid16_t gid)
{ {
sigframe thisframe (mainthread); sigframe thisframe (mainthread);
return chown_worker (name, PC_SYM_FOLLOW, uid, gid); return chown_worker (name, PC_SYM_FOLLOW, uid, gid);
} }
extern "C" int extern "C" int
lchown (const char * name, uid_t uid, gid_t gid) lchown (const char * name, __uid16_t uid, __gid16_t gid)
{ {
sigframe thisframe (mainthread); sigframe thisframe (mainthread);
return chown_worker (name, PC_SYM_NOFOLLOW, uid, gid); return chown_worker (name, PC_SYM_NOFOLLOW, uid, gid);
} }
extern "C" int extern "C" int
fchown (int fd, uid_t uid, gid_t gid) fchown (int fd, __uid16_t uid, __gid16_t gid)
{ {
sigframe thisframe (mainthread); sigframe thisframe (mainthread);
cygheap_fdget cfd (fd); cygheap_fdget cfd (fd);
@ -888,8 +888,8 @@ chmod (const char *path, mode_t mode)
/* temporary erase read only bit, to be able to set file security */ /* temporary erase read only bit, to be able to set file security */
SetFileAttributes (win32_path, (DWORD) win32_path & ~FILE_ATTRIBUTE_READONLY); SetFileAttributes (win32_path, (DWORD) win32_path & ~FILE_ATTRIBUTE_READONLY);
uid_t uid; __uid16_t uid;
gid_t gid; __gid16_t gid;
if (win32_path.isdir ()) if (win32_path.isdir ())
mode |= S_IFDIR; mode |= S_IFDIR;
@ -1609,7 +1609,7 @@ setmode (int fd, int mode)
/* ftruncate: P96 5.6.7.1 */ /* ftruncate: P96 5.6.7.1 */
extern "C" int extern "C" int
ftruncate (int fd, off_t length) ftruncate (int fd, __off32_t length)
{ {
sigframe thisframe (mainthread); sigframe thisframe (mainthread);
int res = -1; int res = -1;
@ -1626,7 +1626,7 @@ ftruncate (int fd, off_t length)
if (cfd->get_handle ()) if (cfd->get_handle ())
{ {
/* remember curr file pointer location */ /* remember curr file pointer location */
off_t prev_loc = cfd->lseek (0, SEEK_CUR); __off32_t prev_loc = cfd->lseek (0, SEEK_CUR);
cfd->lseek (length, SEEK_SET); cfd->lseek (length, SEEK_SET);
if (!SetEndOfFile (h)) if (!SetEndOfFile (h))
@ -1646,7 +1646,7 @@ ftruncate (int fd, off_t length)
/* truncate: Provided by SVR4 and 4.3+BSD. Not part of POSIX.1 or XPG3 */ /* truncate: Provided by SVR4 and 4.3+BSD. Not part of POSIX.1 or XPG3 */
extern "C" int extern "C" int
truncate (const char *pathname, off_t length) truncate (const char *pathname, __off32_t length)
{ {
sigframe thisframe (mainthread); sigframe thisframe (mainthread);
int fd; int fd;
@ -1844,7 +1844,7 @@ mkfifo (const char *_path, mode_t mode)
/* setgid: POSIX 4.2.2.1 */ /* setgid: POSIX 4.2.2.1 */
extern "C" int extern "C" int
setgid (gid_t gid) setgid (__gid16_t gid)
{ {
int ret = setegid (gid); int ret = setegid (gid);
if (!ret) if (!ret)
@ -1854,7 +1854,7 @@ setgid (gid_t gid)
/* setuid: POSIX 4.2.2.1 */ /* setuid: POSIX 4.2.2.1 */
extern "C" int extern "C" int
setuid (uid_t uid) setuid (__uid16_t uid)
{ {
int ret = seteuid (uid); int ret = seteuid (uid);
if (!ret) if (!ret)
@ -1867,7 +1867,7 @@ extern struct passwd *internal_getlogin (cygheap_user &user);
/* seteuid: standards? */ /* seteuid: standards? */
extern "C" int extern "C" int
seteuid (uid_t uid) seteuid (__uid16_t uid)
{ {
sigframe thisframe (mainthread); sigframe thisframe (mainthread);
if (wincap.has_security ()) if (wincap.has_security ())
@ -1880,7 +1880,7 @@ seteuid (uid_t uid)
DWORD dlen = INTERNET_MAX_HOST_NAME_LENGTH + 1; DWORD dlen = INTERNET_MAX_HOST_NAME_LENGTH + 1;
SID_NAME_USE use; SID_NAME_USE use;
if (uid == (uid_t) -1 || uid == myself->uid) if (uid == ILLEGAL_UID || uid == myself->uid)
{ {
debug_printf ("new euid == current euid, nothing happens"); debug_printf ("new euid == current euid, nothing happens");
return 0; return 0;
@ -1935,7 +1935,7 @@ seteuid (uid_t uid)
BOOL current_token_is_internal_token = FALSE; BOOL current_token_is_internal_token = FALSE;
BOOL explicitely_created_token = FALSE; BOOL explicitely_created_token = FALSE;
struct group *gr = getgrgid (myself->gid); struct __group16 *gr = getgrgid (myself->gid);
debug_printf ("myself->gid: %d, gr: %d", myself->gid, gr); debug_printf ("myself->gid: %d, gr: %d", myself->gid, gr);
usersid.getfrompw (pw_new); usersid.getfrompw (pw_new);
@ -2087,14 +2087,14 @@ seteuid (uid_t uid)
/* setegid: from System V. */ /* setegid: from System V. */
extern "C" int extern "C" int
setegid (gid_t gid) setegid (__gid16_t gid)
{ {
sigframe thisframe (mainthread); sigframe thisframe (mainthread);
if (wincap.has_security ()) if (wincap.has_security ())
{ {
if (gid != (gid_t) -1) if (gid != ILLEGAL_GID)
{ {
struct group *gr; struct __group16 *gr;
if (!(gr = getgrgid (gid))) if (!(gr = getgrgid (gid)))
{ {
@ -2377,7 +2377,7 @@ logout (char *line)
{ {
struct utmp *ut; struct utmp *ut;
struct utmp ut_buf[100]; struct utmp ut_buf[100];
off_t pos = 0; /* Position in file */ __off32_t pos = 0; /* Position in file */
DWORD rd; DWORD rd;
while (!res && ReadFile (ut_fd, ut_buf, sizeof ut_buf, &rd, NULL) while (!res && ReadFile (ut_fd, ut_buf, sizeof ut_buf, &rd, NULL)

View File

@ -54,7 +54,7 @@ struct _winsup_t
/* /*
Needed for the group functions Needed for the group functions
*/ */
struct group _grp; struct __group16 _grp;
char *_namearray[2]; char *_namearray[2];
int _grp_pos; int _grp_pos;

View File

@ -174,7 +174,7 @@ internal_getlogin (cygheap_user &user)
if (psid.getfrompw (pw) && EqualSid (user.sid (), psid)) if (psid.getfrompw (pw) && EqualSid (user.sid (), psid))
{ {
user.set_name (pw->pw_name); user.set_name (pw->pw_name);
struct group *gr = getgrgid (pw->pw_gid); struct __group16 *gr = getgrgid (pw->pw_gid);
if (gr) if (gr)
if (!gsid.getfromgr (gr)) if (!gsid.getfromgr (gr))
gsid = NO_SID; gsid = NO_SID;
@ -249,9 +249,9 @@ uinfo_init ()
cygheap->user.token = INVALID_HANDLE_VALUE; cygheap->user.token = INVALID_HANDLE_VALUE;
cygheap->user.impersonated = TRUE; cygheap->user.impersonated = TRUE;
/* If uid is USHRT_MAX, the process is started from a non cygwin /* If uid is ILLEGAL_UID, the process is started from a non cygwin
process or the user context was changed in spawn.cc */ process or the user context was changed in spawn.cc */
if (myself->uid == USHRT_MAX) if (myself->uid == ILLEGAL_UID)
if ((p = internal_getlogin (cygheap->user)) != NULL) if ((p = internal_getlogin (cygheap->user)) != NULL)
{ {
myself->uid = p->pw_uid; myself->uid = p->pw_uid;
@ -283,25 +283,25 @@ getlogin (void)
return strcpy (this_username, cygheap->user.name ()); return strcpy (this_username, cygheap->user.name ());
} }
extern "C" uid_t extern "C" __uid16_t
getuid (void) getuid (void)
{ {
return cygheap->user.real_uid; return cygheap->user.real_uid;
} }
extern "C" gid_t extern "C" __gid16_t
getgid (void) getgid (void)
{ {
return cygheap->user.real_gid; return cygheap->user.real_gid;
} }
extern "C" uid_t extern "C" __uid16_t
geteuid (void) geteuid (void)
{ {
return myself->uid; return myself->uid;
} }
extern "C" gid_t extern "C" __gid16_t
getegid (void) getegid (void)
{ {
return myself->gid; return myself->gid;

View File

@ -145,6 +145,10 @@ extern "C" void __stdcall do_exit (int) __attribute__ ((noreturn));
/* UID/GID */ /* UID/GID */
void uinfo_init (void); void uinfo_init (void);
#define ILLEGAL_UID ((__uid16_t)-1)
#define ILLEGAL_GID ((__gid16_t)-1)
#define ILLEGAL_SEEK ((__off32_t)-1)
/* various events */ /* various events */
void events_init (void); void events_init (void);
void events_terminate (void); void events_terminate (void);