Merge pull request #24 from eparis/longArgCleanup

Slight code cleanup parsing long flags
diff --git a/flag.go b/flag.go
index 9f16733..0070b93 100644
--- a/flag.go
+++ b/flag.go
@@ -529,14 +529,16 @@
 		return
 	}
 	var value string
-	if len(split) == 1 {
-		if bv, ok := flag.Value.(boolFlag); !ok || !bv.IsBoolFlag() {
-			err = f.failf("flag needs an argument: %s", s)
-			return
-		}
+	if len(split) == 2 {
+		// '--flag=arg'
+		value = split[1]
+	} else if bv, ok := flag.Value.(boolFlag); ok && bv.IsBoolFlag() {
+		// '--flag' (where flag is a bool)
 		value = "true"
 	} else {
-		value = split[1]
+		// '--flag' (where flag was not a bool)
+		err = f.failf("flag needs an argument: %s", s)
+		return
 	}
 	err = f.setFlag(flag, value, s)
 	return