source: ipk/ipkg-utils-050831/ipkg-link@ 11202

Last change on this file since 11202 was 4890, checked in by obi, 15 years ago

[ipk] fix executable rights

  • Property svn:executable set to *
File size: 2.6 KB
Line 
1#!/bin/sh
2#
3# <zaurus@bredband.net>
4# Modified by Aman Gupta <oz@themastermind1.net>
5# Modified by Matthias Hentges to adjust to changes in OZ <oe@hentges.net>
6
7usage () {
8 echo "Usage: "
9 echo " $0 add packagename (links \"packagename\" to root filesystem)"
10 echo " $0 remove packagename (unlinks \"packagename\" from root filesystem)"
11 echo " $0 list mountpoint (lists packages on \"mountpoint\", e.g. '/mnt/card')"
12 echo " $0 mount mountpoint (links all packages on \"mountpoint\", e.g. '/mnt/card')"
13 echo " $0 umount mountpoint (unlinks all packages on \"mountpoint\", e.g. '/mnt/card')"
14 exit
15}
16
17findpackage () {
18 echo "*** Locating package"
19
20 if test -e /etc/ipkg.conf
21 then
22 valid_mount_points=`cat /etc/ipkg.conf| grep ^dest| awk '{print $3}'|sed "s/\/$//"`
23 else
24 valid_mount_points="/mnt/card /mnt/cf /mnt/ram /media/card /media/cf /media/ram"
25 fi
26
27 for mount_point in $valid_mount_points
28 do
29 if [ -e "$mount_point/usr/lib/ipkg/info/$PACKAGE.list" ]; then
30 PREFIX="$mount_point"
31 files=`cat "$PREFIX/usr/lib/ipkg/info/$PACKAGE.list" |sed -e "s#$mount_point##g"`
32 fi
33 done
34
35
36 if test -z "$files"
37 then
38 echo "Package \"$PACKAGE\" not found."
39 exit
40 else
41 echo "*** Found package on $PREFIX"
42 fi
43}
44
45add () {
46 echo "*** Adding $PACKAGE"
47 echo "$files" |
48 while read line; do
49 test -L "$line" && rm "$line"
50 if [ ! -e "$line" ]; then
51 # Only if it doesn't already exist.
52 if [ -d "$PREFIX$line" ]; then
53 # It's a directory.
54 `mkdir "$line"`
55 else
56 # It's a file.
57 [ ! -d `dirname $line` ] && mkdir -p `dirname $line`
58 `ln -s "$PREFIX$line" "$line"`
59 fi
60 fi
61 done
62}
63
64remove () {
65 echo "*** Removing $PACKAGE"
66
67 echo "$files" |
68 while read line; do
69 if [ -e "$line" ]; then
70 # File/Directory exists.
71 if [ -d "$line" ]; then
72 # Directory.
73 contents=$(ls -1 "$line")
74 if [ ! "$contents" ]; then
75 # Empty directory
76 rmdir "$line"
77 fi
78 elif [ -L "$line" ]; then
79 rm "$line"
80 fi
81 fi
82 done
83}
84
85list () {
86 filelist=""
87 files=`ls -1 $LOCATION/usr/lib/ipkg/info/*.list`
88 for filename in $files; do
89 filename=${filename##*/}
90 filename=${filename%%.list}
91 filelist="$filelist $filename"
92 done
93}
94
95COMMAND=$1
96PACKAGE=$2
97LOCATION=$2
98
99if [ $# -ne 2 ]
100then
101 usage
102fi
103
104echo "*** Command: $COMMAND"
105case "$COMMAND" in
106 "add" )
107 findpackage
108 add
109 ;;
110 "remove" )
111 findpackage
112 remove
113 ;;
114 "list" )
115 list
116 for file in $filelist; do
117 echo $file
118 done
119 ;;
120 "mount" )
121 list
122 for file in $filelist; do
123 $0 add $file
124 done
125 ;;
126 "umount" )
127 list
128 for file in $filelist; do
129 $0 remove $file
130 done
131esac
132
133echo "*** Done."
134echo ""
135exit
136
Note: See TracBrowser for help on using the repository browser.