Index: trunk/Nebulous/Changes
===================================================================
--- trunk/Nebulous/Changes	(revision 17844)
+++ trunk/Nebulous/Changes	(revision 17845)
@@ -2,4 +2,6 @@
 
 0.09
+    - move print_all_xattrs(), print_xattrs(), write_xattrs(), delete_xattrs(),
+      and parse_xattr_pair() from neb-xattr into Nebulous::Util
     - change replicate() to report when it fails to cleanup (after a failure)
     - add neb-xattr util
Index: trunk/Nebulous/bin/neb-xattr
===================================================================
--- trunk/Nebulous/bin/neb-xattr	(revision 17844)
+++ trunk/Nebulous/bin/neb-xattr	(revision 17845)
@@ -3,5 +3,5 @@
 # Copyright (C) 2008  Joshua Hoblitt
 #
-# $Id: neb-xattr,v 1.7 2008-05-27 21:03:50 jhoblitt Exp $
+# $Id: neb-xattr,v 1.8 2008-05-29 03:59:30 jhoblitt Exp $
 
 use strict;
@@ -12,4 +12,5 @@
 
 use Nebulous::Client;
+use Nebulous::Util 0.02 qw( :standard );
 
 use Getopt::Long qw( GetOptions :config auto_help auto_version );
@@ -67,94 +68,4 @@
 exit(0);
 
-sub print_all_xattrs
-{
-    my ($neb, $key) = @_;
-
-    return unless defined $neb;
-    return unless defined $key;
-
-    my $xattr_names = $neb->listxattr($key) or die $neb->err;
-    foreach my $name (@$xattr_names) {
-        print_xattrs($neb, $key, $name) or return;
-    }
-
-    return 1;
-}
-
-
-sub print_xattrs
-{
-    my ($neb, $key, @xattr_names) = @_;
-
-    return unless defined $neb;
-    return unless defined $key;
-    return unless scalar @xattr_names;
-
-    foreach my $arg (@xattr_names) {
-        my ($name, $value) = parse_xattr_pair($arg);
-        die "can not process $arg because it is in name:value form"
-            if defined $value;
-        $value = $neb->getxattr($key, $name) or die $neb->err;
-        print "$name:$value\n";
-    }
-
-    return 1;
-}
-
-
-sub write_xattrs
-{
-    my ($neb, $key, @xattr_pairs) = @_;
-
-    return unless defined $neb;
-    return unless defined $key;
-    return unless scalar @xattr_pairs;
-
-    foreach my $arg (@xattr_pairs) {
-        my ($name, $value) = parse_xattr_pair($arg);
-        die "can not process $arg because it is not in name:value form"
-            unless defined $name and defined $value;
-        die "xattr name: $name is not in to the form user.name"
-            unless $name =~ /^user\./;
-        $neb->setxattr($key, $name, $value, "replace")
-            or die $neb->err;
-    }
-
-    return 1;
-}
-
-
-sub delete_xattrs
-{
-    my ($neb, $key, @xattr_names) = @_;
-
-    return unless defined $neb;
-    return unless defined $key;
-    return unless scalar @xattr_names;
-
-    foreach my $arg (@xattr_names) {
-        my ($name, $value) = parse_xattr_pair($arg);
-        die "can not process $arg because it is in name:value form"
-            if defined $value;
-        $neb->removexattr($key, $name)
-            or die $neb->err;
-    }
-
-    return 1;
-}
-
-
-sub parse_xattr_pair
-{
-    my $pair = shift;
-    
-    return unless defined $pair;
-
-    no warnings qw( uninitialized );
-    my ($name, $value) = split(/:/, $pair);
-    use warnings;
-
-    return ($name, $value);
-}
 
 
Index: trunk/Nebulous/lib/Nebulous/Util.pm
===================================================================
--- trunk/Nebulous/lib/Nebulous/Util.pm	(revision 17844)
+++ trunk/Nebulous/lib/Nebulous/Util.pm	(revision 17845)
@@ -1,5 +1,5 @@
 # Copyright (c) 2004  Joshua Hoblitt
 #
-# $Id: Util.pm,v 1.11 2008-03-20 23:21:58 jhoblitt Exp $
+# $Id: Util.pm,v 1.12 2008-05-29 03:59:30 jhoblitt Exp $
 
 package Nebulous::Util;
@@ -8,5 +8,5 @@
 use warnings FATAL => qw( all );
 
-our $VERSION = '0.01';
+our $VERSION = '0.02';
 
 use base qw( Exporter );
@@ -24,4 +24,9 @@
     _open_uri
     parse_neb_key
+    print_xattrs
+    print_all_xattrs
+    write_xattrs
+    delete_xattrs
+    parse_xattr_pair
 );
 
@@ -39,4 +44,5 @@
 );
 
+
 sub _nuke_file {
     my $path = shift;
@@ -51,4 +57,5 @@
 }
 
+
 sub _get_file_path {
     my $uri = shift;
@@ -58,4 +65,5 @@
     return $path;
 }
+
 
 sub _get_filehandle {
@@ -70,4 +78,5 @@
 }
 
+
 sub _open_uri {
     my ( $uri , $flags ) = @_;
@@ -81,4 +90,96 @@
 
 
+sub print_all_xattrs
+{
+    my ($neb, $key) = @_;
+
+    return unless defined $neb;
+    return unless defined $key;
+
+    my $xattr_names = $neb->listxattr($key) or die $neb->err;
+    foreach my $name (@$xattr_names) {
+        print_xattrs($neb, $key, $name) or return;
+    }
+
+    return 1;
+}
+
+
+sub print_xattrs
+{
+    my ($neb, $key, @xattr_names) = @_;
+
+    return unless defined $neb;
+    return unless defined $key;
+    return unless scalar @xattr_names;
+
+    foreach my $arg (@xattr_names) {
+        my ($name, $value) = parse_xattr_pair($arg);
+        die "can not process $arg because it is in name:value form"
+            if defined $value;
+        $value = $neb->getxattr($key, $name) or die $neb->err;
+        print "$name:$value\n";
+    }
+
+    return 1;
+}
+
+
+sub write_xattrs
+{
+    my ($neb, $key, @xattr_pairs) = @_;
+
+    return unless defined $neb;
+    return unless defined $key;
+    return unless scalar @xattr_pairs;
+
+    foreach my $arg (@xattr_pairs) {
+        my ($name, $value) = parse_xattr_pair($arg);
+        die "can not process $arg because it is not in name:value form"
+            unless defined $name and defined $value;
+        die "xattr name: $name is not in to the form user.name"
+            unless $name =~ /^user\./;
+        $neb->setxattr($key, $name, $value, "replace")
+            or die $neb->err;
+    }
+
+    return 1;
+}
+
+
+sub delete_xattrs
+{
+    my ($neb, $key, @xattr_names) = @_;
+
+    return unless defined $neb;
+    return unless defined $key;
+    return unless scalar @xattr_names;
+
+    foreach my $arg (@xattr_names) {
+        my ($name, $value) = parse_xattr_pair($arg);
+        die "can not process $arg because it is in name:value form"
+            if defined $value;
+        $neb->removexattr($key, $name)
+            or die $neb->err;
+    }
+
+    return 1;
+}
+
+
+sub parse_xattr_pair
+{
+    my $pair = shift;
+    
+    return unless defined $pair;
+
+    no warnings qw( uninitialized );
+    my ($name, $value) = split(/:/, $pair);
+    use warnings;
+
+    return ($name, $value);
+}
+
+
 1;
 
