TPCCLIB
Toggle main menu visibility
Loading...
Searching...
No Matches
libtpcextensions
filename.c
Go to the documentation of this file.
1
4
/*****************************************************************************/
5
#include "tpcclibConfig.h"
6
/*****************************************************************************/
7
#include <stdio.h>
8
#include <stdlib.h>
9
#include <time.h>
10
#include <string.h>
11
#include "
tpcextensions.h
"
12
/*****************************************************************************/
13
14
/*****************************************************************************/
20
void
filenameRmPath
(
22
char
*s
23
) {
24
if
(s==NULL ||
strnlen
(s, 1)<1)
return
;
25
char
*cptr;
26
cptr=strrchr(s,
'/'
);
if
(cptr==NULL) cptr=strrchr(s,
'\\'
);
27
if
(cptr==NULL)
return
;
28
cptr++;
29
int
i, n=strlen(cptr);
30
for
(i=0; i<n; i++, cptr++) s[i]=*cptr;
31
s[i]=(char)0;
32
return
;
33
}
34
/*****************************************************************************/
35
36
/*****************************************************************************/
44
void
filenameRmFile
(
46
char
*s
47
) {
48
if
(s==NULL)
return
;
49
unsigned
int
len=
strnlen
(s, FILENAME_MAX);
50
if
(len==0)
return
;
51
//if(len==1) {s[0]='.'; return;}
52
char
*cptr;
53
cptr=strrchr(s,
'/'
);
if
(cptr==NULL) cptr=strrchr(s,
'\\'
);
54
if
(cptr!=NULL) {
55
*cptr=(char)0;
56
if
(strcmp(s,
"/"
)==0 || strcmp(s,
"\\"
)==0) s[0]=(char)0;
57
return
;
58
}
59
if
(strcmp(s,
".."
)==0)
return
;
60
s[0]=
'.'
; s[1]=(char)0;
61
return
;
62
}
63
/*****************************************************************************/
64
65
/*****************************************************************************/
71
int
filenameRmExtension
(
73
char
*s
74
) {
75
if
(s==NULL ||
strnlen
(s, 1)<1)
return
(0);
76
char
*cptr;
77
cptr=strrchr(s,
'.'
);
if
(cptr==NULL)
return
(0);
78
if
(cptr[1]==
'/'
|| cptr[1]==
'\\'
)
return
(0);
79
*cptr=(char)0;
80
return
(1);
81
}
82
/*****************************************************************************/
83
84
/*****************************************************************************/
89
void
filenameRmExtensions
(
91
char
*s
92
) {
93
if
(s==NULL ||
strnlen
(s, 1)<1)
return
;
94
while
(
filenameRmExtension
(s)) {}
95
return
;
96
}
97
/*****************************************************************************/
98
99
/*****************************************************************************/
104
int
fnmatch
(
106
const
char
*fname,
108
const
char
*key
109
) {
110
if
(fname==NULL || key==NULL)
return
(0);
111
char
*key_ptr=NULL, *fname_ptr=NULL;
112
113
while
((*key)&&(*fname)) {
114
if
((*key==
'?'
)||(*key==*fname)) {
115
key++; fname++;
116
}
else
if
(*key==
'*'
) {
117
if
(*(key+1)==*fname) {key_ptr=(
char
*)key++; fname_ptr=(
char
*)fname+1;
118
}
else
{
119
fname++;
120
if
(*(key+1)==
'?'
) {key_ptr=(
char
*)key++; fname_ptr=(
char
*)fname;}
121
}
122
}
else
if
((key_ptr!=NULL) && (*fname_ptr)) {
123
return
(
fnmatch
(key_ptr, fname_ptr));
124
}
else
{
125
return
(0);
126
}
127
}
128
if
((*fname)&&(key_ptr!=NULL)) {
return
(
fnmatch
(key_ptr, fname_ptr));}
129
else
{
if
(*key==
'*'
) key++;
return
(*key==*fname);}
130
}
131
/*****************************************************************************/
132
133
/*****************************************************************************/
139
int
fncasematch
(
141
const
char
*fname,
143
const
char
*key
144
) {
145
if
(fname==NULL || key==NULL)
return
(0);
146
char
*key_ptr=NULL, *fname_ptr=NULL;
147
148
while
((*key)&&(*fname)) {
149
if
((*key==
'?'
)||(toupper((
int
)*key)==toupper((
int
)*fname))) {
150
key++; fname++;
151
}
else
if
(*key==
'*'
) {
152
if
(toupper((
int
)*(key+1))==toupper((
int
)*fname)) {
153
key_ptr=(
char
*)key++; fname_ptr=(
char
*)fname+1;
154
}
else
{
155
fname++;
156
if
(*(key+1)==
'?'
) {key_ptr=(
char
*)key++; fname_ptr=(
char
*)fname;}
157
}
158
}
else
if
((key_ptr!=NULL) && (*fname_ptr)) {
159
return
(
fnmatch
(key_ptr, fname_ptr));
160
}
else
{
161
return
(0);
162
}
163
}
164
if
((*fname)&&(key_ptr!=NULL)) {
return
(
fnmatch
(key_ptr, fname_ptr));}
165
else
{
if
(*key==
'*'
) key++;
return
(toupper((
int
)*key)==toupper((
int
)*fname));}
166
}
167
/*****************************************************************************/
168
169
/*****************************************************************************/
178
char
*
filenameGetExtension
(
180
const
char
*s
181
) {
182
if
(s==NULL ||
strnlen
(s, 1)<1)
return
((
char
*)NULL);
183
/* Identify path */
184
char
*pptr=strrchr(s,
'/'
);
if
(pptr==NULL) pptr=strrchr(s,
'\\'
);
185
if
(pptr==NULL) pptr=(
char
*)s;
else
pptr++;
186
/* Search for the last '.' after the path */
187
char
*cptr=strrchr(pptr,
'.'
);
if
(cptr==NULL)
return
(cptr);
188
/* If file name starts with '.', that is not counted as extension */
189
if
(strlen(pptr)==strlen(cptr))
return
((
char
*)NULL);
190
return
(cptr);
191
}
192
/*****************************************************************************/
193
194
/*****************************************************************************/
203
char
*
filenameGetExtensions
(
205
const
char
*s
206
) {
207
if
(s==NULL ||
strnlen
(s, 1)<1)
return
((
char
*)NULL);
208
/* Identify path */
209
char
*pptr=strrchr(s,
'/'
);
if
(pptr==NULL) pptr=strrchr(s,
'\\'
);
210
if
(pptr==NULL) pptr=(
char
*)s;
else
pptr++;
211
/* Search for the last '.' after the path, ignoring first character in case file name starts with '.' */
212
char
*cptr=strchr(pptr+1,
'.'
);
213
return
(cptr);
214
}
215
/*****************************************************************************/
216
217
/*****************************************************************************/
filenameRmFile
void filenameRmFile(char *s)
Definition
filename.c:44
filenameGetExtensions
char * filenameGetExtensions(const char *s)
Get all extensions of a file name.
Definition
filename.c:203
filenameGetExtension
char * filenameGetExtension(const char *s)
Get the last extension of a file name.
Definition
filename.c:178
filenameRmPath
void filenameRmPath(char *s)
Definition
filename.c:20
filenameRmExtensions
void filenameRmExtensions(char *s)
Definition
filename.c:89
filenameRmExtension
int filenameRmExtension(char *s)
Definition
filename.c:71
fnmatch
int fnmatch(const char *fname, const char *key)
Definition
filename.c:104
fncasematch
int fncasematch(const char *fname, const char *key)
Definition
filename.c:139
strnlen
size_t strnlen(const char *s, size_t n)
Definition
stringext.c:565
tpcextensions.h
Header file for library libtpcextensions.
Generated on
for TPCCLIB by
1.17.0