summaryrefslogtreecommitdiff
path: root/beagle/debian-rfs/usr/bin/debconf
diff options
context:
space:
mode:
Diffstat (limited to 'beagle/debian-rfs/usr/bin/debconf')
-rwxr-xr-xbeagle/debian-rfs/usr/bin/debconf120
1 files changed, 120 insertions, 0 deletions
diff --git a/beagle/debian-rfs/usr/bin/debconf b/beagle/debian-rfs/usr/bin/debconf
new file mode 100755
index 0000000..79c0ceb
--- /dev/null
+++ b/beagle/debian-rfs/usr/bin/debconf
@@ -0,0 +1,120 @@
+#!/usr/bin/perl -w
+
+=head1 NAME
+
+debconf - run a debconf-using program
+
+=cut
+
+=head1 SYNOPSIS
+
+ debconf [options] command [args]
+
+=head1 DESCRIPTION
+
+Debconf is a configuration system for Debian packages. For a debconf
+overview and documentation for sysadmins, see L<debconf(7)> (in the
+debconf-doc package).
+
+The B<debconf> program runs a program under debconf's control, setting it up
+to talk with debconf on stdio. The program's output is expected to be debconf
+protocol commands, and it is expected to read result codes on stdin. See
+L<debconf-devel(7)> for details about the debconf protocol.
+
+The command to be run under debconf must be specified in a way that will
+let your PATH find it.
+
+This command is not the usual way that debconf is used. It's more typical
+for debconf to be used via L<dpkg-preconfigure(8)> or L<dpkg-reconfigure(8)>.
+
+=head1 OPTIONS
+
+=over 4
+
+=item B<-o>I<package>, B<--owner=>I<package>
+
+Tell debconf what package the command it is running is a part of. This is
+necessary to get ownership of registered questions right, and to support
+unregister and purge commands properly.
+
+=item B<-f>I<type>, B<--frontend=>I<type>
+
+Select the frontend to use.
+
+=item B<-p>I<value>, B<--priority=>I<value>
+
+Specify the minimum priority of question that will be displayed.
+
+=item B<--terse>
+
+Enables terse output mode. This affects only some frontends.
+
+=back
+
+=head1 EXAMPLES
+
+To debug a shell script that uses debconf, you might use:
+
+ DEBCONF_DEBUG=developer debconf my-shell-prog
+
+Or, you might use this:
+
+ debconf --frontend=readline sh -x my-shell-prog
+
+=head1 SEE ALSO
+
+L<debconf-devel(7)>, L<debconf(7)>
+
+=cut
+
+use strict;
+use Debconf::Db;
+use Debconf::AutoSelect qw(:all);
+use Debconf::Gettext;
+use Debconf::Config;
+
+# Find the end of the options for this command, and the beginning of the
+# command to run, which may have arguments. Break those arguments out.
+my (@argv, @command);
+for (my $x=0; $x <= $#ARGV; $x++) {
+ if ($ARGV[$x] =~ /^-(o|f|p|-(owner|frontend|priority))$/) {
+ push @argv, $ARGV[$x++];
+ push @argv, $ARGV[$x] if defined $ARGV[$x]; # skip option argument
+ next;
+ }
+ elsif ($ARGV[$x] =~ /^-/) {
+ push @argv, $ARGV[$x];
+ }
+ else {
+ # end of arguments, start of command
+ @command=@ARGV[$x..$#ARGV];
+ last;
+ }
+}
+@ARGV=@argv;
+my $usage = gettext("Usage: debconf [options] command [args]");
+my $owner='';
+Debconf::Config->getopt($usage.gettext(qq{
+ -o, --owner=package Set the package that owns the command.}),
+ "o|owner=s" => \$owner,
+);
+die "$usage\n" unless @command;
+
+Debconf::Db->load;
+my $frontend=make_frontend();
+my $confmodule=make_confmodule(@command);
+$confmodule->owner($owner) if length $owner;
+
+1 while ($confmodule->communicate);
+
+my $code=$confmodule->exitcode;
+$frontend->shutdown;
+$confmodule->finish;
+Debconf::Db->save;
+exit $code;
+
+=head1 AUTHOR
+
+Joey Hess <joeyh@debian.org>
+
+=cut