Subversion Repositories filter_foundry

Rev

Rev 440 | Rev 460 | Go to most recent revision | Details | Compare with Previous | Last modification | View Log | RSS feed

Rev Author Line No. Line
259 daniel-mar 1
/*
268 daniel-mar 2
    This file is part of a common library
259 daniel-mar 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
 
444 daniel-mar 23
#ifdef WIN_ENV
24
#include <windows.h>
25
#endif
26
 
259 daniel-mar 27
#include "str.h"
28
#include "sprintf_tiny.h"
29
 
444 daniel-mar 30
#ifdef UNICODE
31
size_t xstrlen(wchar_t* s) {
32
        return lstrlen(s);
33
}
34
wchar_t* xstrcpy(wchar_t* dst, wchar_t* src) {
35
        return lstrcpy(dst, src);
36
}
37
wchar_t* xstrcat(wchar_t* dst, const wchar_t* src) {
38
        return lstrcat(dst, src);
39
}
40
wchar_t* xstrrchr(wchar_t* const _Str, const int _Ch) {
41
        return wcsrchr(_Str, _Ch);
42
}
43
int xstrcasecmp(const wchar_t* a, const wchar_t* b) {
44
        return _wcsicmp(a, b);
45
}
46
#else
47
size_t xstrlen(char* s) {
48
        return strlen(s);
49
}
50
char* xstrcpy(char* dst, char* src) {
51
        return strcpy(dst, src);
52
}
53
char* xstrcat(char* dst, const char* src) {
54
        return strcat(dst, src);
55
}
56
char* xstrrchr(char* const _Str, const int _Ch) {
57
        return strrchr(_Str, _Ch);
58
}
59
int xstrcasecmp(const char* a, const char* b) {
60
        //return strcasecmp(a, b);
61
        return _stricmp(a, b);
62
}
63
#endif
64
 
259 daniel-mar 65
// convert C (null-terminated) to Pascal (length byte) string
66
// no bounds checking
67
unsigned char *myc2pstr(char *s){
68
        size_t n = strlen(s);
69
        memmove(s+1,s,n);
70
        *s = (unsigned char)n;
71
        return (unsigned char*)s;
72
}
73
 
74
// convert Pascal string to C string
75
// no bounds checking
76
char *myp2cstr(unsigned char *s){
77
        int n = *s;
78
        memmove(s,s+1,n);
79
        s[n] = 0;
80
        return (char*)s;
81
}
82
 
83
// copy Pascal string to C string
84
// no bounds checking
85
char *myp2cstrcpy(char *dst,const unsigned char *src){
86
        memcpy(dst,src+1,src[0]);
87
        dst[src[0]] = 0;
88
        return dst;
89
}
366 daniel-mar 90
 
91
// copy C string to Pascal string
259 daniel-mar 92
unsigned char *myc2pstrcpy(unsigned char *dst,const char *src){
93
        size_t n = strlen(src);
94
        *dst = n <= 255 ? (unsigned char)n : 255;
95
        memcpy(dst+1,src,*dst);
96
        return dst;
97
}
98
 
99
// copy null-terminated string;
100
// returns pointer after last character copied
101
char *cat(char *d,char *s){
102
        while( (*d = *s++) )
103
                d++;
104
        return d;
105
}
106
 
355 daniel-mar 107
/*
259 daniel-mar 108
void *my_memset(void *dst, int val, size_t len){
109
        char *p;
110
        for(p=(char*)dst;len--;)
111
                *p++ = val;
112
        return dst;
113
}
355 daniel-mar 114
*/
115
 
116
// my_strdup() is like _strdup(), with the difference that it accepts "char*" instead of "const char*" as argument
259 daniel-mar 117
char *my_strdup(char *s){
118
        size_t n = strlen(s);
119
        char *p = (char*)malloc(n+1);
120
        if(p)
121
                memcpy(p,s,n+1);
122
        return p;
123
}
124
 
440 daniel-mar 125
// DM 03.12.2021 removed, because it is not used in Filter Foundry
126
/*
259 daniel-mar 127
unsigned char *PLcstrcpy(unsigned char *s1,const char *s2){
128
        size_t n = strlen(s2);
129
        if(n>255)
130
                n = 255;
131
        memcpy(s1+1,s2,n);
132
        *s1 = (unsigned char)n;
133
        return s1;
134
}
440 daniel-mar 135
*/
259 daniel-mar 136
 
440 daniel-mar 137
// DM 03.12.2021 removed, because it is not used in Filter Foundry
138
/*
259 daniel-mar 139
unsigned char *PLcstrcat(unsigned char * str1,const char * s2){
140
        size_t n = strlen(s2);
141
        if(str1[0]+n > 255)
142
                n = 255 - str1[0];
143
        memcpy(str1+1+str1[0],s2,n);
144
        str1[0] += (unsigned char)n;
145
        return str1;
146
}
440 daniel-mar 147
*/