shadow/lib/lockpw.c
Alejandro Colomar e2df287aad Don't redefine errno(3)
It is Undefined Behavior to declare errno (see NOTES in its manual page).
Instead of using the errno dummy declaration, use one that doesn't need
a comment.

Signed-off-by: Alejandro Colomar <alx@kernel.org>
2022-12-22 11:43:29 +01:00

86 lines
1.1 KiB
C

/*
* SPDX-FileCopyrightText: 1992 , Julianne Frances Haugh
* SPDX-FileCopyrightText: 1996 - 1998, Marek Michałkiewicz
* SPDX-FileCopyrightText: 2005 , Tomasz Kłoczko
*
* SPDX-License-Identifier: BSD-3-Clause
*/
#include <config.h>
#ifndef HAVE_LCKPWDF
#ident "$Id$"
#include "prototypes.h"
#include "defines.h"
#include "pwio.h"
#include "shadowio.h"
/*
* lckpwdf - lock the password files
*/
int lckpwdf (void)
{
int i;
/*
* We have 15 seconds to lock the whole mess
*/
for (i = 0; i < 15; i++)
if (pw_lock ())
break;
else
sleep (1);
/*
* Did we run out of time?
*/
if (i == 15)
return -1;
/*
* Nope, use any remaining time to lock the shadow password
* file.
*/
for (; i < 15; i++)
if (spw_lock ())
break;
else
sleep (1);
/*
* Out of time yet?
*/
if (i == 15) {
pw_unlock ();
return -1;
}
/*
* Nope - and both files are now locked.
*/
return 0;
}
/*
* ulckpwdf - unlock the password files
*/
int ulckpwdf (void)
{
/*
* Unlock both files.
*/
return (pw_unlock () && spw_unlock ())? 0 : -1;
}
#else
extern int ISO_C_forbids_an_empty_translation_unit;
#endif