f_priv = f_try = f_unlock = f_force = 0;
f_priv = f_try = f_unlock = f_force = f_unlink = 0;
int dotlock_invoke(const char *path, int flags, int retry){  int currdir;  int r;  char realpath[_POSIX_PATH_MAX];    if((currdir = open(".", O_RDONLY)) == -1)    return DL_EX_ERROR;    if(!(flags & DL_FL_RETRY) || retry)    Retry = MAXLOCKATTEMPT;  else    Retry = 0;    f_priv = f_try = f_unlock = f_force = 0;    if(flags & DL_FL_FORCE)    f_force = 1;  r = DL_EX_ERROR;  if(dotlock_prepare(realpath, sizeof(realpath), path) == -1)    goto bail;    if(flags & DL_FL_TRY)    r = dotlock_try();  else if(flags & DL_FL_UNLOCK)    r = dotlock_unlock(realpath);  else /* lock */    r = dotlock_lock(realpath);   bail:    fchdir(currdir);  close(currdir);    return r;}