diff options
Diffstat (limited to 'src/ls.c')
-rw-r--r-- | src/ls.c | 295 |
1 files changed, 153 insertions, 142 deletions
@@ -27,74 +27,72 @@ #include <stdio.h> #include <errno.h> -static char * remoteUrlPrefixes[] = -{ - "http://", +static char *remoteUrlPrefixes[] = { + "http://", NULL }; -int printRemoteUrlHandlers(FILE * fp) { - char ** prefixes = remoteUrlPrefixes; +int printRemoteUrlHandlers(FILE * fp) +{ + char **prefixes = remoteUrlPrefixes; - while (*prefixes) { - myfprintf(fp,"handler: %s\n", *prefixes); - prefixes++; - } + while (*prefixes) { + myfprintf(fp, "handler: %s\n", *prefixes); + prefixes++; + } - return 0; + return 0; } -int isValidRemoteUtf8Url(char * utf8url) { - int ret = 0; - char * temp; - - switch(isRemoteUrl(utf8url)) { - case 1: - ret = 1; - temp = utf8url; - while(*temp) { - if((*temp >= 'a' && *temp <= 'z') || - (*temp >= 'A' && *temp <= 'Z') || - (*temp >= '0' && *temp <= '9') || - *temp == '$' || - *temp == '-' || - *temp == '.' || - *temp == '+' || - *temp == '!' || - *temp == '*' || - *temp == '\'' || - *temp == '(' || - *temp == ')' || - *temp == ',' || - *temp == '%' || - *temp == '/' || - *temp == ':' || - *temp == '?' || - *temp == ';' || - *temp == '&' || - *temp == '=') - { - } - else { - ret = 1; - break; - } - temp++; - } - break; - } - - return ret; +int isValidRemoteUtf8Url(char *utf8url) +{ + int ret = 0; + char *temp; + + switch (isRemoteUrl(utf8url)) { + case 1: + ret = 1; + temp = utf8url; + while (*temp) { + if ((*temp >= 'a' && *temp <= 'z') || + (*temp >= 'A' && *temp <= 'Z') || + (*temp >= '0' && *temp <= '9') || + *temp == '$' || + *temp == '-' || + *temp == '.' || + *temp == '+' || + *temp == '!' || + *temp == '*' || + *temp == '\'' || + *temp == '(' || + *temp == ')' || + *temp == ',' || + *temp == '%' || + *temp == '/' || + *temp == ':' || + *temp == '?' || + *temp == ';' || *temp == '&' || *temp == '=') { + } else { + ret = 1; + break; + } + temp++; + } + break; + } + + return ret; } -int isRemoteUrl(char * url) { - int count = 0; - char ** urlPrefixes = remoteUrlPrefixes; +int isRemoteUrl(char *url) +{ + int count = 0; + char **urlPrefixes = remoteUrlPrefixes; - while(*urlPrefixes) { - count++; - if(strncmp(*urlPrefixes,url,strlen(*urlPrefixes)) == 0) { - return count; + while (*urlPrefixes) { + count++; + if (strncmp(*urlPrefixes, url, strlen(*urlPrefixes)) == 0) { + return count; } urlPrefixes++; } @@ -102,72 +100,75 @@ int isRemoteUrl(char * url) { return 0; } -int lsPlaylists(FILE * fp, char * utf8path) { - DIR * dir; +int lsPlaylists(FILE * fp, char *utf8path) +{ + DIR *dir; struct stat st; - struct dirent * ent; - char * dup; - char * utf8; - char s[MAXPATHLEN+1]; - List * list = NULL; - ListNode * node = NULL; - char * path = utf8ToFsCharset(utf8path); - char * actualPath = rpp2app(path); - int actlen = strlen(actualPath)+1; - int maxlen = MAXPATHLEN-actlen; - int suflen = strlen(PLAYLIST_FILE_SUFFIX)+1; + struct dirent *ent; + char *dup; + char *utf8; + char s[MAXPATHLEN + 1]; + List *list = NULL; + ListNode *node = NULL; + char *path = utf8ToFsCharset(utf8path); + char *actualPath = rpp2app(path); + int actlen = strlen(actualPath) + 1; + int maxlen = MAXPATHLEN - actlen; + int suflen = strlen(PLAYLIST_FILE_SUFFIX) + 1; int suff; - if(actlen>MAXPATHLEN-1 || (dir = opendir(actualPath))==NULL) { + if (actlen > MAXPATHLEN - 1 || (dir = opendir(actualPath)) == NULL) { free(path); return 0; } s[MAXPATHLEN] = '\0'; /* this is safe, notice actlen > MAXPATHLEN-1 above */ - strcpy(s,actualPath); - strcat(s,"/"); + strcpy(s, actualPath); + strcat(s, "/"); - while((ent = readdir(dir))) { + while ((ent = readdir(dir))) { dup = ent->d_name; - if(dup[0]!='.' && - (suff=strlen(dup)-suflen)>0 && - dup[suff]=='.' && - strcmp(dup+suff+1,PLAYLIST_FILE_SUFFIX)==0) - { - strncpy(s+actlen,ent->d_name,maxlen); - if(stat(s,&st)==0) { - if(S_ISREG(st.st_mode)) { - if(list==NULL) list = makeList(NULL, 1); + if (dup[0] != '.' && + (suff = strlen(dup) - suflen) > 0 && + dup[suff] == '.' && + strcmp(dup + suff + 1, PLAYLIST_FILE_SUFFIX) == 0) { + strncpy(s + actlen, ent->d_name, maxlen); + if (stat(s, &st) == 0) { + if (S_ISREG(st.st_mode)) { + if (list == NULL) + list = makeList(NULL, 1); dup[suff] = '\0'; - if((utf8 = fsCharsetToUtf8(dup))) { - insertInList(list,utf8,NULL); + if ((utf8 = fsCharsetToUtf8(dup))) { + insertInList(list, utf8, NULL); free(utf8); } } } } } - + closedir(dir); free(path); - if(list) { + if (list) { int i; sortList(list); - dup = malloc(strlen(utf8path)+2); - strcpy(dup,utf8path); - for(i = strlen(dup)-1; i >= 0 && dup[i]=='/'; i--) { + dup = malloc(strlen(utf8path) + 2); + strcpy(dup, utf8path); + for (i = strlen(dup) - 1; i >= 0 && dup[i] == '/'; i--) { dup[i] = '\0'; } - if(strlen(dup)) strcat(dup,"/"); + if (strlen(dup)) + strcat(dup, "/"); node = list->firstNode; - while(node!=NULL) { - if(!strchr(node->key, '\n')) { - myfprintf(fp,"playlist: %s%s\n",dup,node->key); - } + while (node != NULL) { + if (!strchr(node->key, '\n')) { + myfprintf(fp, "playlist: %s%s\n", dup, + node->key); + } node = node->nextNode; } @@ -178,71 +179,79 @@ int lsPlaylists(FILE * fp, char * utf8path) { return 0; } -int myStat(char * utf8file, struct stat * st) { - char * file = utf8ToFsCharset(utf8file); - char * actualFile = file; +int myStat(char *utf8file, struct stat *st) +{ + char *file = utf8ToFsCharset(utf8file); + char *actualFile = file; int ret; - if(actualFile[0]!='/') actualFile = rmp2amp(file); + if (actualFile[0] != '/') + actualFile = rmp2amp(file); - ret = stat(actualFile,st); + ret = stat(actualFile, st); free(file); return ret; } -static int isFile(char * utf8file, time_t * mtime) { +static int isFile(char *utf8file, time_t * mtime) +{ struct stat st; - if(myStat(utf8file,&st)==0) { - if(S_ISREG(st.st_mode)) { - if(mtime) *mtime = st.st_mtime; + if (myStat(utf8file, &st) == 0) { + if (S_ISREG(st.st_mode)) { + if (mtime) + *mtime = st.st_mtime; return 1; + } else { + DEBUG("isFile: %s is not a regular file\n", utf8file); + return 0; } - else - { - DEBUG("isFile: %s is not a regular file\n",utf8file); - return 0; - } - } - else { - DEBUG("isFile: failed to stat: %s: %s\n", utf8file, strerror(errno)); + } else { + DEBUG("isFile: failed to stat: %s: %s\n", utf8file, + strerror(errno)); } return 0; } /* suffixes should be ascii only characters */ -char * getSuffix(char * utf8file) { - char * ret = NULL; +char *getSuffix(char *utf8file) +{ + char *ret = NULL; - while(*utf8file) { - if(*utf8file == '.') ret = utf8file+1; - utf8file++; - } + while (*utf8file) { + if (*utf8file == '.') + ret = utf8file + 1; + utf8file++; + } return ret; } -int hasSuffix(char * utf8file, char * suffix) { - char * s = getSuffix(utf8file); - if(s && 0==strcmp(s,suffix)) return 1; - return 0; +int hasSuffix(char *utf8file, char *suffix) +{ + char *s = getSuffix(utf8file); + if (s && 0 == strcmp(s, suffix)) + return 1; + return 0; } -int isPlaylist(char * utf8file) { - if(isFile(utf8file,NULL)) { - return hasSuffix(utf8file,PLAYLIST_FILE_SUFFIX); +int isPlaylist(char *utf8file) +{ + if (isFile(utf8file, NULL)) { + return hasSuffix(utf8file, PLAYLIST_FILE_SUFFIX); } return 0; } -int isDir(char * utf8name) { +int isDir(char *utf8name) +{ struct stat st; - if(myStat(utf8name,&st)==0) { - if(S_ISDIR(st.st_mode)) { + if (myStat(utf8name, &st) == 0) { + if (S_ISDIR(st.st_mode)) { return 1; } } @@ -250,26 +259,28 @@ int isDir(char * utf8name) { return 0; } -InputPlugin * hasMusicSuffix(char * utf8file, unsigned int next) { - InputPlugin * ret = NULL; - - char * s = getSuffix(utf8file); - if(s) { - ret = getInputPluginFromSuffix(s, next); - } - else { - DEBUG("hasMusicSuffix: The file: %s has no valid suffix\n",utf8file); +InputPlugin *hasMusicSuffix(char *utf8file, unsigned int next) +{ + InputPlugin *ret = NULL; + + char *s = getSuffix(utf8file); + if (s) { + ret = getInputPluginFromSuffix(s, next); + } else { + DEBUG("hasMusicSuffix: The file: %s has no valid suffix\n", + utf8file); } return ret; } -InputPlugin * isMusic(char * utf8file, time_t * mtime, unsigned int next) { - if(isFile(utf8file,mtime)) { - InputPlugin * plugin = hasMusicSuffix(utf8file, next); +InputPlugin *isMusic(char *utf8file, time_t * mtime, unsigned int next) +{ + if (isFile(utf8file, mtime)) { + InputPlugin *plugin = hasMusicSuffix(utf8file, next); if (plugin != NULL) return plugin; } - DEBUG("isMusic: %s is not a valid file\n",utf8file); + DEBUG("isMusic: %s is not a valid file\n", utf8file); return NULL; } |