Example #1
0
int deps_match(const struct deps *deps, uint x, uint y) {
	uint f1, f2;
	const char *s1, *s2;
	int d;

	if (array_get(&deps->names, x) != array_get(&deps->names, y))
	       return 0;

	f1 = array_get(&deps->flags, x);
        f2 = array_get(&deps->flags, y);

	if (!f1 || !f2)
		return 1;

	d = array_get(&deps->epochs, x) - array_get(&deps->epochs, y);
	if (!d) {
		s1 = strings_get(deps->strings, array_get(&deps->vers, x)); 
		s2 = strings_get(deps->strings, array_get(&deps->vers, y)); 
		if (*s1 && *s2)
			d = rpmvercmp(s1, s2);
	}
	if (!d) {
		s1 = strings_get(deps->strings, array_get(&deps->rels, x)); 
		s2 = strings_get(deps->strings, array_get(&deps->rels, y)); 
		if (*s1 && *s2)
			d = rpmvercmp(s1, s2);
	}
	if ((!d && f1 & f2) ||
			(d > 0 && (f1 & RPMSENSE_LESS || f2 & RPMSENSE_GREATER)) ||
			(d < 0 && (f1 & RPMSENSE_GREATER || f2 & RPMSENSE_LESS)))
		return 1;
	return 0;
}
Example #2
0
int deps_print(const struct deps *deps, uint dep, char *str, size_t size) {
	const char *n, *v, *r;
	uint f;
	int s, l;

	n = strings_get(deps->strings, array_get(&deps->names, dep));
	v = strings_get(deps->strings, array_get(&deps->vers, dep));
	r = strings_get(deps->strings, array_get(&deps->rels, dep));
	f = array_get(&deps->flags, dep);

	s = snprintf(str, size, "%s", n);
	if (s < 0 || s >= size)
		return s;
	l = s;

	if (!f || !v || !v[0])
		return l;

	s = snprintf(str + l, size - l, " %s%s%s %s", f & RPMSENSE_LESS ? "<" : "",
		f & RPMSENSE_GREATER ? ">" : "", f & RPMSENSE_EQUAL ? "=" : "", v);
	if (s < 0 || s >= size)
		return l + s;
	l += s;

	if (!r || !r[0])
		return l;

	return l + snprintf(str + l, size - l, ".%s", r);
}
Example #3
0
// Initialize the triac control.
void zcd_init(void)
{
    zcd_time_t zcd_calibration = zcd_calibrate();
    zcd_set(0);
    zcd_run(zcd_calibration);
    printf( strings_get(STR_TRIAC_CALIBRATION), zcd_calibration / (F_CPU / 1000000) );
}