mirror of
https://gittea.dev/nova/th.git
synced 2025-10-21 18:30:15 -04:00
Compare commits
2 Commits
1d54169c2d
...
55cd4077b1
Author | SHA1 | Date | |
---|---|---|---|
![]() |
55cd4077b1 | ||
![]() |
3a2c226ed9 |
44
backend.c
44
backend.c
@@ -1,3 +1,6 @@
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
|
||||
char* concat(const char *s1, const char *s2){
|
||||
const size_t len1 = strlen(s1);
|
||||
const size_t len2 = strlen(s2);
|
||||
@@ -6,5 +9,46 @@ char* concat(const char *s1, const char *s2){
|
||||
memcpy(result + len1, s2, len2 + 1);
|
||||
return result;
|
||||
}
|
||||
char* smartstrcasestr(char *haystack, const char *needle){
|
||||
char smart = 0;
|
||||
char *ret;
|
||||
char passes = 0;
|
||||
while (*needle) {
|
||||
if (*needle >= 'A' && *needle <= 'Z') {
|
||||
smart = 1;
|
||||
break;
|
||||
}
|
||||
passes++;
|
||||
needle++;
|
||||
}
|
||||
needle -= passes;
|
||||
if (smart == 0) {
|
||||
char *needle_case = malloc(strlen(needle)+1);
|
||||
strcpy(needle_case, needle);
|
||||
passes = 0;
|
||||
while (*needle_case) {
|
||||
*needle_case = *needle_case | ' ';
|
||||
needle_case++;
|
||||
passes++;
|
||||
}
|
||||
needle_case -= passes;
|
||||
|
||||
char *haystack_case = malloc(strlen(haystack)+1);
|
||||
strcpy(haystack_case, haystack);
|
||||
passes = 0;
|
||||
while (*haystack_case) {
|
||||
*haystack_case = *haystack_case | ' ';
|
||||
haystack_case++;
|
||||
passes++;
|
||||
}
|
||||
haystack_case -= passes;
|
||||
|
||||
ret = strstr(haystack_case, needle_case);
|
||||
free(needle_case);
|
||||
free(haystack_case);
|
||||
} else {
|
||||
ret = strstr(haystack, needle);
|
||||
}
|
||||
return ret;
|
||||
}
|
||||
|
||||
|
@@ -6,3 +6,4 @@
|
||||
|
||||
|
||||
char* concat(const char *s1, const char *s2);
|
||||
char* smartstrcasestr(char *haystack, const char *needle);
|
||||
|
@@ -735,11 +735,7 @@ void paste(){
|
||||
status |= (STATUS_RUN_BACKEND | STATUS_UPDATE_SCREEN_MASK | STATUS_RELOAD_DIRECTORY | STATUS_UPDATE_SCREEN_RELOAD_FULL);
|
||||
}
|
||||
void search(){
|
||||
mvprintw(terminal_height - 1, 0, "/");
|
||||
|
||||
status |= STATUS_UPDATE_SCREEN_0;
|
||||
|
||||
render_pass();
|
||||
unsigned long local_height;
|
||||
local_height = getmaxy(win_b);
|
||||
|
||||
@@ -776,7 +772,7 @@ void search(){
|
||||
pass++;
|
||||
unsigned long i;
|
||||
for (i = 0; i < mid_file_count; i++) {
|
||||
if (strstr(mid_content[i].file_name, search_buffer)) {
|
||||
if (smartstrcasestr(mid_content[i].file_name, search_buffer)) {
|
||||
selected_file_current = i;
|
||||
status |= (STATUS_RUN_BACKEND | STATUS_UPDATE_SCREEN_0);
|
||||
update_selected_file();
|
||||
@@ -798,7 +794,7 @@ void search(){
|
||||
void search_next(){
|
||||
unsigned long i;
|
||||
for (i = selected_file_current+1; i < mid_file_count; i++) {
|
||||
if (strstr(mid_content[i].file_name, search_buffer)) {
|
||||
if (smartstrcasestr(mid_content[i].file_name, search_buffer)) {
|
||||
selected_file_current = i;
|
||||
status |= (STATUS_RUN_BACKEND | STATUS_UPDATE_SCREEN_0);
|
||||
update_selected_file();
|
||||
@@ -813,7 +809,7 @@ void search_previous(){
|
||||
if(i > selected_file_current) {
|
||||
break;
|
||||
}
|
||||
if (strstr(mid_content[i].file_name, search_buffer)) {
|
||||
if (smartstrcasestr(mid_content[i].file_name, search_buffer)) {
|
||||
selected_file_current = i;
|
||||
status |= (STATUS_RUN_BACKEND | STATUS_UPDATE_SCREEN_0);
|
||||
update_selected_file();
|
||||
|
Reference in New Issue
Block a user