X-Git-Url: http://git.tuebingen.mpg.de/?p=paraslash.git;a=blobdiff_plain;f=aft.c;h=f8e8f40b5013b300dad0c05abdce189639a42731;hp=4ff7ef198cf3f18de42836396b56bf221ff3cbc9;hb=f13efdc785f972e74299420d051f264cf2da9bb4;hpb=0fa4e460a878fe80f937df5e1da31a33221e0ee0;ds=sidebyside diff --git a/aft.c b/aft.c index 4ff7ef19..f8e8f40b 100644 --- a/aft.c +++ b/aft.c @@ -16,38 +16,96 @@ #include "string.h" #include "vss.h" -#define AFS_AUDIO_FILE_DIR "/home/mp3" +#define AFS_AUDIO_FILE_DIR "/home/mp3" /* FIXME: Use cwd instead */ static struct osl_table *audio_file_table; +/** The different sorting methods of the ls command. */ +enum ls_sorting_method { + /** -sp (default) */ + LS_SORT_BY_PATH, + /** -ss */ + LS_SORT_BY_SCORE, + /** -sl */ + LS_SORT_BY_LAST_PLAYED, + /** -sn */ + LS_SORT_BY_NUM_PLAYED, + /** -sf */ + LS_SORT_BY_FREQUENCY, + /** -sc */ + LS_SORT_BY_CHANNELS, + /** -si */ + LS_SORT_BY_IMAGE_ID, + /** -sy */ + LS_SORT_BY_LYRICS_ID, + /** -sb */ + LS_SORT_BY_BITRATE, + /** -sd */ + LS_SORT_BY_DURATION, + /** -sa */ + LS_SORT_BY_AUDIO_FORMAT, + /** -sh */ + LS_SORT_BY_HASH, +}; + +/** The different listing modes of the ls command. */ enum ls_listing_mode { + /** Default listing mode. */ LS_MODE_SHORT, + /** -l or -ll */ LS_MODE_LONG, + /** -lv */ LS_MODE_VERBOSE, + /** -lm */ LS_MODE_MBOX }; +/** The flags accepted by the ls command. */ enum ls_flags { + /** -p */ LS_FLAG_FULL_PATH = 1, + /** -a */ LS_FLAG_ADMISSIBLE_ONLY = 2, + /** -r */ LS_FLAG_REVERSE = 4, }; +/** + * The size of the individual output fields of the ls command. + * + * These depend on the actual content being listed. If, for instance only files + * with duration less than an hour are being listed, then the duration with is + * made smaller because then the duration is listed as mm:ss rather than + * hh:mm:ss. + */ struct ls_widths { + /** size of the score field. */ unsigned short score_width; + /** size of the image id field. */ unsigned short image_id_width; + /** size of the lyrics id field. */ unsigned short lyrics_id_width; + /** size of the bitrate field. */ unsigned short bitrate_width; + /** size of the frequency field. */ unsigned short frequency_width; + /** size of the duration field. */ unsigned short duration_width; + /** size of the num played field. */ unsigned short num_played_width; }; +/** Data passed to the different compare functions (called by qsort()). */ struct ls_data { + /** Usual audio format handler information. */ struct audio_format_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 sha1 hash of audio file. */ HASH_TYPE *hash; };