[easytag/wip/gerror: 6/8] Use GError in WavPack tagging code
- From: David King <davidk src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [easytag/wip/gerror: 6/8] Use GError in WavPack tagging code
- Date: Mon, 29 Sep 2014 17:06:38 +0000 (UTC)
commit 1561588a121294b2f91e9ed5589c394212858cbf
Author: David King <amigadave amigadave com>
Date: Mon Sep 29 16:11:20 2014 +0100
Use GError in WavPack tagging code
src/et_core.c | 18 ++++++++--
src/tags/wavpack_header.c | 46 ++++++++++++++-----------
src/tags/wavpack_header.h | 7 +++-
src/tags/wavpack_tag.c | 83 ++++++++++++++++++++++++++++-----------------
src/tags/wavpack_tag.h | 4 +-
5 files changed, 100 insertions(+), 58 deletions(-)
---
diff --git a/src/et_core.c b/src/et_core.c
index ed133d7..841552c 100644
--- a/src/et_core.c
+++ b/src/et_core.c
@@ -583,7 +583,13 @@ GList *ET_Add_File_To_File_List (gchar *filename)
#endif
#ifdef ENABLE_WAVPACK
case WAVPACK_TAG:
- Wavpack_Tag_Read_File_Tag(filename, FileTag);
+ if (!wavpack_tag_read_file_tag (filename, FileTag, &error))
+ {
+ Log_Print (LOG_ERROR,
+ _("Error reading tag from WavPack file ā%sā: %s"),
+ filename_utf8, error->message);
+ g_clear_error (&error);
+ }
break;
#endif
#ifdef ENABLE_OPUS
@@ -674,7 +680,13 @@ GList *ET_Add_File_To_File_List (gchar *filename)
break;
#ifdef ENABLE_WAVPACK
case WAVPACK_FILE:
- Wavpack_Header_Read_File_Info(filename, ETFileInfo);
+ if (!wavpack_header_read_file_info (filename, ETFileInfo, &error))
+ {
+ Log_Print (LOG_ERROR,
+ _("Error while querying information for file ā%sā: %s"),
+ filename_utf8, error->message);
+ g_error_free (error);
+ }
break;
#endif
#ifdef ENABLE_MP4
@@ -3514,7 +3526,7 @@ ET_Save_File_Tag_To_HD (ET_File *ETFile, GError **error)
#endif
#ifdef ENABLE_WAVPACK
case WAVPACK_TAG:
- state = Wavpack_Tag_Write_File_Tag(ETFile);
+ state = wavpack_tag_write_file_tag (ETFile, error);
break;
#endif
#ifdef ENABLE_OPUS
diff --git a/src/tags/wavpack_header.c b/src/tags/wavpack_header.c
index d6ecf73..94f65e2 100644
--- a/src/tags/wavpack_header.c
+++ b/src/tags/wavpack_header.c
@@ -1,21 +1,20 @@
-/* wavpack_header.c - 2007/02/15 */
-/*
- * EasyTAG - Tag editor for many file types
- * Copyright (C) 2007 Maarten Maathuis (madman2003 gmail com)
+/* EasyTAG - Tag editor for audio files.
+ * Copyright (C) 2014 David King <amigadave amigadave com>
+ * Copyright (C) 2007 Maarten Maathuis (madman2003 gmail com)
*
- * This program is free software; you can redistribute it and/or modify
- * it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; either version 2 of the License, or
- * (at your option) any later version.
+ * This program is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU General Public License as published by
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
*
- * This program 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 General Public License for more details.
+ * This program 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 General Public License for more details.
*
- * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ * 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., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*/
#include <config.h>
@@ -37,14 +36,22 @@
gboolean
-Wavpack_Header_Read_File_Info (const gchar *filename,
- ET_File_Info *ETFileInfo)
+wavpack_header_read_file_info (const gchar *filename,
+ ET_File_Info *ETFileInfo,
+ GError **error)
{
WavpackContext *wpc;
+ gchar message[80];
- wpc = WavpackOpenFileInput(filename, NULL, 0, 0);
+ g_return_val_if_fail (filename != NULL && ETFileInfo != NULL, FALSE);
+ g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
- if ( wpc == NULL ) {
+ /* TODO: Use WavpackOpenFileInputEx() instead. */
+ wpc = WavpackOpenFileInput (filename, message, 0, 0);
+
+ if (wpc == NULL)
+ {
+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, "%s", message);
return FALSE;
}
@@ -61,7 +68,6 @@ Wavpack_Header_Read_File_Info (const gchar *filename,
return TRUE;
}
-
EtFileHeaderFields *
Wavpack_Header_Display_File_Info_To_UI (const gchar *filename_utf8,
ET_File *ETFile)
diff --git a/src/tags/wavpack_header.h b/src/tags/wavpack_header.h
index 0b5f77a..ae603e7 100644
--- a/src/tags/wavpack_header.h
+++ b/src/tags/wavpack_header.h
@@ -20,11 +20,14 @@
#ifndef ET_WAVPACK_HEADER_H_
#define ET_WAVPACK_HEADER_H_
-
#include "et_core.h"
-gboolean Wavpack_Header_Read_File_Info (const gchar *filename, ET_File_Info *ETFileInfo);
+G_BEGIN_DECLS
+
+gboolean wavpack_header_read_file_info (const gchar *filename, ET_File_Info *ETFileInfo, GError **error);
EtFileHeaderFields * Wavpack_Header_Display_File_Info_To_UI (const gchar *filename_utf8, ET_File *ETFile);
void et_wavpack_file_header_fields_free (EtFileHeaderFields *fields);
+G_END_DECLS
+
#endif /* ET_WAVPACK_HEADER_H_ */
diff --git a/src/tags/wavpack_tag.c b/src/tags/wavpack_tag.c
index 472ee24..f26eb2b 100644
--- a/src/tags/wavpack_tag.c
+++ b/src/tags/wavpack_tag.c
@@ -65,19 +65,26 @@
* Read tag data from a Wavpack file.
*/
gboolean
-Wavpack_Tag_Read_File_Tag (const gchar *filename, File_Tag *FileTag)
+wavpack_tag_read_file_tag (const gchar *filename,
+ File_Tag *FileTag,
+ GError **error)
{
WavpackContext *wpc;
+ gchar message[80];
gchar *field, *field2;
guint length;
int open_flags = OPEN_TAGS;
g_return_val_if_fail (filename != NULL && FileTag != NULL, FALSE);
+ g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
- wpc = WavpackOpenFileInput(filename, NULL, open_flags, 0);
+ /* TODO: Use WavpackOpenFileInputEx() instead. */
+ wpc = WavpackOpenFileInput (filename, message, open_flags, 0);
- if ( wpc == NULL ) {
+ if (wpc == NULL)
+ {
+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, "%s", message);
return FALSE;
}
@@ -267,22 +274,28 @@ Wavpack_Tag_Read_File_Tag (const gchar *filename, File_Tag *FileTag)
return TRUE;
}
-
-gboolean Wavpack_Tag_Write_File_Tag (ET_File *ETFile)
+gboolean
+wavpack_tag_write_file_tag (ET_File *ETFile,
+ GError **error)
{
+ const gchar *filename;
+ const File_Tag *FileTag;
WavpackContext *wpc;
-
- gchar *filename = ((File_Name *)((GList *)ETFile->FileNameCur)->data)->value;
- File_Tag *FileTag = (File_Tag *)ETFile->FileTag->data;
- gchar *buffer;
-
- int open_flags = OPEN_EDIT_TAGS;
+ gchar message[80];
+ gchar *buffer;
g_return_val_if_fail (ETFile != NULL && ETFile->FileTag != NULL, FALSE);
+ g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
+
+ filename = ((File_Name *)((GList *)ETFile->FileNameCur)->data)->value;
+ FileTag = (File_Tag *)ETFile->FileTag->data;
- wpc = WavpackOpenFileInput(filename, NULL, open_flags, 0);
+ /* TODO: Use WavpackOpenFileInputEx() instead. */
+ wpc = WavpackOpenFileInput (filename, message, OPEN_EDIT_TAGS, 0);
- if ( wpc == NULL ) {
+ if (wpc == NULL)
+ {
+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, "%s", message);
return FALSE;
}
@@ -290,21 +303,21 @@ gboolean Wavpack_Tag_Write_File_Tag (ET_File *ETFile)
* Title
*/
if (FileTag->title && WavpackAppendTagItem(wpc, "title", FileTag->title, strlen(FileTag->title)) == 0) {
- return FALSE;
+ goto err;
}
/*
* Artist
*/
if (FileTag->artist && WavpackAppendTagItem(wpc, "artist", FileTag->artist, strlen(FileTag->artist)) ==
0) {
- return FALSE;
+ goto err;
}
/*
* Album
*/
if (FileTag->album && WavpackAppendTagItem(wpc, "album", FileTag->album, strlen(FileTag->album)) == 0) {
- return FALSE;
+ goto err;
}
/*
@@ -318,7 +331,7 @@ gboolean Wavpack_Tag_Write_File_Tag (ET_File *ETFile)
if (WavpackAppendTagItem (wpc, "part", buffer, strlen (buffer)) == 0)
{
g_free (buffer);
- return FALSE;
+ goto err;
}
else
{
@@ -331,7 +344,7 @@ gboolean Wavpack_Tag_Write_File_Tag (ET_File *ETFile)
FileTag->disc_number,
strlen (FileTag->disc_number)) == 0)
{
- return FALSE;
+ goto err;
}
}
@@ -339,7 +352,7 @@ gboolean Wavpack_Tag_Write_File_Tag (ET_File *ETFile)
* Year
*/
if (FileTag->year && WavpackAppendTagItem(wpc, "year", FileTag->year, strlen(FileTag->year)) == 0) {
- return FALSE;
+ goto err;
}
/*
@@ -349,13 +362,13 @@ gboolean Wavpack_Tag_Write_File_Tag (ET_File *ETFile)
buffer = g_strdup_printf("%s/%s", FileTag->track, FileTag->track_total);
if (FileTag->track && WavpackAppendTagItem(wpc, "track", buffer, strlen(buffer)) == 0) {
g_free(buffer);
- return FALSE;
+ goto err;
} else {
g_free(buffer);
}
} else {
if (FileTag->track && WavpackAppendTagItem(wpc, "track", FileTag->track, strlen(FileTag->track)) ==
0) {
- return FALSE;
+ goto err;
}
}
@@ -363,57 +376,65 @@ gboolean Wavpack_Tag_Write_File_Tag (ET_File *ETFile)
* Genre
*/
if (FileTag->genre && WavpackAppendTagItem(wpc, "genre", FileTag->genre, strlen(FileTag->genre)) == 0) {
- return FALSE;
+ goto err;
}
/*
* Comment
*/
if (FileTag->comment && WavpackAppendTagItem(wpc, "comment", FileTag->comment, strlen(FileTag->comment))
== 0) {
- return FALSE;
+ goto err;
}
/*
* Composer
*/
if (FileTag->composer && WavpackAppendTagItem(wpc, "composer", FileTag->composer,
strlen(FileTag->composer)) == 0) {
- return FALSE;
+ goto err;
}
/*
* Original artist
*/
if (FileTag->orig_artist && WavpackAppendTagItem(wpc, "original artist", FileTag->orig_artist,
strlen(FileTag->orig_artist)) == 0) {
- return FALSE;
+ goto err;
}
/*
* Copyright
*/
if (FileTag->copyright && WavpackAppendTagItem(wpc, "copyright", FileTag->copyright,
strlen(FileTag->copyright)) == 0) {
- return FALSE;
+ goto err;
}
/*
* URL
*/
if (FileTag->url && WavpackAppendTagItem(wpc, "copyright url", FileTag->url, strlen(FileTag->url)) == 0)
{
- return FALSE;
+ goto err;
}
/*
* Encoded by
*/
if (FileTag->encoded_by && WavpackAppendTagItem(wpc, "encoded by", FileTag->encoded_by,
strlen(FileTag->encoded_by)) == 0) {
- return FALSE;
+ goto err;
}
- WavpackWriteTag(wpc);
+ if (WavpackWriteTag (wpc) != 0)
+ {
+ goto err;
+ }
- WavpackCloseFile(wpc);
+ WavpackCloseFile (wpc);
return TRUE;
-}
+err:
+ g_set_error (error, G_FILE_ERROR, G_FILE_ERROR_FAILED, "%s",
+ WavpackGetErrorMessage (wpc));
+ WavpackCloseFile (wpc);
+ return FALSE;
+}
#endif /* ENABLE_WAVPACK */
diff --git a/src/tags/wavpack_tag.h b/src/tags/wavpack_tag.h
index 0f02154..0cd8607 100644
--- a/src/tags/wavpack_tag.h
+++ b/src/tags/wavpack_tag.h
@@ -25,8 +25,8 @@
G_BEGIN_DECLS
-gboolean Wavpack_Tag_Read_File_Tag (const gchar *filename, File_Tag *FileTag);
-gboolean Wavpack_Tag_Write_File_Tag (ET_File *ETFile);
+gboolean wavpack_tag_read_file_tag (const gchar *filename, File_Tag *FileTag, GError **error);
+gboolean wavpack_tag_write_file_tag (ET_File *ETFile, GError **error);
G_END_DECLS
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]