int fish_sound_comment_remove_byname (FishSound * fsound, char * name) { #if FS_ENCODE FishSoundComment * comment; int i; #endif int ret = 0; if (fsound == NULL) return FISH_SOUND_ERR_BAD; if (fsound->mode != FISH_SOUND_ENCODE) return FISH_SOUND_ERR_INVALID; #if FS_ENCODE for (i = 0; i < fs_vector_size (fsound->comments); i++) { comment = (FishSoundComment *) fs_vector_nth (fsound->comments, i); if (!strcasecmp (name, comment->name)) { fish_sound_comment_remove (fsound, comment); i--; ret++; } } return ret; #else return FISH_SOUND_ERR_DISABLED; #endif }
int main (int argc, char * argv[]) { FishSoundInfo fsinfo; const FishSoundComment * comment, * comment2; FishSoundComment mycomment; int err; fsinfo.samplerate = 16000; fsinfo.channels = 1; /* The format doesn't really matter as we're not actually * going to encode any audio, so just ensure we can * set this to something that's configured. */ #if HAVE_VORBIS fsinfo.format = FISH_SOUND_VORBIS; #elif HAVE_SPEEX fsinfo.format = FISH_SOUND_SPEEX; #else fsinfo.format = FISH_SOUND_FLAC; #endif #if FS_ENCODE INFO ("Initializing FishSound for comments (encode)"); fsound = fish_sound_new (FISH_SOUND_ENCODE, &fsinfo); INFO ("+ Adding ARTIST1 byname"); err = fish_sound_comment_add_byname (fsound, "ARTIST", ARTIST1); if (err < 0) FAIL ("Operation failed"); INFO ("+ Adding COPYRIGHT byname"); err = fish_sound_comment_add_byname (fsound, "COPYRIGHT", COPYRIGHT); if (err < 0) FAIL ("Operation failed"); INFO ("+ Retrieving first (expect ARTIST1)"); comment = fish_sound_comment_first (fsound); if (comment == NULL) FAIL ("Recently inserted ARTIST1 not retrieved"); if (strcmp (comment->name, "ARTIST")) FAIL ("Incorrect ARTIST1 name found"); if (strcmp (comment->value, ARTIST1)) FAIL ("Incorrect ARTIST1 value found"); INFO ("+ Retrieving next (expect COPYRIGHT)"); comment = fish_sound_comment_next (fsound, comment); if (comment == NULL) FAIL ("Recently inserted COPYRIGHT not retrieved"); if (strcmp (comment->name, "COPYRIGHT")) FAIL ("Incorrect COPYRIGHT name found"); if (strcmp (comment->value, COPYRIGHT)) FAIL ("Incorrect COPYRIGHT value found"); INFO ("+ Checking comments termination"); comment2 = fish_sound_comment_next (fsound, comment); if (comment2 != NULL) FAIL ("Comments unterminated"); INFO ("+ Adding LICENSE from local storage"); mycomment.name = "LICENSE"; mycomment.value = LICENSE; err = fish_sound_comment_add (fsound, &mycomment); if (err < 0) FAIL ("Operation failed"); INFO ("+ Retrieving next (expect LICENSE)"); comment = fish_sound_comment_next (fsound, comment); if (comment == NULL) FAIL ("Recently inserted LICENSE not retrieved"); if (comment == &mycomment) FAIL ("Recently inserted LICENSE not restored"); if (strcmp (comment->name, "LICENSE")) FAIL ("Incorrect LICENSE name found"); if (strcmp (comment->value, LICENSE)) FAIL ("Incorrect LICENSE value found"); INFO ("+ Testing add of valid plain (not key=value) COMMENT byname"); err = fish_sound_comment_add_byname (fsound, COMMENT, NULL); if (err < 0) FAIL ("Operation failed"); INFO ("+ Testing add of valid plain (not key=value) COMMENT from local storage"); mycomment.name = COMMENT; mycomment.value = NULL; err = fish_sound_comment_add (fsound, &mycomment); if (err < 0) FAIL ("Operation failed"); INFO ("+ Adding ARTIST2 byname"); err = fish_sound_comment_add_byname (fsound, "ARTIST", ARTIST2); if (err < 0) FAIL ("Operation failed"); INFO ("+ Retrieving first ARTIST using wierd caps (expect ARTIST1)"); comment = fish_sound_comment_first_byname (fsound, "ArTiSt"); if (comment == NULL) FAIL ("Recently inserted ARTIST1 not retrieved"); if (strcmp (comment->name, "ARTIST")) FAIL ("Incorrect ARTIST1 name found"); if (strcmp (comment->value, ARTIST1)) FAIL ("Incorrect ARTIST1 value found"); INFO ("+ Retrieving next ARTIST (expect ARTIST2)"); comment = fish_sound_comment_next_byname (fsound, comment); if (comment == NULL) FAIL ("Recently inserted ARTIST2 not retrieved"); if (strcmp (comment->name, "ARTIST")) FAIL ("Incorrect ARTIST2 name found"); if (strcmp (comment->value, ARTIST2)) FAIL ("Incorrect ARTIST2 value found"); INFO ("+ Removing LICENSE byname"); err = fish_sound_comment_remove_byname (fsound, "LICENSE"); if (err != 1) FAIL ("Operation failed"); INFO ("+ Attempting to retrieve LICENSE"); comment = fish_sound_comment_first_byname (fsound, "LICENSE"); if (comment != NULL) FAIL ("Removed comment incorrectly retrieved"); INFO ("+ Removing COPYRIGHT from local storage"); mycomment.name = "COPYRIGHT"; mycomment.value = COPYRIGHT; err = fish_sound_comment_remove (fsound, &mycomment); if (err != 1) FAIL ("Operation failed"); INFO ("+ Attempting to retrieve COPYRIGHT"); comment = fish_sound_comment_first_byname (fsound, "COPYRIGHT"); if (comment != NULL) FAIL ("Removed comment incorrectly retrieved"); INFO ("Deleting FishSound (encode)"); fish_sound_delete (fsound); #endif /* FS_ENCODE */ #if FS_DECODE INFO ("Initializing FishSound for comments (decode)"); fsound = fish_sound_new (FISH_SOUND_DECODE, &fsinfo); INFO ("+ Adding ARTIST1 byname (invalid for decode)"); err = fish_sound_comment_add_byname (fsound, "ARTIST", ARTIST1); if (err == 0) FAIL ("Operation disallowed"); INFO ("+ Removing ARTIST byname (invalid for decode)"); err = fish_sound_comment_remove_byname (fsound, "ARTIST"); if (err == 0) FAIL ("Operation disallowed"); INFO ("Deleteing FishSound (decode)"); fish_sound_delete (fsound); #endif exit (0); }