1 /* logjam - a GTK client for LiveJournal.
2 * Copyright (C) 2000-2003 Evan Martin <evan@livejournal.com>
4 * vim: tabstop=4 shiftwidth=4 noexpandtab :
12 const CommandList music_commands
[] = {
14 { "Music Player Daemon", "sh -c \"mpc | grep -v '^volume: .* repeat: .* random: .*'\"" },
15 { "Rhythmbox", "rhythmbox --print-playing" },
16 { "XMMS / Beep", "logjam-xmms-client" },
17 { "amaroK", "dcop amarok player nowPlaying" },
22 music_current_source(void) {
25 if (!conf
.music_command
)
26 return MUSIC_SOURCE_NONE
;
28 for (i
= 0; i
< MUSIC_SOURCE_COUNT
; i
++) {
29 if (music_commands
[i
].label
&& music_commands
[i
].command
&&
30 (strcmp(music_commands
[i
].command
, conf
.music_command
) == 0))
33 return MUSIC_SOURCE_CUSTOM
;
37 music_error_quark(void) {
38 static GQuark quark
= 0;
40 quark
= g_quark_from_static_string("music-error-quark");
46 music_command_can_detect(GError
**err
) {
47 if (!conf
.music_command
|| !conf
.music_command
[0]) {
48 g_set_error(err
, MUSIC_ERROR
, MUSIC_COMMAND_LINE_ERROR
, "%s",
49 _("No music command line is set."));
56 music_command_detect(const char *command
, GError
**err
) {
57 gchar
*std_out
, *std_err
, *p
, *cnv
;
60 if (!g_spawn_command_line_sync(command
,
61 &std_out
, &std_err
, &exit_status
, err
))
64 if (exit_status
!= 0) {
65 g_set_error(err
, MUSIC_ERROR
, MUSIC_COMMAND_ERROR
, "%s", std_err
);
71 /* we take the first line of this output. */
72 for (p
= std_out
; *p
; p
++) {
79 g_set_error(err
, MUSIC_ERROR
, MUSIC_COMMAND_ERROR
, "%s",
80 _("Command produced no output."));
84 /* Check if result is correct UTF-8 */
85 if (g_utf8_validate(std_out
, -1, NULL
))
87 /* Try converting from the current locale to UTF-8 */
88 cnv
= g_locale_to_utf8(std_out
, -1, NULL
, NULL
, err
);
94 music_can_detect(GError
**err
) {
95 return music_command_can_detect(err
);
99 music_detect(GError
**err
) {
100 if (conf
.music_command
)
101 return music_command_detect(conf
.music_command
, err
);
105 gboolean
music_can_detect(GError
**err
) {
106 g_set_error(err
, MUSIC_ERROR
, MUSIC_UNIMPLEMENTED_ERROR
, "%s",
107 _("Music detection is not implemented on this platform."));
110 char* music_detect(GError
**err
) {
111 g_set_error(err
, MUSIC_ERROR
, MUSIC_UNIMPLEMENTED_ERROR
, "%s",
112 _("Music detection is not implemented on this platform."));
115 #endif /* G_OS_WIN32 */