1
1
/* actions.c -- executes the commands for timsieved
3
* $Id: actions.c,v 1.36 2003/10/22 18:50:31 rjs3 Exp $
3
* $Id: actions.c,v 1.38 2005/11/18 14:18:18 murch Exp $
6
6
* Copyright (c) 1998-2003 Carnegie Mellon University. All rights reserved.
100
101
int actions_setuser(const char *userid)
103
char userbuf[1024], *user, *domain = NULL;
104
char *foo = sieve_dir;
105
size_t size = 1024, len;
106
sieve_dir=(char *) xmalloc(1024);
108
sieve_dir = (char *) xzmalloc(size+1);
108
if (config_virtdomains && (domain = strchr(userid, '@'))) {
109
char d = (char) dir_hash_c(domain+1);
110
*domain = '\0'; /* split user@domain */
111
hash = (char) dir_hash_c(userid);
112
snprintf(sieve_dir, 1023, "%s%s%c/%s/%c/%s",
113
foo, FNAME_DOMAINDIR, d, domain+1,
115
*domain = '@'; /* reassemble user@domain */
110
user = (char *) userid;
111
if (config_virtdomains && strchr(user, '@')) {
112
/* split the user and domain */
113
strlcpy(userbuf, userid, sizeof(userbuf));
115
if ((domain = strrchr(user, '@'))) *domain++ = '\0';
118
len = strlcpy(sieve_dir, foo, size);
121
char dhash = (char) dir_hash_c(domain);
122
len += snprintf(sieve_dir+len, size-len, "%s%c/%s",
123
FNAME_DOMAINDIR, dhash, domain);
126
if (sieved_userisadmin) {
127
strlcat(sieve_dir, "/global", size);
118
hash = (char) dir_hash_c(userid);
120
snprintf(sieve_dir, 1023, "%s/%c/%s", foo, hash,userid);
130
char hash = (char) dir_hash_c(user);
131
snprintf(sieve_dir+len, size-len, "/%c/%s", hash, user);
123
134
result = chdir(sieve_dir);