From 1044b3dd982e4d327ca1c3044bf70d12403a7f58 Mon Sep 17 00:00:00 2001 From: Stephen Hemminger Date: Mon, 6 Dec 2010 16:26:10 -0800 Subject: Add some file common file routines Perl versions of commonly used backquote escapes. --- lib/Vyatta/File.pm | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 71 insertions(+) create mode 100644 lib/Vyatta/File.pm (limited to 'lib/Vyatta') diff --git a/lib/Vyatta/File.pm b/lib/Vyatta/File.pm new file mode 100644 index 0000000..49f5c2b --- /dev/null +++ b/lib/Vyatta/File.pm @@ -0,0 +1,71 @@ +# Module: File.pm +# File manipulation functions + +# **** License **** +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License version 2 as +# published by the Free Software Foundation. +# +# This program is distributed in the hope that it will be useful, but +# WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU +# General Public License for more details. +# +# This code was originally developed by Vyatta, Inc. +# Portions created by Vyatta are Copyright (C) 2010 Vyatta, Inc. +# All Rights Reserved. +# **** End License **** + +package Vyatta::File; +use strict; +use warnings; + +our @EXPORT = qw(touch mkdir_p rm_rf); +our @EXPORT_OK = qw(show_error); +use base qw(Exporter); + +use Fcntl; +use File::Path qw(make_path remove_tree); + +# Change file time stamps +# if file does not exist, it is created empty +sub touch { + my $file = shift; + my $t = time; + + sysopen (my $f, $file, O_RDWR|O_CREAT) + or die "Can't touch $file: $!"; + close $f; + utime $t, $t, $file; +} + +# like mkdir -p +# Wrapper of File::Path:make_tree +sub mkdir_p { + my $path = shift; + my $err; + + make_path($path, { error => \$err } ); + + return @$err; +} + +# like rm -rf +# returns an array of errors if any (see File::Path) +sub rm_rf { + my $path = shift; + my $err; + + remove_tree($path, { error => \$err } ); + + return @$err; +} + +sub show_error { + for my $diag (@_) { + my ($f, $msg) = %$diag; + warn "$f: $msg\n"; + } +} + +1; -- cgit v1.2.3