X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=aft.c;h=a73537c74446b3cdb49e405f7918701d837a8e8f;hp=c61d3820083bd0ff9c5fbfbf773f49fc5c04a51a;hb=9aa1f3d69c0aa335b3026581defbc09eb2c4efb4;hpb=9b406cbe5d20ba969713ca3d7a8033e697476d75 diff --git a/aft.c b/aft.c index c61d3820..a73537c7 100644 --- a/aft.c +++ b/aft.c @@ -72,6 +72,20 @@ enum ls_listing_mode { LS_MODE_PARSER, }; +/* Data about one audio file. Needed for ls and stat output. */ +struct ls_data { + /* Usual audio format handler information. */ + struct afh_info afhi; + /* Audio file selector information. */ + struct afs_info afsi; + /* The full path of the audio file. */ + char *path; + /* The score value (if -a was given). */ + long score; + /* The hash value of the audio file data. */ + unsigned char *hash; +}; + /** The flags accepted by the ls command. */ enum ls_flags { /** -p */ @@ -829,8 +843,8 @@ static int print_chunk_table(struct ls_data *d, struct para_buffer *b) ret = aft_get_row_of_hash(d->hash, &aft_row); if (ret < 0) return ret; - ret = osl_open_disk_object(audio_file_table, aft_row, - AFTCOL_CHUNKS, &chunk_table_obj); + ret = osl(osl_open_disk_object(audio_file_table, aft_row, + AFTCOL_CHUNKS, &chunk_table_obj)); if (ret < 0) return ret; ret = para_printf(b, "%s\n" @@ -1105,10 +1119,10 @@ int open_and_update_audio_file(struct osl_row *aft_row, long score, if (ret < 0) return ret; afd->afhi.chunk_table = NULL; - ret = osl_open_disk_object(audio_file_table, aft_row, - AFTCOL_CHUNKS, &chunk_table_obj); + ret = osl(osl_open_disk_object(audio_file_table, aft_row, + AFTCOL_CHUNKS, &chunk_table_obj)); if (ret < 0) - goto err; + return ret; ret = mmap_full_file(path, O_RDONLY, &map.data, &map.size, &afd->fd); if (ret < 0) goto err; @@ -1716,10 +1730,11 @@ static void com_add_callback(int fd, const struct osl_object *query) struct osl_object obj; if (pb) { /* hs trumps pb, remove pb */ if (flags & ADD_FLAG_VERBOSE) { - ret = para_printf(&msg, "removing path brother\n"); + ret = para_printf(&msg, "removing %s\n", path); if (ret < 0) goto out; } + afs_event(AUDIO_FILE_REMOVE, &msg, pb); ret = osl(osl_del_row(audio_file_table, pb)); if (ret < 0) goto out;