]> sourceware.org Git - newlib-cygwin.git/commitdiff
* cygthread.cc (cygthread::initialized): Avoid copying on fork or some threads
authorChristopher Faylor <me@cgf.cx>
Thu, 19 Sep 2002 03:30:20 +0000 (03:30 +0000)
committerChristopher Faylor <me@cgf.cx>
Thu, 19 Sep 2002 03:30:20 +0000 (03:30 +0000)
may not end up in the pool.
(cygthread::new): Avoid race when checking for initialized.  Add debugging
code.
* fhandler.cc (fhandler_base::raw_read): Add case for ERROR_INVALID_HANDLE due
to Win95 directories.
(fhandler_base::open): Handle errors due to Win95 directories.
(fhandler_base::close): Add get_nohandle () test.
(fhandler_base::set_close_on_exec): Ditto.
(fhandler_base::fork_fixup): Ditto.
(fhandler_base::lock): Change error code to Posix EINVAL.
(fhandler_base::dup): If get_nohandle (), set new value to INVALID_HANDLE_VALUE
instead of NULL.
* fhandler_disk_file.cc (fhandler_disk_file::fstat): Call fstat_by_name if
get_nohandle ().  Remove extraneous element from strpbrk.
(fhandler_disk_file::open): Remove test for Win95 directory.
* fhandler_random.cc (fhandler_dev_random::open): Add set_nohandle ().
* fhandler_clipboard.cc (fhandler_dev_clipboard::open): Ditto.
* fhandler_zero.cc (fhandler_dev_zero::open): Ditto.
(fhandler_dev_zero::close): Delete.
* fhandler.h (class fhandler_dev_zero): Ditto.

20 files changed:
winsup/cygwin/ChangeLog
winsup/cygwin/cygthread.cc
winsup/cygwin/dtable.cc
winsup/cygwin/environ.cc
winsup/cygwin/fhandler.cc
winsup/cygwin/fhandler.h
winsup/cygwin/fhandler_clipboard.cc
winsup/cygwin/fhandler_console.cc
winsup/cygwin/fhandler_disk_file.cc
winsup/cygwin/fhandler_process.cc
winsup/cygwin/fhandler_random.cc
winsup/cygwin/fhandler_socket.cc
winsup/cygwin/fhandler_virtual.cc
winsup/cygwin/fhandler_zero.cc
winsup/cygwin/grp.cc
winsup/cygwin/net.cc
winsup/cygwin/security.cc
winsup/cygwin/strace.cc
winsup/cygwin/thread.cc
winsup/cygwin/uinfo.cc

index a856a2ee0b3b371016abdd099edf1b9b75332fcc..92fd4851f068f039c7a5ce1520f78d588d9a7b86 100644 (file)
@@ -1,3 +1,31 @@
+2002-09-18  Christopher Faylor  <cgf@redhat.com>
+
+       * cygthread.cc (cygthread::initialized): Avoid copying on fork or some
+       threads may not end up in the pool.
+       (cygthread::new): Avoid race when checking for initialized.  Add
+       debugging code.
+
+2002-09-18  Pierre Humblet <pierre.humblet@ieee.org>
+
+       * fhandler.cc (fhandler_base::raw_read): Add case for
+       ERROR_INVALID_HANDLE due to Win95 directories.
+       (fhandler_base::open): Handle errors due to Win95 directories.
+       (fhandler_base::close): Add get_nohandle () test.
+       (fhandler_base::set_close_on_exec): Ditto.
+       (fhandler_base::fork_fixup): Ditto.
+       (fhandler_base::lock): Change error code to Posix EINVAL.
+       (fhandler_base::dup): If get_nohandle (), set new value to
+       INVALID_HANDLE_VALUE instead of NULL.
+       * fhandler_disk_file.cc (fhandler_disk_file::fstat): Call fstat_by_name
+       if get_nohandle ().  Remove extraneous element from strpbrk.
+       (fhandler_disk_file::open): Remove test for Win95 directory.
+
+       * fhandler_random.cc (fhandler_dev_random::open): Add set_nohandle ().
+       * fhandler_clipboard.cc (fhandler_dev_clipboard::open): Ditto.
+       * fhandler_zero.cc (fhandler_dev_zero::open): Ditto.
+       (fhandler_dev_zero::close): Delete.
+       * fhandler.h (class fhandler_dev_zero): Ditto.
+
 2002-09-17  Robert Collins <rbtcollins@hotmail.com>
 
        * thread.cc (pthread_key::set): Preserve GetLastError(). Reported
index e5dfcc575aabc08cd3c165aa02c805edd5f21db9..b81c4c16f23d7ea671fcc91058c63cefcefdf8b1 100644 (file)
@@ -19,7 +19,7 @@ static cygthread NO_COPY threads[6];
 #define NTHREADS (sizeof (threads) / sizeof (threads[0]))
 
 DWORD NO_COPY cygthread::main_thread_id;
-bool cygthread::initialized;
+bool NO_COPY cygthread::initialized;
 
 /* Initial stub called by cygthread constructor. Performs initial
    per-thread initialization and loops waiting for new thread functions
@@ -127,8 +127,9 @@ new (size_t)
 
   for (;;)
     {
+      bool was_initialized = initialized;
       /* Search the threads array for an empty slot to use */
-      for (info = threads; info < threads + NTHREADS; info++)
+      for (info = threads + NTHREADS - 1; info >= threads; info--)
        if ((id = (DWORD) InterlockedExchange ((LPLONG) &info->avail, 0)))
          {
            info->id = id;
@@ -139,10 +140,17 @@ new (size_t)
            return info;
          }
 
-      if (!initialized)
-       Sleep (0); /* thread_runner is not be finished yet. */
+      if (!was_initialized)
+       Sleep (0); /* thread_runner is not finished yet. */
       else
-       return freerange ();
+       {
+#ifdef DEBUGGING
+         char buf[1024];
+         if (GetEnvironmentVariable ("CYGWIN_NOFREERANGE", buf, sizeof (buf)))
+           api_fatal ("Overflowed cygwin thread pool");
+#endif
+         return freerange ();
+       }
     }
 }
 
index 4e8c6f79210ee9e3824e99f631f4bdb9829320a5..9fc6f4e21dc9cbbccbfface620f8f71ea062686c 100644 (file)
@@ -730,7 +730,7 @@ handle_to_fn (HANDLE h, char *posix_fn)
   if (!strncasematch (win32_fn, DEVICE_PREFIX, DEVICE_PREFIX_LEN)
       || !QueryDosDevice (NULL, fnbuf, sizeof (fnbuf)))
     return strcpy (posix_fn, win32_fn);
-  
+
   char *p = strchr (win32_fn + DEVICE_PREFIX_LEN, '\\');
   if (!p)
     p = strchr (win32_fn + DEVICE_PREFIX_LEN, '\0');
index a38fc46ad69841a33a4b7d26cbd398969733a18c..ce6c8ba5d7ac2b84f8094d4387651e78791f6bf0 100644 (file)
@@ -960,10 +960,10 @@ build_env (const char * const *envp, char *&envblock, int &envc,
            {
              tl = new_tl + 100;
              char *new_envblock =
-                       (char *) realloc (envblock, 2 + tl);
+                       (char *) realloc (envblock, 2 + tl);
              /* If realloc moves the block, move `s' with it. */
              if (new_envblock != envblock)
-               {
+               {
                  s += new_envblock - envblock;
                  envblock = new_envblock;
                }
index 8ac42acdb4db29ae7d6d563955480a17f13b14a8..0b7bf65eef0de978cdddb053242ce000f0411533 100644 (file)
@@ -234,8 +234,8 @@ fhandler_base::set_flags (int flags, int supplied_bin)
   else if (supplied_bin)
     bin = supplied_bin;
   else
-    bin = get_w_binary () || get_r_binary () || (binmode != O_TEXT) ?
-         O_BINARY : O_TEXT;
+    bin = get_w_binary () || get_r_binary () || (binmode != O_TEXT)
+         O_BINARY : O_TEXT;
 
   openflags = flags | bin;
 
@@ -275,6 +275,7 @@ fhandler_base::raw_read (void *ptr, size_t ulen)
            return 0;
        case ERROR_INVALID_FUNCTION:
        case ERROR_INVALID_PARAMETER:
+       case ERROR_INVALID_HANDLE:
          if (openflags & O_DIROPEN)
            {
              set_errno (EISDIR);
@@ -441,11 +442,21 @@ fhandler_base::open (path_conv *pc, int flags, mode_t mode)
 
   if (x == INVALID_HANDLE_VALUE)
     {
-      if (GetLastError () == ERROR_INVALID_HANDLE)
+      if (pc->isdir () && !wincap.can_open_directories ())
+       {
+         if (mode & (O_CREAT | O_EXCL) == (O_CREAT | O_EXCL))
+           set_errno (EEXIST);
+         else if (mode & (O_WRONLY | O_RDWR))
+           set_errno (EISDIR);
+         else
+           set_nohandle (true);
+       }
+      else if (GetLastError () == ERROR_INVALID_HANDLE)
        set_errno (ENOENT);
       else
        __seterrno ();
-      goto done;
+      if (!get_nohandle ())
+       goto done;
     }
 
   /* Attributes may be set only if a file is _really_ created.
@@ -712,7 +723,7 @@ fhandler_base::readv (const struct iovec *const iov, const int iovcnt,
     {
       tot = 0;
       const struct iovec *iovptr = iov + iovcnt;
-      do 
+      do
        {
          iovptr -= 1;
          tot += iovptr->iov_len;
@@ -764,7 +775,7 @@ fhandler_base::writev (const struct iovec *const iov, const int iovcnt,
     {
       tot = 0;
       const struct iovec *iovptr = iov + iovcnt;
-      do 
+      do
        {
          iovptr -= 1;
          tot += iovptr->iov_len;
@@ -871,7 +882,7 @@ fhandler_base::close ()
   int res = -1;
 
   syscall_printf ("closing '%s' handle %p", get_name (), get_handle());
-  if (CloseHandle (get_handle()))
+  if (get_nohandle () || CloseHandle (get_handle()))
     res = 0;
   else
     {
@@ -898,7 +909,7 @@ fhandler_base::ioctl (unsigned int cmd, void *buf)
 int
 fhandler_base::lock (int, struct flock *)
 {
-  set_errno (ENOSYS);
+  set_errno (EINVAL);
   return -1;
 }
 
@@ -996,7 +1007,7 @@ fhandler_base::dup (fhandler_base *child)
 
   HANDLE nh;
   if (get_nohandle ())
-    nh = NULL;
+    nh = INVALID_HANDLE_VALUE;
   else if (!DuplicateHandle (hMainProc, get_handle(), hMainProc, &nh, 0, TRUE,
                        DUPLICATE_SAME_ACCESS))
     {
@@ -1207,7 +1218,8 @@ fhandler_base::fork_fixup (HANDLE parent, HANDLE &h, const char *name)
 void
 fhandler_base::set_close_on_exec (int val)
 {
-  set_inheritance (io_handle, val);
+  if (!get_nohandle ())
+    set_inheritance (io_handle, val);
   set_close_on_exec_flag (val);
   debug_printf ("set close_on_exec for %s to %d", get_name (), val);
 }
@@ -1216,7 +1228,8 @@ void
 fhandler_base::fixup_after_fork (HANDLE parent)
 {
   debug_printf ("inheriting '%s' from parent", get_name ());
-  fork_fixup (parent, io_handle, "io_handle");
+  if (!get_nohandle ())
+    fork_fixup (parent, io_handle, "io_handle");
 }
 
 bool
index a1e53043058e10b6bf84bb00b75b26c9b88cdbb7..6b80ff22def0d947bcd06c859b2c8c201c27a364 100644 (file)
@@ -954,7 +954,6 @@ class fhandler_dev_zero: public fhandler_base
   int write (const void *ptr, size_t len);
   int __stdcall read (void *ptr, size_t len) __attribute__ ((regparm (3)));
   __off64_t lseek (__off64_t offset, int whence);
-  int close (void);
 
   void dump ();
 };
index b1c61b9d35cfde78f998a1b3dff3105dd455abac..ce14def203578c4aaddfa5a31f1016d325b04b10 100644 (file)
@@ -73,6 +73,7 @@ fhandler_dev_clipboard::open (path_conv *, int flags, mode_t)
   membuffer = NULL;
   if (!cygnativeformat)
     cygnativeformat = RegisterClipboardFormat (CYGWIN_NATIVE);
+  set_nohandle (true);
   set_open_status ();
   return 1;
 }
index e9ca5b09dc4ed3cc4f108713e020ce0d996d26a1..895a98b8b3cc0db3ea887f23d1d4c68737dc8f64 100644 (file)
@@ -185,7 +185,7 @@ fhandler_console::send_winch_maybe ()
   SHORT y = info.dwWinSize.Y;
   SHORT x = info.dwWinSize.X;
   fillin_info ();
-              
+
   if (y != info.dwWinSize.Y || x != info.dwWinSize.X)
     tc->kill_pgrp (SIGWINCH);
 }
index 84698efe92a966d2b0c81371d872451a6d8b00a2..d6f84fd745ddf29440c81ebcf134e4c539de0493 100644 (file)
@@ -156,8 +156,12 @@ fhandler_disk_file::fstat (struct __stat64 *buf, path_conv *pc)
   bool query_open_already;
 
   if (get_io_handle ())
-    return fstat_by_handle (buf, pc);
-
+    {
+      if (get_nohandle ())
+       return fstat_by_name (buf, pc);
+      else
+       return fstat_by_handle (buf, pc);
+    }
   /* If we don't care if the file is executable or we already know if it is,
      then just do a "query open" as it is apparently much faster. */
   if (pc->exec_state () != dont_know_if_executable)
@@ -166,7 +170,7 @@ fhandler_disk_file::fstat (struct __stat64 *buf, path_conv *pc)
     query_open_already = false;
 
   if (query_open_already && strncasematch (pc->volname (), "FAT", 3)
-      && !strpbrk (get_win32_name (), "?*|<>|"))
+      && !strpbrk (get_win32_name (), "?*|<>"))
     oret = 0;
   else if (!(oret = open (pc, open_flags, 0)))
     {
@@ -191,7 +195,7 @@ fhandler_disk_file::fstat (struct __stat64 *buf, path_conv *pc)
        }
     }
 
-  if (!oret)
+  if (!oret || get_nohandle ())
     res = fstat_by_name (buf, pc);
   else
     {
@@ -363,15 +367,7 @@ fhandler_disk_file::open (path_conv *real_path, int flags, mode_t mode)
   set_has_acls (real_path->has_acls ());
   set_isremote (real_path->isremote ());
 
-  int res;
-  if (!real_path->isdir () || wincap.can_open_directories ())
-    res = this->fhandler_base::open (real_path, flags | O_DIROPEN, mode);
-  else
-    {
-      set_errno (EISDIR);
-      res = 0;
-    }
-
+  int res = this->fhandler_base::open (real_path, flags | O_DIROPEN, mode);
   if (!res)
     goto out;
 
@@ -790,7 +786,7 @@ fhandler_cygdrive::readdir (DIR *dir)
   dir->__d_position++;
   pdrive = strchr (pdrive, '\0') + 1;
   syscall_printf ("%p = readdir (%p) (%s)", &dir->__d_dirent, dir,
-                 dir->__d_dirent->d_name);
+                 dir->__d_dirent->d_name);
   return dir->__d_dirent;
 }
 
index 6f59b2abd47085cc7b4838c8dbb1040112a3b897..23f0f9a5d6335075beccd00a14b402cc41d30c3c 100644 (file)
@@ -224,7 +224,7 @@ fhandler_process::open (path_conv *pc, int flags, mode_t mode)
 
   fileid = process_file_no;
   if (!fill_filebuf ())
-       {
+       {
          res = 0;
          goto out;
        }
@@ -458,8 +458,8 @@ format_process_stat (_pinfo *p, char *destbuf, size_t maxsize)
        utime = put.UserTime.QuadPart * HZ / 10000000ULL;
        stime = put.KernelTime.QuadPart * HZ / 10000000ULL;
        if (stodi.CurrentTime.QuadPart > put.CreateTime.QuadPart)
-         start_time = (spt.KernelTime.QuadPart + spt.UserTime.QuadPart -
-                       stodi.CurrentTime.QuadPart + put.CreateTime.QuadPart) * HZ / 10000000ULL;
+        start_time = (spt.KernelTime.QuadPart + spt.UserTime.QuadPart -
+                      stodi.CurrentTime.QuadPart + put.CreateTime.QuadPart) * HZ / 10000000ULL;
        else
         /*
          * sometimes stodi.CurrentTime is a bit behind
@@ -590,7 +590,7 @@ off_t
 format_process_statm (_pinfo *p, char *destbuf, size_t maxsize)
 {
   unsigned long vmsize = 0UL, vmrss = 0UL, vmtext = 0UL, vmdata = 0UL,
-               vmlib = 0UL, vmshare = 0UL;
+               vmlib = 0UL, vmshare = 0UL;
   if (wincap.is_winnt ())
     {
       if (!get_mem_values (p->dwProcessId, &vmsize, &vmrss, &vmtext, &vmdata,
index f6edeb193da71a8953077f37d14c7629b722bdff..73d798bd61da0a29a3b3ad9d9689b08d9c10b5c4 100644 (file)
@@ -32,6 +32,7 @@ int
 fhandler_dev_random::open (path_conv *, int flags, mode_t)
 {
   set_flags ((flags & ~O_TEXT) | O_BINARY);
+  set_nohandle (true);
   set_open_status ();
   return 1;
 }
index f0a8195289d5805ba652d8eab4beca0c9acd1139..5b7e256ace1efb74c3f3ef75c8c523c020f2bca7 100644 (file)
@@ -325,7 +325,7 @@ fhandler_socket::bind (const struct sockaddr *name, int namelen)
     {
 #define un_addr ((struct sockaddr_un *) name)
       struct sockaddr_in sin;
-      int len = sizeof sin; 
+      int len = sizeof sin;
       int fd;
 
       if (strlen (un_addr->sun_path) >= UNIX_PATH_LEN)
@@ -513,45 +513,45 @@ fhandler_socket::accept (struct sockaddr *peer, int *len)
           int wait_result;
 
           wait_result = WSAWaitForMultipleEvents (2, ev, FALSE, WSA_INFINITE,
-                                                 FALSE);
-          if (wait_result == WSA_WAIT_EVENT_0)
-            WSAEnumNetworkEvents (get_socket (), ev[0], &sock_event);
+                                                 FALSE);
+         if (wait_result == WSA_WAIT_EVENT_0)
+           WSAEnumNetworkEvents (get_socket (), ev[0], &sock_event);
 
-          /* Unset events for listening socket and
-             switch back to blocking mode */
-          WSAEventSelect (get_socket (), ev[0], 0);
+         /* Unset events for listening socket and
+            switch back to blocking mode */
+         WSAEventSelect (get_socket (), ev[0], 0);
          unsigned long nonblocking = 0;
-          ioctlsocket (get_socket (), FIONBIO, &nonblocking);
-
-          switch (wait_result)
-            {
-            case WSA_WAIT_EVENT_0:
-              if (sock_event.lNetworkEvents & FD_ACCEPT)
-                {
-                  if (sock_event.iErrorCode[FD_ACCEPT_BIT])
-                    {
-                      WSASetLastError (sock_event.iErrorCode[FD_ACCEPT_BIT]);
-                      set_winsock_errno ();
-                      res = -1;
-                      goto done;
-                    }
-                }
-              /* else; : Should never happen since FD_ACCEPT is the only event
-                 that has been selected */
-              break;
-            case WSA_WAIT_EVENT_0 + 1:
-              debug_printf ("signal received during accept");
-              set_errno (EINTR);
-              res = -1;
-              goto done;
-            case WSA_WAIT_FAILED:
-            default: /* Should never happen */
-              WSASetLastError (WSAEFAULT);
-              set_winsock_errno ();
-              res = -1;
-              goto done;
-            }
-        }
+         ioctlsocket (get_socket (), FIONBIO, &nonblocking);
+
+         switch (wait_result)
+           {
+           case WSA_WAIT_EVENT_0:
+             if (sock_event.lNetworkEvents & FD_ACCEPT)
+               {
+                 if (sock_event.iErrorCode[FD_ACCEPT_BIT])
+                   {
+                     WSASetLastError (sock_event.iErrorCode[FD_ACCEPT_BIT]);
+                     set_winsock_errno ();
+                     res = -1;
+                     goto done;
+                   }
+               }
+             /* else; : Should never happen since FD_ACCEPT is the only event
+                that has been selected */
+             break;
+           case WSA_WAIT_EVENT_0 + 1:
+             debug_printf ("signal received during accept");
+             set_errno (EINTR);
+             res = -1;
+             goto done;
+           case WSA_WAIT_FAILED:
+           default: /* Should never happen */
+             WSASetLastError (WSAEFAULT);
+             set_winsock_errno ();
+             res = -1;
+             goto done;
+           }
+       }
     }
 
   res = ::accept (get_socket (), peer, len);
@@ -566,7 +566,7 @@ fhandler_socket::accept (struct sockaddr *peer, int *len)
        {
          if (!create_secret_event ())
            secret_check_failed = TRUE;
-         else if (in_progress) 
+         else if (in_progress)
            signal_secret_event ();
        }
 
@@ -599,12 +599,12 @@ fhandler_socket::accept (struct sockaddr *peer, int *len)
       set_winsock_errno ();
     else
       {
-        fhandler_socket* res_fh = fdsock (res_fd, get_name (), res);
-        if (get_addr_family () == AF_LOCAL)
-          res_fh->set_sun_path (get_sun_path ());
-        res_fh->set_addr_family (get_addr_family ());
-        res_fh->set_socket_type (get_socket_type ());
-        res = res_fd;
+       fhandler_socket* res_fh = fdsock (res_fd, get_name (), res);
+       if (get_addr_family () == AF_LOCAL)
+         res_fh->set_sun_path (get_sun_path ());
+       res_fh->set_addr_family (get_addr_family ());
+       res_fh->set_socket_type (get_socket_type ());
+       res = res_fd;
       }
   }
 
@@ -750,7 +750,7 @@ fhandler_socket::recvmsg (struct msghdr *msg, int flags, ssize_t tot)
            {
              tot = 0;
              const struct iovec *iovptr = iov + iovcnt;
-             do 
+             do
                {
                  iovptr -= 1;
                  tot += iovptr->iov_len;
@@ -903,7 +903,7 @@ fhandler_socket::sendto (const void *ptr, size_t len, int flags,
     {
       set_errno (EPIPE);
       if (! (flags & MSG_NOSIGNAL))
-        _raise (SIGPIPE);
+       _raise (SIGPIPE);
     }
 
   return res;
@@ -938,7 +938,7 @@ fhandler_socket::sendmsg (const struct msghdr *msg, int flags, ssize_t tot)
            {
              tot = 0;
              const struct iovec *iovptr = iov + iovcnt;
-             do 
+             do
                {
                  iovptr -= 1;
                  tot += iovptr->iov_len;
index 7f1f02f123ca3945c57eb7346212a721ea1e66c2..05b9b0f6c83dfbef915738816cc420f99d5ed90e 100644 (file)
@@ -116,7 +116,7 @@ fhandler_virtual::lseek (__off64_t offset, int whence)
    * the contents of the file are updated.
    */
   if (!fill_filebuf ())
-       return (__off64_t) -1;
+    return (__off64_t) -1;
   switch (whence)
     {
     case SEEK_SET:
index 58b82be224422cbadeca1c48b3de09c69ba82695..15c04d4b0c9ee4bbcfa334d9d2d547c36ea73185 100644 (file)
@@ -24,6 +24,7 @@ int
 fhandler_dev_zero::open (path_conv *, int flags, mode_t)
 {
   set_flags ((flags & ~O_TEXT) | O_BINARY);
+  set_nohandle (true);
   set_open_status ();
   return 1;
 }
@@ -47,12 +48,6 @@ fhandler_dev_zero::lseek (__off64_t, int)
   return 0;
 }
 
-int
-fhandler_dev_zero::close (void)
-{
-  return 0;
-}
-
 void
 fhandler_dev_zero::dump ()
 {
index 31f577a94f321924b8515bab34fb0a40657effbe..11b6953aa721c1982d39f04ea670057c93a5f989 100644 (file)
@@ -187,10 +187,10 @@ read_etc_group ()
                    {
                      char strbuf[100];
                      snprintf (linebuf, sizeof (linebuf), "%s:%s:%lu:",
-                               group_name, 
+                               group_name,
                                tg.string (strbuf),
                                *GetSidSubAuthority(tg,
-                                            *GetSidSubAuthorityCount(tg) - 1));
+                                            *GetSidSubAuthorityCount(tg) - 1));
                      debug_printf ("Emulating /etc/group: %s", linebuf);
                      add_grp_line (linebuf);
                      group_state = emulated;
@@ -365,7 +365,7 @@ getgroups32 (int gidsetsize, __gid32_t *grouplist, __gid32_t gid,
              for (int gidx = 0; (gr = internal_getgrent (gidx)); ++gidx)
                if (sid.getfromgr (gr))
                  for (DWORD pg = 0; pg < groups->GroupCount; ++pg)
-                   if (sid == groups->Groups[pg].Sid && 
+                   if (sid == groups->Groups[pg].Sid &&
                        sid != well_known_world_sid)
                      {
                        if (cnt < gidsetsize)
@@ -516,7 +516,7 @@ setgroups (int ngroups, const __gid16_t *grouplist)
       if (grouplist32 == NULL)
        return -1;
       for (int i = 0; i < ngroups; i++)
-        grouplist32[i] = grouplist[i];
+       grouplist32[i] = grouplist[i];
     }
   return setgroups32 (ngroups, grouplist32);
 }
index 7733d6e789232de15c3e3e57025b683edb1eba60..70bae141330c4d991efe134532266e09a5acee2d 100644 (file)
@@ -724,7 +724,7 @@ cygwin_getsockopt (int fd, int level, int optname, void *optval, int *optlen)
   else
     {
       res = getsockopt (fh->get_socket (), level, optname, (char *) optval,
-                       (int *) optlen);
+                       (int *) optlen);
 
       if (optname == SO_ERROR)
        {
@@ -2137,7 +2137,7 @@ cygwin_sendmsg (int fd, const struct msghdr *msg, int flags)
                                             (unsigned) msg->msg_namelen))
       || !fh)
     res = -1;
-  else 
+  else
     {
       res = check_iovec_for_write (msg->msg_iov, msg->msg_iovlen);
       if (res > 0)
index 508ed82e22e8e99499816c4ec7d761492785bbfb..779aee3028e856c0f19ee707403389107a11788e 100644 (file)
@@ -697,10 +697,10 @@ get_priv_list (LSA_HANDLE lsa, cygsid &usersid, cygsidlist &grp_list)
 /* Accept a token if
    - the requested usersid matches the TokenUser and
    - if setgroups has been called:
-        the token groups that are listed in /etc/group match the union of
+       the token groups that are listed in /etc/group match the union of
        the requested primary and supplementary groups in gsids.
    - else the (unknown) implicitly requested supplementary groups and those
-        in the token are the groups associated with the usersid. We assume
+       in the token are the groups associated with the usersid. We assume
        they match and verify only the primary groups.
        The requested primary group must appear in the token.
        The primary group in the token is a group associated with the usersid,
@@ -782,14 +782,14 @@ verify_token (HANDLE token, cygsid &usersid, user_groups &groups, BOOL *pintern)
              saw[pos] = TRUE;
            else if (groups.pgsid == gsid)
              sawpg = TRUE;
-           else if (gsid != well_known_world_sid &&
+          else if (gsid != well_known_world_sid &&
                    gsid != usersid)
              goto done;
          }
       for (int gidx = 0; gidx < groups.sgsids.count; gidx++)
        if (!saw[gidx])
          goto done;
-      if (sawpg || 
+      if (sawpg ||
          groups.sgsids.contains (groups.pgsid) ||
          groups.pgsid == usersid)
        ret = TRUE;
@@ -859,7 +859,7 @@ create_token (cygsid &usersid, user_groups &new_groups, struct passwd *pw)
   else
     {
       /* Switching user context to SYSTEM doesn't inherit the authentication
-         id of the user account running current process. */
+        id of the user account running current process. */
       if (usersid != well_known_system_sid)
        if (!GetTokenInformation (my_token, TokenStatistics,
                                  &stats, sizeof stats, &size))
@@ -869,7 +869,7 @@ create_token (cygsid &usersid, user_groups &new_groups, struct passwd *pw)
          auth_luid = stats.AuthenticationId;
 
       /* Retrieving current processes group list to be able to inherit
-         some important well known group sids. */
+        some important well known group sids. */
       if (!GetTokenInformation (my_token, TokenGroups, NULL, 0, &size) &&
          GetLastError () != ERROR_INSUFFICIENT_BUFFER)
        debug_printf ("GetTokenInformation(my_token, TokenGroups): %E\n");
@@ -1187,8 +1187,8 @@ write_sd (const char *file, PSECURITY_DESCRIPTOR sd_buf, DWORD sd_size)
                    &bytes_written, FALSE, TRUE, &context))
     {
       /* Samba returns ERROR_NOT_SUPPORTED.
-         FAT returns ERROR_INVALID_SECURITY_DESCR.
-         This shouldn't return as error, but better be ignored. */
+        FAT returns ERROR_INVALID_SECURITY_DESCR.
+        This shouldn't return as error, but better be ignored. */
       DWORD ret = GetLastError ();
       if (ret != ERROR_NOT_SUPPORTED && ret != ERROR_INVALID_SECURITY_DESCR)
        {
@@ -1463,7 +1463,7 @@ get_object_attribute (HANDLE handle, SE_OBJECT_TYPE object_type,
   if (allow_ntsec)
     {
       int res = get_nt_object_attribute (handle, object_type, attribute,
-                                        uidret, gidret);
+                                        uidret, gidret);
       if (attribute && (*attribute & S_IFLNK) == S_IFLNK)
        *attribute |= S_IRWXU | S_IRWXG | S_IRWXO;
       return res;
index 17dcf39572e2a86b7b36bc48255fd589be41409c..8e7d47cc547f3e6962797aa638a6e7487248e466 100644 (file)
@@ -113,7 +113,7 @@ strace::vsprntf (char *buf, const char *func, const char *infmt, va_list ap)
   static NO_COPY int nonewline = FALSE;
   DWORD err = GetLastError ();
   const char *tn = cygthread::name ();
-  char *pn = __progname ?: myself->progname;
+  char *pn = __progname ?: (myself ? myself->progname : NULL);
 
   int microsec = microseconds ();
   lmicrosec = microsec;
index 5dadfee7ee0a40534cf1f7677a6bc271d625074a..ce0ee04442a9dd329292f9b297a22b3f889544e5 100644 (file)
@@ -387,7 +387,7 @@ pthread::setTlsSelfPointer (pthread *thisThread)
 /* member methods */
 pthread::pthread ():verifyable_object (PTHREAD_MAGIC), win32_obj_id (0),
                     cancelstate (0), canceltype (0), cancel_event (0),
-                    joiner (NULL), cleanup_stack (NULL) 
+                    joiner (NULL), cleanup_stack (NULL)
 {
 }
 
index f273ee0b132f1a0e68fcae5e5025b16f79e27428..6804c97a5c2232fd2ba2d04423eef2a74f505b46 100644 (file)
@@ -296,7 +296,7 @@ cygheap_user::ontherange (homebodies what, struct passwd *pw)
 
   if (newhomedrive && newhomedrive != homedrive)
     cfree_and_set (homedrive, (newhomedrive == almost_null)
-                             ? almost_null : cstrdup (newhomedrive));
+                             ? almost_null : cstrdup (newhomedrive));
 
   if (newhomepath && newhomepath != homepath)
     cfree_and_set (homepath, cstrdup (newhomepath));
This page took 0.068701 seconds and 5 git commands to generate.