diff options
author | P. J. McDermott <pjm@nac.net> | 2012-02-09 10:56:43 (EST) |
---|---|---|
committer | P. J. McDermott <pjm@nac.net> | 2012-02-09 10:56:43 (EST) |
commit | f431cd1a48a6a5186633bf5f16a2d21cb4399e8c (patch) | |
tree | 337e36fd9d7884fcf76ba769ab7b0039f52d9d31 /src/utils/.svn/text-base |
Initial commit.
TODO: Copyright information.
Including source code and a patch to add files generated by GNU Autoconf
is not very pretty... Running 'make dist' in the SVN trunk to generate
a source archive might be better.
Diffstat (limited to 'src/utils/.svn/text-base')
-rw-r--r-- | src/utils/.svn/text-base/Makefile.am.svn-base | 3 | ||||
-rw-r--r-- | src/utils/.svn/text-base/opkg-key.svn-base | 74 | ||||
-rw-r--r-- | src/utils/.svn/text-base/update-alternatives.in.svn-base | 197 |
3 files changed, 274 insertions, 0 deletions
diff --git a/src/utils/.svn/text-base/Makefile.am.svn-base b/src/utils/.svn/text-base/Makefile.am.svn-base new file mode 100644 index 0000000..acac628 --- /dev/null +++ b/src/utils/.svn/text-base/Makefile.am.svn-base @@ -0,0 +1,3 @@ +bin_SCRIPTS = update-alternatives opkg-key + +EXTRA_DIST = $(bin_SCRIPTS) diff --git a/src/utils/.svn/text-base/opkg-key.svn-base b/src/utils/.svn/text-base/opkg-key.svn-base new file mode 100644 index 0000000..266bb66 --- /dev/null +++ b/src/utils/.svn/text-base/opkg-key.svn-base @@ -0,0 +1,74 @@ +#!/bin/sh + +# Based on apt-key from apt-0.6.25 +# Licensed under GPL Version 2 + +set -e + +usage() { + echo "Usage: opkg-key [options] command [arguments]" + echo + echo "Manage opkg's list of trusted keys" + echo + echo " opkg-key add <file> - add the key contained in <file> ('-' for stdin)" + echo " opkg-key del <keyid> - remove the key <keyid>" + echo " opkg-key list - list keys" + echo + echo "Options:" + echo " -o <root> Use <root> as the offline root directory" + echo +} + +if [ "$1" = "-o" ]; then + ROOT=$2 + shift 2 + echo "Note: using \"$ROOT\" as root path" +else + ROOT="" +fi + +command="$1" +if [ -z "$command" ]; then + usage + exit 1 +fi +shift + +if [ "$command" != "help" ] && ! which gpg >/dev/null 2>&1; then + echo >&2 "Warning: gnupg does not seem to be installed." + echo >&2 "Warning: opkg-key requires gnupg for most operations." + echo >&2 +fi + +# We don't use a secret keyring, of course, but gpg panics and +# implodes if there isn't one available + +GPG="gpg --no-options --no-default-keyring --keyring $ROOT/etc/opkg/trusted.gpg --secret-keyring $ROOT/etc/opkg/secring.gpg --trustdb-name $ROOT/etc/opkg/trustdb.gpg" + +case "$command" in + add) + $GPG --quiet --batch --import "$1" + echo "OK" + ;; + del|rm|remove) + $GPG --quiet --batch --delete-key --yes "$1" + echo "OK" + ;; + list) + $GPG --batch --list-keys + ;; + finger*) + $GPG --batch --fingerprint + ;; + adv*) + echo "Executing: $GPG $*" + $GPG $* + ;; + help) + usage + ;; + *) + usage + exit 1 + ;; +esac diff --git a/src/utils/.svn/text-base/update-alternatives.in.svn-base b/src/utils/.svn/text-base/update-alternatives.in.svn-base new file mode 100644 index 0000000..34d89f1 --- /dev/null +++ b/src/utils/.svn/text-base/update-alternatives.in.svn-base @@ -0,0 +1,197 @@ +#!/bin/sh +# update-alternatives +# +# Copyright (C) 2001 Carl D. Worth +# +# This program was inspired by the Debian update-alternatives program +# which is Copyright (C) 1995 Ian Jackson. This version of +# update-alternatives is command-line compatible with Debian's for a +# subset of the options, (only --install, --remove, and --help) +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +set -e + +# admin dir +ad="$OPKG_OFFLINE_ROOT@opkglibdir@/opkg/alternatives" + +usage() { + echo "update-alternatives: $* + +Usage: update-alternatives --install <link> <name> <path> <priority> + update-alternatives --remove <name> <path> + update-alternatives --help +<link> is the link pointing to the provided path (ie. /usr/bin/foo). +<name> is the name in $ad/alternatives (ie. foo) +<path> is the name referred to (ie. /usr/bin/foo-extra-spiffy) +<priority> is an integer; options with higher numbers are chosen. +" >&2 + exit 2 +} + +quit() { + echo "update-alternatives: $*" >&2 + exit 2 +} + +register_alt() { + [ $# -lt 2 ] && return 1 + local name="$1" + local link="$2" + + if [ ! -d $ad ]; then + mkdir -p $ad + fi + + if [ -e "$ad/$name" ]; then + local olink=`head -n 1 $ad/$name` + if [ "$link" != "$olink" ]; then + echo "update-alternatives: Error: cannot register alternative $name to $link since it is already registered to $olink" >&2 + return 1 + fi + else + echo "$link" > "$ad/$name" + fi + + return 0 +} + +protect_slashes() { + sed -e 's/\//\\\//g' +} + +remove_alt() { + [ $# -lt 2 ] && return 1 + local name="$1" + local path="$2" + + [ ! -f $ad/$name ] && return 0 + + path=`echo $path | protect_slashes` + sed -ne "/^$path\>.*/!p" $ad/$name > $ad/$name.new + mv $ad/$name.new $ad/$name +} + +add_alt() { + [ $# -lt 3 ] && return 1 + local name="$1" + local path="$2" + local priority="$3" + remove_alt $name $path + echo "$path $priority" >> $ad/$name +} + +find_best_alt() { + [ $# -lt 1 ] && return 1 + [ ! -f $ad/$name ] && return 0 + + link=$OPKG_OFFLINE_ROOT/`head -n 1 $ad/$name` + + prio=`sed -ne "1!p" $ad/$name | sed -e "s/\(.*\) \(.*\)/\2 \1/g" | sort -nr | head -n 1 | sed 's/ [^ ]*$//'` + if [ -z "$prio" ]; then + echo "update-alternatives: removing $link as no more alternatives exist for it" + rm $ad/$name + if [ -L $link ]; then + rm $link + fi + return 0 + fi + + ## Find last line with highest priority. + path=`grep "${prio}$" $ad/$name | tail -n 1 | sed 's/ [^ ]*$//'` + + if [ ! -e $link -o -L $link ]; then + local link_dir=`dirname $link` + if [ ! -d $link_dir ]; then + mkdir -p $link_dir + fi + if [ -h $link -a -d $link ]; then + # If $link exists and the target is a directory, + # 'ln -sf $path $link' doesn't replace the link to + # that directory, it creates new link inside. + echo "update-alternatives: Removing $link". + rm -f $link + fi + ln -sf $path $link + echo "update-alternatives: Linking $link to $path" + else + echo "update-alternatives: Error: not linking $link to $path since $link exists and is not a link" + return 1 + fi + + return 0 +} + +do_install() { + if [ $# -lt 4 ]; then + usage "--install needs <link> <name> <path> <priority>" + fi + local link="$1" + local name="$2" + local path="$3" + local priority="$4" + + path=`echo $path | sed 's|/\+|/|g'` + + # This is a bad hack, but I haven't thought of a cleaner solution yet... + [ -n "$OPKG_OFFLINE_ROOT" ] && path=`echo $path | sed "s|^$OPKG_OFFLINE_ROOT/*|/|"` + + register_alt $name $link + add_alt $name $path $priority + find_best_alt $name +} + +do_remove() { + if [ $# -lt 2 ]; then + usage "--remove needs <name> <path>" + fi + local name="$1" + local path="$2" + + path=`echo $path | sed 's|/\+|/|g'` + + # This is a bad hack, but I haven't thought of a cleaner solution yet... + [ -n "$OPKG_OFFLINE_ROOT" ] && path=`echo $path | sed "s|^$OPKG_OFFLINE_ROOT/*|/|"` + + remove_alt $name $path + find_best_alt $name +} + +### +# update-alternatives "main" +### + +while [ $# -gt 0 ]; do + arg="$1" + shift + + case $arg in + --help) + usage "help:" + exit 0 + ;; + --install) + do_install $* + exit $? + ;; + --remove) + do_remove $* + exit $? + ;; + *) + usage "unknown argument \`$arg'" + ;; + esac +done + +usage "at least one of --install or --remove must appear" + +exit 0 |