Skip to content

Commit 28ea605

Browse files
committed
Add new *find() to wdc.c
1 parent 7cb7e79 commit 28ea605

File tree

2 files changed

+13
-15
lines changed

2 files changed

+13
-15
lines changed

src/wdc.c

Lines changed: 13 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -141,22 +141,26 @@ int list_bookmarks() {
141141
*
142142
* @return The matching name|path in the file.
143143
*/
144-
char *find(const char *name) {
144+
char *find(const char *needle) {
145145
// Search from the bottom. So, it's the last one added.
146146
Bookmarks bookmarks = get_bookmarks_reversed();
147147
char *found_path = NULL;
148148

149149
// Simple linear search. Items can repeat. We get the last one added.
150150
for (size_t i = 0; i < bookmarks.count; i++) {
151151
Nob_String_Builder entry_sb = bookmarks.items[i];
152-
char *entry = entry_sb.items;
153-
char *delimiter = strstr(entry, DELIM);
154-
if (delimiter != NULL) {
155-
size_t name_len = delimiter - entry;
156-
if (strncmp(entry, name, name_len) == 0 && name_len == strlen(name)) {
157-
found_path = strdup(delimiter + strlen(DELIM));
158-
break;
159-
}
152+
Nob_String_View entry_sv = nob_sb_to_sv(entry_sb);
153+
Nob_String_View name_sv = nob_sv_chop_by_delim(&entry_sv, '|');
154+
155+
Nob_String_Builder name_sb = {0};
156+
nob_sb_append_buf(&name_sb, name_sv.data, name_sv.count);
157+
nob_sb_append_null(&name_sb);
158+
size_t name_sb_len = strlen(name_sb.items);
159+
// name_sv should now contain the part before '|'
160+
if (strncmp(needle, name_sb.items, name_sb_len) == 0 && name_sb_len == strlen(needle)) {
161+
// We're done with name_sb
162+
nob_sb_free(name_sb);
163+
found_path = strndup(entry_sv.data, entry_sv.count);
160164
}
161165
nob_sb_free(entry_sb);
162166
}

tests/nob_strings/nob_strings.c

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -67,20 +67,14 @@ char *find(const char *needle) {
6767
char *found_path = NULL;
6868

6969
// Simple linear search. Items can repeat. We get the last one added.
70-
nob_log(NOB_INFO, "Looking for: %s", needle);
71-
nob_log(NOB_INFO, "needle len: %lu", strlen(needle));
7270
for (size_t i = 0; i < bookmarks.count; i++) {
7371
Nob_String_Builder entry_sb = bookmarks.items[i];
74-
/* char *entry = entry_sb.items; */
7572
Nob_String_View entry_sv = nob_sb_to_sv(entry_sb);
7673
Nob_String_View name_sv = nob_sv_chop_by_delim(&entry_sv, '|');
7774

7875
Nob_String_Builder name_sb = {0};
7976
nob_sb_append_buf(&name_sb, name_sv.data, name_sv.count);
8077
nob_sb_append_null(&name_sb);
81-
/* printf("name_sb.items: %s\n", name_sb.items); */
82-
/* printf("name_sb.count: %zu\n", name_sb.count); */
83-
/* printf("strlen(name_sb.items): %lu\n", strlen(name_sb.items)); */
8478
size_t name_sb_len = strlen(name_sb.items);
8579
// name_sv should now contain the part before '|'
8680
if (strncmp(needle, name_sb.items, name_sb_len) == 0 && name_sb_len == strlen(needle)) {

0 commit comments

Comments
 (0)