I thank Torgny for this. I've been working on my problem with the help files for about three months before I posted here. The problem was that everytime the help files were being loaded, an extra line was being added to the beginning and end of the entries. Torgny suggested that I remove the line under /* get the first keyword line */, so I did, and I noticed that extra lines were no longer being added to the beginning of the entry. That got me on the right path, because I was unsure if my problem was in the loading or saving. His advice proved to me that it was in the loading. So I worked for a few hours after that, to solve the problem. Below is a copy of the original load_help function: void load_help(FILE *fl) { char key[READ_SIZE+1], entry[32384]; char line[READ_SIZE+1]; struct help_index_element el; /* get the first keyword line */ get_one_line(fl, key); while (*key != '$') { get_one_line(fl, line); *entry = '\0'; while (*line != '#') { strcat(entry, strcat(line, "\r\n")); get_one_line(fl, line); } el.min_level = 0; if ((*line == '#') && (*(line + 1) != 0)) el.min_level = atoi((line + 1)); el.min_level = MAX(0, MIN(el.min_level, LVL_IMPL)); /* now, add the entry to the index with each keyword on the keyword line */ el.entry = str_dup(entry); el.keywords = str_dup(key); help_table[top_of_helpt] = el; top_of_helpt++; /* get next keyword line (or $) */ get_one_line(fl, key); } } Below is a copy of my new load_help function. I've done this so that anyone else who has this problem, now has a cure. void load_help(FILE *fl) { char key[READ_SIZE+1], entry[32384]; char line[READ_SIZE+1], line2[READ_SIZE+1]; struct help_index_element el; bool END_ENTRY = FALSE; /* get the keyword line */ get_one_line(fl, key); while (*key != '$') { END_ENTRY = FALSE; /* read in the corresponding help entry */ get_one_line(fl, line); get_one_line(fl, line2); *entry = '\0'; while(!END_ENTRY) { if(*line2 == '#') { strcat(entry, line); strcpy(line, line2); END_ENTRY = TRUE; } else { strcat(entry, strcat(line, "\r\n")); strcpy(line, line2); get_one_line(fl, line2); } } el.min_level = 0; if ((*line == '#') && (*(line + 1) != 0)) el.min_level = atoi((line + 1)); el.min_level = MAX(0, MIN(el.min_level, LVL_IMPL)); /* now, add the entry to the index with each keyword on the keyword line */ el.entry = str_dup(entry); el.keywords = str_dup(key); help_table[top_of_helpt] = el; top_of_helpt++; /* get next keyword line (or $) */ get_one_line(fl, key); } } -- +---------------------------------------------------------------+ | FAQ: http://qsilver.queensu.ca/~fletchra/Circle/list-faq.html | | Archives: http://post.queensu.ca/listserv/wwwarch/circle.html | | Newbie List: http://groups.yahoo.com/group/circle-newbies/ | +---------------------------------------------------------------+
This archive was generated by hypermail 2b30 : 06/25/03 PDT