#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;
};