diff --git a/src/cmd.c b/src/cmd.c
index 6cc748e8c97000744268845946a7e336905dcad2..2516c37f6fa92250df9752cbec79c3755d41f3ad 100644
--- a/src/cmd.c
+++ b/src/cmd.c
@@ -24,15 +24,6 @@ lkt_cmd_parse(struct lkt_cmd_opt *opts, int argc, const char **argv, void (*help
         it = opts + (++offset);
     }
 
-    /* The default function */
-    if (!it->name && it->call) {
-        struct lkt_cmd_args arguments = {
-            .argc = argc,
-            .argv = (const char **) argv,
-        };
-        it->call(&arguments);
-    }
-
     /* Now search for a unique match */
     if (count > 1)
         goto not_exclusive;
@@ -50,6 +41,15 @@ lkt_cmd_parse(struct lkt_cmd_opt *opts, int argc, const char **argv, void (*help
     exit(EXIT_FAILURE);
 
 not_found:
+    /* The default function */
+    if (!it->name && it->call) {
+        struct lkt_cmd_args arguments = {
+            .argc = argc,
+            .argv = (const char **) argv,
+        };
+        it->call(&arguments);
+    }
+
     fprintf(stderr, "Command '%s' could not be found\n", argv[0]);
     exit(EXIT_FAILURE);