view src/lib/var-expand.c @ 1329:ae229b7acb4c HEAD

Mailbox names are now sent through imap-quoter instead of just escaping it. This means that mailbox names that would require escapes are instead sent as literals now.
author Timo Sirainen <tss@iki.fi>
date Wed, 02 Apr 2003 05:05:38 +0300
parents c077254cbe66
children 5e0167577399
line wrap: on
line source

/* Copyright (C) 2003 Timo Sirainen */

#include "lib.h"
#include "str.h"
#include "var-expand.h"

void var_expand(string_t *dest, const char *str,
		const char *user, const char *home)
{
	const char *var;
	unsigned int width;

	for (; *str != '\0'; str++) {
		if (*str != '%')
			str_append_c(dest, *str);
		else {
			width = 0;
			while (str[1] >= '0' && str[1] <= '9') {
				width = width*10 + (str[1] - '0');
				str++;
			}

			switch (str[1]) {
			case '%':
				var = "%";
				break;
			case 'u':
				var = user;
				break;
			case 'h':
				var = home;
				break;
			case 'n':
				var = t_strcut(user, '@');
				break;
			case 'd':
				var = strchr(user, '@');
				if (var != NULL) var++;
				break;
			default:
				str_append_c(dest, '%');
				if (str[1] != '\0')
					str_append_c(dest, str[1]);
				var = NULL;
				break;
			}

			if (str[1] != '\0')
				str++;

			if (var != NULL) {
				if (width == 0)
					str_append(dest, var);
				else
					str_append_n(dest, var, width);
			}
		}
	}
}