diff options
-rw-r--r-- | usr.bin/cdio/cdio.c | 63 |
1 files changed, 23 insertions, 40 deletions
diff --git a/usr.bin/cdio/cdio.c b/usr.bin/cdio/cdio.c index 085dcae6d1d..dc30f2ad55b 100644 --- a/usr.bin/cdio/cdio.c +++ b/usr.bin/cdio/cdio.c @@ -1,4 +1,4 @@ -/* $OpenBSD: cdio.c,v 1.41 2005/12/31 19:51:15 krw Exp $ */ +/* $OpenBSD: cdio.c,v 1.42 2006/01/09 00:20:31 krw Exp $ */ /* Copyright (c) 1995 Serge V. Vakulenko * All rights reserved. @@ -177,6 +177,7 @@ void help(void); void usage(void); char *strstatus(int); int cdid(void); +void addmsf(u_int *, u_int *, u_int *, u_char, u_char, u_char); void help(void) @@ -643,36 +644,12 @@ Play_Relative_Addresses: tr1--; - f1 += tf; - if (f1 >= 75) { - s1 += f1 / 75; - f1 %= 75; - } - - s1 += ts; - if (s1 >= 60) { - m1 += s1 / 60; - s1 %= 60; - } - - m1 += tm; + addmsf(&m1, &s1, &f1, tm, ts, tf); if (tr2 <= 0) { if (m2 || s2 || f2) { tr2 = tr1; - f2 += f1; - if (f2 >= 75) { - s2 += f2 / 75; - f2 %= 75; - } - - s2 += s1; - if (s2 > 60) { - m2 += s2 / 60; - s2 %= 60; - } - - m2 += m1; + addmsf(&m2, &s2, &f2, m1, s1, f1); } else { tr2 = n; if (msf) { @@ -700,19 +677,7 @@ Play_Relative_Addresses: } else lba2msf(toc_buffer[tr2].addr.lba, &tm, &ts, &tf); - f2 += tf; - if (f2 >= 75) { - s2 += f2 / 75; - f2 %= 75; - } - - s2 += ts; - if (s2 > 60) { - m2 += s2 / 60; - s2 %= 60; - } - - m2 += tm; + addmsf(&m2, &s2, &f2, tm, ts, tf); } if (msf) { @@ -1392,3 +1357,21 @@ switch_el(void) } } } + +void +addmsf(u_int *m, u_int *s, u_int *f, u_char m_inc, u_char s_inc, u_char f_inc) +{ + *f += f_inc; + if (*f > 75) { + *s += *f / 75; + *f %= 75; + } + + *s += s_inc; + if (*s > 60) { + *m += *s / 60; + *s %= 60; + } + + *m += m_inc; +} |