mirror of
https://gitlab.gnome.org/GNOME/nautilus
synced 2024-10-05 23:40:01 +00:00
16e3e6ddd3
Replace the eel_boolean_bit typedef with a plain guint and remove all includes.
172 lines
4.2 KiB
C
172 lines
4.2 KiB
C
/* eel-vfs-extensions.c - gnome-vfs extensions. Its likely some of these will
|
|
* be part of gnome-vfs in the future.
|
|
*
|
|
* Copyright (C) 1999, 2000 Eazel, Inc.
|
|
*
|
|
* The Gnome Library is free software; you can redistribute it and/or
|
|
* modify it under the terms of the GNU Library General Public License as
|
|
* published by the Free Software Foundation; either version 2 of the
|
|
* License, or (at your option) any later version.
|
|
*
|
|
* The Gnome Library is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
* Library General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU Library General Public
|
|
* License along with the Gnome Library; see the file COPYING.LIB. If not,
|
|
* see <http://www.gnu.org/licenses/>.
|
|
*
|
|
* Authors: Darin Adler <darin@eazel.com>
|
|
* Pavel Cisler <pavel@eazel.com>
|
|
* Mike Fleming <mfleming@eazel.com>
|
|
* John Sullivan <sullivan@eazel.com>
|
|
*/
|
|
|
|
#include <config.h>
|
|
#include "eel-vfs-extensions.h"
|
|
#include "eel-lib-self-check-functions.h"
|
|
|
|
#include <glib.h>
|
|
#include <glib/gi18n-lib.h>
|
|
#include <gio/gio.h>
|
|
|
|
#include "eel-string.h"
|
|
|
|
#include <string.h>
|
|
#include <stdlib.h>
|
|
|
|
gboolean
|
|
eel_uri_is_starred (const gchar *uri)
|
|
{
|
|
return g_str_has_prefix (uri, "starred:");
|
|
}
|
|
|
|
/* It also matches trashed folders inside Trash,
|
|
* use `eel_uri_is_trash_root` if that's not desirable. */
|
|
gboolean
|
|
eel_uri_is_trash (const char *uri)
|
|
{
|
|
return g_str_has_prefix (uri, "trash:");
|
|
}
|
|
|
|
gboolean
|
|
eel_uri_is_trash_root (const char *uri)
|
|
{
|
|
return g_strcmp0 (uri, "trash:///") == 0;
|
|
}
|
|
|
|
gboolean
|
|
eel_uri_is_recent (const char *uri)
|
|
{
|
|
return g_str_has_prefix (uri, "recent:");
|
|
}
|
|
|
|
gboolean
|
|
eel_uri_is_search (const char *uri)
|
|
{
|
|
return g_str_has_prefix (uri, EEL_SEARCH_URI);
|
|
}
|
|
|
|
gboolean
|
|
eel_uri_is_other_locations (const char *uri)
|
|
{
|
|
return g_str_has_prefix (uri, "other-locations:");
|
|
}
|
|
|
|
/**
|
|
* eel_filename_get_extension_offset:
|
|
* @filename: a null-terminated string representing the basename of a file, with
|
|
* or without extension.
|
|
*
|
|
* Returns: (nullable) (transfer none): A pointer to the substring containing
|
|
* the dot and extension, or %NULL if there
|
|
* is no extension.
|
|
*/
|
|
char *
|
|
eel_filename_get_extension_offset (const char *filename)
|
|
{
|
|
char *end, *end2;
|
|
const char *start;
|
|
|
|
if (filename == NULL || filename[0] == '\0')
|
|
{
|
|
return NULL;
|
|
}
|
|
|
|
/* basename must have at least one char */
|
|
start = filename + 1;
|
|
|
|
end = strrchr (start, '.');
|
|
if (end == NULL || end[1] == '\0')
|
|
{
|
|
return NULL;
|
|
}
|
|
|
|
if (end != start)
|
|
{
|
|
if (strcmp (end, ".gz") == 0 ||
|
|
strcmp (end, ".bz2") == 0 ||
|
|
strcmp (end, ".sit") == 0 ||
|
|
strcmp (end, ".Z") == 0 ||
|
|
strcmp (end, ".bz") == 0 ||
|
|
strcmp (end, ".xz") == 0)
|
|
{
|
|
end2 = end - 1;
|
|
while (end2 > start &&
|
|
*end2 != '.')
|
|
{
|
|
end2--;
|
|
}
|
|
if (end2 != start)
|
|
{
|
|
end = end2;
|
|
}
|
|
}
|
|
}
|
|
|
|
return end;
|
|
}
|
|
|
|
char *
|
|
eel_filename_strip_extension (const char *filename_with_extension)
|
|
{
|
|
char *filename, *end;
|
|
|
|
if (filename_with_extension == NULL)
|
|
{
|
|
return NULL;
|
|
}
|
|
|
|
filename = g_strdup (filename_with_extension);
|
|
end = eel_filename_get_extension_offset (filename);
|
|
|
|
if (end && end != filename)
|
|
{
|
|
*end = '\0';
|
|
}
|
|
|
|
return filename;
|
|
}
|
|
|
|
void
|
|
eel_filename_get_rename_region (const char *filename,
|
|
int *start_offset,
|
|
int *end_offset)
|
|
{
|
|
char *filename_without_extension;
|
|
|
|
g_return_if_fail (start_offset != NULL);
|
|
g_return_if_fail (end_offset != NULL);
|
|
|
|
*start_offset = 0;
|
|
*end_offset = 0;
|
|
|
|
g_return_if_fail (filename != NULL);
|
|
|
|
filename_without_extension = eel_filename_strip_extension (filename);
|
|
*end_offset = g_utf8_strlen (filename_without_extension, -1);
|
|
|
|
g_free (filename_without_extension);
|
|
}
|