Blame src/gom-utils.c

Packit f01ec2
/*
Packit f01ec2
 * GNOME Online Miners - crawls through your online content
Packit f01ec2
 * Copyright (c) 2011, 2012 Red Hat, Inc.
Packit f01ec2
 *
Packit f01ec2
 * This program is free software; you can redistribute it and/or
Packit f01ec2
 * modify it under the terms of the GNU General Public License
Packit f01ec2
 * as published by the Free Software Foundation; either version 2
Packit f01ec2
 * of the License, or (at your option) any later version.
Packit f01ec2
 *
Packit f01ec2
 * This program is distributed in the hope that it will be useful,
Packit f01ec2
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
Packit f01ec2
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
Packit f01ec2
 * GNU General Public License for more details.
Packit f01ec2
 *
Packit f01ec2
 * You should have received a copy of the GNU General Public License
Packit f01ec2
 * along with this program; if not, write to the Free Software
Packit f01ec2
 * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
Packit f01ec2
 * 02110-1301, USA.
Packit f01ec2
 *
Packit f01ec2
 * Author: Cosimo Cecchi <cosimoc@redhat.com>
Packit f01ec2
 *
Packit f01ec2
 */
Packit f01ec2
Packit f01ec2
#include <string.h>
Packit f01ec2
Packit f01ec2
#include "gom-utils.h"
Packit f01ec2
Packit f01ec2
static const char *
Packit f01ec2
gom_filename_get_extension_offset (const char *filename)
Packit f01ec2
{
Packit f01ec2
	char *end, *end2;
Packit f01ec2
Packit f01ec2
	end = strrchr (filename, '.');
Packit f01ec2
Packit f01ec2
	if (end && end != filename) {
Packit f01ec2
		if (strcmp (end, ".gz") == 0 ||
Packit f01ec2
		    strcmp (end, ".bz2") == 0 ||
Packit f01ec2
		    strcmp (end, ".sit") == 0 ||
Packit f01ec2
		    strcmp (end, ".Z") == 0) {
Packit f01ec2
			end2 = end - 1;
Packit f01ec2
			while (end2 > filename &&
Packit f01ec2
			       *end2 != '.') {
Packit f01ec2
				end2--;
Packit f01ec2
			}
Packit f01ec2
			if (end2 != filename) {
Packit f01ec2
				end = end2;
Packit f01ec2
			}
Packit f01ec2
		}
Packit f01ec2
	}
Packit f01ec2
Packit f01ec2
	return end;
Packit f01ec2
}
Packit f01ec2
Packit f01ec2
gchar *
Packit f01ec2
gom_filename_strip_extension (const gchar *filename_with_extension)
Packit f01ec2
{
Packit f01ec2
  gchar *end;
Packit f01ec2
  gchar *filename;
Packit f01ec2
Packit f01ec2
  if (filename_with_extension == NULL)
Packit f01ec2
    return NULL;
Packit f01ec2
Packit f01ec2
  filename = g_strdup (filename_with_extension);
Packit f01ec2
  end = (gchar *) gom_filename_get_extension_offset (filename);
Packit f01ec2
Packit f01ec2
  if (end != NULL && end != filename)
Packit f01ec2
    *end = '\0';
Packit f01ec2
Packit f01ec2
  return filename;
Packit f01ec2
}
Packit f01ec2
Packit f01ec2
const gchar *
Packit f01ec2
gom_filename_to_rdf_type (const gchar *filename_with_extension)
Packit f01ec2
{
Packit f01ec2
  const gchar *extension;
Packit f01ec2
  const gchar *type = NULL;
Packit f01ec2
Packit f01ec2
  g_return_val_if_fail (filename_with_extension != NULL, NULL);
Packit f01ec2
Packit f01ec2
  extension = gom_filename_get_extension_offset (filename_with_extension);
Packit f01ec2
Packit f01ec2
  if (g_strcmp0 (extension, ".txt") == 0)
Packit f01ec2
    type = "nfo:HtmlDocument";
Packit f01ec2
Packit f01ec2
  else if (g_strcmp0 (extension, ".doc") == 0
Packit f01ec2
      || g_strcmp0 (extension, ".docm") == 0
Packit f01ec2
      || g_strcmp0 (extension, ".docx") == 0
Packit f01ec2
      || g_strcmp0 (extension, ".dot") == 0
Packit f01ec2
      || g_strcmp0 (extension, ".dotx") == 0
Packit f01ec2
      || g_strcmp0 (extension, ".odt") == 0
Packit f01ec2
      || g_strcmp0 (extension, ".pdf") == 0)
Packit f01ec2
    type = "nfo:PaginatedTextDocument";
Packit f01ec2
Packit f01ec2
  else if (g_strcmp0 (extension, ".epub") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".djv") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".djvu") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".cbr") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".cbz") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".cbt") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".cb7") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".fb2") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".fb2.zip") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".mobi") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".prc") == 0)
Packit f01ec2
    type = "nfo:EBook";
Packit f01ec2
Packit f01ec2
  else if (g_strcmp0 (extension, ".odp") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".pot") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".potm") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".potx") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".pps") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".ppsm") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".ppsx") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".ppt") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".pptm") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".pptx") == 0)
Packit f01ec2
    type = "nfo:Presentation";
Packit f01ec2
Packit f01ec2
  else if (g_strcmp0 (extension, ".txt") == 0)
Packit f01ec2
    type = "nfo:PlainTextDocument";
Packit f01ec2
Packit f01ec2
  else if (g_strcmp0 (extension, ".ods") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".xls") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".xlsb") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".xlsm") == 0
Packit f01ec2
           || g_strcmp0 (extension, ".xlsx") == 0)
Packit f01ec2
    type = "nfo:Spreadsheet";
Packit f01ec2
Packit f01ec2
  return type;
Packit f01ec2
}
Packit f01ec2
Packit f01ec2
gchar *
Packit f01ec2
gom_iso8601_from_timestamp (gint64 timestamp)
Packit f01ec2
{
Packit f01ec2
  GTimeVal tv;
Packit f01ec2
Packit f01ec2
  tv.tv_sec = timestamp;
Packit f01ec2
  tv.tv_usec = 0;
Packit f01ec2
  return g_time_val_to_iso8601 (&tv;;
Packit f01ec2
}