Index: trunk/Nebulous/lib/Nebulous/Client.pm
===================================================================
--- trunk/Nebulous/lib/Nebulous/Client.pm	(revision 17081)
+++ trunk/Nebulous/lib/Nebulous/Client.pm	(revision 17448)
@@ -1,5 +1,5 @@
 # Copyright (c) 2004-2008  Joshua Hoblitt
 #
-# $Id: Client.pm,v 1.41 2008-03-21 01:53:36 jhoblitt Exp $
+# $Id: Client.pm,v 1.42 2008-04-18 00:08:23 jhoblitt Exp $
 
 package Nebulous::Client;
@@ -503,5 +503,5 @@
             type        => SCALAR,
             callbacks   => {
-                'is read or write' => sub { $_[0] =~ /^(?:read|write)$/ },
+                'is read or write' => sub { $_[0] =~ /^(?:read|write|>)$/ },
             },
         },
@@ -538,5 +538,5 @@
     }
 
-    if ( $type eq 'write' ) {
+    if ( $type eq 'write' or $type eq '>' ) {
         my $num_instances = scalar @$locations;
 
@@ -551,4 +551,8 @@
         };
         $log->logdie( $@ ) if $@;
+
+        if ($type eq '>') {
+            truncate($fh, 0) or $log->logdie("truncate failed: $!");
+        }
     } elsif ( $type eq 'read' ) {
         eval {
Index: trunk/Nebulous/lib/Nebulous/Client.pod
===================================================================
--- trunk/Nebulous/lib/Nebulous/Client.pod	(revision 17081)
+++ trunk/Nebulous/lib/Nebulous/Client.pod	(revision 17448)
@@ -285,5 +285,7 @@
 =item * type
 
-The type of lock to acquire.  Either C<read> or C<write>.
+The type of lock to acquire.  One of [C<read>, C<write>, C<>>].
+
+C<>> truncates any pre-existing files to zero length and opens it for writing.
 
 =back
