aboutsummaryrefslogtreecommitdiffstats
path: root/src/ls.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ls.c')
-rw-r--r--src/ls.c295
1 files changed, 153 insertions, 142 deletions
diff --git a/src/ls.c b/src/ls.c
index b93dbf13e..d4760cef0 100644
--- a/src/ls.c
+++ b/src/ls.c
@@ -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;
}