hare

[hare] The Hare programming language
git clone https://git.torresjrjr.com/hare.git
Log | Files | Refs | README | LICENSE

fcntl.ha (864B)


      1 // SPDX-License-Identifier: MPL-2.0
      2 // (c) Hare authors <https://harelang.org>
      3 
      4 use errors;
      5 use fs;
      6 use io;
      7 use rt;
      8 
      9 // Returns the [[fs::flag]]s associated with a file descriptor. See fcntl(2).
     10 export fn getfl(file: io::file) (fs::flag | errors::error) = {
     11 	match (rt::fcntl(file, rt::F_GETFL, void)) {
     12 	case let i: int =>
     13 		return bsd_to_fsflags(i);
     14 	case let err: rt::errno =>
     15 		return errors::errno(err);
     16 	};
     17 };
     18 
     19 // Sets the [[fs::flag]]s associated with a file descriptor. Changes to the
     20 // access mode (e.g. [[fs::flag::RDWR]] and file creation flags (e.g.
     21 // [[fs::flag::CREATE]]) are ignored. See fcntl(2).
     22 export fn setfl(file: io::file, flags: fs::flag) (void | errors::error) = {
     23 	const flags = fsflags_to_bsd(flags)?;
     24 	match (rt::fcntl(file, rt::F_SETFL, flags)) {
     25 	case int =>
     26 		return;
     27 	case let err: rt::errno =>
     28 		return errors::errno(err);
     29 	};
     30 };