*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
- * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
+ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include <config.h>
void
ev_tmp_filename_unlink (const gchar *filename)
{
- const gchar *tempdir;
-
if (!filename)
return;
- tempdir = g_get_tmp_dir ();
- if (g_str_has_prefix (filename, tempdir) == 0) {
+ if (!tmp_dir)
+ return;
+
+ if (g_str_has_prefix (filename, tmp_dir)) {
g_unlink (filename);
}
}
g_object_unref (file);
}
+gboolean
+ev_file_is_temp (GFile *file)
+{
+ gchar *path;
+ gboolean retval;
+
+ if (!g_file_is_native (file))
+ return FALSE;
+
+ path = g_file_get_path (file);
+ if (!path)
+ return FALSE;
+
+ retval = g_str_has_prefix (path, g_get_tmp_dir ());
+ g_free (path);
+
+ return retval;
+}
+
/**
* ev_xfer_uri_simple:
* @from: the source URI
target_file = g_file_new_for_uri (to);
result = g_file_copy (source_file, target_file,
-#if GLIB_CHECK_VERSION(2,19,0)
G_FILE_COPY_TARGET_DEFAULT_PERMS |
-#endif
G_FILE_COPY_OVERWRITE,
NULL, NULL, NULL, error);
static gchar *
get_mime_type_from_data (const gchar *uri, GError **error)
{
+#ifndef G_OS_WIN32
GFile *file;
GFileInputStream *input_stream;
gssize size_read;
mime_type = g_content_type_get_mime_type (content_type);
g_free (content_type);
return mime_type;
+#else
+ /*
+ * On Windows, the implementation of g_content_type_guess() is too limited at the moment, so we do not
+ * use it and fall back to get_mime_type_from_uri()
+ */
+ return get_mime_type_from_uri (uri, error);
+#endif /* G_OS_WIN32 */
}
/**
}
/* Compressed files support */
-#define BZIPCOMMAND "bzip2"
-#define GZIPCOMMAND "gzip"
+
+static const char *compressor_cmds[] = {
+ NULL,
+ "bzip2",
+ "gzip",
+ "xz"
+};
+
#define N_ARGS 4
#define BUFFER_SIZE 1024
if (type == EV_COMPRESSION_NONE)
return NULL;
- cmd = g_find_program_in_path ((type == EV_COMPRESSION_BZIP2) ? BZIPCOMMAND : GZIPCOMMAND);
+ cmd = g_find_program_in_path (compressor_cmds[type]);
if (!cmd) {
/* FIXME: better error codes! */
/* FIXME: i18n later */
g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED,
"Failed to find the \"%s\" command in the search path.",
- type == EV_COMPRESSION_BZIP2 ? BZIPCOMMAND : GZIPCOMMAND);
+ compressor_cmds[type]);
return NULL;
}