| OLD | NEW |
| 1 #include <search.h> | 1 #include <search.h> |
| 2 #include <string.h> | 2 #include <string.h> |
| 3 | 3 |
| 4 void *lsearch(const void *key, void *base, size_t *nelp, size_t width, | 4 void* lsearch(const void* key, |
| 5 » int (*compar)(const void *, const void *)) | 5 void* base, |
| 6 { | 6 size_t* nelp, |
| 7 » char (*p)[width] = base; | 7 size_t width, |
| 8 » size_t n = *nelp; | 8 int (*compar)(const void*, const void*)) { |
| 9 » size_t i; | 9 char(*p)[width] = base; |
| 10 size_t n = *nelp; |
| 11 size_t i; |
| 10 | 12 |
| 11 » for (i = 0; i < n; i++) | 13 for (i = 0; i < n; i++) |
| 12 » » if (compar(p[i], key) == 0) | 14 if (compar(p[i], key) == 0) |
| 13 » » » return p[i]; | 15 return p[i]; |
| 14 » *nelp = n+1; | 16 *nelp = n + 1; |
| 15 » return memcpy(p[n], key, width); | 17 return memcpy(p[n], key, width); |
| 16 } | 18 } |
| 17 | 19 |
| 18 void *lfind(const void *key, const void *base, size_t *nelp, | 20 void* lfind(const void* key, |
| 19 » size_t width, int (*compar)(const void *, const void *)) | 21 const void* base, |
| 20 { | 22 size_t* nelp, |
| 21 » char (*p)[width] = (void *)base; | 23 size_t width, |
| 22 » size_t n = *nelp; | 24 int (*compar)(const void*, const void*)) { |
| 23 » size_t i; | 25 char(*p)[width] = (void*)base; |
| 26 size_t n = *nelp; |
| 27 size_t i; |
| 24 | 28 |
| 25 » for (i = 0; i < n; i++) | 29 for (i = 0; i < n; i++) |
| 26 » » if (compar(p[i], key) == 0) | 30 if (compar(p[i], key) == 0) |
| 27 » » » return p[i]; | 31 return p[i]; |
| 28 » return 0; | 32 return 0; |
| 29 } | 33 } |
| 30 | |
| 31 | |
| OLD | NEW |