From 4690e804b6cbf8f57021b253601a24fbd4d56255 Mon Sep 17 00:00:00 2001
From: Han-Wen Nienhuys <hanwen@google.com>
Date: Mon, 25 Apr 2011 13:34:38 -0300
Subject: [PATCH] Dump GETATTR results too.

---
 fuse/opcode.go | 16 +++++++++-------
 1 file changed, 9 insertions(+), 7 deletions(-)

diff --git a/fuse/opcode.go b/fuse/opcode.go
index c896969..5c4db39 100644
--- a/fuse/opcode.go
+++ b/fuse/opcode.go
@@ -221,14 +221,15 @@ func doRename(state *MountState, req *request) {
 ////////////////////////////////////////////////////////////////
 
 type operationFunc func(*MountState, *request)
+type castPointerFunc func(unsafe.Pointer) interface{}
 
 type operationHandler struct {
 	Name       string
 	Func       operationFunc
 	InputSize  int
 	OutputSize int
-	DecodeIn   func(unsafe.Pointer) interface{}
-	DecodeOut  func(unsafe.Pointer) interface{}
+	DecodeIn   castPointerFunc
+	DecodeOut  castPointerFunc
 }
 
 var operationHandlers []*operationHandler
@@ -386,11 +387,12 @@ func init() {
 		operationHandlers[op].Func = v
 	}
 
-	operationHandlers[FUSE_LOOKUP].DecodeOut = func(ptr unsafe.Pointer) interface{} {
-		return (*EntryOut)(ptr)
-	}
-	operationHandlers[FUSE_OPEN].DecodeOut = func(ptr unsafe.Pointer) interface{} {
-		return (*EntryOut)(ptr)
+	for op, f := range map[Opcode]castPointerFunc{
+		FUSE_LOOKUP: func(ptr unsafe.Pointer) interface{} { return (*EntryOut)(ptr) },
+		FUSE_OPEN: func(ptr unsafe.Pointer) interface{} { return (*EntryOut)(ptr) },
+		FUSE_GETATTR: func(ptr unsafe.Pointer) interface{} { return (*AttrOut)(ptr) },
+	} {
+		operationHandlers[op].DecodeOut = f
 	}
 
 }
-- 
2.30.9