OSDN Git Service

* fhandler_socket.cc (fhandler_socket::fhandler_socket): Fix compiler
authorcorinna <corinna>
Fri, 21 Feb 2003 14:59:35 +0000 (14:59 +0000)
committercorinna <corinna>
Fri, 21 Feb 2003 14:59:35 +0000 (14:59 +0000)
warning.
(fhandler_socket::fstat): Simplify.  Set st_uid/st_gid to effective
uid/gid of current process in case of open sockets.

winsup/cygwin/ChangeLog
winsup/cygwin/fhandler_socket.cc

index ab1c240..53f07bd 100644 (file)
@@ -1,5 +1,12 @@
 2003-02-21  Corinna Vinschen  <corinna@vinschen.de>
 
+       * fhandler_socket.cc (fhandler_socket::fhandler_socket): Fix compiler
+       warning.
+       (fhandler_socket::fstat): Simplify.  Set st_uid/st_gid to effective
+       uid/gid of current process in case of open sockets.
+
+2003-02-21  Corinna Vinschen  <corinna@vinschen.de>
+
        * dtable.cc (dtable::build_fhandler_from_name): Set some fhandler
        data on sockets to evaluate AF_LOCAL sockets correctly.
        (dtable::build_fhandler): Set unit number on sockets.
index b10e28a..aa18320 100644 (file)
@@ -95,7 +95,7 @@ get_inet_addr (const struct sockaddr *in, int inlen,
 /* fhandler_socket */
 
 fhandler_socket::fhandler_socket (int nunit)
-  : fhandler_base (FH_SOCKET), unit (nunit), sun_path (NULL)
+  : fhandler_base (FH_SOCKET), sun_path (NULL), unit (nunit)
 {
   set_need_fork_fixup ();
   prot_info_ptr = (LPWSAPROTOCOL_INFOA) cmalloc (HEAP_BUF,
@@ -310,7 +310,7 @@ int __stdcall
 fhandler_socket::fstat (struct __stat64 *buf, path_conv *pc)
 {
   int res;
-  if (get_addr_family () == AF_LOCAL && get_sun_path ())
+  if (get_addr_family () == AF_LOCAL && get_sun_path () && !get_socket_type ())
     {
       path_conv spc (get_sun_path (),
                      PC_SYM_NOFOLLOW | PC_NULLEMPTY | PC_FULL | PC_POSIX,
@@ -321,13 +321,6 @@ fhandler_socket::fstat (struct __stat64 *buf, path_conv *pc)
       if (fh)
         {
          res = fh->fstat (buf, &spc);
-         /* Faking Linux like values on top of the file specific values. */
-         if (get_socket_type ()) /* fstat() */
-           {
-             buf->st_dev = 0;
-             buf->st_mode |= S_IRWXU | S_IRWXG | S_IRWXO;
-             buf->st_ino = (ino_t) get_handle ();
-           }
          buf->st_rdev = buf->st_size = buf->st_blocks = 0;
          return res;
        }
@@ -338,9 +331,11 @@ fhandler_socket::fstat (struct __stat64 *buf, path_conv *pc)
     {
       if (get_socket_type ()) /* fstat */
         {
+         buf->st_dev = 0;
          buf->st_ino = (ino_t) get_handle ();
-         buf->st_mode &= ~S_IFMT;
-         buf->st_mode |= S_IFSOCK;
+         buf->st_mode = S_IFSOCK | S_IRWXU | S_IRWXG | S_IRWXO;
+         buf->st_uid = geteuid32 ();
+         buf->st_gid = getegid32 ();
        }
       else
         {