Browse Source

add some improvements to lms

Waldemar Brodkorb 9 years ago
parent
commit
6d2c9a84bd

+ 13 - 0
package/logitechmediaserver/patches/patch-Slim_Utils_OS_Linux_pm

@@ -0,0 +1,13 @@
+--- logitechmediaserver-7.9.0-1418119409-noCPAN.orig/Slim/Utils/OS/Linux.pm	2014-12-08 22:00:23.000000000 -0600
++++ logitechmediaserver-7.9.0-1418119409-noCPAN/Slim/Utils/OS/Linux.pm	2014-12-13 02:11:35.032418001 -0600
+@@ -27,6 +27,10 @@ sub getFlavor {
+ 
+ 		return 'Netgear RAIDiator';
+ 			
++	} elsif (-f '/etc/.adktarget') {
++	
++		return 'OpenADK';
++	
+ 	} elsif (-f '/etc/squeezeos.version') {
+ 	
+ 		return 'SqueezeOS';

+ 100 - 0
package/logitechmediaserver/src/Slim/Utils/OS/OpenADK.pm

@@ -0,0 +1,100 @@
+package Slim::Utils::OS::OpenADK;
+
+# Logitech Media Server Copyright 2001-2011 Logitech.
+# This program is free software; you can redistribute it and/or
+# modify it under the terms of the GNU General Public License, 
+# version 2.
+
+use strict;
+use FindBin qw($Bin);
+
+use base qw(Slim::Utils::OS::Linux);
+
+sub initDetails {
+	my $class = shift;
+
+	$class->{osDetails} = $class->SUPER::initDetails();
+
+	# package specific addition to @INC to cater for plugin locations
+	$class->{osDetails}->{isDebian} = 1 ;
+
+	unshift @INC, '/usr/share/logitechmediaserver';
+	unshift @INC, '/usr/share/logitechmediaserver/CPAN';
+	
+	return $class->{osDetails};
+}
+
+=head2 dirsFor( $dir )
+
+Return OS Specific directories.
+
+Argument $dir is a string to indicate which of the server directories we
+need information for.
+
+=cut
+
+sub dirsFor {
+	my ($class, $dir) = @_;
+
+	my @dirs = ();
+	
+	if ($dir =~ /^(?:oldprefs|updates)$/) {
+
+		push @dirs, $class->SUPER::dirsFor($dir);
+
+	} elsif ($dir =~ /^(?:Firmware|Graphics|HTML|IR|MySQL|SQL|lib|Bin)$/) {
+
+		push @dirs, "/usr/share/logitechmediaserver/$dir";
+
+	} elsif ($dir eq 'Plugins') {
+			
+		push @dirs, $class->SUPER::dirsFor($dir);
+		push @dirs, "/usr/share/perl5/Slim/Plugin", "/usr/share/logitechmediaserver/Plugins";
+		
+	} elsif ($dir =~ /^(?:strings|revision)$/) {
+
+		push @dirs, "/usr/share/logitechmediaserver";
+
+	} elsif ($dir eq 'libpath') {
+
+		push @dirs, "/usr/share/logitechmediaserver";
+
+	} elsif ($dir =~ /^(?:types|convert)$/) {
+
+		push @dirs, "/etc/logitechmediaserver";
+
+	} elsif ($dir =~ /^(?:prefs)$/) {
+
+		push @dirs, $::prefsdir || "/var/lib/logitechmediaserver/prefs";
+
+	} elsif ($dir eq 'log') {
+
+		push @dirs, $::logdir || "/var/log/logitechmediaserver";
+
+	} elsif ($dir eq 'cache') {
+
+		push @dirs, $::cachedir || "/var/lib/logitechmediaserver/cache";
+
+	} elsif ($dir =~ /^(?:music|playlists)$/) {
+
+		push @dirs, '';
+
+	} else {
+
+		warn "dirsFor: Didn't find a match request: [$dir]\n";
+	}
+
+	return wantarray() ? @dirs : $dirs[0];
+}
+
+# Bug 9488, always decode on Ubuntu/Debian
+sub decodeExternalHelperPath {
+	return Slim::Utils::Unicode::utf8decode_locale($_[1]);
+}
+
+sub scanner {
+	return '/usr/sbin/logitechmediaserver-scanner';
+}
+
+
+1;