Replaced rsc with a bash version without remote dependencies.
authorFredrik Tolf <fredrik@dolda2000.com>
Sat, 28 May 2016 18:14:17 +0000 (20:14 +0200)
committerFredrik Tolf <fredrik@dolda2000.com>
Sat, 28 May 2016 18:14:17 +0000 (20:14 +0200)
rsc

diff --git a/rsc b/rsc
index 74be3fd..faa3264 100755 (executable)
--- a/rsc
+++ b/rsc
@@ -1,48 +1,18 @@
-#!/usr/bin/perl
+#!/bin/bash
 
-use MIME::Base64;
+set -e
 
-if(@ARGV < 1) {
-    print STDERR "usage: rsc HOST CMD ARG...\n";
-    exit 1;
-}
+if [ $# -lt 2 ]; then
+    echo "usage: rsc HOST COMMAND ARGS..." >&2
+    exit 1
+fi
 
-if($ARGV[0] eq "-s") {
-    if(!defined($ARGV[1])) {
-       print STDERR "rsc: server side needs arguments\n";
-       exit 1
-    }
-    $arg = decode_base64($ARGV[1]);
-    $c = "";
-    for (split /\n/, $arg) {
-       chomp;
-       s/\\(.)/$1/g;
-       $c .= $_;
-       if(/\\$/) {
-           $c =~ s/\\$/\n/;
-           next;
-       }
-       push @a, $c;
-       $c = "";
-    }
-    for (@a) {
-       exec @a;
-       print STDERR "$a[0]: $!\n";
-       exit 1;
-    }
-} else {
-    $host = shift @ARGV;
-    $arg = "";
-    for (@ARGV) {
-       s/([\\\n])/\\$1/g;
-       $arg .= "$_\n";
-    }
-    $ea = encode_base64($arg);
-    $ea =~ s/\n//g;
-    if(-t STDIN) {
-       push @sshopts, "-t";
-    }
-    push @sshopts, "-q";
-    exec "ssh", @sshopts, "$host", "rsc", "-s", $ea;
-    die "$!";
-}
+host="$1"; shift
+cmd="$1"; shift
+
+(
+    echo -n "$cmd"; echo -ne '\0'
+    for arg in "$@"; do
+       echo -n "$arg"; echo -ne '\0'
+    done
+) | exec ssh "$host" "xargs -0x sh -c 'exec \$0 \"\$@\"'"