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