1package Test::ConfigureGrepmail;
2
3use strict;
4
5sub Set_Caching_And_Grep
6{
7  my $filename = shift;
8  my $enable_caching = shift;
9  my $enable_grep = shift;
10
11  my $code = _Read_Code($filename);
12
13  $code =~ s/^\$USE_CACHING = (\d+);/\$USE_CACHING = $enable_caching;/m;
14  $code =~ s/^\$USE_GREP = (\d+);/\$USE_GREP = $enable_grep;/m;
15
16  _Write_Code($filename, $code);
17}
18
19# --------------------------------------------------------------------------
20
21sub Set_Cache_File
22{
23  my $filename = shift;
24  my $cache_file = shift;
25
26  my $code = _Read_Code($filename);
27
28  if ($code =~ /(Mail::Mbox::MessageParser::SETUP_CACHE\( {.*?} *\))/s)
29  {
30    my $original_cache_setup = $1;
31    my $new_cache_setup = $original_cache_setup;
32
33    $new_cache_setup =~ s/('file_name'\s*=>\s*)".*?"/$1"$cache_file"/;
34
35    $code =~ s/\Q$original_cache_setup\E/$new_cache_setup/;
36  }
37
38  _Write_Code($filename, $code);
39}
40
41# --------------------------------------------------------------------------
42
43sub _Read_Code
44{
45  my $filename = shift;
46
47  local $/ = undef;
48
49  open SOURCE, $filename
50    or die "Couldn't open grepmail file \"$filename\": $!";
51  my $code = <SOURCE>;
52  close SOURCE;
53
54  return $code;
55}
56
57# --------------------------------------------------------------------------
58
59sub _Write_Code
60{
61  my $filename = shift;
62  my $code = shift;
63
64  open SOURCE, ">$filename"
65    or die "Couldn't open grepmail file \"$filename\": $!";
66  print SOURCE $code;
67  close SOURCE;
68}
69
701;
71