New functions
[openssl.git] / crypto / bio / bss_file.c
index f31e0a50ee170d97073a6d84493fbcc88972a0e7..8b3ff278d901b2c3d021c0f32e82e40611446b6c 100644 (file)
@@ -103,7 +103,10 @@ BIO *BIO_new_file(const char *filename, const char *mode)
                {
                SYSerr(SYS_F_FOPEN,get_last_sys_error());
                ERR_add_error_data(5,"fopen('",filename,"','",mode,"')");
-               BIOerr(BIO_F_BIO_NEW_FILE,ERR_R_SYS_LIB);
+               if (errno == ENOENT)
+                       BIOerr(BIO_F_BIO_NEW_FILE,BIO_R_NO_SUCH_FILE);
+               else
+                       BIOerr(BIO_F_BIO_NEW_FILE,ERR_R_SYS_LIB);
                return(NULL);
                }
        if ((ret=BIO_new(BIO_s_file_internal())) == NULL)
@@ -210,6 +213,11 @@ static long MS_CALLBACK file_ctrl(BIO *b, int cmd, long num, void *ptr)
                        _setmode(fileno((FILE *)ptr),_O_TEXT);
                else
                        _setmode(fileno((FILE *)ptr),_O_BINARY);
+#elif defined(OPENSSL_SYS_OS2)
+               if (num & BIO_FP_TEXT)
+                       setmode(fileno((FILE *)ptr), O_TEXT);
+               else
+                       setmode(fileno((FILE *)ptr), O_BINARY);
 #endif
                break;
        case BIO_C_SET_FILENAME: