common/readline.c
///////////////////////////////////////////////////////////////////////////////
// Filename: readline.c
///////////////////////////////////////////////////////////////////////////////
// Purpose: provide a function that reads a line from cin and recognizes
//          EOF immediately
///////////////////////////////////////////////////////////////////////////////
// History:
// ========
//
// Date     Time     Name      Description   
// -------- -------- --------  ------------------------------------------------
// 96/02/06 00:44:30 muellerg: created
//
///////////////////////////////////////////////////////////////////////////////
// Feature test switches ///////////////////////////// Feature test switches //
    /* NONE */
// System headers /////////////////////////////////////////// System headers //
#include <stdlib.h>
// Local headers ///////////////////////////////////////////// Local headers //
#include "../common.h"
// Macros /////////////////////////////////////////////////////////// Macros //
    /* NONE */
// File scope objects /////////////////////////////////// File scope objects //
    /* NONE */
// External variables, functions, and classes ///////////// External objects //
    /* NONE */
// Signal catching functions ///////////////////// Signal catching functions //
    /* NONE */
// Structures, unions, and class definitions /////////////////// Definitions //
    /* NONE */
// Functions and class implementation /// Functions and class implementation //
/*
 * readline: reads a line from istream in, with recognizing EOF
 *           immediately. 
 * returns:  -1 for error, 0 for ok
 */
int
readline(istream &in, char *buf, int max_len)
{
    int ok = -1;
    if(buf && max_len)
    {
        char *t=buf;
        bool no_return = true;
        while(max_len && in && no_return)
        {
            in.read(t,1);
            if(*t == '\n')
                no_return=false;
            t++;
            max_len--;
        }
        *t=0;
        if(in) ok=0;
    }
    return ok;
}
// Main /////////////////////////////////////////////////////////////// Main //
    /* NONE */