Пример #1
0
void ClearWord(struct WordList *WL)
{
    char *Word;
    if (WL)
    {
        while ( (Word = StkPop( &WL->Stack )) )
        {
            free(Word);
        }
        WL->Stack.Used = 0;
        WL->MaxLen = 0;
        ClearHash(&WL->Hash);
        if (WL->NonEmpty)
            InsertWord("", WL);
    }
}
Пример #2
0
char *FGetsStk(char *Dest, unsigned long len, struct Stack *stack)
{
    static short HasSeenLong = 0;
    struct FileNode *fn;
    char *Retval = NULL;
    size_t Retlen = 0;

    if ((fn = StkTop(stack)))
    {
        do
        {
            Retval = fgets(Dest, (int)len, fn->fh);
            if (Retval) {
                Retlen = strlen(Retval);

                if (Retval[Retlen-1] == '\n' || Retlen < len-1)
                    fn->Line++;
                /* We only want the long lines warning once per file */
                else if (!HasSeenLong)
                {
                    PrintPrgErr(pmLongLines, len-2);
                    HasSeenLong = 1;
                }
                break;
            }

            fn = StkPop(stack);
            fclose(fn->fh);
            /* Don't free the fn->Name field because it can be referenced in an
               error message */
            free(fn);
            HasSeenLong = 0;
        }
        while (!Retval && (fn = StkTop(stack)));
    }

    return (Retval);
}
Пример #3
0
STRPTR FGetsStk(STRPTR Dest, ULONG len, struct Stack *stack)
{
    struct FileNode     *fn;
    STRPTR Retval = NULL;

    if((fn = StkTop(stack)))
    {
        do
        {
            if((Retval = fgets(Dest, (int) len, fn->fh)))
            {
                fn->Line++;
                break;
            }

            fn = StkPop(stack);
            fclose(fn->fh);
            free(fn);

        } while(!Retval && (fn = StkTop(stack)));
    }

    return(Retval);
}
Пример #4
0
struct ErrInfo *PopErr(struct Stack *Stack)
{
    return((struct ErrInfo *) StkPop(Stack));
}