From: Enrico Scholz Date: Wed, 25 Feb 2004 11:44:45 +0000 (+0000) Subject: initial checkin X-Git-Tag: VERSION_0_10~572 X-Git-Url: http://git.linux-vserver.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=af3377201bf25bbeb4e232ffe2a9d35417b49442;p=util-vserver.git initial checkin git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@994 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- diff --git a/util-vserver/lib/testsuite/fmt.c b/util-vserver/lib/testsuite/fmt.c new file mode 100644 index 0000000..0fe4274 --- /dev/null +++ b/util-vserver/lib/testsuite/fmt.c @@ -0,0 +1,48 @@ +// $Id$ --*- c -*-- + +// Copyright (C) 2004 Enrico Scholz +// +// 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; version 2 of the License. +// +// 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +#ifdef HAVE_CONFIG_H +# include +#endif + +#include "lib/fmt.h" +#include + +#define TEST(VAL, EXP) { \ + char buf[512]; \ + size_t l; \ + memset(buf, '\23', sizeof buf); \ + l = FUNC(buf+1, VAL); \ + assert(l==sizeof(EXP)-1); \ + assert(memcmp(buf+1, EXP, l)==0); \ + assert(buf[l+1]=='\23'); \ + } + +int main() +{ + #define FUNC utilvserver_fmt_xuint64 + TEST(0, "0"); + TEST(1, "1"); + TEST(15, "f"); + TEST(16, "10"); + TEST(100, "64"); + TEST(1000, "3e8"); + TEST(65535, "ffff"); + TEST(65536, "10000"); + TEST(68719476736ul, "1000000000"); +} diff --git a/util-vserver/lib_internal/util-perror.h b/util-vserver/lib_internal/util-perror.h new file mode 100644 index 0000000..a3d9022 --- /dev/null +++ b/util-vserver/lib_internal/util-perror.h @@ -0,0 +1,44 @@ +// $Id$ --*- c -*-- + +// Copyright (C) 2004 Enrico Scholz +// +// 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; version 2 of the License. +// +// 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., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. + + +#ifndef H_UTIL_VSERVER_LIB_INTERNAL_UTIL_PERROR_H +#define H_UTIL_VSERVER_LIB_INTERNAL_UTIL_PERROR_H + +#define PERROR_U(MSG, ARG0) { \ + size_t pu_l1 = strlen(MSG); \ + size_t pu_l2 = strlen(ARG0); \ + char pu_buf[pu_l1 + pu_l2 + sizeof("()")]; \ + memcpy(pu_buf, MSG, pu_l1); \ + pu_buf[pu_l1] = '('; \ + memcpy(pu_buf+1+pu_l1, ARG0, pu_l2); \ + pu_buf[pu_l1+1+pu_l2] = ')'; \ + pu_buf[pu_l1+2+pu_l2] = '\0'; \ + perror(pu_buf); \ + } + +#define PERROR_Q(MSG, ARG0) { \ + size_t pq_l = strlen(ARG0); \ + char pq_buf[pq_l + 3]; \ + pq_buf[0] = '"'; \ + memcpy(pq_buf+1, ARG0, pq_l); \ + pq_buf[pq_l+1] = '"'; \ + pq_buf[pq_l+2] = '\0'; \ + PERROR_U(MSG, pq_buf); \ + } + +#endif // H_UTIL_VSERVER_LIB_INTERNAL_UTIL_PERROR_H