UserDB: log timestamps to second granularity
[interchange.git] / code / UI_Tag / cp.coretag
1 # Copyright 2002-2007 Interchange Development Group and others
2
3 # This program is free software; you can redistribute it and/or modify
4 # it under the terms of the GNU General Public License as published by
5 # the Free Software Foundation; either version 2 of the License, or
6 # (at your option) any later version.  See the LICENSE file for details.
7
8 # $Id: cp.coretag,v 1.5 2007-03-30 23:40:54 pajamian Exp $
9
10 UserTag cp Order      from to
11 UserTag cp addAttr
12 UserTag cp Version    $Revision: 1.5 $
13 UserTag cp Routine    <<EOR
14 require File::Copy;
15 sub {
16         my ($from, $to, $opt) = @_;
17 #Debug("cp from=$from to=$to umask=$opt->{umask}");
18         my $save_mask;
19         if($opt->{umask}) {
20                 $opt->{umask} = oct($opt->{umask});
21                 $save_mask = umask($opt->{umask});
22         }
23         my $status = File::Copy::copy($from, $to);
24
25         if ($opt->{preserve_times}) {
26                 my ($atime, $mtime);
27
28                 ($atime, $mtime) = (stat $from)[8,9];
29
30                 if ($atime) {
31                         $status = utime($atime, $mtime, $from);
32                 }
33                 else {
34                         $status = 0;
35                 }
36         }
37
38         umask($save_mask) if defined $save_mask;
39         return '' if $opt->{hide};
40         return $status;
41 }
42 EOR