cURL / Mailing Lists / curl-library / Single Mail

curl-library

[PATCH 2/2] the tool uses a more portable curlx_nonblock

From: Eric Wong <normalperson_at_yhbt.net>
Date: Mon, 29 Jun 2009 02:33:05 -0700

---
 src/Makefile.inc |    3 ++-
 src/main.c       |   19 ++-----------------
 2 files changed, 4 insertions(+), 18 deletions(-)
diff --git a/src/Makefile.inc b/src/Makefile.inc
index e0c1321..8ea5dae 100644
--- a/src/Makefile.inc
+++ b/src/Makefile.inc
@@ -4,7 +4,8 @@
 # the official API, but we re-use the code here to avoid duplication.
 CURLX_ONES =  $(top_srcdir)/lib/strtoofft.c \
 	$(top_srcdir)/lib/strdup.c \
-	$(top_srcdir)/lib/rawstr.c 
+	$(top_srcdir)/lib/rawstr.c \
+	$(top_srcdir)/lib/nonblock.c
 
 CURL_SOURCES = main.c hugehelp.c urlglob.c writeout.c writeenv.c \
 	getpass.c homedir.c curlutil.c os-specific.c
diff --git a/src/main.c b/src/main.c
index 94f8c0f..3a58c0d 100644
--- a/src/main.c
+++ b/src/main.c
@@ -3231,22 +3231,6 @@ static void go_sleep(long ms)
 #endif
 }
 
-/* maybe we could just use Curl_nonblock() instead ... */
-static void set_nonblocking(struct Configurable *config, int fd)
-{
-#if defined(HAVE_FCNTL_O_NONBLOCK)
-  int flags = fcntl(fd, F_GETFL, 0);
-
-  if (flags >= 0)
-    flags = fcntl(fd, F_SETFL, flags | O_NONBLOCK);
-  else
-    warnf(config, "fcntl failed on fd=%d: %s\n", fd, strerror(errno));
-#else
-  (void) config;
-  (void) fd;
-#endif
-}
-
 static size_t my_fwrite(void *buffer, size_t sz, size_t nmemb, void *stream)
 {
   size_t rc;
@@ -4523,7 +4507,8 @@ operate(struct Configurable *config, int argc, argv_item_t argv[])
         else if(uploadfile && curlx_strequal(uploadfile, "-")) {
           SET_BINMODE(stdin);
           infd = STDIN_FILENO;
-          set_nonblocking(config, infd);
+          if (curlx_nonblock((curl_socket_t)infd, TRUE) < 0)
+            warnf(config, "fcntl failed on fd=%d: %s\n", infd, strerror(errno));
         }
 
         if(uploadfile && config->resume_from_current)
-- 
Eric Wong
Received on 2009-06-29