[ Avaa Bypassed ]




Upload:

Command:

www-data@3.21.113.219: ~ $
#!/usr/bin/perl -w

use strict;
use Debian::DictionariesCommon q(:all);
use Debconf::Client::ConfModule q(:all);

dico_checkroot ();

my $triggered;
my $skip_symlinks_setting;
my $class   = "ispell";
my $program = "update-default-$class";
my $debug   = 1 if defined $ENV{'DICT_COMMON_DEBUG'};

# Parse options
foreach my $option ( @ARGV ){
  if ( $option eq "--skip-symlinks" ){
    # Do not try to set symlinks at $linkdir.
    $skip_symlinks_setting++;
  } elsif ( $option eq "--rebuild" ){
    # info is always rebuilt, so this option is not needed.
    # It is preserved as a no-op for old maintainer scripts.
  } elsif ( $option eq "--triggered" ){
    # Do not try to enable update-default-$class} trigger but run the script.
    $triggered++;
  } else {
    die "update-default-$class: Bad option \"$option\". Aborting..."
  }
}

version ('2.0');

updatedb ($class);
my $dictionaries = loaddb ($class);

# Preprocess default symlinks
dico_preprocess_default_symlinks ($class,$dictionaries);

# Enable trigger if needed. Exit cleanly on success.
unless ( $triggered ){
  exit if dico_activate_trigger("update-default-$class");
}

my $manual;
my $question  = "dictionaries-common/default-$class";
my $iquestion = "dictionaries-common/invalid_debconf_value";
my $debconf_dbase_corruption_question = "dictionaries-common/debconf_database_corruption";
my $newflag   = "/var/cache/dictionaries-common/flag-$class-new";

# This flag is intended for remove-default-$class. If we are here we do not
# need it any longer, so we reset for future apt runs by cleaning it.
if ( -f $newflag ){
  print STDERR "$program: Removing $newflag\n" if $debug;
  unlink $newflag
    or print STDERR " $program: Warning: could not remove $newflag\n";
}

my ($ret, $value)  = get ($question);
if ( $ret == 0 && $value ){
  # Question has a value
  if ( $value =~ m/^Manual.*/i ){
    # Question is set to manual mode
    print STDERR "$program: Manual mode for \"$class\"\n" if $debug;
    $manual++;
  } elsif ( not %$dictionaries ) {
    # Question has a value, but no manual mode and no class elements available. Unset value.
    print STDERR "$program: No Manual mode and no $class elements. $question unset.\n" if $debug;
    $value = "";
    set($question,$value);
    $manual++;
  } else {
    # Normal case, question has a value and is set to one of the installed class elements.
    print STDERR "$program: Default is set to \"$value\" for \"$class\"\n" if $debug;
  }
} elsif ( not %$dictionaries ) {
  # Question is empty. No default nor class elements available. Proceed as for manual.
  print STDERR "$program: No \"$class\" elements left.\n" if $debug;
  $manual++;
} else { # Question is empty, but $class elements are installed.

  # This seems to be debconf database corruption. Warn loudly about it.
  my %class_pkgs = ();
  foreach my $lang ( keys %{$dictionaries} ){
    if ( defined $dictionaries->{$lang}->{'package'} ){
      $class_pkgs{$dictionaries->{$lang}->{'package'}}++;
    }
  }
  my $class_packages = join (', ',sort keys %class_pkgs);

  subst($debconf_dbase_corruption_question,"class_packages",$class_packages);
  subst($debconf_dbase_corruption_question,"question",$question);
  fset ($debconf_dbase_corruption_question,"seen","false");
  input("high",$debconf_dbase_corruption_question);
  title ("dictionaries-common: ispell dictionaries");
  go ();

  # Try harder to get a value after default file
  my $dico_sysdefault = dico_getsysdefault($class);
  if ( defined $dico_sysdefault ){ # Not undef. Can be an empty or non-empty string.
    if ( $dico_sysdefault ){ # True: Non-empty string and not 0
      if ( defined $dictionaries->{$dico_sysdefault} ){
	$value = $dico_sysdefault;
	set($question,$value);
	print STDERR "$program: Missing value for \"$question\" question. Using \"$value\"\n";
      }
    } else { # False: The empty string or 0
      $value = "Manual symlinks setting (Forced after default file)";
      set($question,$value);
      $manual++;
    }
  }
}

unless ( $manual ){
  # Handle invalid debconf values
  if ( not exists $dictionaries->{$value} ){
    # This can happen because either an invalid debconf value or a
    # void value due to debconf database corruption. Try after stored
    # values to stay in the safe side.
    my @available_keys = sort {lc $a cmp lc $b} keys %$dictionaries;
    my $choices    = join (', ', sort {lc $a cmp lc $b} @available_keys);
    print STDERR "$program: Trying to get a default value from \"$choices\"\n";
    my $forced_key = $available_keys[0] ||
      die "$program: Selected ispell dictionary" .
	" \"$value\" \n" .
	"does not correspond to any installed package in the system\n" .
	"and no alternative ispell dictionary could be selected.\n";

    # Warn about what might have happened if not debconf database corruption
    if ( $value ){
      subst($iquestion,"value",$value);
      fset ($iquestion,"seen","false");
      input("high",$iquestion);
    }

    # Prepare a selection box to get a default.
    subst ($question, "choices", $choices);  # Put sane values in debconf choices field
    subst ($question, "echoices", $choices); # Put sane values in debconf echoices field
    set ($question, $forced_key);            # Set debconf value to a sane one
    fset ($question,"seen","false");
    input ("critical", $question);
    title ("dictionaries-common: ispell dictionaries");
    go ();
    ($ret, $value) = get ($question);
    die "\n Could not get a valid value for debconf question:\n" .
      "$question\n"
      if ( $ret != 0 ); # This should never be reached

    # Set manual flag if needed to avoid later symlinking
    $manual++ if ( $value =~ m/^Manual.*/i );
  }
}

# Set default value for ispell dictionaries and wordlists
if ( $manual ){
  dico_setsysdefault ($class,"");
} else {
  dico_setsysdefault ($class,$value);
}

# This here is only for ispell, not wordlist
my $emacsen_default      = "nil";
my $cache_dir            = "/var/cache/dictionaries-common";
my $emacsen_default_file = "$cache_dir/emacsen-ispell-default.el";
my $ispell_dicts_list    = "$cache_dir/ispell-dicts-list.txt";

unless ( $manual ){

  # Get ispell default dict for emacsen
  if ( exists $dictionaries->{$value}{"emacs-display"}
       and lc($dictionaries->{$value}{"emacs-display"}) eq "no" ){
    $emacsen_default = "nil";
  } elsif ( exists $dictionaries->{$value}{"emacsen-name"} ){
    $emacsen_default = "\"" . $dictionaries->{$value}{"emacsen-name"} . "\"";
  } elsif( exists $dictionaries->{$value}{"hash-name"} ){
    $emacsen_default = "\"" . $dictionaries->{$value}{"hash-name"} . "\"";
  }
}

# Printing a plain list with installed ispell dictionaries,
open (IDICTS,"> $ispell_dicts_list") ||
  die "Could not open $ispell_dicts_list for writing\n";
print IDICTS ""; # Make sure this is void if no dictionaries available.
foreach ( sort keys %{$dictionaries} ){
  print IDICTS "$_\n";
}
close (IDICTS);

# Printing the default ispell dictionary under emacs
open (EMISDEFAULT,"> $emacsen_default_file");
print EMISDEFAULT ";; File automatically generated by update-default-ispell
;;
;; Do not manually edit!! Use select-default-ispell script instead

(set-variable \'debian-ispell-dictionary $emacsen_default)\n";
close EMISDEFAULT;

# Autobuild hashes and emacsen/jed/squirrelmail stuff where appropriate.
print STDERR "update-default-$class: Calling ispell-autobuildhash\n" if $debug;
system ("ispell-autobuildhash --triggered") == 0
  or die "$program: Error running ispell-autobuildhash\n";

build_emacsen_support ();
build_jed_support ();
build_squirrelmail_support ();

# Clean orphaned remove files and its contents.
dico_clean_orphaned_removefiles($class,$dictionaries);
# -- End of specific ispell support 

# Set default symlink(s) and complain if not possible.
# For ispell dictionaries using auto-buildhash this should not be done
# from dictionaries-common postinst, but from ispell dictionaries postinst.
# Otherwise this is called before hashes are autobuild and will fail.
# d-c.postinst will call update-default-ispell with --skip-symlinks option.
unless ( $skip_symlinks_setting or $manual ) {
 dico_set_default_symlink($class,$value);
}

# Local Variables:
#  perl-indent-level: 2
# End:

__END__

=head1 NAME

update-default-ispell - update default ispell dictionary

=head1 SYNOPSIS

 update-default-ispell [--skip-symlinks] [--triggered]

=head1 DESCRIPTION

WARNING: Not to be used from the command line unless you know very well what you are doing.

This program is intended to be called from ispell dictionary package postinst,
from B<select-default-ispell> or
from dictionaries-common postinst.

When called under dpkg control with the B<--trigger> option the
script is run normally, otherwise the dictionaries-common
B<update-default-ispell> trigger is enabled
for later run.

With the B<--skip-symlinks> option the symlinks setting is skipped.
This is needed for B<update-default-ispell> when called from
dictionaries-common postinst, since autobuilt hashes may not yet
be available.

When run normally (from the command line or with B<--trigger>)
this script rebuilds the info at
F</var/cache/dictionaries-common/ispell.db>
after files under F</var/lib/dictionaries-common/ispell>,
reads the system default from the debconf database and
unless disabled, set default symlinks in F</etc/dictionaries-common>
pointing to the appropriate files in
F</usr/lib/ispell/>.

For ispell this script also updates the system-wide setting
F</etc/dictionaries-common/ispell-default> and the emacsen,
jed, and SquirrelMail support after known info.

=head1 OPTIONS

 --skip-symlinks  Do not try to set symlinks at /etc/dictionaries-common dir.
 --triggered      Run all the code instead of trying to enable
                  update-default-ispell trigger

=head1 SEE ALSO

The dictionaries-common policy document

=head1 AUTHORS

Rafael Laboissiere,
Agustin Martin Domingo

=cut

Filemanager

Name Type Size Permission Actions
aspell-autobuildhash File 13.4 KB 0755
escapesrc File 22.45 KB 0755
genccode File 14.73 KB 0755
gencmn File 14.73 KB 0755
gennorm2 File 62.9 KB 0755
gensprep File 26.8 KB 0755
iconvconfig File 30.4 KB 0755
icupkg File 23.1 KB 0755
ispell-autobuildhash File 15.56 KB 0755
libgvc6-config-update File 18.21 KB 0755
remove-default-ispell File 2.86 KB 0755
remove-default-wordlist File 2.86 KB 0755
select-default-ispell File 3.23 KB 0755
select-default-wordlist File 3.21 KB 0755
update-default-aspell File 1 KB 0755
update-default-ispell File 9.68 KB 0755
update-default-wordlist File 7.5 KB 0755
update-dictcommon-aspell File 1 KB 0755
update-dictcommon-hunspell File 782 B 0755
update-icon-caches File 596 B 0755
zic File 62.32 KB 0755