summaryrefslogtreecommitdiff
path: root/fml/lib/FML
diff options
context:
space:
mode:
authorfukachan <fukachan>2001-02-20 15:03:55 +0000
committerfukachan <fukachan>2001-02-20 15:03:55 +0000
commita26eb812e065e82546a9c93bd9c721101ac59f69 (patch)
treef90fb35bbd487e07511c452561387976b619d362 /fml/lib/FML
parent60120edb4f3e83a82874a61b623d6c09e2978803 (diff)
downloadfml8-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.pm4
-rw-r--r--fml/lib/FML/Checksum.pm2
-rw-r--r--fml/lib/FML/Process/Distribute.pm2
-rw-r--r--fml/lib/FML/SequenceFile.pm140
-rw-r--r--fml/lib/FML/Ticket/System.pm8
-rw-r--r--fml/lib/FML/Utils.pm163
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;