aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorWarren Dukes <warren.dukes@gmail.com>2004-07-15 20:15:26 +0000
committerWarren Dukes <warren.dukes@gmail.com>2004-07-15 20:15:26 +0000
commita0227e806216f6e6795155b6e00ecc40bb82809e (patch)
tree68a6f211c882b9111a9124c034fc70e39fef1241
parente33dcb9bd4125dacea6c3a2a539f1c04961027e7 (diff)
downloadmpd-a0227e806216f6e6795155b6e00ecc40bb82809e.tar.gz
mpd-a0227e806216f6e6795155b6e00ecc40bb82809e.tar.xz
mpd-a0227e806216f6e6795155b6e00ecc40bb82809e.zip
deal with user and ~ in config file more nicely
git-svn-id: https://svn.musicpd.org/mpd/trunk@1871 09075e82-0dd4-0310-85a5-a0d7c8717e4f
-rw-r--r--src/conf.c24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/conf.c b/src/conf.c
index dbeb11fb5..c92546023 100644
--- a/src/conf.c
+++ b/src/conf.c
@@ -232,11 +232,25 @@ char ** readConf(char * file) {
if(conf_params[conf_absolutePaths[i]][1]=='/' ||
conf_params[conf_absolutePaths[i]][1]=='\0')
{
- uid_t uid = geteuid();
- if((pwd = getpwuid(uid)) == NULL) {
- ERROR("problems getting passwd entry "
- "for current user\n");
- exit(EXIT_FAILURE);
+ if(conf_params[CONF_USER] &&
+ strlen(conf_params[CONF_USER]))
+ {
+ pwd = getpwnam(
+ conf_params[CONF_USER]);
+ if(!pwd) {
+ ERROR("no such user: %s\n",
+ conf_params[CONF_USER]);
+ exit(EXIT_FAILURE);
+ }
+ }
+ else {
+ uid_t uid = geteuid();
+ if((pwd = getpwuid(uid)) == NULL) {
+ ERROR("problems getting passwd "
+ "entry "
+ "for current user\n");
+ exit(EXIT_FAILURE);
+ }
}
}
else {