3 # $Header: /home/ralph/netatalk/rsync/netatalk/contrib/shell_utils/Attic/apple_mv,v 1.2 2000-08-09 14:12:06 rufustfirefly Exp $
6 # Revision 1.2 2000-08-09 14:12:06 rufustfirefly
7 # /usr/local/bin/perl -> /usr/bin/perl and portability fixes
9 # Revision 1.1 2000/08/09 14:08:06 rufustfirefly
10 # Shell utils from http://www.-genome.wi.mit.edu/ftp/distribution/software/Bass/bass-1.29/apple_util/ (initial import)
12 # Revision 1.2 1996/06/14 18:06:58 lstein
13 # Fixed bugs in the character escaping routines.
15 # Revision 1.2 1996/02/09 18:44:44 will
18 # Revision 1.1 1996/02/09 18:21:35 will
24 Usage: $0 filename1 filename2
25 $0 filename ... directory
26 Do an apple move, moving the resource fork as well
29 @from = @ARGV; pop(@from);
32 if (-f $to && @from > 1) { die $USAGE; }
34 foreach $from (@from) {
36 print STDERR "file $from does not exist\n";
40 $from = escape_bad_chars($from);
41 $to = escape_bad_chars($to);
42 $cmd = "mv $from $to";
43 system $cmd || die "error executing $cmd";
45 ($from_dir, $from_file) = split_dir_file($from);
48 if (!-d "$to/.AppleDouble") {
49 mkdir("$to/.AppleDouble", 0777);
51 $cmd = "mv $from_dir/.AppleDouble/$from_file $to/.AppleDouble/$from_file";
53 ($to_dir, $to_file) = split_dir_file($to);
56 print STDERR "directory $to does not exist\n";
60 if (!-d "$to_dir/.AppleDouble") {
61 mkdir("$to_dir/.AppleDouble", 0777);
63 $cmd = "mv $from_dir/.AppleDouble/$from_file $to_dir/.AppleDouble/$to_file";
66 system $cmd || die "error executing $cmd";
69 sub escape_bad_chars {
71 $file=~s/([^a-zA-Z0-9.-_])/\\$1/;
75 # split a file path into a directory and file name.
79 @path_elems = split(/\//, $path);
81 my $file = pop(@path_elems);
86 $dir = join('/', @path_elems);