Blame libgupnp-av/time-utils.c

Packit 712bc5
/*
Packit 712bc5
 * Copyright (C) 2012 Intel Corporation.
Packit 712bc5
 *
Packit 712bc5
 * Authors: Jens Georg <jensg@openismus.com>
Packit 712bc5
 *
Packit 712bc5
 * This library is free software; you can redistribute it and/or
Packit 712bc5
 * modify it under the terms of the GNU Library General Public
Packit 712bc5
 * License as published by the Free Software Foundation; either
Packit 712bc5
 * version 2 of the License, or (at your option) any later version.
Packit 712bc5
 *
Packit 712bc5
 * This library is distributed in the hope that it will be useful,
Packit 712bc5
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit 712bc5
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
Packit 712bc5
 * Library General Public License for more details.
Packit 712bc5
 *
Packit 712bc5
 * You should have received a copy of the GNU Library General Public
Packit 712bc5
 * License along with this library; if not, write to the
Packit 712bc5
 * Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor,
Packit 712bc5
 * Boston, MA 02110-1301, USA.
Packit 712bc5
 */
Packit 712bc5
Packit 712bc5
#include <glib.h>
Packit 712bc5
Packit 712bc5
#include "time-utils.h"
Packit 712bc5
Packit 712bc5
#define SEC_PER_MIN 60
Packit 712bc5
#define SEC_PER_HOUR 3600
Packit 712bc5
Packit 712bc5
long
Packit 712bc5
seconds_from_time (const char *time_str)
Packit 712bc5
{
Packit 712bc5
        char **tokens;
Packit 712bc5
        gdouble seconds = -1;
Packit 712bc5
Packit 712bc5
        if (time_str == NULL)
Packit 712bc5
                return -1;
Packit 712bc5
Packit 712bc5
        tokens = g_strsplit (time_str, ":", -1);
Packit 712bc5
        if (tokens[0] == NULL ||
Packit 712bc5
            tokens[1] == NULL ||
Packit 712bc5
            tokens[2] == NULL)
Packit 712bc5
                goto return_point;
Packit 712bc5
Packit 712bc5
        seconds = g_strtod (tokens[2], NULL);
Packit 712bc5
        seconds += g_strtod (tokens[1], NULL) * SEC_PER_MIN;
Packit 712bc5
        seconds += g_strtod (tokens[0], NULL) * SEC_PER_HOUR;
Packit 712bc5
Packit 712bc5
return_point:
Packit 712bc5
        g_strfreev (tokens);
Packit 712bc5
Packit 712bc5
        return (long) seconds;
Packit 712bc5
}
Packit 712bc5
Packit 712bc5
char *
Packit 712bc5
seconds_to_time (long seconds)
Packit 712bc5
{
Packit 712bc5
        char *str;
Packit 712bc5
Packit 712bc5
        if (seconds < 0)
Packit 712bc5
                return NULL;
Packit 712bc5
Packit 712bc5
        str = g_strdup_printf ("%ld:%.2ld:%.2ld.000",
Packit 712bc5
                               seconds / (60 * 60),
Packit 712bc5
                               (seconds / 60) % 60,
Packit 712bc5
                               seconds % 60);
Packit 712bc5
Packit 712bc5
        return str;
Packit 712bc5
}