From ff567f7943f50b88dea14cd27636168ba2d319b5 Mon Sep 17 00:00:00 2001
From: Rob Landley <rob@landley.net>
Date: Tue, 11 Oct 2005 07:26:15 +0000
Subject: The check for EROFS was wrong.  For example, if you try to mount a
 filesystem appended to an executable that's being run (yes, I'm doing this)
 you get EPERM, but mounting readonly fixes it.  Doing the fallback all the
 time shouldn't hurt, and is one less test.

---
 libbb/loop.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)

(limited to 'libbb')

diff --git a/libbb/loop.c b/libbb/loop.c
index 25f66fcea..f7029d591 100644
--- a/libbb/loop.c
+++ b/libbb/loop.c
@@ -88,10 +88,9 @@ extern int set_loop(char **device, const char *file, int offset)
 	int i, dfd, ffd, mode, rc=1;
 
 	// Open the file.  Barf if this doesn't work.
-	if((ffd = open(file, mode=O_RDWR))<0)
-		if(errno!=EROFS || (ffd=open(file,mode=O_RDONLY))<0)
-			return errno;
-
+	if((ffd = open(file, mode=O_RDWR))<0 && (ffd = open(file,mode=O_RDONLY))<0)
+		return errno;
+	
 	// Find a loop device
 	for(i=0;rc;i++) {
 		sprintf(dev, LOOP_FORMAT, i++);
-- 
cgit v1.2.3-55-g6feb