The default formats available (which do not need re-defining) are:
-logformat squid %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %un %Sh/%<a %mt
-logformat common %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st %Ss:%Sh
-logformat combined %>a %ui %un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
+logformat squid %ts.%03tu %6tr %>a %Ss/%03>Hs %<st %rm %ru %[un %Sh/%<a %mt
+logformat common %>a %[ui %[un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st %Ss:%Sh
+logformat combined %>a %[ui %[un [%tl] "%rm %ru HTTP/%rv" %>Hs %<st "%{Referer}>h" "%{User-Agent}>h" %Ss:%Sh
logformat referrer %ts.%03tu %>a %{Referer}>h %ru
logformat useragent %>a [%tl] "%{User-Agent}>h"
#include "SquidTime.h"
#include "Store.h"
+/// Convert a string to NULL pointer if it is ""
+#define strOrNull(s) ((s)==NULL||(s)[0]=='\0'?NULL:(s))
Format::Format::Format(const char *n) :
format(NULL),
break;
case LFT_USER_NAME:
- out = QuoteUrlEncodeUsername(al->cache.authuser);
-
+ out = strOrNull(al->cache.authuser);
if (!out)
- out = QuoteUrlEncodeUsername(al->cache.extuser);
-
+ out = strOrNull(al->cache.extuser);
#if USE_SSL
-
if (!out)
- out = QuoteUrlEncodeUsername(al->cache.ssluser);
-
+ out = strOrNull(al->cache.ssluser);
#endif
-
if (!out)
- out = QuoteUrlEncodeUsername(al->cache.rfc931);
-
- dofree = 1;
-
+ out = strOrNull(al->cache.rfc931);
break;
case LFT_USER_LOGIN:
- out = QuoteUrlEncodeUsername(al->cache.authuser);
-
- dofree = 1;
-
+ out = strOrNull(al->cache.authuser);
break;
case LFT_USER_IDENT:
- out = QuoteUrlEncodeUsername(al->cache.rfc931);
-
- dofree = 1;
-
+ out = strOrNull(al->cache.rfc931);
break;
case LFT_USER_EXTERNAL:
- out = QuoteUrlEncodeUsername(al->cache.extuser);
-
- dofree = 1;
-
+ out = strOrNull(al->cache.extuser);
break;
/* case LFT_USER_REALM: */