Exit with correct status.
[utils.git] / rsc
CommitLineData
df499390 1#!/usr/bin/perl
2
3if(@ARGV < 1) {
4 print STDERR "usage: rsc HOST CMD ARG...\n";
5 exit 1;
6}
7
8if($ARGV[0] eq "-s") {
9 $c = "";
10 while(<STDIN>) {
11 chomp;
12 s/\\(.)/$1/g;
13 $c .= $_;
14 if(/\\$/) {
15 $c =~ s/\\$/\n/;
16 next;
17 }
18 push @a, $c;
19 $c = "";
20 }
21 for (@a) {
22 exec @a;
23 print STDERR "$a[0]: $!\n";
24 exit 1;
25 }
26} else {
27 $host = shift @ARGV;
28 $pid = open SSH, "|-";
29 if($pid == 0) {
30 exec "ssh", "$host", "rsc", "-s";
31 die "$!";
32 }
33 for (@ARGV) {
34 s/([\\\n])/\\$1/g;
35 print SSH "$_\n";
36 }
37 close SSH;
38 waitpid $pid, 0;
2c8f92ba 39 exit $?;
df499390 40}