about summary refs log tree commit diff
path: root/perl/lib/Nix/SSH.pm
diff options
context:
space:
mode:
Diffstat (limited to 'perl/lib/Nix/SSH.pm')
-rw-r--r--perl/lib/Nix/SSH.pm21
1 files changed, 20 insertions, 1 deletions
diff --git a/perl/lib/Nix/SSH.pm b/perl/lib/Nix/SSH.pm
index 3bcbabe981d6..dd3e5cefd8c7 100644
--- a/perl/lib/Nix/SSH.pm
+++ b/perl/lib/Nix/SSH.pm
@@ -7,7 +7,8 @@ use IPC::Open2;
 our @ISA = qw(Exporter);
 our @EXPORT = qw(
   sshOpts openSSHConnection closeSSHConnection
-  readN readInt writeInt writeString writeStrings
+  readN readInt readString readStrings
+  writeInt writeString writeStrings
   connectToRemoteNix
 );
 
@@ -83,6 +84,24 @@ sub readInt {
 }
 
 
+sub readString {
+    my ($from) = @_;
+    my $len = readInt($from);
+    my $s = readN($len, $from);
+    readN(8 - $len % 8, $from) if $len % 8; # skip padding
+    return $s;
+}
+
+
+sub readStrings {
+    my ($from) = @_;
+    my $n = readInt($from);
+    my @res;
+    push @res, readString($from) while $n--;
+    return @res;
+}
+
+
 sub writeInt {
     my ($n, $to) = @_;
     syswrite($to, pack("L<x4", $n)) or die;