*/
#include "config.hpp"
+
+#include <stdlib.h>
+#include <sys/types.h>
+#include <fcntl.h>
#include "filter_zoom.hpp"
#include <yaz/zoom.h>
#include <yaz/yaz-version.h>
apdu_log(false), element_transform("pz2") , element_raw("raw")
{
bibset = ccl_qual_mk();
+
+ srand(time(0));
}
yf::Zoom::Impl::~Impl()
void yf::Zoom::Impl::configure(const xmlNode *ptr, bool test_only,
const char *path)
{
- content_tmp_file = "/tmp/mp_content_proxy.";
+ content_tmp_file = "/tmp/cf.XXXXXX.p";
if (path && *path)
{
file_path = path;
}
if (b->sptr->contentConnector.length())
{
- int fd;
-
char *fname = (char *) xmalloc(m_p->content_tmp_file.length() + 8);
strcpy(fname, m_p->content_tmp_file.c_str());
- strcat(fname, "XXXXXX");
- fd = mkstemp(fname);
-
+ int suffixlen;
+ char *xx = strstr(fname, "XXXXXX");
+ if (xx)
+ suffixlen = strlen(xx) - 6;
+ else
+ {
+ suffixlen = 0;
+ xx = fname + strlen(fname);
+ strcat(fname, "XXXXXX");
+ }
+ char tmp_char = xx[6];
+ sprintf(xx, "%06d", ((unsigned) rand()) % 1000000);
+ xx[6] = tmp_char;
+
+ int fd = creat(fname, 0666);
if (fd == -1)
{
yaz_log(YLOG_WARN|YLOG_ERRNO, "create %s", fname);
BackendPtr backend_null;
return backend_null;
}
- b->content_session_id.assign(fname + (strlen(fname) - 6));
+ b->content_session_id.assign(xx, 6);
WRBUF w = wrbuf_alloc();
wrbuf_puts(w, "#content_proxy\n");
wrbuf_printf(w, "connector: %s\n", b->sptr->contentConnector.c_str());
yaz_log(YLOG_LOG, "file %s created\n", fname);
xfree(fname);
}
-
std::string url;
if (sptr->sru.length())