This is scanprefs.sh in view mode; [Download] [Up]
#! /bin/sh
#+++
# title: scanprefs
# abstract: scan user preferences databases for owners/domains.
# author: Tom Hageman <tom@basil.icce.rug.nl>
# created: November 1997
# modified:
# copyleft:
#
# Copyright (C) 1997 Tom R. Hageman, but otherwise perfect freeware.
#
# description:
# Usage: scanprefs [<NEXTSTEP-key> [<OPENSTEP-key>]]
#
# This scans both the NEXTSTEP as the OPENSTEP defaults database.
# With no arguments, only the owner/domain names are returned.
# With a single argument, this is searched (and returned) in
# both NEXTSTEP and OPENSTEP databases.
# With two arguments, the first is searched (and returned) in the
# NEXTSTEP database, and the second is searched in the OPENSTEP database.
#
# NEXTSTEP entries are preceded with `N', and OPENSTEP entries are
# preceded with `O'.
#
# bugs:
# only understands `simple' non-multiline, non-quoted values.
#---
PATH=/usr/ucb:/bin:/usr/bin export PATH
err=/dev/null
#err=/dev/console
case $# in
0) ;;
1) NXPref="$1"; NSPref="$NXPref";;
2) NXPref="$1"; NSPref="$2" ;;
*) echo "Usage: `basename $0` [<NEXTSTEP-key> [<OPENSTEP-key>]]" >&2
exit 2
esac
{
# Just let it silently fail on pre-OPENSTEP..
{
case "$NSPref" in
?*) defaults find "$NSPref" | sed "s/.*'\(.*\)': {\(.*\) = \(.*\);.*/\1 \2 \3/"
esac
defaults domains | tr ' ' '\012'
} | sed "s/^/O /"
{
case "$NXPref" in
?*) dread -n "$NXPref"
esac
# This heuristic sed filter removes most of the cruft due to multiline values,
# as proper multi-line quoted string parsing would be too painful for now.
dread -l | sed "/^[a-zA-Z0-9]/!d; /^[^ ][^ ]* [^ ][^ ]* [^ ]/!d; s/ .*//"
} | sed "s/^/N /"
} 2>$err | sort -uf +1 -2 +0 -1 2>$err
These are the contents of the former NiCE NeXT User Group NeXTSTEP/OpenStep software archive, currently hosted by Netfuture.ch.