On Thu, Jul 03, 2003 at 06:44:21PM +0200, [EMAIL PROTECTED] wrote:
> > 3) YaRET is a batch system, so user interface really isn't part of it's
> > vocabulary (e.g. tar, rm, patch, all are similar, you can turn -on-
> > confirmation, but by default they assume what you said is what you meant
> > (except tar, who cowardly refuses to create empty archives :) )).
>
> I wasn't aware of this fact, which goes to show I should have checked out
> YaRET before opening my mouth (by the way, nice acronym ;) (or whatever it's
> called)). Since my last post was based on false presumptions, consider it
> withdrawn.
Woot a proponent!
Anyway here is the patch. Hopefully it's roughly how you would like it
done.
diff -x CVS -ur lame/frontend/parse.c lame-g1/frontend/parse.c
--- lame/frontend/parse.c 2003-06-01 12:20:34.000000000 -0500
+++ lame-g1/frontend/parse.c 2003-07-03 13:09:53.000000000 -0500
@@ -77,7 +77,8 @@
/* we need to clean this up */
sound_file_format input_format;
int swapbytes; /* force byte swapping default=0*/
-int silent;
+int silent; /* Verbosity */
+int ignore_tag_errors; /* Ignore errors in values passed for tags */
int brhist;
float update_interval; /* to use Frank's time status display */
int mp3_delay; /* to adjust the number of samples truncated
@@ -435,6 +436,7 @@
" --quiet don't print anything on screen\n"
" --brief print more useful information\n"
" --verbose print a lot of useful information\n"
+ " --ignore-tag-errors
Ignore errors in values passed for tags.\n"
"\n"
" Noise shaping & psycho acoustic algorithms:\n"
" -q <arg> <arg> = 0...9. Default -q 5 \n"
@@ -991,6 +993,7 @@
outPath[0] = '\0';
/* turn on display options. user settings may turn them off below */
silent = 0;
+ ignore_tag_errors = 0;
brhist = 1;
enc_padding=-1;
enc_delay=-1;
@@ -1268,33 +1271,100 @@
/* options for ID3 tag */
T_ELIF ("tt")
argUsed=1;
- id3tag_set_title(gfp, nextArg);
+ if (id3tag_set_title(gfp, nextArg)) {
+
if( ignore_tag_errors ) {
+
if( silent < 10 ) {
+
fprintf(stderr,"Error setting title to: '%s'. Blanking title.\n",
nextArg);
+
}
+
id3tag_set_title(gfp, "");
+
} else {
+ fprintf(stderr,"Error setting title to: '%s'.\n",
nextArg);
+ return -1;
+
}
+ }
T_ELIF ("ta")
argUsed=1;
- id3tag_set_artist(gfp, nextArg);
+ if (id3tag_set_artist(gfp, nextArg)) {
+
if( ignore_tag_errors ) {
+
if( silent < 10 ) {
+
fprintf(stderr,"Error setting artist to: '%s'. Blanking artist.\n",
nextArg);
+
}
+
id3tag_set_artist(gfp, "");
+
} else {
+ fprintf(stderr,"Error setting artist to: '%s'.\n",
nextArg);
+ return -1;
+
}
+ }
T_ELIF ("tl")
argUsed=1;
- id3tag_set_album(gfp, nextArg);
+ if (id3tag_set_album(gfp, nextArg)) {
+
if( ignore_tag_errors ) {
+
if( silent < 10 ) {
+
fprintf(stderr,"Error setting album to: '%s'. Blanking album.\n",
nextArg);
+
}
+
id3tag_set_album(gfp, "");
+
} else {
+ fprintf(stderr,"Error setting album to: '%s'.\n",
nextArg);
+ return -1;
+
}
+ }
T_ELIF ("ty")
argUsed=1;
- id3tag_set_year(gfp, nextArg);
+ if (id3tag_set_year(gfp, nextArg)) {
+
if( ignore_tag_errors ) {
+
if( silent < 10 ) {
+
fprintf(stderr,"Error setting year to: '%s'.
Number must be from 0000-9999. Setting to zero.\n", nextArg);
+
}
+
id3tag_set_year(gfp, "0");
+
} else {
+
fprintf(stderr,"Error setting year to: '%s'. Number must be
from 0000-9999.\n", nextArg);
+ return -1;
+
}
+ }
T_ELIF ("tc")
argUsed=1;
- id3tag_set_comment(gfp, nextArg);
+ if (id3tag_set_comment(gfp, nextArg)) {
+
if( ignore_tag_errors ) {
+
if( silent < 10 ) {
+
fprintf(stderr,"Error setting comment to: '%s'. Blanking comment.\n", nextArg);
+
}
+
id3tag_set_comment(gfp, "");
+
} else {
+
fprintf(stderr,"Error setting comment to: '%s'. Blanking comment.\n", nextArg);
+ return -1;
+
}
+ }
T_ELIF ("tn")
argUsed=1;
- id3tag_set_track(gfp, nextArg);
+ if (id3tag_set_track(gfp, nextArg)) {
+
if( ignore_tag_errors ) {
+
if( silent < 10 ) {
+
fprintf(stderr,"Error setting track number
to: '%s'. Number must be from 0-255. Setting to zero.n", nextArg);
+
}
+
id3tag_set_track(gfp, "0");
+
} else {
+
fprintf(stderr,"Error setting track number to: '%s'. Number
must be from 0-255.\n", nextArg);
+ return -1;
+
}
+ }
T_ELIF ("tg")
argUsed=1;
if (id3tag_set_genre(gfp, nextArg)) {
- fprintf(stderr,"Unknown genre: %s. Specify genre name or
number\n", nextArg);
- return -1;
+
if( ignore_tag_errors ) {
+
if( silent < 10 ) {
+
fprintf(stderr,"Unknown genre: '%s'. Specify
genre name or number. Setting to 'Other'\n", nextArg);
+
}
+
id3tag_set_genre(gfp, "other");
+
} else {
+
fprintf(stderr,"Unknown genre: '%s'. Specify genre name or
number\n", nextArg);
+ return -1;
+
}
}
T_ELIF ("add-id3v2")
@@ -1485,6 +1555,8 @@
T_ELIF ("verbose")
silent = -10; /* print a lot on screen */
+ T_ELIF
("ignore-tag-errors")
+ ignore_tag_errors
= 1;
T_ELIF2 ("version", "license")
print_license ( gfp, stdout, ProgramName );
diff -x CVS -ur lame/include/lame.h lame-g1/include/lame.h
--- lame/include/lame.h 2003-06-01 12:20:34.000000000 -0500
+++ lame-g1/include/lame.h 2003-07-03 11:40:07.000000000 -0500
@@ -989,25 +989,30 @@
/* pad version 2 tag with extra 128 bytes */
extern void id3tag_pad_v2 (lame_global_flags *gfp);
-extern void id3tag_set_title(
+/* return non-zero result if title name is invalid */
+extern int id3tag_set_title(
lame_global_flags* gfp,
const char* title );
-extern void id3tag_set_artist(
+/* return non-zero result if artist name is invalid */
+extern int id3tag_set_artist(
lame_global_flags* gfp,
const char* artist );
-extern void id3tag_set_album(
+/* return non-zero result if album name is invalid */
+extern int id3tag_set_album(
lame_global_flags* gfp,
const char* album );
-extern void id3tag_set_year(
+/* return non-zero result if year number is invalid */
+extern int id3tag_set_year(
lame_global_flags* gfp,
const char* year );
-extern void id3tag_set_comment(
+/* return non-zero result if comment name is invalid */
+extern int id3tag_set_comment(
lame_global_flags* gfp,
const char* comment );
-extern void id3tag_set_track(
+/* return non-zero result if tracknumber is invalid */
+extern int id3tag_set_track(
lame_global_flags* gfp,
const char* track );
-
/* return non-zero result if genre name or number is invalid */
extern int id3tag_set_genre(
lame_global_flags* gfp,
diff -x CVS -ur lame/libmp3lame/id3tag.c lame-g1/libmp3lame/id3tag.c
--- lame/libmp3lame/id3tag.c 2003-06-01 11:12:44.000000000 -0500
+++ lame-g1/libmp3lame/id3tag.c 2003-07-03 11:37:33.000000000 -0500
@@ -182,7 +182,7 @@
gfc->tag_spec.flags |= PAD_V2_FLAG;
}
-void
+int
id3tag_set_title(lame_global_flags *gfp, const char *title)
{
lame_internal_flags *gfc = gfp->internal_flags;
@@ -192,7 +192,7 @@
}
}
-void
+int
id3tag_set_artist(lame_global_flags *gfp, const char *artist)
{
lame_internal_flags *gfc = gfp->internal_flags;
@@ -202,7 +202,7 @@
}
}
-void
+int
id3tag_set_album(lame_global_flags *gfp, const char *album)
{
lame_internal_flags *gfc = gfp->internal_flags;
@@ -212,18 +212,18 @@
}
}
-void
+int
id3tag_set_year(lame_global_flags *gfp, const char *year)
{
lame_internal_flags *gfc = gfp->internal_flags;
if (year && *year) {
int num = atoi(year);
if (num < 0) {
- num = 0;
+ return -1;
}
/* limit a year to 4 digits so it fits in a version 1 tag */
if (num > 9999) {
- num = 9999;
+ return -1;
}
if (num) {
gfc->tag_spec.year = num;
@@ -232,7 +232,7 @@
}
}
-void
+int
id3tag_set_comment(lame_global_flags *gfp, const char *comment)
{
lame_internal_flags *gfc = gfp->internal_flags;
@@ -242,19 +242,19 @@
}
}
-void
+int
id3tag_set_track(lame_global_flags *gfp, const char *track)
{
lame_internal_flags *gfc = gfp->internal_flags;
if (track && *track) {
int num = atoi(track);
if (num < 0) {
- num = 0;
+ return -1;
}
/* limit a track to 255 so it fits in a version 1 tag even though CD
* audio doesn't allow more than 99 tracks */
if (num > 255) {
- num = 255;
+ return -1;
}
if (num) {
gfc->tag_spec.track = num;
@@ -298,10 +298,10 @@
}
}
if (i == GENRE_NAME_COUNT) {
- return -1;
+ return -1;
}
} else if ((num < 0) || (num >= GENRE_NAME_COUNT)) {
- return -1;
+ return -1;
}
gfc->tag_spec.genre = num;
gfc->tag_spec.flags |= CHANGED_FLAG;
_______________________________________________
mp3encoder mailing list
[EMAIL PROTECTED]
http://minnie.tuhs.org/mailman/listinfo/mp3encoder