diff options
| author | fukachan <fukachan> | 2001-02-20 15:03:55 +0000 |
|---|---|---|
| committer | fukachan <fukachan> | 2001-02-20 15:03:55 +0000 |
| commit | a26eb812e065e82546a9c93bd9c721101ac59f69 (patch) | |
| tree | f90fb35bbd487e07511c452561387976b619d362 /fml/lib/FML | |
| parent | 60120edb4f3e83a82874a61b623d6c09e2978803 (diff) | |
| download | fml8-a26eb812e065e82546a9c93bd9c721101ac59f69.tar.gz fml8-a26eb812e065e82546a9c93bd9c721101ac59f69.tar.bz2 fml8-a26eb812e065e82546a9c93bd9c721101ac59f69.zip | |
move FML::SequenceFile and Utils to File::
add File::Errors also to avoid errors
Diffstat (limited to 'fml/lib/FML')
| -rw-r--r-- | fml/lib/FML/Article.pm | 4 | ||||
| -rw-r--r-- | fml/lib/FML/Checksum.pm | 2 | ||||
| -rw-r--r-- | fml/lib/FML/Process/Distribute.pm | 2 | ||||
| -rw-r--r-- | fml/lib/FML/SequenceFile.pm | 140 | ||||
| -rw-r--r-- | fml/lib/FML/Ticket/System.pm | 8 | ||||
| -rw-r--r-- | fml/lib/FML/Utils.pm | 163 |
6 files changed, 8 insertions, 311 deletions
diff --git a/fml/lib/FML/Article.pm b/fml/lib/FML/Article.pm index 31a81121..19571e61 100644 --- a/fml/lib/FML/Article.pm +++ b/fml/lib/FML/Article.pm @@ -64,8 +64,8 @@ sub increment_id my $pcb = $curproc->{ pcb }; my $seq_file = $config->{ sequence_file }; - use FML::SequenceFile; - my $sfh = new FML::SequenceFile { sequence_file => $seq_file }; + use File::Sequence; + my $sfh = new File::Sequence { sequence_file => $seq_file }; my $id = $sfh->increment_id; if ($sfh->error) { Log( $sfh->error ); } diff --git a/fml/lib/FML/Checksum.pm b/fml/lib/FML/Checksum.pm index d65b19e3..e338eeef 100644 --- a/fml/lib/FML/Checksum.pm +++ b/fml/lib/FML/Checksum.pm @@ -64,7 +64,7 @@ sub _init $self->{ _type } = 'native'; } else { - eval qq{ require FML::Utils; import FML::Utils qw(search_program);}; + eval qq{ require File::Utils; import File::Utils qw(search_program);}; my $prog = search_program('md5') || search_program('md5sum'); if (defined $prog) { $self->{ _program } = $prog; diff --git a/fml/lib/FML/Process/Distribute.pm b/fml/lib/FML/Process/Distribute.pm index c8568544..8cbf854a 100644 --- a/fml/lib/FML/Process/Distribute.pm +++ b/fml/lib/FML/Process/Distribute.pm @@ -190,7 +190,7 @@ sub _deliver_article { # debug my $dir = $config->{ smtp_log_dir }; - use FML::Utils qw(mkdirhier); + use File::Utils qw(mkdirhier); mkdirhier($dir) unless -d $dir; my $f = $config->{ smtp_log_file }; diff --git a/fml/lib/FML/SequenceFile.pm b/fml/lib/FML/SequenceFile.pm deleted file mode 100644 index a68457c1..00000000 --- a/fml/lib/FML/SequenceFile.pm +++ /dev/null @@ -1,140 +0,0 @@ -#-*- perl -*- -# -# Copyright (C) 2001 Ken'ichi Fukamachi -# All rights reserved. This program is free software; you can -# redistribute it and/or modify it under the same terms as Perl itself. -# -# $Id$ -# $FML$ -# - -package FML::SequenceFile; -use strict; -use vars qw(@ISA @EXPORT @EXPORT_OK); -use Carp; -use FML::Errors qw(error_reason error error_reset); - -=head1 NAME - -FML::SequenceFile - maintain the sequence number - -=head1 SYNOPSIS - - use FML::SequenceFile; - my $sfh = new FML::SequenceFile { sequence_file => $seq_file }; - my $id = $sfh->increment_id; - if ($sfh->error) { use Carp; carp( $sfh->error ); } - -If you divide the $id by some modulus, use - - my $sfh = new FML::SequenceFile { - sequence_file => $seq_file, - modulus => $modules, - }; - my $id = $sfh->increment_id; - -For example, if you do new() with modulus 3, - - my $sfh = new FML::SequenceFile { - sequence_file => $seq_file, - modulus => 3, - }; - -$id becomes 0, 1, 2, 0, 1, 2... - -=head1 DESCRIPTION - -=head2 C<new($args)> - -$args->{ sequence_file } is the file holding the current sequence number. - -=head2 C<increment_id([$file])> - -increment the sequence number. - -=cut - -require Exporter; -@ISA = qw(Exporter); - - -sub new -{ - my ($self, $args) = @_; - my ($type) = ref($self) || $self; - my $me = {}; - $me->{ _sequence_file } = $args->{ sequence_file }; - $me->{ _modulus } = $args->{ modulus }; - return bless $me, $type; -} - - -sub increment_id -{ - my ($self, $file) = @_; - my $id = 0; - my $seq_file = $file || $self->{ _sequence_file }; - - unless ($seq_file) { - $self->error_reason("the sequence file is not specified"); - return 0; - }; - - # touch the sequence file if it does not exist. - unless (-f $seq_file) { - use FML::Utils qw(touch); - touch($seq_file); - }; - - use IO::File::Atomic; - my ($rh, $wh) = IO::File::Atomic->rw_open($seq_file); - - # read the current sequence number - if (defined $rh) { - $id = $rh->getline; - $rh->close; - } - else { - $self->error_reason("cannot open the sequence file"); - return 0; - } - - # compute the modulus - if (defined $self->{ _modulus }) { - my $modulus = $self->{ _modulus }; - $id++; - $id = $id % $modulus; - } - # increment $id. The incremented number is the current article ID. - else { - $id++; - } - - # save $id - print $wh $id, "\n"; - $wh->close; - - $id; -} - - -=head1 AUTHOR - -Ken'ichi Fukamachi - -=head1 COPYRIGHT - -Copyright (C) 2001 Ken'ichi Fukamachi - -All rights reserved. This program is free software; you can -redistribute it and/or modify it under the same terms as Perl itself. - -=head1 HISTORY - -FML::SequenceFile appeared in fml5 mailing list driver package. -See C<http://www.fml.org/> for more details. - -=cut - - -1; diff --git a/fml/lib/FML/Ticket/System.pm b/fml/lib/FML/Ticket/System.pm index 8e2c2def..67ffe5c3 100644 --- a/fml/lib/FML/Ticket/System.pm +++ b/fml/lib/FML/Ticket/System.pm @@ -33,8 +33,8 @@ sub increment_id { my ($self, $seq_file) = @_; - use FML::SequenceFile; - my $sfh = new FML::SequenceFile { sequence_file => $seq_file }; + use File::Sequence; + my $sfh = new File::Sequence { sequence_file => $seq_file }; my $id = $sfh->increment_id; $self->error_reason( $sfh->error ); @@ -66,9 +66,9 @@ sub _init_ticket_db_dir if (defined $self->{ _db_dir }) { my $db_dir = $self->{ _db_dir }; unless (-d $db_dir) { - use FML::Utils qw(mkdirhier); + use File::Utils qw(mkdirhier); mkdirhier($db_dir, $config->{ default_directory_mode }) || do { - $self->error_reason( FML::Utils->error() ); + $self->error_reason( File::Utils->error() ); return undef; }; } diff --git a/fml/lib/FML/Utils.pm b/fml/lib/FML/Utils.pm deleted file mode 100644 index 04f33f7a..00000000 --- a/fml/lib/FML/Utils.pm +++ /dev/null @@ -1,163 +0,0 @@ -#-*- perl -*- -# -# Copyright (C) 2001 Ken'ichi Fukamachi -# All rights reserved. This program is free software; you can -# redistribute it and/or modify it under the same terms as Perl itself. -# -# $Id$ -# $FML$ -# - -package FML::Utils; -use strict; -use vars qw(@ISA @EXPORT @EXPORT_OK $ErrorString); -use Carp; - - -require Exporter; -@ISA = qw(Exporter); -@EXPORT_OK = qw(mkdirhier touch search_program copy); - -=head1 NAME - -FML::Utils.pm - error handling utilities - -=head1 SYNOPSIS - - use FML::Utils qw(mkdiehier); - mkdirhier($dir, $mode); - -=head1 DESCRIPTION - -=head1 AUTHOR - -Ken'ichi Fukamachi - -=head1 COPYRIGHT - -Copyright (C) 2001 Ken'ichi Fukamachi - -All rights reserved. This program is free software; you can -redistribute it and/or modify it under the same terms as Perl itself. - -=head1 HISTORY - -FML::Utils appeared in fml5 mailing list driver package. -See C<http://www.fml.org/> for more details. - -=cut - -sub error { return $ErrorString;} - -sub error_reset { undef $ErrorString;} - - -# Descriptions: "mkdir -p" or "mkdirhier" -# Arguments: directory [file_mode] -# Side Effects: set $ErrorString -# Return Value: succeeded to create directory or not -sub mkdirhier -{ - my ($dir, $mode) = @_; - - error_reset(); - - # XXX $mode (e.g. 0755) should be a numeric not a string - eval qq{ - use File::Path; - mkpath(\$dir, 0, $mode); - }; - $ErrorString = $@; - return ($@ ? undef : 1); -} - - -# Descriptions: touch: create file if file not exists -# Arguments: file file_mode -# Side Effects: none -# Return Value: 1 if succeed, 0 if not -sub touch -{ - my ($file, $mode) = @_; - my ($ok) = 0; - - error_reset(); - - if ( -f $file) { - return 1; - } - else { - my $fh = new IO::File $file, "a"; - - if (defined $fh) { - $fh->autoflush(1); - close($fh); - } - - $ok++ if -f $file; - return 0 unless -f $file; - }; - - if (defined $mode) { - chmod $mode, $file && $ok++; - } - - return $ok; -} - - - -# Descriptions: file $file executable -# Arguments: file [path_list] -# The "path_list" is an ARRAY_REFERENCE. -# For example, -# search_program('md5'); -# search_program('md5', [ '/bin', '/sbin' ]); -# Side Effects: none -# Return Value: pathname if found, undef if not -sub search_program -{ - my ($file, $path_list) = @_; - - my $default_path_list = [ - '/usr/bin', - '/bin', - '/sbin', - '/usr/local/bin', - '/usr/gnu/bin', - '/usr/pkg/bin' - ]; - - $path_list ||= $default_path_list; - - use File::Spec; - my $path; - for $path (@$path_list) { - my $prog = File::Spec->catfile($path, $file); - if (-x $prog) { - return $prog; - } - } - - return wantarray ? () : undef; -} - - - -# wrappers for delegation :-) -sub copy -{ - my ($src, $dst) = @_; - my $pkg = 'IO::File::Atomic'; - - eval qq{ require $pkg; $pkg->import();}; - unless ($@) { - $pkg->new->copy($src, $dst); - } - else { - undef; - } -} - - -1; |
