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