At 21:55 2002-06-06 -0700, Jason Yarber wrote:
>Ok, I've been having a problem with another mud I work on, that deals with
>the help files.
>It seems that extra lines are being added to the beginning and end of
>every help file entry.
>I've narrowed it down to either when it saves, or when it loads, which it
>does both everytime
>I do a copyover to update my code. This bug has been persistant for a
>very long time, and
>as you can probably imagine, we're having to cycle through about 5 blank
>screens before we
>get to the actual help file. I do know that the blank lines are being
>saved to disk. But whether
>they are being added when the file is loaded or when it's saved, is beyond
>me. I've looked at
>the code for both the saving and the loading, but can't see any apparent
>problems myself.
>So I'm reluctantly asking you for help. I've placed a copy of each
>suspect function below.
>Please look through those functions and tell me what you think is
>wrong. As usual, your
>help is greatly appreciated.
For one, the following code adds an \r\n to the end of each key line in
load_help:
> /* read in the corresponding help entry */
> strcpy(entry, strcat(key, "\r\n"));
If you remove those two lines it might work better. I placed this entry at
the top of my help file, I can't remember exactly why, but it had something
to do with the count or something, it doesn't work well without I remember
at least:
-----------------------------------------------
~UNDEFINED!
Implementors don't need help, eh?!
#106
-----------------------------------------------
Here's both my functions:
-----------------------------------------------
void hedit_save_to_disk(struct descriptor_data *d)
{
int i;
FILE *fp;
sprintf(buf, "%s/%s", HLP_PREFIX, HELP_FILE);
if (!(fp = fopen(buf, "w+"))) {
mudlog("SYSERR: OLC: Cannot open help file!", BRF, LVL_BUILDER, TRUE);
return;
}
for (i = 0; i < top_of_helpt; i++) {
strcpy(buf1, help_table[i].entry ? help_table[i].entry : "Empty");
strip_cr(buf1);
sprintf(buf, "%s\n%s#%d\n",
ALLCAP(help_table[i].keywords),
buf1,
help_table[i].min_level);
fputs(buf, fp);
}
/*
* Write final line and close.
*/
fprintf(fp, "$\n");
fclose(fp);
}
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);
}
}
char *ALLCAP(char *txt)
{
char *ptr;
for (ptr = txt; *ptr; ptr++)
*ptr = UPPER(*ptr);
return (txt);
}
-----------------------------------------------
--
+---------------------------------------------------------------+
| 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