File: tvmath.c

package info (click to toggle)
tarsnap 1.0.41-3
  • links: PTS, VCS
  • area: non-free
  • in suites: forky, sid
  • size: 3,712 kB
  • sloc: ansic: 50,148; sh: 1,025; makefile: 684; python: 661; awk: 345
file content (83 lines) | stat: -rw-r--r-- 1,191 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
#include <sys/time.h>

#include "monoclock.h"

#include "tvmath.h"

/**
 * tvmath_addctime(tv):
 * Set tv += monoclock.
 */
int
tvmath_addctime(struct timeval * tv)
{
	struct timeval tnow;

	if (monoclock_get(&tnow))
		goto err0;
	tv->tv_sec += tnow.tv_sec;
	tv->tv_usec += tnow.tv_usec;
	if (tv->tv_usec >= 1000000) {
		tv->tv_usec -= 1000000;
		tv->tv_sec += 1;
	}

	/* Success! */
	return (0);

err0:
	/* Failure! */
	return (-1);
}

/**
 * tvmath_subctime(tv):
 * Set tv -= monoclock.
 */
int
tvmath_subctime(struct timeval * tv)
{
	struct timeval tnow;

	if (monoclock_get(&tnow))
		goto err0;
	tv->tv_sec -= tnow.tv_sec;
	tv->tv_usec -= tnow.tv_usec;
	if (tv->tv_usec < 0) {
		tv->tv_usec += 1000000;
		tv->tv_sec -= 1;
	}

	/* Success! */
	return (0);

err0:
	/* Failure! */
	return (-1);
}

/**
 * tvmath_rsubctime(tv):
 * Set tv = monoclock - tv.
 */
int
tvmath_rsubctime(struct timeval * tv)
{
	struct timeval tnow;

	if (monoclock_get(&tnow))
		goto err0;
	tv->tv_sec = tnow.tv_sec - tv->tv_sec;
	tv->tv_usec = tnow.tv_usec - tv->tv_usec;
	if (tv->tv_usec < 0) {
		tv->tv_usec += 1000000;
		tv->tv_sec -= 1;
	}

	/* Success! */
	return (0);

err0:
	/* Failure! */
	return (-1);
}