Xavier Nicolovici - 2004-06-10 - This patch remove the use of the 'datetime'
Python module in the SyntacticEngine. This allow users of Python 2.2 to run
the software (the 'datetime' module is avalaible in Python >= 2.3)
diff -urNb pyatcron-0.1.0/src/lib/syntacticengine.py pyatcron-0.1.0-module-datetime-removed/src/lib/syntacticengine.py
--- pyatcron-0.1.0/src/lib/syntacticengine.py	2004-04-29 14:58:51.000000000 +0200
+++ pyatcron-0.1.0-module-datetime-removed/src/lib/syntacticengine.py	2004-06-10 17:11:43.842779792 +0200
@@ -1,4 +1,3 @@
-import datetime
 import time
 
 
@@ -14,27 +13,32 @@
         # Determine when the task will occur next
         values = self.scheduler.getAttributes ()
 
-        baseTimeStamp = time.time ()
-        baseTime = datetime.datetime.fromtimestamp (baseTimeStamp)
-        nextTimeStamp = -1
+        baseTimeStamp = time.time()
+        baseTime = time.gmtime(baseTimeStamp)
 
+        nextTimeStamp = -1
         found = False
-        year = baseTime.year
+        year = baseTime.tm_year
+
         while (not found):
             for month in values [3]:
                 for day in values [2]:
                     for weekday in values [4]:
                         weekday = weekday - 1
+                        try:
                         testTimeStamp = time.mktime ([year, month, day,
-                                                      baseTime.hour,
-                                                      baseTime.minute,
-                                                      baseTime.second,
+                                                          baseTime.tm_hour,
+                                                          baseTime.tm_min,
+                                                          baseTime.tm_sec,
                                                       weekday, -1, -1])
+                        except OverflowError, ValueError:
+                            return "Value outside of system limits"
+
 
                         testTimeStamp = testTimeStamp + 1
-                        test = datetime.datetime.fromtimestamp (testTimeStamp)
+                        test = time.gmtime(testTimeStamp)
 
-                        if (test.day != day or test.weekday () != weekday):
+                        if (test.tm_mday != day or test.tm_wday != weekday):
                             testTimeStamp = -1
  
                         if (testTimeStamp > 0):
@@ -44,9 +48,9 @@
                                 nextTimeStamp = testTimeStamp
 
                                 # Now we have the day, try to find a time
-                                nextTime = datetime.datetime.fromtimestamp (nextTimeStamp)
-                                if (nextTime.day == baseTime.day and
-                                    nextTime.month == baseTime.month and
+                                nextTime = time.gmtime(nextTimeStamp)
+                                if (nextTime.tm_mday == baseTime.tm_mday and
+                                    nextTime.tm_mon == baseTime.tm_mon and
                                     nextTime.year == baseTime.year):
                                     minMinute = baseTime.minute
                                     minHour = baseTime.hour
@@ -56,19 +60,25 @@
 
                                 hour = -1
                                 for val in values [1]:
-                                    if (val >= minHour and (val < hour or hour < 0)):
+                                    if (val >= minHour and
+                                        (val < hour or hour < 0)):
                                         hour = val
 
                                     if (hour >= 0):
                                         minute = -1
                                         for val in values [0]:
-                                            if ((val > minMinute or hour > minHour) and (val < minute or minute < 0)):
+                                            if ((val > minMinute or
+                                                 hour > minHour) and
+                                                (val < minute or minute < 0)):
                                                 minute = val
 
                                         if (minute >= 0):                         
-                                            nextTimeStamp = time.mktime ([nextTime.year, nextTime.month,
-                                                                      nextTime.day, hour, minute,
-                                                                      0, nextTime.weekday (), -1, -1])
+                                            nextTimeStamp =  time.mktime( \
+                                                [nextTime.tm_year,
+                                                 nextTime.tm_mon,
+                                                 nextTime.tm_mday,
+                                                 hour, minute,0,
+                                                 nextTime.tm_wday, -1, -1])
                                         else:
                                             nextTimeStamp = -1
                                     else:
@@ -86,3 +96,4 @@
             entryNextTime = "Never"
 
         return entryNextTime
+