Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
openSUSE:Leap:16.0:FactoryCandidates
uucp
uucp-1.07-locking.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File uucp-1.07-locking.patch of Package uucp
--- unix/serial.c | 38 ++++++++++++++++++++++++++++++++++++-- 1 file changed, 36 insertions(+), 2 deletions(-) --- unix/serial.c +++ unix/serial.c 2023-07-12 09:28:06.155507529 +0000 @@ -57,11 +57,10 @@ const char serial_rcsid[] = "$Id: serial #if HAVE_FCNTL_H #include <fcntl.h> -#else +#endif #if HAVE_SYS_FILE_H #include <sys/file.h> #endif -#endif #ifndef O_RDONLY #define O_RDONLY 0 @@ -817,6 +816,34 @@ fsserial_lock (qconn, fin, fuser) (void) fsserial_lockfile (FALSE, qconn); return FALSE; } +#else +#if HAVE_TIOCEXCL + /* If we can't mark it in use, return FALSE to indicate that the + lock failed. */ + if (ioctl (qsysdep->o, TIOCEXCL) < 0) + { + if (errno != EALREADY) + ulog (LOG_ERROR, "ioctl (TIOCEXCL): %s", strerror (errno)); +#ifdef TIOCNOTTY + (void) ioctl (qsysdep->o, TIOCNOTTY, (char *) NULL); +#endif + (void) close (qsysdep->o); + qsysdep->o = -1; + (void) fsserial_lockfile (FALSE, qconn); + return FALSE; + } +#if defined(LOCK_EX) && defined(LOCK_NB) + if (flock(qsysdep->o, LOCK_EX|LOCK_NB) < 0) + { + if (errno != EWOULDBLOCK) + ulog (LOG_ERROR, "flock (LOCK_EX|LOCK_NB): %s", strerror (errno)); + (void) close (qsysdep->o); + qsysdep->o = -1; + (void) fsserial_lockfile (FALSE, qconn); + return FALSE; + } +#endif +#endif #endif #if HAVE_DEV_INFO @@ -2220,6 +2247,13 @@ fsysdep_modem_end_dial (qconn, qdial) q->iflags = iflags; #if HAVE_TIOCSINUSE (void) ioctl (onew, TIOCSINUSE, 0); +#else +#if HAVE_TIOCEXCL + (void) ioctl (onew, TIOCEXCL); +#if defined(LOCK_EX) && defined(LOCK_NB) + (void) flock(onew, LOCK_EX|LOCK_NB); +#endif +#endif #endif } }
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor