TPCCLIB
Toggle main menu visibility
Loading...
Searching...
No Matches
libtpcmisc
filename.c
Go to the documentation of this file.
1
5
/*****************************************************************************/
6
#include "
libtpcmisc.h
"
7
/*****************************************************************************/
8
9
/*****************************************************************************/
13
void
filenameRmPath
(
15
char
*s
16
) {
17
if
(s==NULL || strlen(s)<1)
return
;
18
char
*cptr;
19
cptr=strrchr(s,
'/'
);
if
(cptr==NULL) cptr=strrchr(s,
'\\'
);
20
if
(cptr==NULL)
return
;
21
cptr++;
22
int
i, n=strlen(cptr);
23
for
(i=0; i<n; i++, cptr++) s[i]=*cptr;
24
s[i]=(char)0;
25
return
;
26
}
27
/*****************************************************************************/
28
29
/*****************************************************************************/
34
int
filenameRmExtension
(
36
char
*s
37
) {
38
if
(s==NULL || strlen(s)<1)
return
(0);
39
char
*cptr;
40
cptr=strrchr(s,
'.'
);
if
(cptr==NULL)
return
(0);
41
if
(cptr[1]==
'/'
|| cptr[1]==
'\\'
)
return
(0);
42
*cptr=(char)0;
43
return
(1);
44
}
45
/*****************************************************************************/
46
47
/*****************************************************************************/
51
void
filenameRmExtensions
(
53
char
*s
54
) {
55
if
(s==NULL || strlen(s)<1)
return
;
56
while
(
filenameRmExtension
(s)) {}
57
return
;
58
}
59
/*****************************************************************************/
60
61
/*****************************************************************************/
66
int
fnmatch
(
68
const
char
*fname,
70
const
char
*key
71
) {
72
if
(fname==NULL || key==NULL)
return
(0);
73
char
*key_ptr=NULL, *fname_ptr=NULL;
74
75
while
((*key)&&(*fname)) {
76
if
((*key==
'?'
)||(*key==*fname)) {
77
key++; fname++;
78
}
else
if
(*key==
'*'
) {
79
if
(*(key+1)==*fname) {key_ptr=(
char
*)key++; fname_ptr=(
char
*)fname+1;
80
}
else
{
81
fname++;
82
if
(*(key+1)==
'?'
) {key_ptr=(
char
*)key++; fname_ptr=(
char
*)fname;}
83
}
84
}
else
if
((key_ptr!=NULL) && (*fname_ptr)) {
85
return
(
fnmatch
(key_ptr, fname_ptr));
86
}
else
{
87
return
(0);
88
}
89
}
90
if
((*fname)&&(key_ptr!=NULL)) {
return
(
fnmatch
(key_ptr, fname_ptr));}
91
else
{
if
(*key==
'*'
) key++;
return
(*key==*fname);}
92
}
93
/*****************************************************************************/
94
95
/*****************************************************************************/
100
int
fncasematch
(
102
const
char
*fname,
104
const
char
*key
105
) {
106
if
(fname==NULL || key==NULL)
return
(0);
107
char
*key_ptr=NULL, *fname_ptr=NULL;
108
109
while
((*key)&&(*fname)) {
110
if
((*key==
'?'
)||(toupper((
int
)*key)==toupper((
int
)*fname))) {
111
key++; fname++;
112
}
else
if
(*key==
'*'
) {
113
if
(toupper((
int
)*(key+1))==toupper((
int
)*fname)) {
114
key_ptr=(
char
*)key++; fname_ptr=(
char
*)fname+1;
115
}
else
{
116
fname++;
117
if
(*(key+1)==
'?'
) {key_ptr=(
char
*)key++; fname_ptr=(
char
*)fname;}
118
}
119
}
else
if
((key_ptr!=NULL) && (*fname_ptr)) {
120
return
(
fnmatch
(key_ptr, fname_ptr));
121
}
else
{
122
return
(0);
123
}
124
}
125
if
((*fname)&&(key_ptr!=NULL)) {
return
(
fnmatch
(key_ptr, fname_ptr));}
126
else
{
if
(*key==
'*'
) key++;
return
(toupper((
int
)*key)==toupper((
int
)*fname));}
127
}
128
/*****************************************************************************/
129
130
/*****************************************************************************/
139
char
*
filenameGetExtension
(
141
char
*s
142
) {
143
if
(s==NULL || strlen(s)<1)
return
((
char
*)NULL);
144
/* Identify path */
145
char
*pptr=strrchr(s,
'/'
);
if
(pptr==NULL) pptr=strrchr(s,
'\\'
);
146
if
(pptr==NULL) pptr=s;
else
pptr++;
147
/* Search for the last '.' after the path */
148
char
*cptr=strrchr(pptr,
'.'
);
if
(cptr==NULL)
return
(cptr);
149
/* If filename starts with '.', that is not counted as extension */
150
if
(strlen(pptr)==strlen(cptr))
return
((
char
*)NULL);
151
return
(cptr);
152
}
153
/*****************************************************************************/
154
155
/*****************************************************************************/
164
char
*
filenameGetExtensions
(
166
char
*s
167
) {
168
if
(s==NULL || strlen(s)<1)
return
((
char
*)NULL);
169
/* Identify path */
170
char
*pptr=strrchr(s,
'/'
);
if
(pptr==NULL) pptr=strrchr(s,
'\\'
);
171
if
(pptr==NULL) pptr=s;
else
pptr++;
172
/* Search for the last '.' after the path, ignoring first character
173
in case filename starts with '.' */
174
char
*cptr=strchr(pptr+1,
'.'
);
175
return
(cptr);
176
}
177
/*****************************************************************************/
178
179
/*****************************************************************************/
filenameGetExtension
char * filenameGetExtension(char *s)
Get the last extension of a filename.
Definition
filename.c:139
filenameRmPath
void filenameRmPath(char *s)
Definition
filename.c:13
filenameRmExtensions
void filenameRmExtensions(char *s)
Definition
filename.c:51
filenameRmExtension
int filenameRmExtension(char *s)
Definition
filename.c:34
filenameGetExtensions
char * filenameGetExtensions(char *s)
Get all extensions of a filename.
Definition
filename.c:164
fnmatch
int fnmatch(const char *fname, const char *key)
Definition
filename.c:66
fncasematch
int fncasematch(const char *fname, const char *key)
Definition
filename.c:100
libtpcmisc.h
Header file for libtpcmisc.
Generated on
for TPCCLIB by
1.17.0