Files
amiga-libnix2/libnix/sources/nix/misc/bzero.c
T
2004-12-20 01:51:43 +00:00

45 lines
661 B
C
Executable File

#include <string.h>
typedef union {
void *v;
char *c;
short *s;
long *l;
} val;
void bzero(void *b,size_t n)
{
val v;
size_t m;
v.v = b;
if(!n)
return;
if(n > 15) {
if((long)v.l & 1) {
*v.c++ = 0;
n--;
}
if((long)v.l & 2) {
*v.s++ = 0;
n-= 2;
}
for(m = n / (8 * sizeof(long)); m; --m) {
*v.l++ = 0;
*v.l++ = 0;
*v.l++ = 0;
*v.l++ = 0;
*v.l++ = 0;
*v.l++ = 0;
*v.l++ = 0;
*v.l++ = 0;
}
n &= 8 * sizeof(long) - 1;
for(m = n / sizeof(long); m; --m)
*v.l++ = 0;
if((n &= sizeof(long) - 1)==0)
return;
}
do;
while(*v.c++ = 0, --n);
}