Main Page | Data Structures | File List | Data Fields | Globals | Related Pages

config.c

Go to the documentation of this file.
00001 /*
00002  *  config.c
00003  *  mod_musicindex
00004  *
00005  *  $Id: config.c,v 1.33 2003/10/28 20:50:11 boudinr Exp $
00006  *
00007  *  Created by Thibaut VARENE on Thu Mar 20 2003.
00008  *  Copyright (c) 2003 Regis BOUDIN
00009  *
00010  *  This program is free software; you can redistribute it and/or modify
00011  *  it under the terms of the GNU Lesser General Public License as published by
00012  *  the Free Software Foundation; either version 2.1, or (at your option)
00013  *  any later version.
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 }

Generated on Thu Oct 30 13:50:28 2003 for mod_musicindex by doxygen 1.3.4