[SystemZ][z/OS] Fix return values in AutoConversion functions
authorAbhina Sreeskantharajan <Abhina.Sreeskantharajan@ibm.com>
Wed, 5 May 2021 13:41:45 +0000 (09:41 -0400)
committerAbhina Sreeskantharajan <Abhina.Sreeskantharajan@ibm.com>
Wed, 5 May 2021 13:43:14 +0000 (09:43 -0400)
My previous patch https://reviews.llvm.org/rG1527a5e4b4834e65678f9c30f786a2f4c17932bf incorrectly set int return values instead of std::error_code. This patch correctly returns and std::error_code value.

Reviewed By: fanbo-meng, Jonathan.Crowther

Differential Revision: https://reviews.llvm.org/D101904

llvm/lib/Support/AutoConvert.cpp

index e35b1c8..4fb7e24 100644 (file)
@@ -23,7 +23,9 @@ std::error_code llvm::disableAutoConversion(int FD) {
       0,                // pccsid
       (short)FT_BINARY, // fccsid
   };
-  return fcntl(FD, F_CONTROL_CVT, &Convert);
+  if (fcntl(FD, F_CONTROL_CVT, &Convert) == -1)
+    return std::error_code(errno, std::generic_category());
+  return std::error_code();
 }
 
 std::error_code llvm::enableAutoConversion(int FD) {
@@ -34,7 +36,7 @@ std::error_code llvm::enableAutoConversion(int FD) {
   };
 
   if (fcntl(FD, F_CONTROL_CVT, &Query) == -1)
-    return -1;
+    return std::error_code(errno, std::generic_category());
 
   Query.cvtcmd = SETCVTALL;
   Query.pccsid =
@@ -43,7 +45,9 @@ std::error_code llvm::enableAutoConversion(int FD) {
           : CCSID_UTF_8;
   // Assume untagged files to be IBM-1047 encoded.
   Query.fccsid = (Query.fccsid == FT_UNTAGGED) ? CCSID_IBM_1047 : Query.fccsid;
-  return fcntl(FD, F_CONTROL_CVT, &Query);
+  if (fcntl(FD, F_CONTROL_CVT, &Query) == -1)
+    return std::error_code(errno, std::generic_category());
+  return std::error_code();
 }
 
 std::error_code llvm::setFileTag(int FD, int CCSID, bool Text) {
@@ -55,7 +59,9 @@ std::error_code llvm::setFileTag(int FD, int CCSID, bool Text) {
   Tag.ft_deferred = 0;
   Tag.ft_rsvflags = 0;
 
-  return fcntl(FD, F_SETTAG, &Tag);
+  if (fcntl(FD, F_SETTAG, &Tag) == -1)
+    return std::error_code(errno, std::generic_category());
+  return std::error_code();
 }
 
 #endif // __MVS__