Implement $(info) and $(error)
diff --git a/eval.go b/eval.go
index 397682a..6693885 100644
--- a/eval.go
+++ b/eval.go
@@ -39,7 +39,9 @@
 			"shell":    funcShell,
 			"call":     funcCall,
 			"flavor":   funcFlavor,
+			"info":     funcInfo,
 			"warning":  funcWarning,
+			"error":    funcError,
 		},
 	}
 }
diff --git a/func.go b/func.go
index 7bb94aa..65cd353 100644
--- a/func.go
+++ b/func.go
@@ -154,9 +154,23 @@
 }
 
 // http://www.gnu.org/software/make/manual/make.html#Make-Control-Functions
+func funcInfo(ev *Evaluator, args []string) string {
+	Log("warning %q", args)
+	arg := ev.evalExpr(strings.Join(args, ","))
+	fmt.Printf("%s\n", arg)
+	return ""
+}
+
 func funcWarning(ev *Evaluator, args []string) string {
 	Log("warning %q", args)
 	arg := ev.evalExpr(strings.Join(args, ","))
 	fmt.Printf("%s:%d: %s\n", ev.filename, ev.lineno, arg)
 	return ""
 }
+
+func funcError(ev *Evaluator, args []string) string {
+	Log("warning %q", args)
+	arg := ev.evalExpr(strings.Join(args, ","))
+	Error(ev.filename, ev.lineno, "*** %s.", arg)
+	return ""
+}
diff --git a/test/err_error.mk b/test/err_error.mk
new file mode 100644
index 0000000..a19babc
--- /dev/null
+++ b/test/err_error.mk
@@ -0,0 +1,4 @@
+
+$(error foo)
+
+test:
diff --git a/test/info.mk b/test/info.mk
new file mode 100644
index 0000000..8a7c138
--- /dev/null
+++ b/test/info.mk
@@ -0,0 +1,2 @@
+test:
+	echo $(info "%s:%s" foo bar)