for(;;) {
line = getaline(in);
- if( feof(in) ) {
- if( item[NAME] && sec )
+ if(feof(in)) {
+ if(item[NAME] && sec)
add_item2database(item);
else
free_list_item(item);
break;
}
- if( !*line || *line == '\n' || *line == '#' ) {
- free(line);
- continue;
- } else if( *line == '[' ) {
+ if(!*line || *line == '\n' || *line == '#') {
+ goto next;
+ } else if(*line == '[') {
if( item[NAME] && sec )
add_item2database(item);
else
free_list_item(item);
memset(&item, 0, sizeof(item));
sec = 1;
- if ( !(tmp = strchr(line, ']')))
+ if(!(tmp = strchr(line, ']')))
sec = 0; /*incorrect section lines are skipped*/
- } else if((tmp = strchr(line, '=') ) && sec ) {
+ } else if((tmp = strchr(line, '=') ) && sec) {
*tmp++ = '\0';
- for(i=0; i<ITEM_FIELDS; i++)
- if( !strcmp(abook_fields[i].key, line) ) {
- item[i] = strdup(tmp);
+ for(i = 0; i < ITEM_FIELDS; i++)
+ if(!strcmp(abook_fields[i].key, line)) {
+ item[i] = xstrdup(tmp);
goto next;
}
}
next:
- free(line);
+ xfree(line);
}
- free(line);
+ xfree(line);
return 0;
}
{
FILE *in;
- if( database != NULL )
+ if(database != NULL)
close_database();
- if ( (in = abook_fopen(filename, "r")) == NULL )
+ if ((in = abook_fopen(filename, "r")) == NULL)
return -1;
parse_database(in);
char *tmp;
if(item[EMAIL] == NULL)
- item[EMAIL] = strdup("");
+ item[EMAIL] = xstrdup("");
for(i=0; i<ITEM_FIELDS; i++)
if( item[i] && ((int)strlen(item[i]) > _MAX_FIELD_LEN(i) ) ) {
tmp = item[i];
item[i][_MAX_FIELD_LEN(i)-1] = 0;
- item[i] = strdup(item[i]);
+ item[i] = xstrdup(item[i]);
free(tmp);
}
}
while(p > s && *(p - 1) != ' ')
p--;
- return strdup(p);
+ return xstrdup(p);
}
static int
if(list_is_empty() || !is_valid_item(start))
return -2; /* error */
- findstr = strdup(str);
+ findstr = xstrdup(str);
findstr = strlower(findstr);
e.item = start - 1; /* must be "real start" - 1 */
db_enumerate_items(e) {
- for( i = 0; search_fields[i] >= 0; i++ ) {
- tmp = safe_strdup(database[e.item][search_fields[i]]);
+ for(i = 0; search_fields[i] >= 0; i++) {
+ if(database[e.item][search_fields[i]] == NULL)
+ continue;
+ tmp = xstrdup(database[e.item][search_fields[i]]);
if( tmp && strstr(strlower(tmp), findstr) ) {
ret = e.item;
goto out;