File utod.c.patch of Package djgpp-dosutils
--- utod.c.orig 2020-01-10 12:21:18.657192454 +0100
+++ utod.c 2024-04-27 00:11:41.838225226 +0200
@@ -6,6 +6,11 @@
/* Copyright (C) 1996 DJ Delorie, see COPYING.DJ for details */
/* Copyright (C) 1995 DJ Delorie, see COPYING.DJ for details */
/* Modified by A.Pavenis to work also in different Unix clones */
+
+/* for 32bit applications, we want 64bit */
+#define _LARGEFILE_SOURCE
+#define _FILE_OFFSET_BITS 64
+
#include <stdio.h>
#include <fcntl.h>
#include <sys/stat.h>
@@ -22,9 +27,11 @@
static int
utod(char *fname)
{
- int i, k, sf, df, l, l2=0, err=0, iscr=0;
+ int sf, df, err=0, iscr=0;
+ ssize_t i, k, l, l2 = 0;
char buf[16384], buf2[32768];
char tfname[FILENAME_MAX], *bn, *w;
+ char suffix[20];
struct stat st;
struct utimbuf tim1;
@@ -44,7 +51,8 @@ utod(char *fname)
if (*w=='/' || *w=='\\' || *w==':')
bn = w+1;
if (bn) *bn=0;
- strcat (tfname,"utod.tm$");
+ sprintf (suffix, "utod.tm$.%d", getpid());
+ strcat (tfname, suffix);
df = open(tfname, O_WRONLY|O_CREAT|O_TRUNC|O_BINARY, 0644);
if (df < 0)
@@ -62,7 +70,7 @@ utod(char *fname)
iscr=(buf[i]==13 ? 1 : 0);
buf2[k++]=buf[i];
}
- l2=write(df, buf2, k);
+ l2=write(df, buf2, (size_t)k);
if (l2<0) break;
if (l2!=k) { err=1; break; }
}