ReactOS
0.4.16-dev-588-gf07ea94
zerobytes.c
Go to the documentation of this file.
1
/* @(#)zerobytes.c 1.2 11/07/30 Copyright Copyright 1987, 1995-2011 J. Schilling */
2
/*
3
* fill memory with null bytes
4
*
5
* Copyright (c) 1987, 1995-2011 J. Schilling
6
*/
7
/*
8
* The contents of this file are subject to the terms of the
9
* Common Development and Distribution License, Version 1.0 only
10
* (the "License"). You may not use this file except in compliance
11
* with the License.
12
*
13
* See the file CDDL.Schily.txt in this distribution for details.
14
*
15
* When distributing Covered Code, include this CDDL HEADER in each
16
* file and include the License file CDDL.Schily.txt from this distribution.
17
*/
18
19
#include <
schily/standard.h
>
20
#include <
schily/align.h
>
21
#include <
schily/types.h
>
22
#include <
schily/schily.h
>
23
24
#define DO8(a) a; a; a; a; a; a; a; a;
25
26
/*
27
* zero(to, cnt)
28
*/
29
EXPORT
char
*
30
zerobytes
(tov,
cnt
)
31
void
*tov;
32
ssize_t
cnt
;
33
{
34
register
char
*to = (
char
*)tov;
35
register
ssize_t
n
;
36
register
long
lval = 0
L
;
37
38
/*
39
* If we change cnt to be unsigned, check for == instead of <=
40
*/
41
if
((
n
=
cnt
) <= 0)
42
return
(to);
43
44
if
(
n
< 8 *
sizeof
(
long
)) {
/* Simple may be faster... */
45
do
{
/* n is always > 0 */
46
*to++ =
'\0'
;
47
}
while
(--
n
> 0);
48
return
(to);
49
}
50
51
/*
52
* Assign byte-wise until properly aligned for a long pointer.
53
*/
54
while
(--
n
>= 0 && !
laligned
(to)) {
55
*to++ =
'\0'
;
56
}
57
n
++;
58
59
if
(
n
>= (
ssize_t
)(8 *
sizeof
(
long
))) {
60
register
ssize_t
rem =
n
% (8 *
sizeof
(
long
));
61
62
n
/= (8 *
sizeof
(
long
));
63
{
64
register
long
*tol = (
long
*)to;
65
66
do
{
67
DO8
(*tol++ = lval);
68
}
while
(--
n
> 0);
69
70
to = (
char
*)tol;
71
}
72
n
= rem;
73
74
if
(
n
>= 8) {
75
n
-= 8;
76
do
{
77
DO8
(*to++ =
'\0'
);
78
}
while
((
n
-= 8) >= 0);
79
n
+= 8;
80
}
81
if
(
n
> 0)
do
{
82
*to++ =
'\0'
;
83
}
while
(--
n
> 0);
84
return
(to);
85
}
86
if
(
n
> 0)
do
{
87
*to++ =
'\0'
;
88
}
while
(--
n
> 0);
89
return
(to);
90
}
n
GLdouble n
Definition:
glext.h:7729
L
#define L(x)
Definition:
ntvdm.h:50
long
#define long
Definition:
qsort.c:33
laligned
#define laligned(a)
Definition:
align.h:19
ssize_t
int ssize_t
Definition:
rosdhcp.h:48
schily.h
align.h
types.h
standard.h
EXPORT
Definition:
spec2def.c:21
cnt
_In_ size_t cnt
Definition:
wcstombs.cpp:43
zerobytes
EXPORT char * zerobytes(void *tov, ssize_t cnt)
Definition:
zerobytes.c:30
DO8
#define DO8(a)
Definition:
zerobytes.c:24
sdk
tools
mkisofs
schilytools
libschily
zerobytes.c
Generated on Thu Jan 23 2025 06:14:54 for ReactOS by
1.9.6