X-Git-Url: https://develop.uap-core.de/gitweb/uwplayer.git/blobdiff_plain/2d586cf54532edd59659ef37323c992cdacca7ec..335105ec8330774af60183180c47b14e5aa4e6c1:/application/utils.c diff --git a/application/utils.c b/application/utils.c index 7d123e3..5d18fdb 100644 --- a/application/utils.c +++ b/application/utils.c @@ -30,16 +30,16 @@ #include #include -#include +#include char* util_concat_path(const char *url_base, const char *p) { - sstr_t base = sstr((char*)url_base); - sstr_t path; + cxstring base = cx_str(url_base); + cxstring path; if(p) { - path = sstr((char*)p); + path = cx_str(p); } else { - path = sstrn("", 0); + path = cx_strn("", 0); } int add_separator = 0; @@ -53,22 +53,25 @@ char* util_concat_path(const char *url_base, const char *p) { } } - sstr_t url; + cxmutstr url; if(add_separator) { - url = sstrcat(3, base, sstr("/"), path); + url = cx_strcat(3, base, cx_strn("/", 1), path); } else { - url = sstrcat(2, base, path); + url = cx_strcat(2, base, path); } return url.ptr; } -char* util_resource_name(char *url) { - sstr_t urlstr = sstr(url); +const char* util_resource_name(const char *url) { + cxstring urlstr = cx_str(url); + if(urlstr.length == 0) { + return url; + } if(urlstr.ptr[urlstr.length-1] == '/') { urlstr.length--; } - sstr_t resname = sstrrchr(urlstr, '/'); + cxstring resname = cx_strrchr(urlstr, '/'); if(resname.length > 1) { return resname.ptr+1; } else { @@ -77,7 +80,7 @@ char* util_resource_name(char *url) { } char* util_parent_path(const char *path) { - char *name = util_resource_name((char*)path); + const char *name = util_resource_name(path); size_t namelen = strlen(name); size_t pathlen = strlen(path); size_t parentlen = pathlen - namelen; @@ -91,9 +94,16 @@ char* util_parent_path(const char *path) { typedef int (*cmpfnc)(const void *, const void *); +int fcmp(const void *d1, const void *d2) { + const char **f1 = (const char **)d1; + const char **f2 = (const char **)d2; + int r = strcmp(*f1, *f2); + return r; +} + char* util_find_next_file(char *current_file) { char *current_folder = util_parent_path(current_file); - char *current_file_name = util_resource_name(current_file); + const char *current_file_name = util_resource_name(current_file); DIR *dir = opendir(current_folder); if(!dir) { fprintf(stderr, "Error: Cannot open directory '%s': %s\n", current_folder, strerror(errno)); @@ -143,9 +153,10 @@ char* util_find_next_file(char *current_file) { char *result = NULL; if(!abort) { - qsort(files, nfiles, sizeof(char*), (cmpfnc)strcmp); + qsort(files, nfiles, sizeof(char*), fcmp); // search array for current file and return the successor for(int i=0;i