]> git.pld-linux.org Git - packages/browser-plugins.git/blob - browser-plugins-update.sh
- unuse %{name}
[packages/browser-plugins.git] / browser-plugins-update.sh
1 #!/bin/sh
2 # Author: Elan Ruusamäe <glen@pld-linux.org>
3 # Date: 2006-09-13
4 # See more browser-plugins.README
5
6 # TODO
7 # - implement blacklist.d/anyfile-browser.arch.blacklist support
8 # - check not to link amd64 plugins to opera.i386 dir
9
10 sysconfdir='/etc/browser-plugins'
11 browsersdir="$sysconfdir/browsers.d"
12 blacklistdir="$sysconfdir/blacklist.d"
13 plugindirs='/usr/lib/browser-plugins /usr/lib64/browser-plugins'
14
15 # bool in_blacklist(char *blacklistfile, char *pluginfile)
16 # returns true if pluginfile is listed in blacklistfile 
17 in_blacklist() {
18         local blacklistfile="$1"
19         local pluginfile="$2"
20         while read glob; do
21                 if [[ "$glob" = \#* ]] || [[ "$glob" = "" ]]; then
22                         continue
23                 fi
24                 if [[ "$pluginfile" = $glob ]]; then
25                         echo >&3 "  $pluginfile blacklisted with $glob ($blacklistfile)"
26                         return 0
27                 fi
28         done < $blacklistfile
29
30         return 1
31 }
32
33 # bool blacklisted(char *browser, char *pluginfile)
34 # returns true if pluginfile is blacklisted for browser
35 blacklisted() {
36         local browser="$1"
37         local pluginfile="$2"
38         # check browser blacklist file
39         if [ -f "$blacklistdir/$browser.blacklist" ]; then
40                 if in_blacklist "$blacklistdir/$browser.blacklist" "$pluginfile"; then
41                         return 0
42                 fi
43         fi
44         # retrun true for now
45         return 1
46 }
47
48 # char **get_browsers(void)
49 # returns list of installed browsers
50 get_browsers() {
51         for dir in "$browsersdir"/*.*; do
52                 dir="${dir#$browsersdir/}"
53                 browsers="$browsers $dir"
54         done
55
56         echo >&3 "browsers: $browsers"
57 }
58
59 # char *browserplugindir(char *)
60 # returns plugin directory for browser
61 browserplugindir() {
62         local browser="$1"
63         readlink "$browsersdir/$browser"
64 }
65
66 remove_plugins() {
67         # kill dead links
68         for browser in $browsers; do
69                 find $(browserplugindir "$browser") -type l | while read link; do
70                         [ -f "$link" ] || rm -f "$link"
71                 done
72         done
73 }
74
75 install_plugins() {
76         # link new plugins
77         for plugindir in $plugindirs; do
78                 # skip non-existing plugindirs
79                 [ -d "$plugindir" ] || continue
80
81                 cd "$plugindir"
82                 find -type f | while read line; do
83                         pluginfile="${line#./}"
84                         echo >&3 "pluginfile: $pluginfile"
85                         for browser in $browsers; do
86                                 echo >&3 " check $pluginfile for $browser"
87                                 browserplugindir=$(browserplugindir "$browser")
88                                 link="$browserplugindir/$pluginfile"
89                                 if blacklisted "$browser" "$pluginfile"; then
90                                         # just in case unlink it
91                                         if [ -f "$link" ]; then
92                                                 echo "Removing $pluginfile from $browserplugindir"
93                                                 rm -f "$link"
94                                         fi
95                                 else
96                                         # skip existing links
97                                         [ ! -L $link ] || continue
98                                         echo "Installing $pluginfile to $browserplugindir"
99                                         ln -s "$plugindir/$pluginfile" "$link"
100                                 fi
101                         done
102                 done
103         done
104 }
105
106 if [[ "$*" = *debug* ]]; then
107         exec 3>&2
108 else
109         exec 3>/dev/null
110 fi
111
112 get_browsers
113
114 remove_plugins
115 install_plugins
This page took 0.072314 seconds and 3 git commands to generate.