]> git.pond.sub.org Git - empserver/blobdiff - src/lib/lwp/sel.c
Update copyright notice
[empserver] / src / lib / lwp / sel.c
index 1209ac77aa10cba1fc556c11ef21f3201d9852e5..57a683037e101f790a1806a2b37e88db65a3b157 100644 (file)
@@ -1,12 +1,12 @@
 /*
  *  Empire - A multi-player, client/server Internet based war game.
- *  Copyright (C) 1994-2009, Dave Pare, Jeff Bailey, Thomas Ruschak,
- *                           Ken Stevens, Steve McClure
+ *  Copyright (C) 1994-2015, Dave Pare, Jeff Bailey, Thomas Ruschak,
+ *                Ken Stevens, Steve McClure, Markus Armbruster
  *  Copyright (C) 1991-3 Stephen Crane
  *
- *  This program is free software; you can redistribute it and/or modify
+ *  Empire is free software: you can redistribute it and/or modify
  *  it under the terms of the GNU General Public License as published by
- *  the Free Software Foundation; either version 2 of the License, or
+ *  the Free Software Foundation, either version 3 of the License, or
  *  (at your option) any later version.
  *
  *  This program is distributed in the hope that it will be useful,
@@ -15,8 +15,7 @@
  *  GNU General Public License for more details.
  *
  *  You should have received a copy of the GNU General Public License
- *  along with this program; if not, write to the Free Software
- *  Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA  02111-1307  USA
+ *  along with this program.  If not, see <http://www.gnu.org/licenses/>.
  *
  *  ---
  *
@@ -30,7 +29,7 @@
  *
  *  Known contributors to this file:
  *     Dave Pare, 1994
- *     Markus Armbruster, 2007
+ *     Markus Armbruster, 2007-2013
  *     Ron Koenderink, 2009
  */
 
@@ -82,7 +81,7 @@ lwpSleepFd(int fd, int mask, struct timeval *timeout)
 {
     lwpStatus(LwpCurrent, "sleeping on fd %d for %d", fd, mask);
 
-    if (CANT_HAPPEN(fd > FD_SETSIZE)) {
+    if (CANT_HAPPEN(fd < 0 || fd >= FD_SETSIZE)) {
        errno = EBADF;
        return -1;
     }
@@ -131,12 +130,12 @@ lwpWakeupFd(struct lwpProc *proc)
     if (CANT_HAPPEN(proc->fd < 0 || proc->fd > LwpMaxfd))
        return;
 
-    lwpStatus(proc, "awakening; was sleeping on fd %d", proc->fd);
     if (proc->runtime != (time_t)-1 && proc->runtime != 0) {
        /* is in LwpDelayq; leave the job to lwpWakeupSleep() */
        proc->runtime = (time_t)-1;
        return;
     }
+    lwpStatus(proc, "awakening; was sleeping on fd %d", proc->fd);
     FD_CLR(proc->fd, &LwpReadfds);
     FD_CLR(proc->fd, &LwpWritefds);
     LwpNfds--;
@@ -244,7 +243,7 @@ lwpSelect(void *arg)
            if (tv.tv_sec < 0)
                tv.tv_sec = 0;
        }
-       lwpStatus(us, "selecting; sleep %ld secs", tv.tv_sec);
+       lwpStatus(us, "selecting; sleep %ld secs", (long)tv.tv_sec);
 
        memcpy(&readmask, &LwpReadfds, sizeof(fd_set));
        memcpy(&writemask, &LwpWritefds, sizeof(fd_set));
@@ -284,5 +283,4 @@ lwpSelect(void *arg)
        lwpReady(LwpCurrent);
        lwpReschedule();
     }
-    /*NOTREACHED*/
 }