linux-ext4.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* [e2fsprogs PATCH] libext2fs: fix 32-bit Windows build
@ 2023-01-04  9:03 Eric Biggers
  2023-01-04 16:54 ` Darrick J. Wong
  0 siblings, 1 reply; 4+ messages in thread
From: Eric Biggers @ 2023-01-04  9:03 UTC (permalink / raw)
  To: linux-ext4; +Cc: Paulo Antonio Alvarez

From: Eric Biggers <ebiggers@google.com>

_WIN32 is the standard macro to detect Windows, regardless of 32-bit or
64-bit.  _WIN64 is for 64-bit Windows only.  Use _WIN32 where _WIN64 was
incorrectly being used.

This fixes several 32-bit Windows build errors, for example this one:

plausible.c: In function ‘print_ext2_info’:
plausible.c:109:31: error: ‘unix_io_manager’ undeclared (first use in this function); did you mean ‘undo_io_manager’?
  109 |                               unix_io_manager,
      |                               ^~~~~~~~~~~~~~~
      |                               undo_io_manager

Fixes: 86b6db9f5a43 ("libext2fs: code adaptation to use the Windows IO manager")
Cc: Paulo Antonio Alvarez <pauloaalvarez@gmail.com>
Signed-off-by: Eric Biggers <ebiggers@google.com>
---
 lib/ext2fs/getsectsize.c | 12 ++++++------
 lib/support/plausible.c  |  2 +-
 util/subst.c             |  4 ++--
 3 files changed, 9 insertions(+), 9 deletions(-)

diff --git a/lib/ext2fs/getsectsize.c b/lib/ext2fs/getsectsize.c
index 3a461eb9..bd978c53 100644
--- a/lib/ext2fs/getsectsize.c
+++ b/lib/ext2fs/getsectsize.c
@@ -51,10 +51,10 @@
  */
 errcode_t ext2fs_get_device_sectsize(const char *file, int *sectsize)
 {
-#ifdef _WIN64
+#ifdef _WIN32
 	*sectsize = 512; // just guessing
 	return 0;
-#else // not _WIN64
+#else // not _WIN32
 
 	int	fd;
 
@@ -78,7 +78,7 @@ errcode_t ext2fs_get_device_sectsize(const char *file, int *sectsize)
 	close(fd);
 	return 0;
 
-#endif // ifdef _WIN64
+#endif // ifdef _WIN32
 }
 
 /*
@@ -117,11 +117,11 @@ int ext2fs_get_dio_alignment(int fd)
  */
 errcode_t ext2fs_get_device_phys_sectsize(const char *file, int *sectsize)
 {
-#ifdef _WIN64
+#ifdef _WIN32
 
 	return ext2fs_get_device_sectsize(file, sectsize);
 
-#else // not _WIN64
+#else // not _WIN32
 
 	int	fd;
 
@@ -147,5 +147,5 @@ errcode_t ext2fs_get_device_phys_sectsize(const char *file, int *sectsize)
 	close(fd);
 	return 0;
 
-#endif // ifdef _WIN64
+#endif // ifdef _WIN32
 }
diff --git a/lib/support/plausible.c b/lib/support/plausible.c
index bbed2a70..349aa2c4 100644
--- a/lib/support/plausible.c
+++ b/lib/support/plausible.c
@@ -103,7 +103,7 @@ static void print_ext2_info(const char *device)
 	time_t			tm;
 
 	retval = ext2fs_open2(device, 0, EXT2_FLAG_64BITS, 0, 0,
-#ifdef _WIN64
+#ifdef _WIN32
 			      windows_io_manager,
 #else
 			      unix_io_manager,
diff --git a/util/subst.c b/util/subst.c
index c0eda5cf..be2a0dda 100644
--- a/util/subst.c
+++ b/util/subst.c
@@ -434,7 +434,7 @@ int main(int argc, char **argv)
 					printf("Using original atime\n");
 				set_utimes(outfn, fileno(old), tv);
 			}
-#ifndef _WIN64
+#ifndef _WIN32
 			if (ofd >= 0)
 				(void) fchmod(ofd, 0444);
 #endif
@@ -444,7 +444,7 @@ int main(int argc, char **argv)
 		} else {
 			if (verbose)
 				printf("Creating or replacing %s.\n", outfn);
-#ifndef _WIN64
+#ifndef _WIN32
 			if (ofd >= 0)
 				(void) fchmod(ofd, 0444);
 #endif
-- 
2.39.0


^ permalink raw reply related	[flat|nested] 4+ messages in thread

* Re: [e2fsprogs PATCH] libext2fs: fix 32-bit Windows build
  2023-01-04  9:03 [e2fsprogs PATCH] libext2fs: fix 32-bit Windows build Eric Biggers
@ 2023-01-04 16:54 ` Darrick J. Wong
  2023-01-04 20:05   ` Eric Biggers
  0 siblings, 1 reply; 4+ messages in thread
From: Darrick J. Wong @ 2023-01-04 16:54 UTC (permalink / raw)
  To: Eric Biggers; +Cc: linux-ext4, Paulo Antonio Alvarez

On Wed, Jan 04, 2023 at 01:03:01AM -0800, Eric Biggers wrote:
> From: Eric Biggers <ebiggers@google.com>
> 
> _WIN32 is the standard macro to detect Windows, regardless of 32-bit or
> 64-bit.  _WIN64 is for 64-bit Windows only.  Use _WIN32 where _WIN64 was
> incorrectly being used.
> 
> This fixes several 32-bit Windows build errors, for example this one:

Color me impressed, I would have applied to deprecate Windows support
entirely, particularly given the existence of WSL.

That said ... back in the day, IIRC it was _WINDOWS that one was
supposed to check for a Windows build, and the _WIN{16,32,64} variants
existed to detect specific variants of it.  But, that was 25 years ago;
for all I know that's passé and _WIN32 is fine.

--D

> plausible.c: In function ‘print_ext2_info’:
> plausible.c:109:31: error: ‘unix_io_manager’ undeclared (first use in this function); did you mean ‘undo_io_manager’?
>   109 |                               unix_io_manager,
>       |                               ^~~~~~~~~~~~~~~
>       |                               undo_io_manager
> 
> Fixes: 86b6db9f5a43 ("libext2fs: code adaptation to use the Windows IO manager")
> Cc: Paulo Antonio Alvarez <pauloaalvarez@gmail.com>
> Signed-off-by: Eric Biggers <ebiggers@google.com>
> ---
>  lib/ext2fs/getsectsize.c | 12 ++++++------
>  lib/support/plausible.c  |  2 +-
>  util/subst.c             |  4 ++--
>  3 files changed, 9 insertions(+), 9 deletions(-)
> 
> diff --git a/lib/ext2fs/getsectsize.c b/lib/ext2fs/getsectsize.c
> index 3a461eb9..bd978c53 100644
> --- a/lib/ext2fs/getsectsize.c
> +++ b/lib/ext2fs/getsectsize.c
> @@ -51,10 +51,10 @@
>   */
>  errcode_t ext2fs_get_device_sectsize(const char *file, int *sectsize)
>  {
> -#ifdef _WIN64
> +#ifdef _WIN32
>  	*sectsize = 512; // just guessing
>  	return 0;
> -#else // not _WIN64
> +#else // not _WIN32
>  
>  	int	fd;
>  
> @@ -78,7 +78,7 @@ errcode_t ext2fs_get_device_sectsize(const char *file, int *sectsize)
>  	close(fd);
>  	return 0;
>  
> -#endif // ifdef _WIN64
> +#endif // ifdef _WIN32
>  }
>  
>  /*
> @@ -117,11 +117,11 @@ int ext2fs_get_dio_alignment(int fd)
>   */
>  errcode_t ext2fs_get_device_phys_sectsize(const char *file, int *sectsize)
>  {
> -#ifdef _WIN64
> +#ifdef _WIN32
>  
>  	return ext2fs_get_device_sectsize(file, sectsize);
>  
> -#else // not _WIN64
> +#else // not _WIN32
>  
>  	int	fd;
>  
> @@ -147,5 +147,5 @@ errcode_t ext2fs_get_device_phys_sectsize(const char *file, int *sectsize)
>  	close(fd);
>  	return 0;
>  
> -#endif // ifdef _WIN64
> +#endif // ifdef _WIN32
>  }
> diff --git a/lib/support/plausible.c b/lib/support/plausible.c
> index bbed2a70..349aa2c4 100644
> --- a/lib/support/plausible.c
> +++ b/lib/support/plausible.c
> @@ -103,7 +103,7 @@ static void print_ext2_info(const char *device)
>  	time_t			tm;
>  
>  	retval = ext2fs_open2(device, 0, EXT2_FLAG_64BITS, 0, 0,
> -#ifdef _WIN64
> +#ifdef _WIN32
>  			      windows_io_manager,
>  #else
>  			      unix_io_manager,
> diff --git a/util/subst.c b/util/subst.c
> index c0eda5cf..be2a0dda 100644
> --- a/util/subst.c
> +++ b/util/subst.c
> @@ -434,7 +434,7 @@ int main(int argc, char **argv)
>  					printf("Using original atime\n");
>  				set_utimes(outfn, fileno(old), tv);
>  			}
> -#ifndef _WIN64
> +#ifndef _WIN32
>  			if (ofd >= 0)
>  				(void) fchmod(ofd, 0444);
>  #endif
> @@ -444,7 +444,7 @@ int main(int argc, char **argv)
>  		} else {
>  			if (verbose)
>  				printf("Creating or replacing %s.\n", outfn);
> -#ifndef _WIN64
> +#ifndef _WIN32
>  			if (ofd >= 0)
>  				(void) fchmod(ofd, 0444);
>  #endif
> -- 
> 2.39.0
> 

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [e2fsprogs PATCH] libext2fs: fix 32-bit Windows build
  2023-01-04 16:54 ` Darrick J. Wong
@ 2023-01-04 20:05   ` Eric Biggers
  2023-01-04 20:53     ` Eric Biggers
  0 siblings, 1 reply; 4+ messages in thread
From: Eric Biggers @ 2023-01-04 20:05 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: linux-ext4, Paulo Antonio Alvarez

On Wed, Jan 04, 2023 at 08:54:27AM -0800, Darrick J. Wong wrote:
> On Wed, Jan 04, 2023 at 01:03:01AM -0800, Eric Biggers wrote:
> > From: Eric Biggers <ebiggers@google.com>
> > 
> > _WIN32 is the standard macro to detect Windows, regardless of 32-bit or
> > 64-bit.  _WIN64 is for 64-bit Windows only.  Use _WIN32 where _WIN64 was
> > incorrectly being used.
> > 
> > This fixes several 32-bit Windows build errors, for example this one:
> 
> Color me impressed, I would have applied to deprecate Windows support
> entirely, particularly given the existence of WSL.

Yes, now that everyone has migrated to GNU Hurd, which is fully supported by
e2fsprogs, there's no need for Windows which no one uses anymore :-)

The reason I have to care about e2fsprogs support for Windows is because the
Windows build of the Android SDK Platform tools includes a Windows binary of
mke2fs, so that it can be used by 'fastboot format'.

I am sure that Ted would be very unhappy if Android had to bring back
'make_ext4fs' due to e2fsprogs removing Windows support...

(One way out of this for Android would be to remove fastboot's support for
formatting filesystems, and just have it support wiping them.  The actual
formatting would then always happen on the Android device itself, using the
Linux build of e2fsprogs.  I'm not sure why that can't be done; however, I do
know that it's been brought up many times before and still hasn't happened...)

Of course, a second problem that I ran into after I sent this patch without
properly testing it, is that misc/mke2fs.c is hard-coding unix_io_manager.  So
an additional fix would be needed to make it use windows_io_manager on Windows,
now that Windows has its own windows_io_manager instead of unix_io_manager.

Paulo, just to double check: was your intent when adding the windows_io_manager
that it *always* replace unix_io_manager on Windows?

- Eric

^ permalink raw reply	[flat|nested] 4+ messages in thread

* Re: [e2fsprogs PATCH] libext2fs: fix 32-bit Windows build
  2023-01-04 20:05   ` Eric Biggers
@ 2023-01-04 20:53     ` Eric Biggers
  0 siblings, 0 replies; 4+ messages in thread
From: Eric Biggers @ 2023-01-04 20:53 UTC (permalink / raw)
  To: Darrick J. Wong; +Cc: linux-ext4, Paulo Antonio Alvarez

On Wed, Jan 04, 2023 at 08:05:09PM +0000, Eric Biggers wrote:
> On Wed, Jan 04, 2023 at 08:54:27AM -0800, Darrick J. Wong wrote:
> > On Wed, Jan 04, 2023 at 01:03:01AM -0800, Eric Biggers wrote:
> > > From: Eric Biggers <ebiggers@google.com>
> > > 
> > > _WIN32 is the standard macro to detect Windows, regardless of 32-bit or
> > > 64-bit.  _WIN64 is for 64-bit Windows only.  Use _WIN32 where _WIN64 was
> > > incorrectly being used.
> > > 
> > > This fixes several 32-bit Windows build errors, for example this one:
> > 
> > Color me impressed, I would have applied to deprecate Windows support
> > entirely, particularly given the existence of WSL.

Note that WSL doesn't really eliminate the need for native Windows binaries,
since WSL is something that has to be explicitly enabled and configured; see
https://learn.microsoft.com/en-us/windows/wsl/install.  It's not like running a
32-bit binary on a 64-bit system which is something that just works.  You can't
just take a Linux binary and run it on Windows.

- Eric

^ permalink raw reply	[flat|nested] 4+ messages in thread

end of thread, other threads:[~2023-01-04 20:54 UTC | newest]

Thread overview: 4+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2023-01-04  9:03 [e2fsprogs PATCH] libext2fs: fix 32-bit Windows build Eric Biggers
2023-01-04 16:54 ` Darrick J. Wong
2023-01-04 20:05   ` Eric Biggers
2023-01-04 20:53     ` Eric Biggers

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).