/* log.c -- Eat Log a line at a time.
*
* This file is part of TUA.
*
* Copyright (C) 1991,92,93 Lele Gaifax (lele@nautilus.sublink.org)
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the license, or (at
* your option)
* any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
*
*/
#include "tua_4_taylor.h"
#ifdef TAYLOR_UUCP
int
DEFUN (GetLog, (fp, lentry),
FILE * fp AND struct log * lentry)
{
char line[LINE_BUFFER_SIZE], * datebuffer;
extern int EXFUN(atoi, (CONST char *));
extern double EXFUN (atof, (CONST char *));
CONST char * command;
CONST char * process_id;
char * new_line_char;
read_line:
debug_newline();
if (fgets (line, LINE_BUFFER_SIZE, fp) == NULL)
return (EOF);
/* Each line in the Log file begins with the owner, i.e. "uux", "uucico", ...
if this doesn't, it's a continued line. */
if (line[0] != 'u' || line[1] != 'u')
{
debug_printf ("skipping continued line '%15.15s...'", line);
goto read_line;
}
xfree (lentry->Owner);
xfree (lentry->System);
xfree (lentry->User);
xfree (lentry->PortName);
xfree (lentry->Command);
lentry->PortName = lentry->Command = 0;
lentry->Owner = savestring (strtok (line, " "));
lentry->System = savestring (strtok (NULL, " "));
lentry->User = savestring (strtok (NULL, " "));
datebuffer = strtok (NULL, ")") + 1;
lentry->TimeStamp = parse_date (datebuffer);
process_id = strrchr (datebuffer, ' ');
lentry->ProcessId = atoi (process_id);
command = strrchr (datebuffer, 0) + 2; /* ie two char after the ')' */
if (strbegcmp (command, "Queuing") == 0)
command += sizeof ("Queuing");
if ((new_line_char = strrchr (command, '\n')))
*new_line_char = 0;
lentry->Command = savestring (command);
if (strbegcmp (command, "Calling system") == 0)
{
strtok (NULL, "(");
if (strcmp ("alternate", strtok (NULL, " ")) == 0)
{
strtok (NULL, ", ");
strtok (NULL, " ");
}
lentry->PortName = savestring (strtok (NULL, ")"));
}
else if (strbegcmp (command, "Incoming call") == 0)
{
strtok (NULL, "(");
strtok (NULL, " "); /* "login" */
strtok (NULL, " "); /* login name */
strtok (NULL, " "); /* "port" */
lentry->PortName = savestring (strtok (NULL, ")"));
}
return OK;
}
#endif /* TAYLOR_UUCP */
syntax highlighted by Code2HTML, v. 0.9.1