|
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 |
}
|