need torewrite search code again..

master
steffen 13 years ago
parent 01b9406ca3
commit b63076aa3f

@ -480,7 +480,7 @@ static char maps_line[MAP_SEARCHLINE_LEN*4];
* parameter: pos - entry position inside file
* data - destination of found data
* size - size of data block
* return: next position to read data.
* return: final start of current data block
*/
unsigned long int maps_readpos (unsigned long int pos, struct map_search_data *data, int *size) {
size_t realpos;
@ -505,7 +505,7 @@ unsigned long int maps_readpos (unsigned long int pos, struct map_search_data *d
d_printf ("maps_readpos: found no start. pos:%ld realpos:%lld", pos, realpos);
return -1;
}
d_printf ("start:%d", start);
// d_printf ("start:%d", start);
/* search where the current line ends */
for (end = start; end < readsize && maps_line[end] != '\n'; end++);
@ -517,12 +517,12 @@ unsigned long int maps_readpos (unsigned long int pos, struct map_search_data *d
*data = map_search_line2data (maps_line+start);
*size = end-start;
return realpos+start;
return start;
};
int map_search (char *name, struct map_search_data *data, int datasize) {
size_t blocksize, blockstart;
uint64_t blocksize, blockstart;
struct stat buf;
int i, j, cmpres, k;
@ -541,9 +541,9 @@ int map_search (char *name, struct map_search_data *data, int datasize) {
d_printf ("map_search something went wrong. i < 0 name:%s", name);
return 0;
}
d_printf ("search blocksize:%lld blockstart:%lld i:%d j:%d", blocksize, blockstart, i, j);
if ((cmpres = strcasecmp (name, data->name)) > 0) {
d_printf ("search blocksize:%lld blockstart:%lld i:%d j:%d", blocksize, blockstart, i, j, data->name);
d_printf ("compare: '%s' with '%s'", name, data->name);
if ((cmpres = strncasecmp (name, data->name, strlen (name)))> 0) {
/* name is lager than data */
blocksize = blocksize - ((i+j) - blockstart);
blockstart = i+j;
@ -552,9 +552,10 @@ int map_search (char *name, struct map_search_data *data, int datasize) {
/* name is smaller than data */
blocksize = i - blockstart;
}
d_printf ("cmpres: %d", cmpres);
} while (cmpres != 0 && blocksize > MAP_SEARCHLINE_LEN*2);
d_printf ("found blockstart:%lld datasize:%d, i:%d", blockstart, datasize, i);
d_printf ("found blockstart:%lld datasize:%d, i:%d text:'%-12s'", blockstart, datasize, i, data->name);
blockstart = i-MAP_SEARCHLINE_LEN;
if (blockstart < 0) blockstart = 0;
for (i = 0, k = 0; i < datasize*2 && k < datasize; i++) {

Loading…
Cancel
Save