Support arbitrary tag names [GH-3]
diff --git a/mapstructure.go b/mapstructure.go
index 231df40..2941a51 100644
--- a/mapstructure.go
+++ b/mapstructure.go
@@ -30,6 +30,10 @@
 	// Result is a pointer to the struct that will contain the decoded
 	// value.
 	Result interface{}
+
+	// The tag name that mapstructure reads for field names. This
+	// defaults to "mapstructure"
+	TagName string
 }
 
 // A Decoder takes a raw interface value and turns it into structured
@@ -83,6 +87,10 @@
 		return nil, errors.New("result must be addressable (a pointer)")
 	}
 
+	if config.TagName == "" {
+		config.TagName = "mapstructure"
+	}
+
 	result := &Decoder{
 		config: config,
 	}
@@ -325,7 +333,7 @@
 		fieldType := valType.Field(i)
 		fieldName := fieldType.Name
 
-		tagValue := fieldType.Tag.Get("mapstructure")
+		tagValue := fieldType.Tag.Get(d.config.TagName)
 		if tagValue != "" {
 			fieldName = tagValue
 		}