ref: b579d46f62e61c4fbb97ed9edd024ddb26def34d
dir: /ircd.c/
#include <u.h>
#include <libc.h>
#include <bio.h>
#include "dat.h"
#include "fns.h"
#include "version.h"
void
usage(void)
{
fprint(2, "usage: %s\n", argv0);
exits("usage");
}
static Biobuf *bio;
static char *sysnameb = "nil";
static char *versionstring = nil;
int debug = 0;
char*
getversion()
{
if (versionstring)
return versionstring;
versionstring = smprint("%s.%d %s :%s", Vversion, debug, Vname, Vcomment);
return versionstring;
}
static void
parselines(void)
{
char *line;
Request parsedrequest;
while (line = Brdstr(bio, '\n', 1)) {
parsedrequest = parseline(line);
if (debug > 1)
fprint(2, "request: %R\n", parsedrequest);
execrequest(parsedrequest);
free(line);
}
}
void
main(int argc, char **argv)
{
ARGBEGIN{
case 'h':
usage();
break;
case 'v':
fprint(2, "version: %s\n", getversion());
exits(nil);
case 'd':
debug++;
break;
}ARGEND;
fmtinstall('R', Rfmt);
sysnameb = sysname();
bio = Bfdopen(0, OREAD);
parselines();
}
void
reply(Reply repl, ...)
{
char buf[511];
va_list arg;
va_start(arg, repl);
vsnprint(buf, sizeof buf, repl.msg, arg);
va_end(arg);
print(":%s %03d %s\r\n", sysnameb, repl.nr, buf);
}