aboutsummaryrefslogtreecommitdiff
path: root/unit_label.c
blob: 22043ee2951a0a961475b8b116e7a8b7964ee310 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#include <unistd.h>

struct unit_label {
	/* number of times this unit fits into the immediate larger one */
	double count;

	/* label for the unit*/
	char *label;
};

double make_unit_whatsit(const struct unit_label l[], char **unit, double value) {
	size_t i = 0;

	for (i = 0; l[i+1].label; i++) {
		if (l[i].count > value) {
			break;
		}
		value /= l[i].count;
	}

	*unit = l[i].label;
	return value;
}