From 40e5e7d2e058e8ba2a49dad13cc7a4e4ec4cfe3c Mon Sep 17 00:00:00 2001 From: Enrico Scholz Date: Wed, 16 Jun 2004 10:10:55 +0000 Subject: [PATCH] added Vector_zeroEnd() function git-svn-id: http://svn.linux-vserver.org/svn/util-vserver/trunk@1585 94cd875c-1c1d-0410-91d2-eb244daf1a30 --- util-vserver/ensc_vector/Makefile-files | 3 ++- util-vserver/ensc_vector/vector-zeroend.c | 40 +++++++++++++++++++++++++++++++ util-vserver/ensc_vector/vector.h | 1 + 3 files changed, 43 insertions(+), 1 deletion(-) create mode 100644 util-vserver/ensc_vector/vector-zeroend.c diff --git a/util-vserver/ensc_vector/Makefile-files b/util-vserver/ensc_vector/Makefile-files index 6e96cae..9b118b8 100644 --- a/util-vserver/ensc_vector/Makefile-files +++ b/util-vserver/ensc_vector/Makefile-files @@ -24,7 +24,8 @@ ENSC_VECTOR_SRCS = ensc_vector/vector-clear.c \ ensc_vector/vector-resize.c \ ensc_vector/vector-search.c \ ensc_vector/vector-sort.c \ - ensc_vector/vector-unique.c + ensc_vector/vector-unique.c \ + ensc_vector/vector-zeroend.c ENSC_VECTOR_HDRS = ensc_vector/vector.h \ ensc_vector/vector.hc diff --git a/util-vserver/ensc_vector/vector-zeroend.c b/util-vserver/ensc_vector/vector-zeroend.c new file mode 100644 index 0000000..6b1bcb4 --- /dev/null +++ b/util-vserver/ensc_vector/vector-zeroend.c @@ -0,0 +1,40 @@ +// $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 "vector.h" +#include + + +void +Vector_zeroEnd(struct Vector *vec) +{ + void * tmp; + + if (vec->allocated <= vec->count) { + tmp = Vector_pushback(vec); + Vector_popback(vec); + } + else + tmp = Vector_end(vec); + + memset(tmp, 0, vec->elem_size); +} diff --git a/util-vserver/ensc_vector/vector.h b/util-vserver/ensc_vector/vector.h index ff8c24d..1521f86 100644 --- a/util-vserver/ensc_vector/vector.h +++ b/util-vserver/ensc_vector/vector.h @@ -40,6 +40,7 @@ void * Vector_insert(struct Vector *, void const *key, int (*compar)(const void void Vector_popback(struct Vector *); void Vector_resize(struct Vector *vec); void Vector_clear(struct Vector *vec); +void Vector_zeroEnd(struct Vector *vec); static void const * Vector_search_const(struct Vector const *, void const *key, int (*compar)(const void *, const void *)); static void * Vector_begin(struct Vector *); static void * Vector_end(struct Vector *); -- 1.8.1.5