const char *my_email_addr = "";
char *CmdBuf = NULL;;
long len = 0;
+ size_t nLen;
if (GetHash(WCC->urlstrings, HKEY("subject"), &U)) {
u = (urlcontent*) U;
}
}
len += sizeof (CMD) + dpLen;
-
- if (GetHash(WCC->urlstrings, HKEY("recp"), &U)) {
- u = (urlcontent*) U;
- Recp = u->url_data;
- len += u->url_data_size; }
-
- if (GetHash(WCC->urlstrings, HKEY("cc"), &U)) {
- u = (urlcontent*) U;
- Cc = u->url_data;
- len += u->url_data_size;
- }
-
- if (GetHash(WCC->urlstrings, HKEY("bcc"), &U)) {
- u = (urlcontent*) U;
- Bcc = u->url_data;
- len += u->url_data_size;
- }
-
- if (GetHash(WCC->urlstrings, HKEY("wikipage"), &U)) {
- u = (urlcontent*) U;
- Wikipage = u->url_data;
- len += u->url_data_size;
- }
-
- if (GetHash(WCC->urlstrings, HKEY("my_email_addr"), &U)) {
- u = (urlcontent*) U;
- my_email_addr = u->url_data;
- len += u->url_data_size;
- }
+ Recp = xbstr("recp", &nLen);
+ len += nLen;
+ Cc = xbstr("cc", &nLen);
+ len += nLen;
+ Bcc = xbstr("bcc", &nLen);
+ len += nLen;
+ Wikipage = xbstr("wikipage", &nLen);
+ len += nLen;
+ my_email_addr = xbstr("my_email_addr", &nLen);
+ len += nLen;
CmdBuf = (char*) malloc (len + 1);
-
snprintf(CmdBuf, len + 1, CMD,
Recp,
is_anonymous,
return ("");
}
+const char *XBSTR(char *key, size_t *len)
+{
+ void *U;
+
+ if ((WC->urlstrings != NULL) &&
+ GetHash(WC->urlstrings, key, strlen (key), &U)){
+ *len = ((urlcontent *)U)->url_data_size;
+ return ((urlcontent *)U)->url_data;
+ }
+ else {
+ *len = 0;
+ return ("");
+ }
+}
+
const char *Bstr(char *key, size_t keylen)
{
void *U;
return ("");
}
+const char *XBstr(char *key, size_t keylen, size_t *len)
+{
+ void *U;
+
+ if ((WC->urlstrings != NULL) &&
+ GetHash(WC->urlstrings, key, keylen, &U)) {
+ *len = ((urlcontent *)U)->url_data_size;
+ return ((urlcontent *)U)->url_data;
+ }
+ else {
+ *len = 0;
+ return ("");
+ }
+}
+
/**
* \brief web-printing funcion. uses our vsnprintf wrapper
* \param format printf format string
*/
typedef struct urlcontent urlcontent;
struct urlcontent {
- struct urlcontent *next; /**< the next variable in the list */
char url_key[32]; /**< the variable name */
char *url_data; /**< its value */
size_t url_data_size; /**< how big is it? */
void wDumpContent(int);
void serv_printf(const char *format,...);
const char *Bstr(char *key, size_t keylen);
+const char *XBstr(char *key, size_t keylen, size_t *len);
/* TODO: get rid of the non-const-typecast */
#define bstr(a) (char*) Bstr(a, sizeof(a) - 1)
+#define xbstr(a, b) (char*) XBstr(a, sizeof(a) - 1, b)
const char *BSTR(char *key);
+const char *XBSTR(char *key, size_t *len);
void urlescputs(char *);
void jsesc(char *, size_t, char *);
void jsescputs(char *);