v = va_arg(f->args, double);
v = fmod(v*12/pi, 24); /* now hours */
h = floor(v);
v = fmod((v-h)*60, 60); /* now leftover minutes */
m = floor(v);
v = fmod((v-m)*60, 60); /* now leftover seconds */
c = floor(v);
return fmtprint(f, "%2dh%.2dm%.2ds", h, m, c);
}
int
Dconv(Fmt *f1)
{
double v;
int h, m, c, f;
v = va_arg(f1->args, double);
v = fmod(v/radian, 360); /* now degrees */
f = 0;
if(v > 180) {
v = 360 - v;
f = 1;
}
h = floor(v);
v = fmod((v-h)*60, 60); /* now leftover minutes */
m = floor(v);
v = fmod((v-m)*60, 60); /* now leftover seconds */
c = floor(v);
return fmtprint(f1, "%c%.2d°%.2d'%.2d\"", "+-"[f], h, m, c);
}