nitlanguage
/
nit.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
tests: add some runtime error in nitin.input
[nit.git]
/
lib
/
core
/
time.nit
diff --git
a/lib/core/time.nit
b/lib/core/time.nit
index
f57e8d8
..
999f1e9
100644
(file)
--- a/
lib/core/time.nit
+++ b/
lib/core/time.nit
@@
-26,19
+26,24
@@
fun get_time: Int `{ return time(NULL); `}
redef class Sys
# Wait a specific number of second and nanoseconds
redef class Sys
# Wait a specific number of second and nanoseconds
- fun nanosleep(sec, nanosec: Int) `{
+ #
+ # Returns `true` if interrupted by a signal.
+ fun nanosleep(sec, nanosec: Int): Bool `{
const struct timespec req = {sec, nanosec};
const struct timespec req = {sec, nanosec};
- nanosleep(&req, NULL);
+ return nanosleep(&req, NULL);
`}
end
redef class Float
# Sleep approximately `self` seconds
`}
end
redef class Float
# Sleep approximately `self` seconds
+ #
+ # Is not interrupted by signals.
fun sleep `{
time_t s = self;
long ns = (self-s) * 1000000000.0;
fun sleep `{
time_t s = self;
long ns = (self-s) * 1000000000.0;
- const struct timespec req = {s, ns};
- nanosleep(&req, NULL);
+ struct timespec req = {s, ns};
+
+ while (nanosleep(&req, &req)) { }
`}
end
`}
end
@@
-55,8
+60,8
@@
extern class TimeT `{time_t`}
fun update `{ time(&self); `}
# Convert `self` to a human readable String.
fun update `{ time(&self); `}
# Convert `self` to a human readable String.
- fun ctime: String import NativeString.to_s_with_copy `{
- return NativeString_to_s_with_copy( ctime(&self) );
+ fun ctime: String import CString.to_s `{
+ return CString_to_s( ctime(&self) );
`}
# Difference in secondes from start (self if the end time)
`}
# Difference in secondes from start (self if the end time)
@@
-132,23
+137,23
@@
extern class Tm `{struct tm *`}
fun is_dst: Bool `{ return self->tm_isdst; `}
# Convert `self` to a human readable String.
fun is_dst: Bool `{ return self->tm_isdst; `}
# Convert `self` to a human readable String.
- private fun asctime: NativeString `{ return asctime(self); `}
+ private fun asctime: CString `{ return asctime(self); `}
# Convert `self` to a human readable String corresponding to `format`.
# TODO document allowed format.
# Convert `self` to a human readable String corresponding to `format`.
# TODO document allowed format.
- fun strftime(format: String): String import String.to_cstring, NativeString.to_s `{
+ fun strftime(format: String): String import String.to_cstring, CString.to_s `{
char* buf, *c_format;
buf = (char*)malloc(100);
c_format = String_to_cstring(format);
strftime(buf, 100, c_format, self);
char* buf, *c_format;
buf = (char*)malloc(100);
c_format = String_to_cstring(format);
strftime(buf, 100, c_format, self);
- String s = NativeString_to_s_with_copy(buf);
+ String s = CString_to_s(buf);
free(buf);
return s;
`}
free(buf);
return s;
`}
- redef fun to_s do return asctime.to_s_with_copy.replace("\n", "")
+ redef fun to_s do return asctime.to_s.replace("\n", "")
end
# Date using the international format defined by ISO 8601.
end
# Date using the international format defined by ISO 8601.