xref: /illumos-gate/usr/src/cmd/ttymon/tmlock.c (revision 3bb2c156)
17c478bd9Sstevel@tonic-gate /*
27c478bd9Sstevel@tonic-gate  * CDDL HEADER START
37c478bd9Sstevel@tonic-gate  *
47c478bd9Sstevel@tonic-gate  * The contents of this file are subject to the terms of the
57c478bd9Sstevel@tonic-gate  * Common Development and Distribution License, Version 1.0 only
67c478bd9Sstevel@tonic-gate  * (the "License").  You may not use this file except in compliance
77c478bd9Sstevel@tonic-gate  * with the License.
87c478bd9Sstevel@tonic-gate  *
97c478bd9Sstevel@tonic-gate  * You can obtain a copy of the license at usr/src/OPENSOLARIS.LICENSE
107c478bd9Sstevel@tonic-gate  * or http://www.opensolaris.org/os/licensing.
117c478bd9Sstevel@tonic-gate  * See the License for the specific language governing permissions
127c478bd9Sstevel@tonic-gate  * and limitations under the License.
137c478bd9Sstevel@tonic-gate  *
147c478bd9Sstevel@tonic-gate  * When distributing Covered Code, include this CDDL HEADER in each
157c478bd9Sstevel@tonic-gate  * file and include the License file at usr/src/OPENSOLARIS.LICENSE.
167c478bd9Sstevel@tonic-gate  * If applicable, add the following below this CDDL HEADER, with the
177c478bd9Sstevel@tonic-gate  * fields enclosed by brackets "[]" replaced with your own identifying
187c478bd9Sstevel@tonic-gate  * information: Portions Copyright [yyyy] [name of copyright owner]
197c478bd9Sstevel@tonic-gate  *
207c478bd9Sstevel@tonic-gate  * CDDL HEADER END
217c478bd9Sstevel@tonic-gate  */
227c478bd9Sstevel@tonic-gate /*
237c478bd9Sstevel@tonic-gate  * Copyright 2004 Sun Microsystems, Inc.  All rights reserved.
247c478bd9Sstevel@tonic-gate  * Use is subject to license terms.
257c478bd9Sstevel@tonic-gate  */
267c478bd9Sstevel@tonic-gate 
277c478bd9Sstevel@tonic-gate /*	Copyright (c) 1984, 1986, 1987, 1988, 1989 AT&T	*/
287c478bd9Sstevel@tonic-gate /*	  All Rights Reserved	*/
297c478bd9Sstevel@tonic-gate 
307c478bd9Sstevel@tonic-gate #include	<unistd.h>
317c478bd9Sstevel@tonic-gate #include	<string.h>
327c478bd9Sstevel@tonic-gate #include	<sys/termios.h>
33*3bb2c156SToomas Soome #include	"tmextern.h"
34*3bb2c156SToomas Soome 
35*3bb2c156SToomas Soome /* -------------------------------------------------------- */
367c478bd9Sstevel@tonic-gate /* the follwing are here so we can use routines in ulockf.c */
377c478bd9Sstevel@tonic-gate int	Debug = 0;
387c478bd9Sstevel@tonic-gate char	*Bnptr;
397c478bd9Sstevel@tonic-gate /* dummies for using uucp .o routines */
407c478bd9Sstevel@tonic-gate /*VARARGS*/
417c478bd9Sstevel@tonic-gate /*ARGSUSED*/
427c478bd9Sstevel@tonic-gate void
assert(char * s1,char * s2,int i1,char * s3,int i2)437c478bd9Sstevel@tonic-gate assert(char *s1, char *s2, int i1, char *s3, int i2)
44*3bb2c156SToomas Soome {
45*3bb2c156SToomas Soome }
467c478bd9Sstevel@tonic-gate 
477c478bd9Sstevel@tonic-gate void
cleanup(void)48*3bb2c156SToomas Soome cleanup(void)
49*3bb2c156SToomas Soome {
50*3bb2c156SToomas Soome }
517c478bd9Sstevel@tonic-gate 
527c478bd9Sstevel@tonic-gate void
logent(char * s1 __unused,char * s2 __unused)53*3bb2c156SToomas Soome logent(char *s1 __unused, char *s2 __unused)
54*3bb2c156SToomas Soome {
55*3bb2c156SToomas Soome 	/* so we can load ulockf() */
56*3bb2c156SToomas Soome }
577c478bd9Sstevel@tonic-gate 
587c478bd9Sstevel@tonic-gate /*
597c478bd9Sstevel@tonic-gate  *	lastname	- If the path name starts with "/dev/",
607c478bd9Sstevel@tonic-gate  *			  return the rest of the string.
617c478bd9Sstevel@tonic-gate  *			- Otherwise, return the last token of the path name
627c478bd9Sstevel@tonic-gate  */
637c478bd9Sstevel@tonic-gate char *
lastname(char * name)647c478bd9Sstevel@tonic-gate lastname(char *name)
657c478bd9Sstevel@tonic-gate {
667c478bd9Sstevel@tonic-gate 	char	*sp, *p;
677c478bd9Sstevel@tonic-gate 
687c478bd9Sstevel@tonic-gate 	sp = name;
697c478bd9Sstevel@tonic-gate 	if (strncmp(sp, "/dev/", 5) == 0)
707c478bd9Sstevel@tonic-gate 		sp += 5;
717c478bd9Sstevel@tonic-gate 	else
72*3bb2c156SToomas Soome 		while ((p = (char *)strchr(sp, '/')) != NULL) {
737c478bd9Sstevel@tonic-gate 			sp = ++p;
747c478bd9Sstevel@tonic-gate 		}
757c478bd9Sstevel@tonic-gate 	return (sp);
767c478bd9Sstevel@tonic-gate }
777c478bd9Sstevel@tonic-gate 
787c478bd9Sstevel@tonic-gate /*
797c478bd9Sstevel@tonic-gate  *	tm_lock(fd)	- set advisory lock on the device
807c478bd9Sstevel@tonic-gate  */
817c478bd9Sstevel@tonic-gate int
tm_lock(int fd)827c478bd9Sstevel@tonic-gate tm_lock(int fd)
837c478bd9Sstevel@tonic-gate {
847c478bd9Sstevel@tonic-gate 	return (fd_mklock(fd));
857c478bd9Sstevel@tonic-gate }
867c478bd9Sstevel@tonic-gate 
877c478bd9Sstevel@tonic-gate /*
887c478bd9Sstevel@tonic-gate  *	tm_checklock	- check if advisory lock is on
897c478bd9Sstevel@tonic-gate  */
907c478bd9Sstevel@tonic-gate int
tm_checklock(int fd)917c478bd9Sstevel@tonic-gate tm_checklock(int fd)
927c478bd9Sstevel@tonic-gate {
937c478bd9Sstevel@tonic-gate 	return (fd_cklock(fd));
947c478bd9Sstevel@tonic-gate }
957c478bd9Sstevel@tonic-gate 
967c478bd9Sstevel@tonic-gate /*
977c478bd9Sstevel@tonic-gate  * check_session(fd) - check if a session established on fd
987c478bd9Sstevel@tonic-gate  *		       return 1 if session exists, otherwise, return 0.
997c478bd9Sstevel@tonic-gate  *
1007c478bd9Sstevel@tonic-gate  */
1017c478bd9Sstevel@tonic-gate int
check_session(int fd)1027c478bd9Sstevel@tonic-gate check_session(int fd)
1037c478bd9Sstevel@tonic-gate {
1047c478bd9Sstevel@tonic-gate 	pid_t	sid;
1057c478bd9Sstevel@tonic-gate 
1067c478bd9Sstevel@tonic-gate 	if (ioctl(fd, TIOCGSID, &sid) == -1)
1077c478bd9Sstevel@tonic-gate 		return (0);
1087c478bd9Sstevel@tonic-gate 	else if (sid == 0)
1097c478bd9Sstevel@tonic-gate 		return (0);
1107c478bd9Sstevel@tonic-gate 	else
1117c478bd9Sstevel@tonic-gate 		return (1);
1127c478bd9Sstevel@tonic-gate }
113