From: Maarten ter Huurne <maarten@treewalker.org>
Date: Mon, 15 Sep 2014 00:24:41 +0200
Subject: Renamed sched.h to eventqueue.h

There is a <sched.h> system header that got shadowed by "sched.h".
While Screen itself doesn't include <sched.h>, other system headers
might include it indirectly. This broke the build when using uClibc
with pthread support.

Signed-off-by: Maarten ter Huurne <maarten@treewalker.org>
---
 eventqueue.h | 48 ++++++++++++++++++++++++++++++++++++++++++++++++
 sched.h      | 48 ------------------------------------------------
 screen.h     |  2 +-
 3 files changed, 49 insertions(+), 49 deletions(-)
 create mode 100644 eventqueue.h
 delete mode 100644 sched.h

diff --git a/eventqueue.h b/eventqueue.h
new file mode 100644
index 0000000..fdc3fc4
--- /dev/null
+++ b/eventqueue.h
@@ -0,0 +1,48 @@
+/* Copyright (c) 2008, 2009
+ *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
+ *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
+ *      Micah Cowan (micah@cowan.name)
+ *      Sadrul Habib Chowdhury (sadrul@users.sourceforge.net)
+ * Copyright (c) 1993-2002, 2003, 2005, 2006, 2007
+ *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
+ *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
+ * Copyright (c) 1987 Oliver Laumann
+ *
+ * This program 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 3, or (at your option)
+ * any later version.
+ *
+ * This program is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+ * GNU General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program (see the file COPYING); if not, see
+ * https://www.gnu.org/licenses/, or contact Free Software Foundation, Inc.,
+ * 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
+ *
+ ****************************************************************
+ * $Id$ GNU
+ */
+
+struct event
+{
+  struct event *next;
+  void (*handler) __P((struct event *, char *));
+  char *data;
+  int fd;
+  int type;
+  int pri;
+  struct timeval timeout;
+  int queued;		/* in evs queue */
+  int active;		/* in fdset */
+  int *condpos;		/* only active if condpos - condneg > 0 */
+  int *condneg;
+};
+
+#define EV_TIMEOUT	0
+#define EV_READ		1
+#define EV_WRITE	2
+#define EV_ALWAYS	3
diff --git a/sched.h b/sched.h
deleted file mode 100644
index fdc3fc4..0000000
--- a/sched.h
+++ /dev/null
@@ -1,48 +0,0 @@
-/* Copyright (c) 2008, 2009
- *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
- *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
- *      Micah Cowan (micah@cowan.name)
- *      Sadrul Habib Chowdhury (sadrul@users.sourceforge.net)
- * Copyright (c) 1993-2002, 2003, 2005, 2006, 2007
- *      Juergen Weigert (jnweiger@immd4.informatik.uni-erlangen.de)
- *      Michael Schroeder (mlschroe@immd4.informatik.uni-erlangen.de)
- * Copyright (c) 1987 Oliver Laumann
- *
- * This program 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 3, or (at your option)
- * any later version.
- *
- * This program is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
- * GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License
- * along with this program (see the file COPYING); if not, see
- * https://www.gnu.org/licenses/, or contact Free Software Foundation, Inc.,
- * 51 Franklin Street, Fifth Floor, Boston, MA  02111-1301  USA
- *
- ****************************************************************
- * $Id$ GNU
- */
-
-struct event
-{
-  struct event *next;
-  void (*handler) __P((struct event *, char *));
-  char *data;
-  int fd;
-  int type;
-  int pri;
-  struct timeval timeout;
-  int queued;		/* in evs queue */
-  int active;		/* in fdset */
-  int *condpos;		/* only active if condpos - condneg > 0 */
-  int *condneg;
-};
-
-#define EV_TIMEOUT	0
-#define EV_READ		1
-#define EV_WRITE	2
-#define EV_ALWAYS	3
diff --git a/screen.h b/screen.h
index 603ca3f..34238c8 100644
--- a/screen.h
+++ b/screen.h
@@ -43,7 +43,7 @@
 #include "osdef.h"
 
 #include "ansi.h"
-#include "sched.h"
+#include "eventqueue.h"
 #include "acls.h"
 #include "comm.h"
 #include "layer.h"
-- 
1.8.4.5

