c4w: mkdir($tmpdir)

remotes/push_mirror/multihash
aCaB 15 years ago
parent 1800f03f24
commit 232819819c
  1. 19
      win32/clamav-for-windows/clamav-for-windows/interface.c

@ -22,6 +22,7 @@
#endif
#include "clamav.h"
#include "others.h"
#include "shared/output.h"
#include "mpool.h"
#include "clscanapi.h"
@ -363,9 +364,25 @@ int CLAMAPI Scan_Initialize(const wchar_t *pEnginesFolder, const wchar_t *pTempR
free_engine_and_unlock();
FAIL(CL_EARG, "Can't translate pTempRoot");
}
ret = strlen(tmpdir);
while(ret>0 && tmpdir[--ret] == '\\')
tmpdir[ret] = '\0';
if(!ret || ret + 8 + 1 >= sizeof(tmpdir)) {
free_engine_and_unlock();
FAIL(CL_EARG, "Bad or too long pTempRoot '%s'", tmpdir);
}
memcpy(&tmpdir[ret+1], "\\clamtmp", 9);
cli_rmdirs(tmpdir);
if(!CreateDirectory(tmpdir, NULL)) {
ret = GetLastError();
if((DWORD)ret != ERROR_ALREADY_EXISTS) {
free_engine_and_unlock();
FAIL(CL_ETMPDIR, "Cannot create pTempRoot '%s': error %d", ret);
}
}
if((ret = cl_engine_set_str(engine, CL_ENGINE_TMPDIR, tmpdir))) {
free_engine_and_unlock();
FAIL(ret, "Failed to set engine tempdir: %s", cl_strerror(ret));
FAIL(ret, "Failed to set engine tempdir to '%s': %s", tmpdir, cl_strerror(ret));
}
if(!WideCharToMultiByte(CP_ACP, WC_NO_BEST_FIT_CHARS, pEnginesFolder, -1, dbdir, sizeof(dbdir), NULL, &cant_convert) || cant_convert) {
free_engine_and_unlock();

Loading…
Cancel
Save