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