Simplify setting binary mode on file-descriptors.
authorGisle Vanem <gvanem@broadpark.no>
Tue, 3 Apr 2007 10:30:36 +0000 (10:30 +0000)
committerGisle Vanem <gvanem@broadpark.no>
Tue, 3 Apr 2007 10:30:36 +0000 (10:30 +0000)
Work around the non-standard _setmode() in Metaware's HighC.

src/main.c

index 1c9bde1..612e5c2 100644 (file)
 
 #define DEFAULT_MAXREDIRS  50L
 
+#if defined(O_BINARY) && defined(HAVE_SETMODE)
+  #ifdef __HIGHC__
+    #define SET_BINMODE(file) _setmode(file,O_BINARY)
+  #else
+    #define SET_BINMODE(file) setmode(fileno(file),O_BINARY)
+  #endif
+#else
+  #define SET_BINMODE(file)   ((void)0)
+#endif
+
 #ifdef __DJGPP__
 #include <dos.h>
 
@@ -2015,10 +2025,8 @@ static ParameterError getparameter(char *flag, /* f or -long-flag */
 
           if(curlx_strequal("-", nextarg)) {
             file = stdin;
-#if defined(O_BINARY) && defined(HAVE_SETMODE)
             if(subletter == 'b') /* forced binary */
-              setmode(fileno(stdin), O_BINARY);
-#endif
+              SET_BINMODE(stdin);
           }
           else {
             file = fopen(nextarg, "rb");
@@ -3967,9 +3975,7 @@ operate(struct Configurable *config, int argc, char *argv[])
 
         }
         else if(uploadfile && curlx_strequal(uploadfile, "-")) {
-#if defined(O_BINARY) && defined(HAVE_SETMODE)
-          setmode(fileno(stdin), O_BINARY);
-#endif
+          SET_BINMODE(stdin);
           infd = stdin;
         }
 
@@ -4030,13 +4036,11 @@ operate(struct Configurable *config, int argc, char *argv[])
         if(!config->errors)
           config->errors = stderr;
 
-#if defined(O_BINARY) && defined(HAVE_SETMODE)
         if(!outfile && !(config->conf & CONF_GETTEXT)) {
           /* We get the output to stdout and we have not got the ASCII/text flag,
              then set stdout to be binary */
-          setmode( fileno(stdout), O_BINARY );
+          SET_BINMODE(stdout);
         }
-#endif
 
         if(1 == config->tcp_nodelay)
           my_setopt(curl, CURLOPT_TCP_NODELAY, 1);