equal
deleted
inserted
replaced
831 except: pass |
831 except: pass |
832 self._fp.close() |
832 self._fp.close() |
833 |
833 |
834 def makedirs(name, mode=None): |
834 def makedirs(name, mode=None): |
835 """recursive directory creation with parent mode inheritance""" |
835 """recursive directory creation with parent mode inheritance""" |
|
836 parent = os.path.abspath(os.path.dirname(name)) |
836 try: |
837 try: |
837 os.mkdir(name) |
838 os.mkdir(name) |
838 if mode is not None: |
839 if mode is not None: |
839 os.chmod(name, mode) |
840 os.chmod(name, mode) |
840 return |
841 return |
841 except OSError, err: |
842 except OSError, err: |
842 if err.errno == errno.EEXIST: |
843 if err.errno == errno.EEXIST: |
843 return |
844 return |
844 if not name or err.errno != errno.ENOENT: |
845 if not name or parent == name or err.errno != errno.ENOENT: |
845 raise |
846 raise |
846 parent = os.path.abspath(os.path.dirname(name)) |
|
847 makedirs(parent, mode) |
847 makedirs(parent, mode) |
848 makedirs(name, mode) |
848 makedirs(name, mode) |
849 |
849 |
850 class opener(object): |
850 class opener(object): |
851 """Open files relative to a base directory |
851 """Open files relative to a base directory |
1013 lt = time.localtime() |
1013 lt = time.localtime() |
1014 if lt[8] == 1 and time.daylight: |
1014 if lt[8] == 1 and time.daylight: |
1015 tz = time.altzone |
1015 tz = time.altzone |
1016 else: |
1016 else: |
1017 tz = time.timezone |
1017 tz = time.timezone |
1018 return time.mktime(lt), tz |
1018 t = time.mktime(lt) |
|
1019 if t < 0: |
|
1020 hint = _("check your clock") |
|
1021 raise Abort(_("negative timestamp: %d") % t, hint=hint) |
|
1022 return t, tz |
1019 |
1023 |
1020 def datestr(date=None, format='%a %b %d %H:%M:%S %Y %1%2'): |
1024 def datestr(date=None, format='%a %b %d %H:%M:%S %Y %1%2'): |
1021 """represent a (unixtime, offset) tuple as a localized time. |
1025 """represent a (unixtime, offset) tuple as a localized time. |
1022 unixtime is seconds since the epoch, and offset is the time zone's |
1026 unixtime is seconds since the epoch, and offset is the time zone's |
1023 number of seconds away from UTC. if timezone is false, do not |
1027 number of seconds away from UTC. if timezone is false, do not |
1114 # time zone offset. values must fit in signed 32 bits for |
1118 # time zone offset. values must fit in signed 32 bits for |
1115 # current 32-bit linux runtimes. timezones go from UTC-12 |
1119 # current 32-bit linux runtimes. timezones go from UTC-12 |
1116 # to UTC+14 |
1120 # to UTC+14 |
1117 if abs(when) > 0x7fffffff: |
1121 if abs(when) > 0x7fffffff: |
1118 raise Abort(_('date exceeds 32 bits: %d') % when) |
1122 raise Abort(_('date exceeds 32 bits: %d') % when) |
|
1123 if when < 0: |
|
1124 raise Abort(_('negative date value: %d') % when) |
1119 if offset < -50400 or offset > 43200: |
1125 if offset < -50400 or offset > 43200: |
1120 raise Abort(_('impossible time zone offset: %d') % offset) |
1126 raise Abort(_('impossible time zone offset: %d') % offset) |
1121 return when, offset |
1127 return when, offset |
1122 |
1128 |
1123 def matchdate(date): |
1129 def matchdate(date): |