diff options
Diffstat (limited to 'src/plop_compat.erl')
-rw-r--r-- | src/plop_compat.erl | 30 |
1 files changed, 27 insertions, 3 deletions
diff --git a/src/plop_compat.erl b/src/plop_compat.erl index 4d45590..5c1fa17 100644 --- a/src/plop_compat.erl +++ b/src/plop_compat.erl @@ -2,7 +2,7 @@ %%% See LICENSE for licensing information. -module(plop_compat). --export([unpack_spki/1, timestamp/0, monotonic_time/1, start_timer/4]). +-export([unpack_spki/1, timestamp/0, monotonic_time/1, start_timer/4, unique_integer/1, time_offset/1]). -include_lib("public_key/include/public_key.hrl"). unpack_spki(SPKI) -> @@ -13,6 +13,10 @@ monotonic_time(Unit) -> monotonic_time(erlang:system_info(otp_release), Unit). start_timer(Time, Dest, Msg, Options) -> start_timer(erlang:system_info(otp_release), Time, Dest, Msg, Options). +unique_integer(Modifiers) -> + unique_integer(erlang:system_info(otp_release), Modifiers). +time_offset(Unit) -> + time_offset(erlang:system_info(otp_release), Unit). unpack_spki("R16" ++ _, SPKI) -> #'SubjectPublicKeyInfo'{subjectPublicKey = {_, Octets}, @@ -43,15 +47,35 @@ timestamp("19") -> monotonic_time("R16" ++ _, millisecond) -> {MeS, S, MiS} = timestamp(), - MeS * 1000000 + S * 1000 + MiS; + (MeS * 1000000 + S) * 1000 + MiS div 1000; monotonic_time("17", millisecond) -> {MeS, S, MiS} = timestamp(), - MeS * 1000000 + S * 1000 + MiS; + (MeS * 1000000 + S) * 1000 + MiS div 1000; monotonic_time("18", Unit) -> erlang:monotonic_time(Unit); monotonic_time("19", Unit) -> erlang:monotonic_time(Unit). +unique_integer("R16", _Modifiers) -> + {MeS, S, MiS} = erlang:now(), + (MeS * 1000000 + S) * 1000000 + MiS; +unique_integer("17", _Modifiers) -> + {MeS, S, MiS} = erlang:now(), + (MeS * 1000000 + S) * 1000000 + MiS; +unique_integer("18", Modifiers) -> + erlang:unique_integer(Modifiers); +unique_integer("19", Modifiers) -> + erlang:unique_integer(Modifiers). + +time_offset("R16", _Unit) -> + 0; +time_offset("17", _Unit) -> + 0; +time_offset("18", Unit) -> + erlang:time_offset(Unit); +time_offset("19", Unit) -> + erlang:time_offset(Unit). + start_timer("R16" ++ _, Time, Dest, Msg, [{abs, true}]) -> erlang:start_timer(max(0, Time - monotonic_time(millisecond)), Dest, Msg); start_timer("17", Time, Dest, Msg, [{abs, true}]) -> |