Home | History | Annotate | Download | only in src
      1 /*************************************************************************/
      2 /* module:          Library for String Functions                         */
      3 /*                                                                       */
      4 /* file:            libstr.c                                             */
      5 /* target system:   ALL                                                  */
      6 /* target OS:       ALL                                                  */
      7 /*                                                                       */
      8 /* Description:                                                          */
      9 /* implementation of common string-handling functions                    */
     10 /*************************************************************************/
     11 
     12 /*
     13  * Copyright Notice
     14  * Copyright (c) Ericsson, IBM, Lotus, Matsushita Communication
     15  * Industrial Co., Ltd., Motorola, Nokia, Openwave Systems, Inc.,
     16  * Palm, Inc., Psion, Starfish Software, Symbian, Ltd. (2001).
     17  * All Rights Reserved.
     18  * Implementation of all or part of any Specification may require
     19  * licenses under third party intellectual property rights,
     20  * including without limitation, patent rights (such a third party
     21  * may or may not be a Supporter). The Sponsors of the Specification
     22  * are not responsible and shall not be held responsible in any
     23  * manner for identifying or failing to identify any or all such
     24  * third party intellectual property rights.
     25  *
     26  * THIS DOCUMENT AND THE INFORMATION CONTAINED HEREIN ARE PROVIDED
     27  * ON AN "AS IS" BASIS WITHOUT WARRANTY OF ANY KIND AND ERICSSON, IBM,
     28  * LOTUS, MATSUSHITA COMMUNICATION INDUSTRIAL CO. LTD, MOTOROLA,
     29  * NOKIA, PALM INC., PSION, STARFISH SOFTWARE AND ALL OTHER SYNCML
     30  * SPONSORS DISCLAIM ALL WARRANTIES, EXPRESS OR IMPLIED, INCLUDING
     31  * BUT NOT LIMITED TO ANY WARRANTY THAT THE USE OF THE INFORMATION
     32  * HEREIN WILL NOT INFRINGE ANY RIGHTS OR ANY IMPLIED WARRANTIES OF
     33  * MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. IN NO EVENT
     34  * SHALL ERICSSON, IBM, LOTUS, MATSUSHITA COMMUNICATION INDUSTRIAL CO.,
     35  * LTD, MOTOROLA, NOKIA, PALM INC., PSION, STARFISH SOFTWARE OR ANY
     36  * OTHER SYNCML SPONSOR BE LIABLE TO ANY PARTY FOR ANY LOSS OF
     37  * PROFITS, LOSS OF BUSINESS, LOSS OF USE OF DATA, INTERRUPTION OF
     38  * BUSINESS, OR FOR DIRECT, INDIRECT, SPECIAL OR EXEMPLARY, INCIDENTAL,
     39  * PUNITIVE OR CONSEQUENTIAL DAMAGES OF ANY KIND IN CONNECTION WITH
     40  * THIS DOCUMENT OR THE INFORMATION CONTAINED HEREIN, EVEN IF ADVISED
     41  * OF THE POSSIBILITY OF SUCH LOSS OR DAMAGE.
     42  *
     43  * The above notice and this paragraph must be included on all copies
     44  * of this document that are made.
     45  *
     46  */
     47 
     48 
     49 /*************************************************************************
     50  *  Definitions
     51  *************************************************************************/
     52 
     53 
     54 #include <smldef.h>
     55 #include "libstr.h"
     56 #include "libmem.h"
     57 #ifdef __ANSI_C__
     58 #include <string.h>
     59 #endif
     60 #ifdef __PALM_OS__
     61 #include <StringMgr.h>
     62 #endif
     63 
     64 
     65 
     66 /*************************************************************************
     67  *  External Functions  for all TOOLKIT Versions
     68  *************************************************************************/
     69 
     70 
     71 /**
     72  * FUNCTION: smlLibStrdup
     73  *
     74  * Duplicates the String "constStringP".
     75  * Returns a pointer to the new copy of "constStringP".
     76  *
     77  * IN:              String_t   constStringP     string, which is duplicated
     78  * RETURN:          String_t   pointer to the new copy,
     79  *                             null, if no copy could be allocated
     80  */
     81 SML_API String_t smlLibStrdup (const char *constStringP)
     82 {
     83 	String_t _new_str;
     84 
     85 	// allocate memory for new copy
     86 	_new_str = (String_t)smlLibMalloc(smlLibStrlen(constStringP) + 1);
     87 
     88 	// Copy the string into the new memory
     89 	if (_new_str != NULL)
     90 		smlLibStrcpy(_new_str, constStringP);
     91 
     92 	return _new_str;
     93 }
     94 
     95 
     96 #ifndef __PALM_OS__
     97 /* If not Palm OS we use the Standard ANSI C functions */
     98 SML_API String_t smlLibStrcpy(const char *pTarget, const char *pSource) {
     99 	return strcpy((char *)pTarget, (char *)pSource);
    100 }
    101 SML_API String_t smlLibStrncpy(const char *pTarget, const char *pSource, int count){
    102 	return strncpy((char *)pTarget, (char *)pSource, count);
    103 }
    104 SML_API String_t smlLibStrcat(const char *pTarget, const char *pSource){
    105 	return strcat((char *)pTarget, (char *)pSource);
    106 }
    107 SML_API int smlLibStrcmp(const char *pTarget, const char *pSource){
    108 	return strcmp((char *)pTarget, (char *)pSource);
    109 }
    110 SML_API int smlLibStrncmp(const char *pTarget, const char *pSource, int count){
    111 	return strncmp((char *)pTarget, (char *)pSource, count);
    112 }
    113 SML_API String_t smlLibStrchr(const char *pString, char character){
    114 	return strchr((char *)pString, character);
    115 }
    116 SML_API int smlLibStrlen(const char *pString){
    117 	return strlen((char *)pString);
    118 }
    119 
    120 
    121 #endif
    122 
    123 
    124 
    125 /*************************************************************************
    126  *  Additional External Functions  for Full Size TOOLKIT ONLY
    127  *************************************************************************/
    128 
    129 #ifndef __SML_LITE__  /* these API calls are NOT included in the Toolkit lite version */
    130 #ifndef __PALM_OS__  /* we use #define to reduce heap usage */
    131 SML_API String_t smlLibStrncat(const char *pTarget, const char *pSource, int count){
    132 	return strncat((char *)pTarget, (char *)pSource, count);
    133 }
    134 SML_API String_t smlLibStrstr(const char *pString, const char *pSubString){
    135 	return strstr((char *)pString, (char *)pSubString);
    136 }
    137 #endif
    138 #endif
    139