masqmail

diff src/conf.c @ 402:eedc23877cd5

Ensure lval and rval are always stripped. Plus minor refactoring.
author markus schnalke <meillo@marmaro.de>
date Tue, 21 Feb 2012 16:11:28 +0100
parents 6f2a8113a79e
children 9b93c0a3bd8c
line diff
     1.1 --- a/src/conf.c	Tue Feb 21 16:11:00 2012 +0100
     1.2 +++ b/src/conf.c	Tue Feb 21 16:11:28 2012 +0100
     1.3 @@ -145,23 +145,24 @@
     1.4  	foreach(plain_list, node) {
     1.5  		gchar *item = (gchar *) (node->data);
     1.6  		char *at;
     1.7 -		char *p;
     1.8 +		char *ep;
     1.9  		address *addr = calloc(1, sizeof(address));
    1.10  
    1.11 -		for (p=item+strlen(item)-1; isspace(*p) || *p=='>'; p--) {
    1.12 -			*p = '\0';
    1.13 -		}
    1.14 -		for (p=item; isspace(*p) || *p=='<'; p++) {
    1.15 +		ep = item + strlen(item) - 1;
    1.16 +		if (*item == '<' && *ep == '>') {
    1.17 +			*item = '\0';
    1.18 +			*ep = '\0';
    1.19 +			g_strstrip(item);
    1.20  		}
    1.21  
    1.22 -		addr->address = strdup(p);
    1.23 -		at = strrchr(p, '@');
    1.24 +		addr->address = strdup(item);
    1.25 +		at = strrchr(item, '@');
    1.26  		if (at) {
    1.27  			*at = '\0';
    1.28 -			addr->local_part = strdup(p);
    1.29 +			addr->local_part = strdup(item);
    1.30  			addr->domain = strdup(at+1);
    1.31  		} else {
    1.32 -			addr->local_part = strdup(p);
    1.33 +			addr->local_part = strdup(item);
    1.34  			/* No `@', thus any domain is okay. */
    1.35  			addr->domain = "*";
    1.36  		}
    1.37 @@ -217,6 +218,7 @@
    1.38  	if ((cp = strchr(line, ':'))) {
    1.39  		*cp = '\0';
    1.40  	}
    1.41 +	g_strstrip(line);
    1.42  	iface->address = g_strdup(line);
    1.43  	iface->port = (cp) ? atoi(++cp) : def_port;
    1.44  	DEBUG(9) fprintf(stderr,"found: address:port=%s:%u\n",
    1.45 @@ -283,7 +285,8 @@
    1.46  
    1.47  	DEBUG(9) fprintf(stderr, "read_lval() 2\n");
    1.48  	while (1) {
    1.49 -		if ((c = fgetc(in)) == EOF) {
    1.50 +		c = fgetc(in);
    1.51 +		if (c == EOF) {
    1.52  			fprintf(stderr, "unexpected EOF after %s\n", buf);
    1.53  			return FALSE;
    1.54  		}
    1.55 @@ -297,6 +300,7 @@
    1.56  		*ptr++ = c;
    1.57  	}
    1.58  	*ptr = '\0';
    1.59 +	g_strstrip(buf);
    1.60  	ungetc(c, in);
    1.61  	eat_spaces(in);
    1.62  	DEBUG(9) fprintf(stderr, "lval = %s\n", buf);
    1.63 @@ -352,6 +356,7 @@
    1.64  		}
    1.65  		*ptr = '\0';
    1.66  	}
    1.67 +	g_strstrip(buf);
    1.68  	DEBUG(9) fprintf(stderr, "rval = %s\n", buf);
    1.69  	/* eat trailing of line */
    1.70  	while ((c = fgetc(in)) != EOF && c != '\n') {
    1.71 @@ -638,7 +643,7 @@
    1.72  						(gchar *) (pair->value), TRUE);
    1.73  				g_free(pair->value);
    1.74  				pair->value = (gpointer *) addr;
    1.75 -				route->map_return_path_addresses = g_list_append( route->map_return_path_addresses, pair);
    1.76 +				route->map_return_path_addresses = g_list_append(route->map_return_path_addresses, pair);
    1.77  				g_free(item);
    1.78  			}
    1.79  			g_list_free(list);