blob: da42000a3a27b0f05ffa1bf5621e4e6e44a0673a (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
|
//+----------------------------------------------------------------------------
//
// File: string.c
//
// Module:
//
// Synopsis:
//
// Copyright (C) 2003 Scott Gasch
//
// Created: sgasch 5 Jul 2003
//
//+----------------------------------------------------------------------------
#include "kernel.h"
CHAR *
strncpy(CHAR *pDest, CHAR *pSrc, SIZE_T u)
{
char *p = pDest;
ULONG v = 0;
while ((v < u) && (*pSrc))
{
*pDest = *pSrc;
pDest++; pSrc++; v++;
}
//
// If we ran out of space, null terminate the dest buffer
//
if ((*pSrc) && (u > 0))
{
*(pDest - 1) = 0;
}
return(p);
}
SIZE_T
strlen(CHAR *p)
{
ULONG i = 0;
while(*p)
{
i++;
p++;
}
return(i);
}
CHAR *
RtlIntToAscii(INT i,
CHAR *buf,
ULONG uBufLen,
ULONG uBase)
{
CHAR *p = (buf + uBufLen);
ULONG uSpaceLeft = uBufLen;
ULONG uMagnitude;
BOOL fNeg = FALSE;
//
// null terminate the workspace buffer
//
if (uSpaceLeft == 0)
{
return(NULL);
}
*p = '\0';
p--;
uSpaceLeft--;
//
// Get the int's sign
//
if (i < 0)
{
fNeg = TRUE;
uMagnitude = -i;
}
else
{
uMagnitude = i;
}
//
// Based on base, do the conversion. Build the string backwards from
// less significant digits. Stop if we finish or if we run out of
// uSpaceLeft.
//
switch(uBase)
{
case 10:
do
{
*p = (uMagnitude % 10) + '0';
p--;
uSpaceLeft--;
uMagnitude /= 10;
}
while((uSpaceLeft > 0) && (uMagnitude != 0));
break;
case 16:
do
{
*p = "0123456789ABCDEF"[uMagnitude & 15];
p--;
uSpaceLeft--;
uMagnitude >>= 4;
}
while((uSpaceLeft > 0) && (uMagnitude != 0));
break;
case 8:
do
{
*p = (uMagnitude & 7) + '0';
p--;
uSpaceLeft--;
uMagnitude >>= 3;
}
while((uSpaceLeft > 0) && (uMagnitude != 0));
break;
}
if (TRUE == fNeg)
{
if (uSpaceLeft > 0)
{
*p = '-';
}
}
else
{
p++;
}
return(p);
}
|