/* Copyright (C) 2015-2020, Dirk Krause SPDX-License-Identifier: BSD-3-Clause */ /* WARNING: This file was generated by the dkct program (see http://dktools.sourceforge.net/ for details). Changes you make here will be lost if dkct is run again! You should modify the original source and run dkct on it. Original source: dk4fdrda.ctr */ /** @file dk4fdrda.c The dk4fdrda module. */ #line 55 "dk4fdrda.ctr" #include "dk4conf.h" #include "dk4fdrda.h" #include "dk4fdrde.h" #if DK4_HAVE_UNISTD_H #ifndef UNISTD_H_INCLUDED #include #define UNISTD_H_INCLUDED 1 #endif #endif #if DK4_HAVE_ERRNO_H #ifndef ERRNO_H_INCLUDED #include #define ERRNO_H_INCLUDED 1 #endif #endif #if DK4_HAVE_IO_H #ifndef IO_H_INCLUDED #include #define IO_H_INCLUDED 1 #endif #endif #line 84 "dk4fdrda.ctr" #ifdef RW_MAX #undef RW_MAX #endif #if DK4_ON_WINDOWS /** Maximum number of bytes for read or write operation. */ #define RW_MAX (INT_MAX) #else /** Maximum number of bytes for read or write operation. */ #define RW_MAX ((SIZE_MAX) / 2U) #endif int dk4fd_read_app( int fd, void *buffer, size_t *psz, const dkChar *fn, dk4_app_t *app ) { #if DK4_ON_WINDOWS int res; #else ssize_t res; #endif int back = 0; #line 114 "dk4fdrda.ctr" if ((-1 != fd) && (NULL != buffer) && (NULL != psz)) { if (0 < *psz) { if ((dk4_um_t)RW_MAX >= (dk4_um_t)(*psz)) { errno = 0; #if DK4_ON_WINDOWS res = _read(fd, buffer, (unsigned)(*psz)); #else res = read(fd, buffer, *psz); #endif if (0 <= res) { if (0 < res) { #line 125 "dk4fdrda.ctr" back = 1; *psz = (size_t)res; } else { #line 128 "dk4fdrda.ctr" back = 1; *psz = (size_t)0; } } else { #line 132 "dk4fdrda.ctr" dk4fd_read_error_msg(app, fn, errno); } } } else { #line 136 "dk4fdrda.ctr" } } else { #line 138 "dk4fdrda.ctr" } #line 139 "dk4fdrda.ctr" return back; }