unknown option handler must be able to accept flags in --flag=value format
diff --git a/parser.go b/parser.go
index a417ba9..f95a92d 100644
--- a/parser.go
+++ b/parser.go
@@ -29,7 +29,7 @@
 	// name and the remaining command line arguments.
 	// It should return a new list of remaining arguments to continue parsing,
 	// or an error to indicate a parse failure.
-	UnknownOptionHandler func(option string, args []string) ([]string, error)
+	UnknownOptionHandler func(option string, val *string, args []string) ([]string, error)
 
 	internalError error
 }
@@ -219,7 +219,7 @@
 			if ignoreUnknown {
 				s.addArgs(arg)
 			} else if p.UnknownOptionHandler != nil {
-				modifiedArgs, err := p.UnknownOptionHandler(optname, s.args)
+				modifiedArgs, err := p.UnknownOptionHandler(optname, argument, s.args)
 
 				if err != nil {
 					s.err = err
diff --git a/parser_test.go b/parser_test.go
index bba7576..325bc35 100644
--- a/parser_test.go
+++ b/parser_test.go
@@ -369,10 +369,15 @@
 
 	var unknownFlag1 string
 	var unknownFlag2 bool
+	var unknownFlag3 string
 
 	// Set up a callback to intercept unknown options during parsing
-	p.UnknownOptionHandler = func(option string, args []string) ([]string, error) {
+	p.UnknownOptionHandler = func(option string, argument *string, args []string) ([]string, error) {
 		if option == "unknownFlag1" {
+			if argument != nil {
+				unknownFlag1 = *argument
+				return args, nil
+			}
 			// consume a value from remaining args list
 			unknownFlag1 = args[0]
 			return args[1:], nil
@@ -380,6 +385,14 @@
 			// treat this one as a bool switch, don't consume any args
 			unknownFlag2 = true
 			return args, nil
+		} else if option == "unknownFlag3" {
+			if argument != nil {
+				unknownFlag3 = *argument
+				return args, nil
+			}
+			// consume a value from remaining args list
+			unknownFlag3 = args[0]
+			return args[1:], nil
 		}
 
 		return args, fmt.Errorf("Unknown flag: %v", option)
@@ -387,7 +400,7 @@
 
 	// Parse args containing some unknown flags, verify that
 	// our callback can handle all of them
-	_, err := p.ParseArgs([]string{"--flag1=stuff", "--unknownFlag1", "blah", "--unknownFlag2", "--flag2=foo"})
+	_, err := p.ParseArgs([]string{"--flag1=stuff", "--unknownFlag1", "blah", "--unknownFlag2", "--unknownFlag3=baz", "--flag2=foo"})
 
 	if err != nil {
 		assertErrorf(t, "Parser returned unexpected error %v", err)
@@ -396,6 +409,7 @@
 	assertString(t, opts.Flag1, "stuff")
 	assertString(t, opts.Flag2, "foo")
 	assertString(t, unknownFlag1, "blah")
+	assertString(t, unknownFlag3, "baz")
 
 	if !unknownFlag2 {
 		assertErrorf(t, "Flag should have been set by unknown handler, but had value: %v", unknownFlag2)