1
0
mirror of https://github.com/hashcat/hashcat.git synced 2024-11-15 20:39:17 +00:00
hashcat/src/locking.c

64 lines
976 B
C
Raw Normal View History

/**
* Author......: See docs/credits.txt
* License.....: MIT
*/
#include "common.h"
#include "types.h"
#include "locking.h"
#include "shared.h"
#if defined (F_SETLKW)
int hc_lockfile (HCFILE *fp)
{
2019-07-01 15:27:08 +00:00
if (fp == NULL) return -1;
struct flock lock;
memset (&lock, 0, sizeof (struct flock));
lock.l_type = F_WRLCK;
2016-11-05 10:33:29 +00:00
/* Needs this loop because a signal may interrupt a wait for lock */
while (fcntl (hc_fileno (fp), F_SETLKW, &lock))
2016-11-05 10:33:29 +00:00
{
if (errno != EINTR) return -1;
}
return 0;
}
int hc_unlockfile (HCFILE *fp)
{
2019-07-01 15:27:08 +00:00
if (fp == NULL) return -1;
struct flock lock;
memset (&lock, 0, sizeof (struct flock));
lock.l_type = F_UNLCK;
2019-07-01 15:27:08 +00:00
if (fcntl (hc_fileno (fp), F_SETLK, &lock)) return -1;
return 0;
}
#else
int hc_lockfile (MAYBE_UNUSED HCFILE *fp)
{
// we should put windows specific code here
return 0;
}
int hc_unlockfile (MAYBE_UNUSED HCFILE *fp)
{
// we should put windows specific code here
return 0;
}
#endif // F_SETLKW