command-not-found: Update with latest commands
[termux-packages] / packages / command-not-found / command-not-found.c
index acfbe58..23b2399 100644 (file)
@@ -4,11 +4,11 @@
 
 #include "commands.h"
 
-inline int termux_min3(unsigned int a, unsigned int b, unsigned int c) {
+static inline int termux_min3(unsigned int a, unsigned int b, unsigned int c) {
        return (a < b ? (a < c ? a : c) : (b < c ? b : c));
 }
 
-int termux_levenshtein_distance(char const* restrict s1, char const* restrict s2) {
+static int termux_levenshtein_distance(char const* restrict s1, char const* restrict s2) {
        unsigned int s1len = strlen(s1);
        unsigned int s2len = strlen(s2);
        unsigned int matrix[s2len+1][s1len+1];
@@ -42,8 +42,13 @@ int main(int argc, char** argv) {
                        char const* binary_name = current_line + 1;
                        int distance = termux_levenshtein_distance(command_not_found, binary_name);
                        if (distance == 0 && strcmp(command_not_found, binary_name) == 0) {
-                               printf("The program '%s' is not installed. Install it by executing:\n apt install %s\n", binary_name, current_package);
-                               return 127;
+                               if (best_distance == 0) {
+                                       printf("or\n");
+                               } else {
+                                       printf("The program '%s' is not installed. Install it by executing:\n", binary_name);
+                               }
+                               printf(" pkg install %s\n", current_package);
+                               best_distance = 0;
                        } else if (best_distance == distance) {
                                guesses_at_best_distance++;
                        } else if (best_distance == -1 || best_distance > distance) {
@@ -57,6 +62,8 @@ int main(int argc, char** argv) {
                }
        }
 
+       if (best_distance == 0) return 127;
+
        if (best_distance == -1 || best_distance > 3) {
                printf("%s: command not found\n", command_not_found);
        } else {