Skip to content

Commit

Permalink
Read/write files in binary mode (#1698)
Browse files Browse the repository at this point in the history
  • Loading branch information
zcbenz authored Dec 14, 2024
1 parent 50f3535 commit 635117c
Showing 1 changed file with 14 additions and 2 deletions.
16 changes: 14 additions & 2 deletions mlx/io/load.h
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,14 @@

#include "mlx/io/threadpool.h"

// Strictly we need to operate on files in binary mode (to avoid \r getting
// automatically inserted), but every modern system except for Windows no
// longer differentiates between binary and text files and for them define
// the flag as no-op.
#ifndef O_BINARY
#define O_BINARY 0
#endif

namespace mlx::core {

namespace io {
Expand Down Expand Up @@ -51,7 +59,8 @@ class Writer {
class ParallelFileReader : public Reader {
public:
explicit ParallelFileReader(std::string file_path)
: fd_(open(file_path.c_str(), O_RDONLY)), label_(std::move(file_path)) {}
: fd_(open(file_path.c_str(), O_RDONLY | O_BINARY)),
label_(std::move(file_path)) {}

~ParallelFileReader() override {
close(fd_);
Expand Down Expand Up @@ -93,7 +102,10 @@ class ParallelFileReader : public Reader {
class FileWriter : public Writer {
public:
explicit FileWriter(std::string file_path)
: fd_(open(file_path.c_str(), O_CREAT | O_WRONLY | O_TRUNC, 0644)),
: fd_(open(
file_path.c_str(),
O_CREAT | O_WRONLY | O_TRUNC | O_BINARY,
0644)),
label_(std::move(file_path)) {}

~FileWriter() override {
Expand Down

0 comments on commit 635117c

Please sign in to comment.