Skip site navigation (1)Skip section navigation (2)
Date:      Tue, 25 Sep 2001 21:16:39 +0300
From:      Ruslan Ermilov <ru@FreeBSD.org>
To:        Matt Dillon <dillon@FreeBSD.org>
Cc:        cvs-committers@FreeBSD.org, cvs-all@FreeBSD.org
Subject:   Re: cvs commit: src/bin/cat cat.1 cat.c
Message-ID:  <20010925211639.C57333@sunbay.com>
In-Reply-To: <200109150039.f8F0dFZ41705@freefall.freebsd.org>; from dillon@FreeBSD.org on Fri, Sep 14, 2001 at 05:39:14PM -0700
References:  <200109150039.f8F0dFZ41705@freefall.freebsd.org>

next in thread | previous in thread | raw e-mail | index | archive | help
How about testing with stat(2) that an argument is a socket
thus eliminating the need to open(2) sockets and connect(2)
to non-sockets?

Index: cat.c
===================================================================
RCS file: /home/ncvs/src/bin/cat/cat.c,v
retrieving revision 1.17
diff -u -p -r1.17 cat.c
--- cat.c	2001/09/15 00:39:14	1.17
+++ cat.c	2001/09/25 18:17:30
@@ -135,6 +135,9 @@ scanfiles(argv, cooked)
 {
 	int i = 0;
 	char *path;
+#ifndef NO_UDOM_SUPPORT
+	struct stat sb;
+#endif
 
 	while ((path = argv[i]) != NULL || i == 0) {
 		int fd;
@@ -144,10 +147,15 @@ scanfiles(argv, cooked)
 			fd = 0;
 		} else {
 			filename = path;
-			fd = open(path, O_RDONLY);
+#ifndef NO_UDOM_SUPPORT
+			if ((fd = stat(path, &sb)) == 0) {
+				if (S_ISSOCK(sb.st_mode))
+					fd = udom_open(path, O_RDONLY, 0);
+				else
+#endif
+					fd = open(path, O_RDONLY);
 #ifndef NO_UDOM_SUPPORT
-			if (fd < 0 && errno == EOPNOTSUPP)
-				fd = udom_open(path, O_RDONLY, 0);
+			}
 #endif
 		}
 		if (fd < 0) {

On Fri, Sep 14, 2001 at 05:39:14PM -0700, Matt Dillon wrote:
> dillon      2001/09/14 17:39:14 PDT
> 
>   Modified files:
>     bin/cat              cat.1 cat.c 
>   Log:
>   Give /bin/cat the ability to connect to and read unix-domain sockets
>   
>   MFC after:	1 week
>   
>   Revision  Changes    Path
>   1.18      +7 -2      src/bin/cat/cat.1
>   1.17      +103 -56   src/bin/cat/cat.c

-- 
Ruslan Ermilov		Oracle Developer/DBA,
ru@sunbay.com		Sunbay Software AG,
ru@FreeBSD.org		FreeBSD committer,
+380.652.512.251	Simferopol, Ukraine

http://www.FreeBSD.org	The Power To Serve
http://www.oracle.com	Enabling The Information Age

To Unsubscribe: send mail to majordomo@FreeBSD.org
with "unsubscribe cvs-all" in the body of the message




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?20010925211639.C57333>