📄 flock.c
字号:
/* * Public Release 3 * * $Id: flock.c,v 1.5 1999/03/21 09:05:41 naamato Exp $ *//* * ------------------------------------------------------------------------ * * Copyright (c) 1996, 1997 The Regents of the University of Michigan * All Rights Reserved * * Royalty-free licenses to redistribute GateD Release * 3 in whole or in part may be obtained by writing to: * * Merit GateDaemon Project * 4251 Plymouth Road, Suite C * Ann Arbor, MI 48105 * * THIS SOFTWARE IS PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER * EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE REGENTS OF THE * UNIVERSITY OF MICHIGAN AND MERIT DO NOT WARRANT THAT THE * FUNCTIONS CONTAINED IN THE SOFTWARE WILL MEET LICENSEE'S REQUIREMENTS OR * THAT OPERATION WILL BE UNINTERRUPTED OR ERROR FREE. The Regents of the * University of Michigan and Merit shall not be liable for * any special, indirect, incidental or consequential damages with respect * to any claim by Licensee or any third party arising from use of the * software. GateDaemon was originated and developed through release 3.0 * by Cornell University and its collaborators. * * Please forward bug fixes, enhancements and questions to the * gated mailing list: gated-people@gated.merit.edu. * * ------------------------------------------------------------------------ * * Copyright (c) 1990,1991,1992,1993,1994,1995 by Cornell University. * All rights reserved. * * THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT ANY * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, WITHOUT * LIMITATION, THE IMPLIED WARRANTIES OF MERCHANTABILITY * AND FITNESS FOR A PARTICULAR PURPOSE. * * GateD is based on Kirton's EGP, UC Berkeley's routing * daemon (routed), and DCN's HELLO routing Protocol. * Development of GateD has been supported in part by the * National Science Foundation. * * ------------------------------------------------------------------------ * * Portions of this software may fall under the following * copyrights: * * Copyright (c) 1988 Regents of the University of California. * All rights reserved. * * Redistribution and use in source and binary forms are * permitted provided that the above copyright notice and * this paragraph are duplicated in all such forms and that * any documentation, advertising materials, and other * materials related to such distribution and use * acknowledge that the software was developed by the * University of California, Berkeley. The name of the * University may not be used to endorse or promote * products derived from this software without specific * prior written permission. THIS SOFTWARE IS PROVIDED * ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED WARRANTIES, * INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF * MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. */#define INCLUDE_FILE#define INCLUDE_STAT#include "include.h"/* Emulation of flock() using lockf() */#if __GNUC__ >= 2PROTOTYPE(flock, int, (int, int));#endif /* __GNUC__ >= 2 */intflock(fd, flags)int fd;int flags;{#ifdef F_LOCK int rc; int cmd = 0; switch (BIT_TEST(flags, LOCK_EX|LOCK_SH|LOCK_UN)) { case LOCK_SH|LOCK_EX: case LOCK_EX: cmd = BIT_TEST(flags, LOCK_NB) ? F_TLOCK : F_LOCK; break; case LOCK_UN: cmd = F_ULOCK; break; case LOCK_SH: /* We don`t do shared locks */ default: errno = EINVAL; return -1; } lseek(fd, 0L, 0); NON_INTR(rc, lockf(fd, cmd, 0L)); if (rc < 0) { switch (errno) { case EACCES: case EAGAIN: errno = EWOULDBLOCK; break; default: break; } } return rc;#else /* F_LOCK */cannot compile#endif /* F_LOCK */}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -