Merge branch 'devel' into sighashes

This commit is contained in:
Araq 2016-12-06 16:49:22 +01:00
commit 78d68f0882
3 changed files with 33 additions and 10 deletions

View file

@ -965,10 +965,16 @@ elif not defined(useNimRtl):
var ret : int
var status : cint = 1
ret = waitpid(p.id, status, WNOHANG)
if WIFEXITED(status):
p.exitStatus = status
if ret == 0: return true # Can't establish status. Assume running.
result = ret == int(p.id)
if ret == int(p.id):
if WIFEXITED(status):
p.exitStatus = status
return false
else:
return true
elif ret == 0:
return true # Can't establish status. Assume running.
else:
return false
proc terminate(p: Process) =
if kill(p.id, SIGTERM) != 0'i32:

View file

@ -436,6 +436,11 @@ when not defined(JS):
TimeInfoPtr = ptr StructTM
Clock {.importc: "clock_t".} = distinct int
when not defined(windows):
# This is not ANSI C, but common enough
proc timegm(t: StructTM): Time {.
importc: "timegm", header: "<time.h>", tags: [].}
proc localtime(timer: ptr Time): TimeInfoPtr {.
importc: "localtime", header: "<time.h>", tags: [].}
proc gmtime(timer: ptr Time): TimeInfoPtr {.
@ -515,12 +520,19 @@ when not defined(JS):
# the conversion is not expensive
proc toTime(timeInfo: TimeInfo): Time =
var cTimeInfo = timeInfo # for C++ we have to make a copy,
var cTimeInfo = timeInfo # for C++ we have to make a copy
# because the header of mktime is broken in my version of libc
result = mktime(timeInfoToTM(cTimeInfo))
# mktime is defined to interpret the input as local time. As timeInfoToTM
# does ignore the timezone, we need to adjust this here.
result = Time(TimeImpl(result) - getTimezone() + timeInfo.timezone)
when defined(windows):
# On Windows `mktime` is broken enough to make this work.
result = mktime(timeInfoToTM(cTimeInfo))
# mktime is defined to interpret the input as local time. As timeInfoToTM
# does ignore the timezone, we need to adjust this here.
result = Time(TimeImpl(result) - getTimezone() + timeInfo.timezone)
else:
result = timegm(timeInfoToTM(cTimeInfo))
# As timeInfoToTM does ignore the timezone, we need to adjust this here.
result = Time(TimeImpl(result) + timeInfo.timezone)
proc timeInfoToTime(timeInfo: TimeInfo): Time = toTime(timeInfo)
@ -603,7 +615,7 @@ elif defined(JS):
result.weekday = weekDays[t.getUTCDay()]
result.yearday = 0
proc timeInfoToTime*(timeInfo: TimeInfo): Time = toTime(timeInfo)
proc timeInfoToTime(timeInfo: TimeInfo): Time = toTime(timeInfo)
proc toTime*(timeInfo: TimeInfo): Time =
result = internGetTime()

View file

@ -16,3 +16,8 @@ var running = true
while running:
running = running(p)
doAssert(waitForExit(p) == QuitFailure)
# make sure that first call to running() after process exit returns false
p = startProcess(filename, dir)
os.sleep(500)
doAssert(not running(p))