From c014c8194892e70eb6ef736367ecadbbed701e53 Mon Sep 17 00:00:00 2001 From: rocky Date: Sun, 9 May 2004 16:53:01 +0000 Subject: [PATCH] Even more checking on conversion routines. Add cdio_msf_to_str. --- lib/sector.c | 31 +++++++++++++++++++++---------- 1 file changed, 21 insertions(+), 10 deletions(-) diff --git a/lib/sector.c b/lib/sector.c index 24e313ca..e9623493 100644 --- a/lib/sector.c +++ b/lib/sector.c @@ -1,5 +1,5 @@ /* - $Id: sector.c,v 1.5 2004/05/07 10:59:12 rocky Exp $ + $Id: sector.c,v 1.6 2004/05/09 16:53:01 rocky Exp $ Copyright (C) 2000 Herbert Valerio Riedel @@ -32,12 +32,13 @@ #endif -static const char _rcsid[] = "$Id: sector.c,v 1.5 2004/05/07 10:59:12 rocky Exp $"; +static const char _rcsid[] = "$Id: sector.c,v 1.6 2004/05/09 16:53:01 rocky Exp $"; lba_t cdio_lba_to_lsn (lba_t lba) { - if (CDIO_INVALID_LBA == lba) return CDIO_INVALID_LSN; + if (CDIO_INVALID_LBA == lba) return CDIO_INVALID_LSN; + if (CDIO_PREGAP_SECTORS > lba) return lba; /* Assume no pregap?*/ return lba - CDIO_PREGAP_SECTORS; } @@ -55,14 +56,14 @@ cdio_lba_to_msf (lba_t lba, msf_t *msf) char * cdio_lba_to_msf_str (lba_t lba) { - char buf[16]; - msf_t _msf = { .m = 0, .s = 0, .f = 0 }; - cdio_lba_to_msf (lba, &_msf); - - snprintf (buf, sizeof (buf), "%.2x:%.2x.%.2x", _msf.m, _msf.s, _msf.f); - - return strdup (buf); + if (CDIO_INVALID_LBA == lba) { + return strdup("*INVALID"); + } else { + msf_t msf = { .m = 0, .s = 0, .f = 0 }; + cdio_lba_to_msf (lba, &msf); + return cdio_msf_to_str(&msf); + } } lba_t @@ -103,6 +104,16 @@ cdio_msf_to_lsn (const msf_t *msf) return cdio_lba_to_lsn(cdio_msf_to_lba (msf)); } +/* warning, returns new allocated string */ +char * +cdio_msf_to_str (const msf_t *msf) +{ + char buf[16]; + + snprintf (buf, sizeof (buf), "%.3x:%.2x.%.2x", msf->m, msf->s, msf->f); + return strdup (buf); +} + /* * Local variables: