parseLongArg code rework for readability

move the -- parsing up into the parent
make it more obvious which values we are using
diff --git a/flag.go b/flag.go
index 55594df..4b96126 100644
--- a/flag.go
+++ b/flag.go
@@ -505,10 +505,6 @@
 
 func (f *FlagSet) parseLongArg(s string, args []string) (a []string, err error) {
 	a = args
-	if len(s) == 2 { // "--" terminates the flags
-		f.args = append(f.args, args...)
-		return
-	}
 	name := s[2:]
 	if len(name) == 0 || name[0] == '-' || name[0] == '=' {
 		err = f.failf("bad flag syntax: %s", s)
@@ -521,24 +517,23 @@
 	if !alreadythere {
 		if name == "help" { // special case for nice help message.
 			f.usage()
-			return args, ErrHelp
+			return a, ErrHelp
 		}
 		err = f.failf("unknown flag: --%s", name)
 		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
 		}
-		f.setFlag(flag, "true", s)
+		value = "true"
 	} else {
-		if e := f.setFlag(flag, split[1], s); e != nil {
-			err = e
-			return
-		}
+		value = split[1]
 	}
-	return args, nil
+	err = f.setFlag(flag, value, s)
+	return
 }
 
 func (f *FlagSet) parseShortArg(s string, args []string) (a []string, err error) {
@@ -605,12 +600,11 @@
 		}
 
 		if s[1] == '-' {
-			args, err = f.parseLongArg(s, args)
-
-			if len(s) == 2 {
-				// stop parsing after --
+			if len(s) == 2 { // "--" terminates the flags
+				f.args = append(f.args, args...)
 				break
 			}
+			args, err = f.parseLongArg(s, args)
 		} else {
 			args, err = f.parseShortArg(s, args)
 		}