X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=src%2Fclient.c;h=22d107353ff8df8f4fedd84acd75b9fde5200b1c;hb=fb4ae0240d3f121281100e9a483c42e0f5577d15;hp=2cd05aa54bc2d4922a84d0d214833a8b9363bf1b;hpb=9442ed3bd9d48cc06ce797e4dfb29b327e714c5f;p=pazpar2-moved-to-github.git diff --git a/src/client.c b/src/client.c index 2cd05aa..22d1073 100644 --- a/src/client.c +++ b/src/client.c @@ -695,6 +695,7 @@ int client_parse_query(struct client *cl, const char *query) CCL_bibset ccl_map = prepare_cclmap(cl); const char *sru = session_setting_oneval(sdb, PZ_SRU); const char *pqf_prefix = session_setting_oneval(sdb, PZ_PQF_PREFIX); + const char *pqf_strftime = session_setting_oneval(sdb, PZ_PQF_STRFTIME); if (!ccl_map) return -1; @@ -715,7 +716,26 @@ int client_parse_query(struct client *cl, const char *query) wrbuf_puts(se->wrbuf, pqf_prefix); wrbuf_puts(se->wrbuf, " "); } - ccl_pquery(se->wrbuf, cn); + if (!pqf_strftime || !*pqf_strftime) + ccl_pquery(se->wrbuf, cn); + else + { + time_t cur_time = time(0); + struct tm *tm = localtime(&cur_time); + char tmp_str[300]; + const char *cp = tmp_str; + + /* see man strftime(3) for things .. In particular %% gets converted + to %.. And That's our original query .. */ + strftime(tmp_str, sizeof(tmp_str)-1, pqf_strftime, tm); + for (; *cp; cp++) + { + if (cp[0] == '%') + ccl_pquery(se->wrbuf, cn); + else + wrbuf_putc(se->wrbuf, cp[0]); + } + } xfree(cl->pquery); cl->pquery = xstrdup(wrbuf_cstr(se->wrbuf));