Changeset 104cbd0bdf995f9b00c86968d4833c4a5447b762
- Timestamp:
- 11/01/07 04:05:13
(6 years ago)
- Author:
- Theo Schlossnagle <jesus@omniti.com>
- git-committer:
- Theo Schlossnagle <jesus@omniti.com> 1193889913 +0000
- git-parent:
[049f37c082f06620ed811faa55226c24d2e82e50]
- git-author:
- Theo Schlossnagle <jesus@omniti.com> 1193889913 +0000
- Message:
Try to get this working on Mac OS X.
-
Files:
-
Legend:
- Unmodified
- Added
- Removed
- Modified
- Copied
- Moved
| r049f37c |
r104cbd0 |
|
| 1 | 1 | AC_INIT(zetaback.in) |
|---|
| 2 | | AC_PATH_PROG(PERL,perl, ,/usr/perl5/bin) |
|---|
| 3 | | AC_PATH_PROG(POD2MAN,pod2man, ,/usr/perl5/bin) |
|---|
| | 2 | AC_PATH_PROG(PERL,perl, ,/usr/bin /usr/perl5/bin) |
|---|
| | 3 | AC_PATH_PROG(POD2MAN,pod2man, ,/usr/bin /usr/perl5/bin) |
|---|
| 4 | 4 | AC_SUBST(PERL) |
|---|
| 5 | 5 | AC_SUBST(POD2MAN) |
|---|
| r23dd315 |
r104cbd0 |
|
| 7 | 7 | use strict; |
|---|
| 8 | 8 | use Getopt::Long; |
|---|
| | 9 | use POSIX qw/mkfifo/; |
|---|
| 9 | 10 | use Data::Dumper; |
|---|
| 10 | 11 | |
|---|
| 11 | 12 | use vars qw/%conf $version_string |
|---|
| 12 | 13 | $PREFIX $CONF $LIST $FULL $SNAP $ZFS $BASE $RESTORE $VERSION |
|---|
| 13 | | $BUG_6343779/; |
|---|
| | 14 | $BUG_6343779 $NEEDSFD/; |
|---|
| 14 | 15 | $version_string = '0.1'; |
|---|
| 15 | 16 | $PREFIX = q^__PREFIX__^; |
|---|
| 16 | 17 | $CONF = qq^$PREFIX/etc/zetaback_agent.conf^; |
|---|
| | 18 | $NEEDSFD = ($^O eq 'darwin') ? 1 : 0; |
|---|
| 17 | 19 | |
|---|
| 18 | 20 | =pod |
|---|
| … | … | |
| 179 | 181 | `/usr/sbin/zfs snapshot $target`; |
|---|
| 180 | 182 | my @cmd = ("/usr/sbin/zfs", "send", $target); |
|---|
| 181 | | exec { $cmd[0] } @cmd; |
|---|
| | 183 | if($NEEDSFD) { |
|---|
| | 184 | fifo_exec(@cmd); |
|---|
| | 185 | } else { |
|---|
| | 186 | exec { $cmd[0] } @cmd; |
|---|
| | 187 | } |
|---|
| 182 | 188 | exit; |
|---|
| 183 | 189 | } |
|---|
| … | … | |
| 191 | 197 | `/usr/sbin/zfs snapshot $target`; |
|---|
| 192 | 198 | my @cmd = ("/usr/sbin/zfs", "send", "-i", $base, $target); |
|---|
| 193 | | exec { $cmd[0] } @cmd; |
|---|
| | 199 | if($NEEDSFD) { |
|---|
| | 200 | fifo_exec(@cmd); |
|---|
| | 201 | } else { |
|---|
| | 202 | exec { $cmd[0] } @cmd; |
|---|
| | 203 | } |
|---|
| 194 | 204 | exit; |
|---|
| 195 | 205 | } |
|---|
| … | … | |
| 234 | 244 | } |
|---|
| 235 | 245 | |
|---|
| | 246 | sub fifo_exec { |
|---|
| | 247 | my @cmd = @_; |
|---|
| | 248 | my $rv = -1; |
|---|
| | 249 | my $fifo = "zetaback_${$}_${FULL}${BASE}.fifo"; |
|---|
| | 250 | mkfifo($fifo, 0600) || die "Could not create fifo: $!"; |
|---|
| | 251 | my $pid = fork(); |
|---|
| | 252 | if($pid == 0) { |
|---|
| | 253 | close(STDOUT); |
|---|
| | 254 | open(STDOUT, ">$fifo") || die "Could not open fifo: $!"; |
|---|
| | 255 | exec { $cmd[0] } @cmd; |
|---|
| | 256 | exit; |
|---|
| | 257 | } |
|---|
| | 258 | open(FIFO, "<$fifo"); |
|---|
| | 259 | unlink($fifo); |
|---|
| | 260 | my $buf; |
|---|
| | 261 | while(my $len = sysread(FIFO, $buf, 1024*64)) { |
|---|
| | 262 | syswrite(STDOUT, $buf, $len); |
|---|
| | 263 | } |
|---|
| | 264 | waitpid($pid, 0); |
|---|
| | 265 | } |
|---|
| | 266 | |
|---|
| 236 | 267 | if($LIST) { zfs_agent_list(); exit; } |
|---|
| 237 | 268 | if($ZFS && $SNAP) { zfs_agent_remove_snap(); exit; } |
|---|