This repository has been archived on 2025-02-12. You can view files and clone it, but cannot push or open issues or pull requests.
NeoStats-stupidserv/common.c
2003-02-18 23:39:21 +00:00

124 lines
2.1 KiB
C
Executable file

/* GNU Talkfilters
Copyright (C) 1998-2003 Free Software Foundation, Inc.
This file is part of GNU Talkfilters
GNU Talkfilters 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, or (at
your option) any later version.
This software is distributed in the hope that it will be amusing, 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 software; see the file COPYING. If not, write to the
Free Software Foundation, 675 Mass Ave, Cambridge, MA 02139, USA.
*/
#include <stdlib.h>
#include <stddef.h>
#include <stdarg.h>
#include <unistd.h>
#include <stdio.h>
#include "common.h"
/*
*/
/*
*/
/*
*/
void gtf_strbuf_init(gtf_databuf_t *sbuf, char *buf, size_t bufsz)
{
sbuf->buf = buf;
sbuf->bufsz = bufsz;
sbuf->left = bufsz - 1;
sbuf->pos = sbuf->buf;
sbuf->overflow = 0;
}
/*
*/
int gtf_strbuf_vprintf(gtf_databuf_t *buf, const char *fmt, ...)
{
va_list vp;
int l;
va_start(vp, fmt);
l = vsnprintf(buf->pos, buf->left, fmt, vp);
va_end(vp);
if(l > buf->left)
{
buf->pos += buf->left;
buf->left = 0;
buf->overflow = 1;
}
else
{
buf->left -= l;
buf->pos += l;
*(buf->pos) = 0;
}
}
/*
*/
int gtf_strbuf_puts(gtf_databuf_t *buf, const char *s)
{
int l = strlen(s);
if(l > buf->left)
{
buf->overflow = 1;
l = buf->left;
}
strncpy(buf->pos, s, l);
buf->pos += l;
buf->left -= l;
*(buf->pos) = 0;
return(l);
}
/*
*/
int gtf_strbuf_putc(gtf_databuf_t *buf, char c)
{
if(buf->left < 1)
{
buf->overflow = 1;
return(0);
}
*(buf->pos) = c;
buf->pos++;
*(buf->pos) = 0;
buf->left--;
return(1);
}
/*
*/
void gtf_random_seed(void)
{
srand(time(NULL) | getpid());
}
/* end of source file */