{queue,song}_print: print relative paths if possible
If a song with an absolute path points inside the music directory, print only the relative part. This happens when partial songs from a playlist file were loaded.
This commit is contained in:
parent
9de5bb9e23
commit
b233c145fa
10
src/mapper.c
10
src/mapper.c
|
@ -93,6 +93,16 @@ mapper_has_music_directory(void)
|
|||
return music_dir != NULL;
|
||||
}
|
||||
|
||||
const char *
|
||||
map_to_relative_path(const char *path_utf8)
|
||||
{
|
||||
return music_dir != NULL &&
|
||||
memcmp(path_utf8, music_dir, music_dir_length) == 0 &&
|
||||
G_IS_DIR_SEPARATOR(path_utf8[music_dir_length])
|
||||
? path_utf8 + music_dir_length + 1
|
||||
: path_utf8;
|
||||
}
|
||||
|
||||
char *
|
||||
map_uri_fs(const char *uri)
|
||||
{
|
||||
|
|
|
@ -41,6 +41,14 @@ void mapper_finish(void);
|
|||
bool
|
||||
mapper_has_music_directory(void);
|
||||
|
||||
/**
|
||||
* If the specified absolute path points inside the music directory,
|
||||
* this function converts it to a relative path. If not, it returns
|
||||
* the unmodified string pointer.
|
||||
*/
|
||||
const char *
|
||||
map_to_relative_path(const char *path_utf8);
|
||||
|
||||
/**
|
||||
* Determines the absolute file system path of a relative URI. This
|
||||
* is basically done by converting the URI to the file system charset
|
||||
|
|
|
@ -24,6 +24,7 @@
|
|||
#include "song_print.h"
|
||||
#include "locate.h"
|
||||
#include "client.h"
|
||||
#include "mapper.h"
|
||||
|
||||
/**
|
||||
* Send detailed information about a range of songs in the queue to a
|
||||
|
|
|
@ -25,6 +25,7 @@
|
|||
#include "tag_print.h"
|
||||
#include "client.h"
|
||||
#include "uri.h"
|
||||
#include "mapper.h"
|
||||
|
||||
void
|
||||
song_print_uri(struct client *client, struct song *song)
|
||||
|
@ -40,7 +41,8 @@ song_print_uri(struct client *client, struct song *song)
|
|||
if (uri == NULL)
|
||||
uri = song->uri;
|
||||
|
||||
client_printf(client, "%s%s\n", SONG_FILE, uri);
|
||||
client_printf(client, "%s%s\n", SONG_FILE,
|
||||
map_to_relative_path(uri));
|
||||
|
||||
g_free(allocated);
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue