69d91074 |
/*
* xprint.c
* Copyright (C) 2008 KLab Inc.
*/
#include "makuosan.h"
char *opcodestrlist[]={"PING ",
"EXIT ",
"SEND ",
"MD5 ",
"DSYNC",
"DEL ",
"UNKNOWN"};
uint8_t opcodenumlist[]={MAKUO_OP_PING,
MAKUO_OP_EXIT,
MAKUO_OP_SEND,
MAKUO_OP_MD5,
MAKUO_OP_DSYNC,
MAKUO_OP_DEL,
MAKUO_OPCODE_MAX};
char *sstatestrlist[]={"SEND_STAT ",
"SEND_OPEN ",
"SEND_DATA ",
"SEND_MARK ",
"SEND_CLOSE ",
"SEND_LAST ",
"SEND_ERROR ",
"SEND_BREAK ", |
69d91074 |
MAKUO_STATE_MAX};
char *rstatestrlist[] = {"RECV_NONE ",
"RECV_UPDATE ",
"RECV_SKIP ",
"RECV_OPEN ",
"RECV_MARK ",
"RECV_CLOSE ",
"RECV_IGNORE ",
"RECV_READONLY",
"RECV_BREAK ",
"RECV_LAST ",
"RECV_MD5OK ",
"RECV_MD5NG ",
"RECV_DELETEOK",
"RECV_DELETENG",
"RECV_OPENERR ",
"RECV_READERR ",
"RECV_WRITEERR",
"RECV_CLOSEERR",
"RECV_UNKNOWN"};
uint8_t rstatenumlist[]={MAKUO_RECVSTATE_NONE,
MAKUO_RECVSTATE_UPDATE,
MAKUO_RECVSTATE_SKIP,
MAKUO_RECVSTATE_OPEN,
MAKUO_RECVSTATE_MARK,
MAKUO_RECVSTATE_CLOSE,
MAKUO_RECVSTATE_IGNORE,
MAKUO_RECVSTATE_READONLY,
MAKUO_RECVSTATE_BREAK,
MAKUO_RECVSTATE_LAST,
MAKUO_RECVSTATE_MD5OK,
MAKUO_RECVSTATE_MD5NG,
MAKUO_RECVSTATE_DELETEOK,
MAKUO_RECVSTATE_DELETENG,
MAKUO_RECVSTATE_OPENERROR,
MAKUO_RECVSTATE_READERROR,
MAKUO_RECVSTATE_WRITEERROR,
MAKUO_RECVSTATE_CLOSEERROR,
MAKUO_STATE_MAX};
char *strsstate(uint8_t n)
{
int i;
for(i=0;sstatenumlist[i] != MAKUO_STATE_MAX;i++){
if(sstatenumlist[i] == n){
break;
}
}
return(sstatestrlist[i]);
}
char *strrstate(uint8_t n)
{
int i;
for(i=0;rstatenumlist[i] != MAKUO_STATE_MAX;i++){
if(rstatenumlist[i] == n){
break;
}
}
return(rstatestrlist[i]);
}
char *strmstate(mdata *data)
{
if(data->head.flags & MAKUO_FLAG_ACK){
return(strrstate(data->head.nstate));
}
return(strsstate(data->head.nstate));
}
char *stropcode(mdata *data)
{
int i;
for(i=0;opcodenumlist[i] != MAKUO_STATE_MAX;i++){
if(opcodenumlist[i] == data->head.opcode){
break;
}
}
return(opcodestrlist[i]);
}
char *strackreq(mdata *data)
{
char *ack = "ack";
char *req = "req";
if(data->head.flags & MAKUO_FLAG_ACK){
return(ack);
}
return(req);
}
void fdprintf(int s, char *fmt, ...)
{
char m[2048];
va_list arg;
if(s != -1){
va_start(arg, fmt);
vsnprintf(m, sizeof(m), fmt, arg);
va_end(arg);
m[sizeof(m) - 1] = 0;
write(s, m, strlen(m));
}
}
void lprintf(int l, char *fmt, ...)
{
va_list arg;
struct timeval tv;
char m[2048];
if(moption.loglevel >= l){
va_start(arg, fmt);
vsnprintf(m, sizeof(m), fmt, arg);
va_end(arg);
m[sizeof(m) - 1] = 0;
#ifdef MAKUO_DEBUG
gettimeofday(&tv, NULL);
fprintf(stderr, "%02d.%06d %s", tv.tv_sec % 60, tv.tv_usec, m);
#else
fprintf(stderr, "%s", m);
#endif
syslog(LOG_ERR, "%s: %s", moption.user_name, m);
}
}
void cprintf(int l, mcomm *c, char *fmt, ...)
{
char m[2048];
va_list arg;
if(!c)
return;
if(c->fd[0] == -1)
return;
if(c->loglevel >= l){
va_start(arg, fmt);
vsnprintf(m, sizeof(m), fmt, arg);
va_end(arg);
m[sizeof(m) - 1] = 0;
write(c->fd[0], m, strlen(m));
fsync(c->fd[0]);
}
}
|