1053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project/* 259aefa242169b7a51c2381daee58ff22fd1834ceJunichi Monma * Copyright (C) 2008-2012 OMRON SOFTWARE Co., Ltd. 3053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 4053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Licensed under the Apache License, Version 2.0 (the "License"); 5053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * you may not use this file except in compliance with the License. 6053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * You may obtain a copy of the License at 7053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 8053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 9053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * 10053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 11053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 12053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * See the License for the specific language governing permissions and 14053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project * limitations under the License. 15053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project */ 16053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 17053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#include "nj_lib.h" 18053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project#include "nj_ext.h" 19053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 20053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 21053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_CHAR *nj_strcpy(NJ_CHAR *dst, NJ_CHAR *src) { 22053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 23053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_CHAR *ret = dst; 24053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 25053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 26053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project while (*src != NJ_CHAR_NUL) { 27053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project *dst++ = *src++; 28053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 29053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project *dst = *src; 30053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return ret; 31053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} 32053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 33053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_CHAR *nj_strncpy(NJ_CHAR *dst, NJ_CHAR *src, NJ_UINT16 n) { 34053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 35053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_CHAR *d = dst; 36053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 37053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 38053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project while (n != 0) { 39053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (*src == NJ_CHAR_NUL) { 40053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project while (n != 0) { 41053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project *d++ = NJ_CHAR_NUL; 42053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project n--; 43053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 44053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 45053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } else { 46053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project *d++ = *src++; 47053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 48053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project n--; 49053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 50053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return dst; 51053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} 52053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 53053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_UINT16 nj_strlen(NJ_CHAR *c) { 54053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 55053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 count = 0; 56053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 57053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 58053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project while (*c++ != NJ_CHAR_NUL) { 59053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project count++; 60053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 61053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return count; 62053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} 63053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 64053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_INT16 nj_strcmp(NJ_CHAR *s1, NJ_CHAR *s2) { 65053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 66053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project while (*s1 == *s2) { 67053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (*s1 == NJ_CHAR_NUL) { 68053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return (0); 69053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 70053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project s1++; 71053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project s2++; 72053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 73053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return NJ_CHAR_DIFF(s1, s2); 74053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} 75053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 76053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_INT16 nj_strncmp(NJ_CHAR *s1, NJ_CHAR *s2, NJ_UINT16 n) { 77053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 78053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project while (n != 0) { 79053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (*s1 != *s2++) { 80053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return NJ_CHAR_DIFF(s1, (s2 - 1)); 81053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 82053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (*s1++ == NJ_CHAR_NUL) { 83053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 84053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 85053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project n--; 86053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 87053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return (0); 88053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} 89053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 90053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_UINT16 nj_charlen(NJ_CHAR *c) { 91053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 92053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 count = 0; 93053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 94053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 95053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project while (*c != NJ_CHAR_NUL) { 96053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project count++; 97053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project c += NJ_CHAR_LEN(c); 98053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 99053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return count; 100053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} 101053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 102053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_INT16 nj_charncmp(NJ_CHAR *s1, NJ_CHAR *s2, NJ_UINT16 n) { 103053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 i; 104053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 105053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 106053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project while (n != 0) { 107053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project for (i = NJ_CHAR_LEN(s1); i != 0; i--) { 108053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (*s1 != *s2) { 109053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return NJ_CHAR_DIFF(s1, s2); 110053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 111053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (*s1 == NJ_CHAR_NUL) { 112053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project break; 113053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 114053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project s1++; 115053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project s2++; 116053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 117053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project n--; 118053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 119053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return (0); 120053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} 121053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 122053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_CHAR *nj_charncpy(NJ_CHAR *dst, NJ_CHAR *src, NJ_UINT16 n) { 123053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 124053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_CHAR *d = dst; 125053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT16 i; 126053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 127053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 128053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project while (n != 0) { 129053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project for (i = NJ_CHAR_LEN(src); i != 0; i--) { 130053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project *d = *src; 131053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project if (*src == NJ_CHAR_NUL) { 132053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return dst; 133053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 134053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project d++; 135053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project src++; 136053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 137053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project n--; 138053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 139053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project *d = NJ_CHAR_NUL; 140053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return dst; 141053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} 142053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 143053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source ProjectNJ_UINT8 *nj_memcpy(NJ_UINT8 *dst, NJ_UINT8 *src, NJ_UINT16 n) { 144053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 145053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project NJ_UINT8 *d = dst; 146053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 147053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project 148053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project while (n != 0) { 149053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project *d++ = *src++; 150053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project n--; 151053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project } 152053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project return dst; 153053d50935e0e311286543bd7c535ae2c863c0deThe Android Open Source Project} 154