Login | ViewVC Help
View File | Revision Log | Show Annotations | Download File | View Changeset | Root Listing
root/filter_foundry/trunk/telegraphics_common/tt/str.c
Revision: 355
Committed: Tue Oct 5 13:41:45 2021 UTC (7 months, 2 weeks ago) by daniel-marschall
Content type: text/x-csrc
File size: 2610 byte(s)
Log Message:
Tab-Order has been changed

File Contents

# Content
1 /*
2 This file is part of a common library
3 Copyright (C) 2002-6 Toby Thain, toby@telegraphics.com.au
4
5 This program is free software; you can redistribute it and/or modify
6 it under the terms of the GNU General Public License as published by
7 the Free Software Foundation; either version 2 of the License, or
8 (at your option) any later version.
9
10 This program is distributed in the hope that it will be useful,
11 but WITHOUT ANY WARRANTY; without even the implied warranty of
12 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
13 GNU General Public License for more details.
14
15 You should have received a copy of the GNU General Public License
16 along with this program; if not, write to the Free Software
17 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
18 */
19
20 #include <string.h>
21 #include <stdlib.h>
22
23 #include "str.h"
24 #include "sprintf_tiny.h"
25
26 // convert C (null-terminated) to Pascal (length byte) string
27 // no bounds checking
28 unsigned char *myc2pstr(char *s){
29 size_t n = strlen(s);
30 memmove(s+1,s,n);
31 *s = (unsigned char)n;
32 return (unsigned char*)s;
33 }
34
35 // convert Pascal string to C string
36 // no bounds checking
37 char *myp2cstr(unsigned char *s){
38 int n = *s;
39 memmove(s,s+1,n);
40 s[n] = 0;
41 return (char*)s;
42 }
43
44 // copy Pascal string to C string
45 // no bounds checking
46 char *myp2cstrcpy(char *dst,const unsigned char *src){
47 memcpy(dst,src+1,src[0]);
48 dst[src[0]] = 0;
49 return dst;
50 }
51 unsigned char *myc2pstrcpy(unsigned char *dst,const char *src){
52 size_t n = strlen(src);
53 *dst = n <= 255 ? (unsigned char)n : 255;
54 memcpy(dst+1,src,*dst);
55 return dst;
56 }
57
58 // copy null-terminated string;
59 // returns pointer after last character copied
60 char *cat(char *d,char *s){
61 while( (*d = *s++) )
62 d++;
63 return d;
64 }
65
66 /*
67 void *my_memset(void *dst, int val, size_t len){
68 char *p;
69 for(p=(char*)dst;len--;)
70 *p++ = val;
71 return dst;
72 }
73 */
74
75 // my_strdup() is like _strdup(), with the difference that it accepts "char*" instead of "const char*" as argument
76 char *my_strdup(char *s){
77 size_t n = strlen(s);
78 char *p = (char*)malloc(n+1);
79 if(p)
80 memcpy(p,s,n+1);
81 return p;
82 }
83
84 unsigned char *PLcstrcpy(unsigned char *s1,const char *s2){
85 size_t n = strlen(s2);
86 if(n>255)
87 n = 255;
88 memcpy(s1+1,s2,n);
89 *s1 = (unsigned char)n;
90 return s1;
91 }
92
93 unsigned char *PLcstrcat(unsigned char * str1,const char * s2){
94 size_t n = strlen(s2);
95 if(str1[0]+n > 255)
96 n = 255 - str1[0];
97 memcpy(str1+1+str1[0],s2,n);
98 str1[0] += (unsigned char)n;
99 return str1;
100 }