예제 #1
0
int
commonio_unlock(struct commonio_db *db)
{
	char lock[1024];

	if (db->isopen) {
		db->readonly = 1;
		if (!commonio_close(db)) {
			if (db->locked)
				dec_lock_count();
			return 0;
		}
	}
  	if (db->locked) {
		/*
		 * Unlock in reverse order: remove the lock file,
		 * then call ulckpwdf() (if used) on last unlock.
		 */
  		db->locked = 0;
		snprintf(lock, sizeof lock, "%s.lock", db->filename);
		unlink(lock);
		dec_lock_count();
		return 1;
	}
	return 0;
}
예제 #2
0
파일: shadowio.c 프로젝트: Romutk/SPIVT1
int spw_close (void)
{
	int retval = 0;
#ifdef WITH_TCB
	bool use_tcb = getdef_bool ("USE_TCB");

	if (use_tcb && (shadowtcb_drop_priv () == SHADOWTCB_FAILURE)) {
		return 0;
	}
#endif				/* WITH_TCB */
	retval = commonio_close (&shadow_db);
#ifdef WITH_TCB
	if (use_tcb && (shadowtcb_gain_priv () == SHADOWTCB_FAILURE)) {
		return 0;
	}
#endif				/* WITH_TCB */
	return retval;
}
예제 #3
0
int
spw_close(void)
{
	return commonio_close(&shadow_db);
}
예제 #4
0
int gr_close (void)
{
	return commonio_close (&group_db);
}
예제 #5
0
int sub_gid_close (void)
{
	return commonio_close (&subordinate_gid_db);
}
예제 #6
0
파일: pwio.c 프로젝트: DavidChenLiang/study
int pw_close (void)
{
	return commonio_close (&passwd_db);
}
예제 #7
0
파일: sgroupio.c 프로젝트: OPSF/uClinux
int sgr_close (void)
{
	return commonio_close (&gshadow_db);
}