Branch data Line data Source code
1 : : /**
2 : : * \file lib/fko_timestamp.c
3 : : *
4 : : * \brief Get the current timestamp with optional offset applied.
5 : : */
6 : :
7 : : /* Fwknop is developed primarily by the people listed in the file 'AUTHORS'.
8 : : * Copyright (C) 2009-2015 fwknop developers and contributors. For a full
9 : : * list of contributors, see the file 'CREDITS'.
10 : : *
11 : : * License (GNU General Public License):
12 : : *
13 : : * This program is free software; you can redistribute it and/or
14 : : * modify it under the terms of the GNU General Public License
15 : : * as published by the Free Software Foundation; either version 2
16 : : * of the License, or (at your option) any later version.
17 : : *
18 : : * This program is distributed in the hope that it will be useful,
19 : : * but WITHOUT ANY WARRANTY; without even the implied warranty of
20 : : * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
21 : : * GNU General Public License for more details.
22 : : *
23 : : * You should have received a copy of the GNU General Public License
24 : : * along with this program; if not, write to the Free Software
25 : : * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307
26 : : * USA
27 : : *
28 : : *****************************************************************************
29 : : */
30 : : #include "fko_common.h"
31 : : #include "fko.h"
32 : :
33 : :
34 : : /* Set the timestamp.
35 : : */
36 : : int
37 : 870934 : fko_set_timestamp(fko_ctx_t ctx, const int offset)
38 : : {
39 : : time_t ts;
40 : :
41 : : #if HAVE_LIBFIU
42 [ + + ]: 870934 : fiu_return_on("fko_set_timestamp_init", FKO_ERROR_CTX_NOT_INITIALIZED);
43 : : #endif
44 : :
45 : : /* Must be initialized
46 : : */
47 [ + + ][ + - ]: 870931 : if(!CTX_INITIALIZED(ctx))
48 : : return FKO_ERROR_CTX_NOT_INITIALIZED;
49 : :
50 : 870113 : ts = time(NULL) + offset;
51 : :
52 : : #if HAVE_LIBFIU
53 [ + + ]: 870113 : fiu_return_on("fko_set_timestamp_val",
54 : : FKO_ERROR_INVALID_DATA_TIMESTAMP_VALIDFAIL);
55 : : #endif
56 [ + - ]: 870110 : if(ts < 0)
57 : : return(FKO_ERROR_INVALID_DATA_TIMESTAMP_VALIDFAIL);
58 : :
59 : 870110 : ctx->timestamp = ts;
60 : :
61 : 870110 : ctx->state |= FKO_DATA_MODIFIED;
62 : :
63 : 870110 : return(FKO_SUCCESS);
64 : : }
65 : :
66 : : /* Return the current timestamp.
67 : : */
68 : : int
69 : 5467 : fko_get_timestamp(fko_ctx_t ctx, time_t *timestamp)
70 : : {
71 : :
72 : : #if HAVE_LIBFIU
73 [ + + ]: 5467 : fiu_return_on("fko_get_timestamp_init", FKO_ERROR_CTX_NOT_INITIALIZED);
74 : : #endif
75 : :
76 : : /* Must be initialized
77 : : */
78 [ + + ][ + - ]: 5465 : if(!CTX_INITIALIZED(ctx))
79 : : return(FKO_ERROR_CTX_NOT_INITIALIZED);
80 : :
81 [ + + ]: 5313 : if(timestamp == NULL)
82 : : return(FKO_ERROR_INVALID_DATA);
83 : :
84 : : #if HAVE_LIBFIU
85 [ + + ]: 5245 : fiu_return_on("fko_get_timestamp_val", FKO_ERROR_INVALID_DATA);
86 : : #endif
87 : :
88 : 5243 : *timestamp = ctx->timestamp;
89 : :
90 : 5243 : return(FKO_SUCCESS);
91 : : }
92 : :
93 : : /***EOF***/
|