10 #include <lib/php/pathinfo.h>
13 char* pathinfo(
const char* Path,
int Mode){
14 int i = 0, length =
strlen(Path), dot_index = -1;
15 char* info = kmalloc(length + 1);
16 memset(info, 0, length + 1);
17 if (Mode == PATHINFO_DIRNAME) {
18 if (Path[(length - 1)] ==
'/' || Path[(length - 1)] ==
'\\'){
21 for (i = length - 1; i >= 0; i--) {
22 if (Path[i] ==
'/' || Path[i] ==
'\\') {
33 }
else if (Mode == PATHINFO_BASENAME){
34 if (Path[(length - 1)] ==
'/' || Path[(length - 1)] ==
'\\'){
37 for (i = length - 1; i >= 0; i--) {
38 if (Path[i] ==
'/' || Path[i] ==
'\\') {
44 strncpy(info, Path + i + 1, length - i);
45 info[length - i - 1] =
'\0';
49 }
else if (Mode == PATHINFO_EXTENSION){
50 for (i = length - 1; i >= 0; i--) {
56 if (i >= 0 && i < length - 1) {
57 strncpy(info, Path + i + 1, length - i);
58 info[length - i] =
'\0';
63 for (i = length - 1; i >= 0; i--) {
72 info[dot_index] =
'\0';
size_t strlen(const char *str)
Возращает длину строки
char * strncpy(char *dest, const char *src, size_t n)
Копирование строк c ограничением длины
void * memset(void *ptr, char value, size_t num)
Заполнение массива указанными символами
int strcpy(char *dest, const char *src)
Копирование строк