Patch #504225: add plan9 ifdef to timemodule floatsleep.
diff --git a/Modules/timemodule.c b/Modules/timemodule.c
index a5d81fe..6841b0f 100644
--- a/Modules/timemodule.c
+++ b/Modules/timemodule.c
@@ -778,8 +778,7 @@
 		}
 	}
 	Py_END_ALLOW_THREADS
-#else /* !HAVE_SELECT || __BEOS__ */
-#ifdef macintosh
+#elif defined(macintosh)
 #define MacTicks	(* (long *)0x16A)
 	long deadline;
 	deadline = MacTicks + (long)(secs * 60.0);
@@ -788,14 +787,12 @@
 		if (PyErr_CheckSignals())
 			return -1;
 	}
-#else /* !macintosh */
-#if defined(__WATCOMC__) && !defined(__QNX__)
+#elif defined(__WATCOMC__) && !defined(__QNX__)
 	/* XXX Can't interrupt this sleep */
 	Py_BEGIN_ALLOW_THREADS
 	delay((int)(secs * 1000 + 0.5));  /* delay() uses milliseconds */
 	Py_END_ALLOW_THREADS
-#else /* !__WATCOMC__ || __QNX__ */
-#ifdef MSDOS
+#elif defined(MSDOS)
 	struct timeb t1, t2;
 	double frac;
 	extern double fmod(double, double);
@@ -824,8 +821,7 @@
 		    t1.time == t2.time && t1.millitm >= t2.millitm)
 			break;
 	}
-#else /* !MSDOS */
-#ifdef MS_WIN32
+#elif defined(MS_WIN32)
 	{
 		double millisecs = secs * 1000.0;
 		if (millisecs > (double)ULONG_MAX) {
@@ -837,8 +833,7 @@
 		Sleep((unsigned long)millisecs);
 		Py_END_ALLOW_THREADS
 	}
-#else /* !MS_WIN32 */
-#ifdef PYOS_OS2
+#elif defined(PYOS_OS2)
 	/* This Sleep *IS* Interruptable by Exceptions */
 	Py_BEGIN_ALLOW_THREADS
 	if (DosSleep(secs * 1000) != NO_ERROR) {
@@ -847,8 +842,7 @@
 		return -1;
 	}
 	Py_END_ALLOW_THREADS
-#else /* !PYOS_OS2 */
-#ifdef __BEOS__
+#elif defined(__BEOS__)
 	/* This sleep *CAN BE* interrupted. */
 	{
 		if( secs <= 0.0 ) {
@@ -864,8 +858,7 @@
 		}
 		Py_END_ALLOW_THREADS
 	}
-#else /* !__BEOS__ */
-#ifdef RISCOS
+#elif defined(RISCOS)
 	if (secs <= 0.0)
 		return 0;
 	Py_BEGIN_ALLOW_THREADS
@@ -873,19 +866,28 @@
 	if ( sleep(secs) )
 		return -1;
 	Py_END_ALLOW_THREADS
-#else /* !RISCOS */
+#elif defined(PLAN9)
+	{
+		double millisecs = secs * 1000.0;
+		if (millisecs > (double)LONG_MAX) {
+			PyErr_SetString(PyExc_OverflowError, "sleep length is too large");
+			return -1;
+		}
+		/* This sleep *CAN BE* interrupted. */
+		Py_BEGIN_ALLOW_THREADS
+		if(sleep((long)millisecs) < 0){
+			Py_BLOCK_THREADS
+			PyErr_SetFromErrno(PyExc_IOError);
+			return -1;
+		}
+		Py_END_ALLOW_THREADS
+	}
+#else
 	/* XXX Can't interrupt this sleep */
 	Py_BEGIN_ALLOW_THREADS
 	sleep((int)secs);
 	Py_END_ALLOW_THREADS
-#endif /* !RISCOS */
-#endif /* !__BEOS__ */
-#endif /* !PYOS_OS2 */
-#endif /* !MS_WIN32 */
-#endif /* !MSDOS */
-#endif /* !__WATCOMC__ || __QNX__ */
-#endif /* !macintosh */
-#endif /* !HAVE_SELECT */
+#endif
 
 	return 0;
 }