00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00032 #include "config.h"
00033 #include "inf.h"
00034
00035 const char *default_sort = "APNBTLRFMU";
00036 const char *default_fields = "TBLR";
00037
00038 void *create_musicindex_config(apr_pool_t * p, char *dummy)
00039 {
00040 unsigned short i;
00041 mu_config *new = (mu_config *) ap_pcalloc(p, sizeof(mu_config));
00042
00043 for (i = 0; i < ARG_NUMBER; i++) {
00044 new->order[i] = SB_DEFAULT;
00045 new->fields[i] = '\0';
00046 }
00047
00048 strcpy(new->fields, default_fields);
00049 strcpy(new->order, default_sort);
00050
00051 new->title = ap_pstrdup(p, "Music");
00052 new->cd_icon = ap_pstrdup(p, "/musicindex/general.png");
00053 new->small_cd_icon = ap_pstrdup(p, "/musicindex/directory.png");
00054 new->sound_icon = ap_pstrdup(p, "/musicindex/sound.png");
00055 new->fetch_icon = ap_pstrdup(p, "/musicindex/fetch.png");
00056 new->arrow = ap_pstrdup(p, "/musicindex/right_arrow.gif");
00057 new->css = ap_pstrdup(p, "/musicindex/musicindex.css");
00058
00059 new->search = NULL;
00060
00061 new->play_recursive = ~MI_RECURSIVE;
00062 new->options = MI_RECURSIVE;
00063
00064 new->cache_path = NULL;
00065
00066 set_fctptrs(new);
00067
00068 return (void *) new;
00069 }
00070
00071 void *merge_musicindex_configs(apr_pool_t * p, void *basev, void *addv)
00072 {
00073
00074 mu_config *new = (mu_config *) ap_pcalloc(p, sizeof(mu_config));
00075 mu_config *add = (mu_config *) addv;
00076
00077 strcpy(new->order, add->order);
00078 strcpy(new->fields, add->fields);
00079
00080 new->title = ap_pstrdup(p, add->title);
00081 new->cd_icon = ap_pstrdup(p, add->cd_icon);
00082 new->small_cd_icon = ap_pstrdup(p, add->small_cd_icon);
00083 new->sound_icon = ap_pstrdup(p, add->sound_icon);
00084 new->fetch_icon = ap_pstrdup(p, add->fetch_icon);
00085 new->arrow = ap_pstrdup(p, add->arrow);
00086 new->css = ap_pstrdup(p, add->css);
00087
00088 new->search = ap_pstrdup(p, add->search);
00089
00090 new->play_recursive = add->play_recursive;
00091 new->options = add->options;
00092
00093 new->cache_path = ap_pstrdup(p, add->cache_path);
00094
00095 set_fctptrs(new);
00096
00097 return new;
00098 }
00099
00100 void sort_or_fields(cmd_parms * cmd, char *list, const char *optstr)
00101 {
00102
00103 char *r;
00104 unsigned short i = 0;
00105
00106 while (optstr[0] && (i < ARG_NUMBER)) {
00107
00108 r = ap_getword_conf(cmd->pool, &optstr);
00109
00110 if (!strcasecmp(r, "track"))
00111 list[i++] = SB_TRACK;
00112 else if (!strcasecmp(r, "disc"))
00113 list[i++] = SB_POSN;
00114 else if (!strcasecmp(r, "length"))
00115 list[i++] = SB_LENGTH;
00116 else if (!strcasecmp(r, "bitrate"))
00117 list[i++] = SB_BITRATE;
00118 else if (!strcasecmp(r, "artist"))
00119 list[i++] = SB_ARTIST;
00120 else if (!strcasecmp(r, "album"))
00121 list[i++] = SB_ALBUM;
00122 else if (!strcasecmp(r, "title"))
00123 list[i++] = SB_TITLE;
00124 else if (!strcasecmp(r, "filename"))
00125 list[i++] = SB_FILENAME;
00126 else if (!strcasecmp(r, "date"))
00127 list[i++] = SB_DATE;
00128 else if (!strcasecmp(r, "filetype"))
00129 list[i++] = SB_FILETYPE;
00130 else if (!strcasecmp(r, "genre"))
00131 list[i++] = SB_GENRE;
00132 }
00133 if (i == ARG_NUMBER)
00134 i--;
00135 list[i] = SB_DEFAULT;
00136 }
00137
00138 const char *sort_order(cmd_parms * cmd, void *d, const char *optstr)
00139 {
00140 mu_config *d_cfg = (mu_config *) d;
00141 sort_or_fields(cmd, d_cfg->order, optstr);
00142 set_fctptrs(d_cfg);
00143 return NULL;
00144 }
00145
00146 const char *set_fields(cmd_parms * cmd, void *d, const char *optstr)
00147 {
00148 mu_config *d_cfg = (mu_config *) d;
00149 sort_or_fields(cmd, d_cfg->fields, optstr);
00150 return NULL;
00151 }
00152
00153 const char *music_lister(cmd_parms * cmd, void *d)
00154 {
00155 mu_config *d_cfg = (mu_config *) d;
00156 d_cfg->options |= MI_ACTIVE;
00157 return NULL;
00158 }
00159
00160 const char *allow_stream(cmd_parms * cmd, void *d)
00161 {
00162 mu_config *cfg = (mu_config *) d;
00163 cfg->options |= MI_ALLOWSTREAM;
00164 return NULL;
00165 }
00166
00167 const char *allow_download(cmd_parms * cmd, void *d)
00168 {
00169 mu_config *cfg = (mu_config *) d;
00170 cfg->options |= MI_ALLOWDWNLD;
00171 return NULL;
00172 }
00173
00174 const char *allow_search(cmd_parms * cmd, void *d)
00175 {
00176 mu_config *cfg = (mu_config *) d;
00177 cfg->options |= MI_ALLOWSEARCH;
00178 return NULL;
00179 }
00180
00181 const char *set_cache_path(cmd_parms * cmd, void *d, const char *optstr)
00182 {
00183 mu_config *cfg = (mu_config *) d;
00184 cfg->cache_path = ap_pstrdup(cmd->pool, optstr);
00185 return NULL;
00186 }
00187
00188 const char *set_page_title(cmd_parms *cmd, void *d, const char *optstr)
00189 {
00190 mu_config *cfg = (mu_config *) d;
00191 cfg->title = ap_pstrdup(cmd->pool, optstr);
00192 return NULL;
00193 }