1 /*
2 * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd.
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 * http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17 #include "nj_lib.h"
18 #include "nj_ext.h"
19
20
nj_strcpy(NJ_CHAR * dst,NJ_CHAR * src)21 NJ_CHAR *nj_strcpy(NJ_CHAR *dst, NJ_CHAR *src) {
22
23 NJ_CHAR *ret = dst;
24
25
26 while (*src != NJ_CHAR_NUL) {
27 *dst++ = *src++;
28 }
29 *dst = *src;
30 return ret;
31 }
32
nj_strncpy(NJ_CHAR * dst,NJ_CHAR * src,NJ_UINT16 n)33 NJ_CHAR *nj_strncpy(NJ_CHAR *dst, NJ_CHAR *src, NJ_UINT16 n) {
34
35 NJ_CHAR *d = dst;
36
37
38 while (n != 0) {
39 if (*src == NJ_CHAR_NUL) {
40 while (n != 0) {
41 *d++ = NJ_CHAR_NUL;
42 n--;
43 }
44 break;
45 } else {
46 *d++ = *src++;
47 }
48 n--;
49 }
50 return dst;
51 }
52
nj_strlen(NJ_CHAR * c)53 NJ_UINT16 nj_strlen(NJ_CHAR *c) {
54
55 NJ_UINT16 count = 0;
56
57
58 while (*c++ != NJ_CHAR_NUL) {
59 count++;
60 }
61 return count;
62 }
63
nj_strcmp(NJ_CHAR * s1,NJ_CHAR * s2)64 NJ_INT16 nj_strcmp(NJ_CHAR *s1, NJ_CHAR *s2) {
65
66 while (*s1 == *s2) {
67 if (*s1 == NJ_CHAR_NUL) {
68 return (0);
69 }
70 s1++;
71 s2++;
72 }
73 return NJ_CHAR_DIFF(s1, s2);
74 }
75
nj_strncmp(NJ_CHAR * s1,NJ_CHAR * s2,NJ_UINT16 n)76 NJ_INT16 nj_strncmp(NJ_CHAR *s1, NJ_CHAR *s2, NJ_UINT16 n) {
77
78 while (n != 0) {
79 if (*s1 != *s2++) {
80 return NJ_CHAR_DIFF(s1, (s2 - 1));
81 }
82 if (*s1++ == NJ_CHAR_NUL) {
83 break;
84 }
85 n--;
86 }
87 return (0);
88 }
89
nj_charlen(NJ_CHAR * c)90 NJ_UINT16 nj_charlen(NJ_CHAR *c) {
91
92 NJ_UINT16 count = 0;
93
94
95 while (*c != NJ_CHAR_NUL) {
96 count++;
97 c += NJ_CHAR_LEN(c);
98 }
99 return count;
100 }
101
nj_charncmp(NJ_CHAR * s1,NJ_CHAR * s2,NJ_UINT16 n)102 NJ_INT16 nj_charncmp(NJ_CHAR *s1, NJ_CHAR *s2, NJ_UINT16 n) {
103 NJ_UINT16 i;
104
105
106 while (n != 0) {
107 for (i = NJ_CHAR_LEN(s1); i != 0; i--) {
108 if (*s1 != *s2) {
109 return NJ_CHAR_DIFF(s1, s2);
110 }
111 if (*s1 == NJ_CHAR_NUL) {
112 break;
113 }
114 s1++;
115 s2++;
116 }
117 n--;
118 }
119 return (0);
120 }
121
nj_charncpy(NJ_CHAR * dst,NJ_CHAR * src,NJ_UINT16 n)122 NJ_CHAR *nj_charncpy(NJ_CHAR *dst, NJ_CHAR *src, NJ_UINT16 n) {
123
124 NJ_CHAR *d = dst;
125 NJ_UINT16 i;
126
127
128 while (n != 0) {
129 for (i = NJ_CHAR_LEN(src); i != 0; i--) {
130 *d = *src;
131 if (*src == NJ_CHAR_NUL) {
132 return dst;
133 }
134 d++;
135 src++;
136 }
137 n--;
138 }
139 *d = NJ_CHAR_NUL;
140 return dst;
141 }
142
nj_memcpy(NJ_UINT8 * dst,NJ_UINT8 * src,NJ_UINT16 n)143 NJ_UINT8 *nj_memcpy(NJ_UINT8 *dst, NJ_UINT8 *src, NJ_UINT16 n) {
144
145 NJ_UINT8 *d = dst;
146
147
148 while (n != 0) {
149 *d++ = *src++;
150 n--;
151 }
152 return dst;
153 }
154