add shorthand option --remove-replay-gain to metaflac
diff --git a/doc/html/changelog.html b/doc/html/changelog.html
index 93cb415..d154b2c 100644
--- a/doc/html/changelog.html
+++ b/doc/html/changelog.html
@@ -94,6 +94,7 @@
 			<li>
 				metaflac:
 				<ul>
+					<li>Added shorthand operation <a href="documentation.html#metaflac_shorthand_remove_replay_gain"><span class="argument">--remove-replay-gain</span></a> for removing ReplayGain tags.</li>
 					<li>Importing of non-CDDA-compliant cuesheets now issues a warning.</li>
 				</ul>
 			</li>
diff --git a/doc/html/documentation.html b/doc/html/documentation.html
index 6631a2b..df12b16 100644
--- a/doc/html/documentation.html
+++ b/doc/html/documentation.html
@@ -1166,6 +1166,15 @@
 			</tr>
 			<tr>
 				<td nowrap="nowrap" align="right" valign="top" bgcolor="#F4F4CC">
+					<a name="metaflac_shorthand_remove_replay_gain" />
+					<span class="argument">--remove-replay-gain</span>
+				</td>
+				<td>
+					Removes the ReplayGain tags.
+				</td>
+			</tr>
+			<tr>
+				<td nowrap="nowrap" align="right" valign="top" bgcolor="#F4F4CC">
 					<a name="metaflac_shorthand_add_seekpoint" />
 					<span class="argument">--add-seekpoint={#|X|#x|#s}</span>
 				</td>
diff --git a/include/share/grabbag/replaygain.h b/include/share/grabbag/replaygain.h
index 2d1111c..e8af2d0 100644
--- a/include/share/grabbag/replaygain.h
+++ b/include/share/grabbag/replaygain.h
@@ -35,6 +35,11 @@
 
 extern const unsigned GRABBAG__REPLAYGAIN_MAX_TAG_SPACE_REQUIRED;
 
+extern const FLAC__byte * const GRABBAG__REPLAYGAIN_TAG_TITLE_GAIN; /* = "REPLAYGAIN_TRACK_GAIN" */
+extern const FLAC__byte * const GRABBAG__REPLAYGAIN_TAG_TITLE_PEAK; /* = "REPLAYGAIN_TRACK_PEAK" */
+extern const FLAC__byte * const GRABBAG__REPLAYGAIN_TAG_ALBUM_GAIN; /* = "REPLAYGAIN_ALBUM_GAIN" */
+extern const FLAC__byte * const GRABBAG__REPLAYGAIN_TAG_ALBUM_PEAK; /* = "REPLAYGAIN_ALBUM_PEAK" */
+
 FLAC__bool grabbag__replaygain_is_valid_sample_frequency(unsigned sample_frequency);
 
 FLAC__bool grabbag__replaygain_init(unsigned sample_frequency);
diff --git a/man/metaflac.sgml b/man/metaflac.sgml
index 0423646..b2177e8 100644
--- a/man/metaflac.sgml
+++ b/man/metaflac.sgml
@@ -304,6 +304,14 @@
         </listitem>
       </varlistentry>
       <varlistentry>
+	<term><option>--remove-replay-gain</option></term>
+        <listitem>
+	  <para>
+	    Removes the ReplayGain tags.
+	  </para>
+        </listitem>
+      </varlistentry>
+      <varlistentry>
 	<term><option>--add-seekpoint</option>={<replaceable>#</replaceable>|<replaceable>X</replaceable>|<replaceable>#x</replaceable>|<replaceable>#s</replaceable>}</term>
 	<listitem>
 	  <para>
diff --git a/src/metaflac/options.c b/src/metaflac/options.c
index dd6f387..0f38b6f 100644
--- a/src/metaflac/options.c
+++ b/src/metaflac/options.c
@@ -20,6 +20,7 @@
 #include "usage.h"
 #include "utils.h"
 #include "FLAC/assert.h"
+#include "share/grabbag/replaygain.h"
 #include <ctype.h>
 #include <stdio.h>
 #include <stdlib.h>
@@ -76,6 +77,7 @@
 	{ "export-cuesheet-to", 1, 0, 0 },
 	{ "add-seekpoint", 1, 0, 0 },
 	{ "add-replay-gain", 0, 0, 0 },
+	{ "remove-replay-gain", 0, 0, 0 },
 	{ "add-padding", 1, 0, 0 },
 	/* major operations */
 	{ "help", 0, 0, 0 },
@@ -568,6 +570,19 @@
 	else if(0 == strcmp(opt, "add-replay-gain")) {
 		(void) append_shorthand_operation(options, OP__ADD_REPLAY_GAIN);
 	}
+	else if(0 == strcmp(opt, "remove-replay-gain")) {
+		const FLAC__byte * const tags[4] = {
+			GRABBAG__REPLAYGAIN_TAG_TITLE_GAIN,
+			GRABBAG__REPLAYGAIN_TAG_TITLE_PEAK,
+			GRABBAG__REPLAYGAIN_TAG_ALBUM_GAIN,
+			GRABBAG__REPLAYGAIN_TAG_ALBUM_PEAK
+		};
+		size_t i;
+		for(i = 0; i < sizeof(tags)/sizeof(tags[0]); i++) {
+			op = append_shorthand_operation(options, OP__REMOVE_VC_FIELD);
+			op->argument.vc_field_name.value = local_strdup((const char *)tags[i]);
+		}
+	}
 	else if(0 == strcmp(opt, "add-padding")) {
 		op = append_shorthand_operation(options, OP__ADD_PADDING);
 		FLAC__ASSERT(0 != option_argument);
diff --git a/src/metaflac/usage.c b/src/metaflac/usage.c
index 7f92e0b..aa9ff42 100644
--- a/src/metaflac/usage.c
+++ b/src/metaflac/usage.c
@@ -149,6 +149,7 @@
 	fprintf(out, "                      must have the same resolution, sample rate, and number\n");
 	fprintf(out, "                      of channels.  The sample rate must be one of 8, 11.025,\n");
 	fprintf(out, "                      12, 16, 22.05, 24, 32, 44.1, or 48 kHz.\n");
+	fprintf(out, "--remove-replay-gain  Removes the ReplayGain tags.\n");
 	fprintf(out, "--add-seekpoint={#|X|#x|#s}  Add seek points to a SEEKTABLE block\n");
 	fprintf(out, "       #  : a specific sample number for a seek point\n");
 	fprintf(out, "       X  : a placeholder point (always goes at the end of the SEEKTABLE)\n");
diff --git a/src/share/grabbag/replaygain.c b/src/share/grabbag/replaygain.c
index f209769..251e0e6 100644
--- a/src/share/grabbag/replaygain.c
+++ b/src/share/grabbag/replaygain.c
@@ -41,10 +41,6 @@
 #endif
 #define local_max(a,b) ((a)>(b)?(a):(b))
 
-static const FLAC__byte * const tag_title_gain_ = (const FLAC__byte * const)"REPLAYGAIN_TRACK_GAIN";
-static const FLAC__byte * const tag_title_peak_ = (const FLAC__byte * const)"REPLAYGAIN_TRACK_PEAK";
-static const FLAC__byte * const tag_album_gain_ = (const FLAC__byte * const)"REPLAYGAIN_ALBUM_GAIN";
-static const FLAC__byte * const tag_album_peak_ = (const FLAC__byte * const)"REPLAYGAIN_ALBUM_PEAK";
 static const char *peak_format_ = "%s=%1.8f";
 static const char *gain_format_ = "%s=%+2.2f dB";
 
@@ -58,6 +54,11 @@
 	FLAC__STREAM_METADATA_VORBIS_COMMENT_ENTRY_LENGTH_LEN/8 + 21 + 1 + 12
 */
 
+const FLAC__byte * const GRABBAG__REPLAYGAIN_TAG_TITLE_GAIN = (const FLAC__byte * const)"REPLAYGAIN_TRACK_GAIN";
+const FLAC__byte * const GRABBAG__REPLAYGAIN_TAG_TITLE_PEAK = (const FLAC__byte * const)"REPLAYGAIN_TRACK_PEAK";
+const FLAC__byte * const GRABBAG__REPLAYGAIN_TAG_ALBUM_GAIN = (const FLAC__byte * const)"REPLAYGAIN_ALBUM_GAIN";
+const FLAC__byte * const GRABBAG__REPLAYGAIN_TAG_ALBUM_PEAK = (const FLAC__byte * const)"REPLAYGAIN_ALBUM_PEAK";
+
 
 static FLAC__bool get_file_stats_(const char *filename, struct stat *stats)
 {
@@ -384,14 +385,14 @@
 	FLAC__ASSERT(block->type == FLAC__METADATA_TYPE_VORBIS_COMMENT);
 
 	if(
-		FLAC__metadata_object_vorbiscomment_remove_entries_matching(block, (const char *)tag_album_gain_) < 0 ||
-		FLAC__metadata_object_vorbiscomment_remove_entries_matching(block, (const char *)tag_album_peak_) < 0
+		FLAC__metadata_object_vorbiscomment_remove_entries_matching(block, (const char *)GRABBAG__REPLAYGAIN_TAG_ALBUM_GAIN) < 0 ||
+		FLAC__metadata_object_vorbiscomment_remove_entries_matching(block, (const char *)GRABBAG__REPLAYGAIN_TAG_ALBUM_PEAK) < 0
 	)
 		return "memory allocation error";
 
 	if(
-		!append_tag_(block, peak_format_, tag_album_peak_, album_peak) ||
-		!append_tag_(block, gain_format_, tag_album_gain_, album_gain)
+		!append_tag_(block, peak_format_, GRABBAG__REPLAYGAIN_TAG_ALBUM_PEAK, album_peak) ||
+		!append_tag_(block, gain_format_, GRABBAG__REPLAYGAIN_TAG_ALBUM_GAIN, album_gain)
 	)
 		return "memory allocation error";
 
@@ -404,14 +405,14 @@
 	FLAC__ASSERT(block->type == FLAC__METADATA_TYPE_VORBIS_COMMENT);
 
 	if(
-		FLAC__metadata_object_vorbiscomment_remove_entries_matching(block, (const char *)tag_title_gain_) < 0 ||
-		FLAC__metadata_object_vorbiscomment_remove_entries_matching(block, (const char *)tag_title_peak_) < 0
+		FLAC__metadata_object_vorbiscomment_remove_entries_matching(block, (const char *)GRABBAG__REPLAYGAIN_TAG_TITLE_GAIN) < 0 ||
+		FLAC__metadata_object_vorbiscomment_remove_entries_matching(block, (const char *)GRABBAG__REPLAYGAIN_TAG_TITLE_PEAK) < 0
 	)
 		return "memory allocation error";
 
 	if(
-		!append_tag_(block, peak_format_, tag_title_peak_, title_peak) ||
-		!append_tag_(block, gain_format_, tag_title_gain_, title_gain)
+		!append_tag_(block, peak_format_, GRABBAG__REPLAYGAIN_TAG_TITLE_PEAK, title_peak) ||
+		!append_tag_(block, gain_format_, GRABBAG__REPLAYGAIN_TAG_TITLE_GAIN, title_gain)
 	)
 		return "memory allocation error";
 
@@ -587,9 +588,9 @@
 	FLAC__ASSERT(0 != block);
 	FLAC__ASSERT(block->type == FLAC__METADATA_TYPE_VORBIS_COMMENT);
 
-	if(0 > (gain_offset = FLAC__metadata_object_vorbiscomment_find_entry_from(block, /*offset=*/0, (const char *)(album_mode? tag_album_gain_ : tag_title_gain_))))
+	if(0 > (gain_offset = FLAC__metadata_object_vorbiscomment_find_entry_from(block, /*offset=*/0, (const char *)(album_mode? GRABBAG__REPLAYGAIN_TAG_ALBUM_GAIN : GRABBAG__REPLAYGAIN_TAG_TITLE_GAIN))))
 		return false;
-	if(0 > (peak_offset = FLAC__metadata_object_vorbiscomment_find_entry_from(block, /*offset=*/0, (const char *)(album_mode? tag_album_peak_ : tag_title_peak_))))
+	if(0 > (peak_offset = FLAC__metadata_object_vorbiscomment_find_entry_from(block, /*offset=*/0, (const char *)(album_mode? GRABBAG__REPLAYGAIN_TAG_ALBUM_PEAK : GRABBAG__REPLAYGAIN_TAG_TITLE_PEAK))))
 		return false;
 
 	if(!parse_double_(block->data.vorbis_comment.comments + gain_offset, gain))
diff --git a/test/test_metaflac.sh b/test/test_metaflac.sh
index 26ab690..744199f 100755
--- a/test/test_metaflac.sh
+++ b/test/test_metaflac.sh
@@ -324,6 +324,14 @@
 (set -x && run_metaflac --add-replay-gain $flacfile)
 check_exit
 check_flac
+(set -x && run_metaflac --list --block-type=VORBIS_COMMENT $flacfile)
+check_exit
+
+(set -x && run_metaflac --remove-replay-gain $flacfile)
+check_exit
+check_flac
+(set -x && run_metaflac --list --block-type=VORBIS_COMMENT $flacfile)
+check_exit
 
 echo -n "Testing FLAC file with unknown metadata... "
 cp -p metaflac.flac.in $flacfile