]> git.saurik.com Git - cycript.git/commitdiff
Use case-sensitive comparison for tab completions.
authorJay Freeman (saurik) <saurik@saurik.com>
Wed, 23 Dec 2015 18:28:00 +0000 (10:28 -0800)
committerJay Freeman (saurik) <saurik@saurik.com>
Wed, 23 Dec 2015 18:28:00 +0000 (10:28 -0800)
Execute.cpp

index 4f9d18d09328de7398076699c13a2d56825de807..d09c31a683cf6d18bed16a1de3b2e31af5734cb4 100644 (file)
@@ -1228,16 +1228,30 @@ static JSValueRef All_complete_callAsFunction(JSContextRef context, JSObjectRef
 
     sqlite3_stmt *statement;
 
-    _sqlcall(sqlite3_prepare(database_,
-        "select "
-            "\"cache\".\"name\" "
-        "from \"cache\" "
-        "where"
-            " \"cache\".\"system\" & " CY_SYSTEM " == " CY_SYSTEM " and"
-            " \"cache\".\"name\" like ? || '%'"
-    , -1, &statement, NULL));
-
-    _sqlcall(sqlite3_bind_text(statement, 1, prefix.data, prefix.size, SQLITE_STATIC));
+    if (prefix.size == 0)
+        _sqlcall(sqlite3_prepare(database_,
+            "select "
+                "\"cache\".\"name\" "
+            "from \"cache\" "
+            "where"
+                " \"cache\".\"system\" & " CY_SYSTEM " == " CY_SYSTEM
+        , -1, &statement, NULL));
+    else {
+        _sqlcall(sqlite3_prepare(database_,
+            "select "
+                "\"cache\".\"name\" "
+            "from \"cache\" "
+            "where"
+                " \"cache\".\"name\" >= ? and \"cache\".\"name\" < ? and "
+                " \"cache\".\"system\" & " CY_SYSTEM " == " CY_SYSTEM
+        , -1, &statement, NULL));
+
+        _sqlcall(sqlite3_bind_text(statement, 1, prefix.data, prefix.size, SQLITE_STATIC));
+
+        char *after(pool.strndup(prefix.data, prefix.size));
+        ++after[prefix.size - 1];
+        _sqlcall(sqlite3_bind_text(statement, 2, after, prefix.size, SQLITE_STATIC));
+    }
 
     while (_sqlcall(sqlite3_step(statement)) != SQLITE_DONE)
         values.push_back(CYCastJSValue(context, CYJSString(sqlite3_column_string(statement, 0))));