示例#1
0
文件: sock.c 项目: jotaki/ircfs
int skprintf(int *sd, char *fmt, ...)
{
    va_list ap;
    char buf[0x801];

    socket_info("[write.%05d] skprintf: WARNING: NOT THREAD SAFE!\n", *sd);

    va_start(ap, fmt);
    vsprintf(buf, fmt, ap);
    va_end(ap);

    return skputs(buf, sd);
}
示例#2
0
文件: sock.c 项目: jotaki/ircfs
int skgetc(int *sd)
{
    int c = 0;
    int r = recv(*sd, (char *) &c, 1, 0);

    if(r == 0 || r == -1) {
        socket_debug("[%05d] EOF received.\n", *sd);
        c = EOF;
    }

    socket_info("[recv.%05d] 0x%02x '%c'\n", *sd, isprint(c) ? c : '0');
    return c;
}
示例#3
0
文件: sock.c 项目: jotaki/ircfs
int skgets(char *buf, int max, int *sd)
{
    int c, len = 0;

    while((c = skgetc(sd)) != '\n' && c != EOF && len < max) {
        if(c != '\r') {
            *buf++ = (char) c;
            ++len;
        }
    }
    *buf = 0;

    socket_info("[read.%05d] size=%d, max=%d, \"%s\"\n", *sd,len,max,buf);
    return len;
}
示例#4
0
文件: sock.c 项目: jotaki/ircfs
int skputs(char *buf, int *sd)
{
    int i, k, size = strlen(buf);
    k = size;

    while(size > 0) {
        socket_info("[write.%05d] \"%s\"\n", *sd, buf);
        i = send(*sd, buf, size, 0);
        if(i == -1) {
            socket_debug("[%05d] Bad write: %s\n", *sd,
                         strerror(errno));
            return i;
        }

        size -= i;
        buf += i;
    }
    return k;
}
示例#5
0
文件: sock.c 项目: jotaki/ircfs
int skwrite(int *sd, void *buf, int size)
{
    socket_info("[write.%05d] Sending %02d bytes\n", *sd, size);
    return send(*sd, buf, size, 0);
}
示例#6
0
	server_base::socket_info& internal_server::create_socket_info(send_function send_fn)
	{
		connections_.push_back(std::pair<send_function, socket_info>(send_fn, socket_info()));
		return connections_.back().second;
	}