Re: [Libguestfs] [libguestfs PATCH] lib: remove guestfs_int_cmd_clear_close_files()

2023-07-12 Thread Laszlo Ersek
On 7/11/23 15:10, Richard W.M. Jones wrote:
> On Tue, Jul 11, 2023 at 01:39:06PM +0200, Laszlo Ersek wrote:
>> The last (only?) caller of guestfs_int_cmd_clear_close_files() disappeared
>> in commit e4c396888056 ("lib/info: Remove /dev/fd hacking and pass a true
>> filename to qemu-img info.", 2018-01-23), part of v1.37.36.
>>
>> Simplify the code by removing guestfs_int_cmd_clear_close_files().
>>
>> Signed-off-by: Laszlo Ersek 
>> ---
>>  lib/guestfs-internal.h |  1 -
>>  lib/command.c  | 37 ++---
>>  2 files changed, 10 insertions(+), 28 deletions(-)
>>
>> diff --git a/lib/guestfs-internal.h b/lib/guestfs-internal.h
>> index fb55e02614f5..c7ef32277e93 100644
>> --- a/lib/guestfs-internal.h
>> +++ b/lib/guestfs-internal.h
>> @@ -751,7 +751,6 @@ extern void guestfs_int_cmd_set_stdout_callback (struct 
>> command *, cmd_stdout_ca
>>  extern void guestfs_int_cmd_set_stderr_to_stdout (struct command *);
>>  extern void guestfs_int_cmd_set_child_rlimit (struct command *, int 
>> resource, long limit);
>>  extern void guestfs_int_cmd_clear_capture_errors (struct command *);
>> -extern void guestfs_int_cmd_clear_close_files (struct command *);
>>  extern void guestfs_int_cmd_set_child_callback (struct command *, 
>> cmd_child_callback child_callback, void *data);
>>  extern int guestfs_int_cmd_run (struct command *);
>>  extern void guestfs_int_cmd_close (struct command *);
>> diff --git a/lib/command.c b/lib/command.c
>> index 515ef624bd96..82a47bafa9e5 100644
>> --- a/lib/command.c
>> +++ b/lib/command.c
>> @@ -152,9 +152,6 @@ struct command
>>/* When using the pipe_* APIs, stderr is pointed to a temporary file. */
>>char *error_file;
>>  
>> -  /* Close file descriptors (defaults to true). */
>> -  bool close_files;
>> -
>>/* Supply a callback to receive stdout. */
>>cmd_stdout_callback stdout_callback;
>>void *stdout_data;
>> @@ -186,7 +183,6 @@ guestfs_int_new_command (guestfs_h *g)
>>cmd = safe_calloc (g, 1, sizeof *cmd);
>>cmd->g = g;
>>cmd->capture_errors = true;
>> -  cmd->close_files = true;
>>cmd->errorfd = -1;
>>cmd->outfd = -1;
>>return cmd;
>> @@ -358,17 +354,6 @@ guestfs_int_cmd_clear_capture_errors (struct command 
>> *cmd)
>>cmd->capture_errors = false;
>>  }
>>  
>> -/**
>> - * Don't close file descriptors after the fork.
>> - *
>> - * XXX Should allow single fds to be sent to child process.
>> - */
>> -void
>> -guestfs_int_cmd_clear_close_files (struct command *cmd)
>> -{
>> -  cmd->close_files = false;
>> -}
>> -
>>  /**
>>   * Set a function to be executed in the child, right before the
>>   * execution.  Can be used to setup the child, for example changing
>> @@ -564,18 +549,16 @@ run_child (struct command *cmd, char **env)
>>for (i = 1; i < NSIG; ++i)
>>  sigaction (i, , NULL);
>>  
>> -  if (cmd->close_files) {
>> -/* Close all other file descriptors.  This ensures that we don't
>> - * hold open (eg) pipes from the parent process.
>> - */
>> -max_fd = sysconf (_SC_OPEN_MAX);
>> -if (max_fd == -1)
>> -  max_fd = 1024;
>> -if (max_fd > 65536)
>> -  max_fd = 65536;/* bound the amount of work we do here */
>> -for (fd = 3; fd < max_fd; ++fd)
>> -  close (fd);
>> -  }
>> +  /* Close all other file descriptors.  This ensures that we don't
>> +   * hold open (eg) pipes from the parent process.
>> +   */
>> +  max_fd = sysconf (_SC_OPEN_MAX);
>> +  if (max_fd == -1)
>> +max_fd = 1024;
>> +  if (max_fd > 65536)
>> +max_fd = 65536;/* bound the amount of work we do here */
>> +  for (fd = 3; fd < max_fd; ++fd)
>> +close (fd);
>>  
>>/* Set the umask for all subcommands to something sensible (RHBZ#610880). 
>> */
>>umask (022);
> 
> Reviewed-by: Richard W.M. Jones 
> 

Commit 13c7052ff96d.

Thanks!
Laszlo
___
Libguestfs mailing list
Libguestfs@redhat.com
https://listman.redhat.com/mailman/listinfo/libguestfs



Re: [Libguestfs] [libguestfs PATCH] lib: remove guestfs_int_cmd_clear_close_files()

2023-07-11 Thread Richard W.M. Jones
On Tue, Jul 11, 2023 at 01:39:06PM +0200, Laszlo Ersek wrote:
> The last (only?) caller of guestfs_int_cmd_clear_close_files() disappeared
> in commit e4c396888056 ("lib/info: Remove /dev/fd hacking and pass a true
> filename to qemu-img info.", 2018-01-23), part of v1.37.36.
> 
> Simplify the code by removing guestfs_int_cmd_clear_close_files().
> 
> Signed-off-by: Laszlo Ersek 
> ---
>  lib/guestfs-internal.h |  1 -
>  lib/command.c  | 37 ++---
>  2 files changed, 10 insertions(+), 28 deletions(-)
> 
> diff --git a/lib/guestfs-internal.h b/lib/guestfs-internal.h
> index fb55e02614f5..c7ef32277e93 100644
> --- a/lib/guestfs-internal.h
> +++ b/lib/guestfs-internal.h
> @@ -751,7 +751,6 @@ extern void guestfs_int_cmd_set_stdout_callback (struct 
> command *, cmd_stdout_ca
>  extern void guestfs_int_cmd_set_stderr_to_stdout (struct command *);
>  extern void guestfs_int_cmd_set_child_rlimit (struct command *, int 
> resource, long limit);
>  extern void guestfs_int_cmd_clear_capture_errors (struct command *);
> -extern void guestfs_int_cmd_clear_close_files (struct command *);
>  extern void guestfs_int_cmd_set_child_callback (struct command *, 
> cmd_child_callback child_callback, void *data);
>  extern int guestfs_int_cmd_run (struct command *);
>  extern void guestfs_int_cmd_close (struct command *);
> diff --git a/lib/command.c b/lib/command.c
> index 515ef624bd96..82a47bafa9e5 100644
> --- a/lib/command.c
> +++ b/lib/command.c
> @@ -152,9 +152,6 @@ struct command
>/* When using the pipe_* APIs, stderr is pointed to a temporary file. */
>char *error_file;
>  
> -  /* Close file descriptors (defaults to true). */
> -  bool close_files;
> -
>/* Supply a callback to receive stdout. */
>cmd_stdout_callback stdout_callback;
>void *stdout_data;
> @@ -186,7 +183,6 @@ guestfs_int_new_command (guestfs_h *g)
>cmd = safe_calloc (g, 1, sizeof *cmd);
>cmd->g = g;
>cmd->capture_errors = true;
> -  cmd->close_files = true;
>cmd->errorfd = -1;
>cmd->outfd = -1;
>return cmd;
> @@ -358,17 +354,6 @@ guestfs_int_cmd_clear_capture_errors (struct command 
> *cmd)
>cmd->capture_errors = false;
>  }
>  
> -/**
> - * Don't close file descriptors after the fork.
> - *
> - * XXX Should allow single fds to be sent to child process.
> - */
> -void
> -guestfs_int_cmd_clear_close_files (struct command *cmd)
> -{
> -  cmd->close_files = false;
> -}
> -
>  /**
>   * Set a function to be executed in the child, right before the
>   * execution.  Can be used to setup the child, for example changing
> @@ -564,18 +549,16 @@ run_child (struct command *cmd, char **env)
>for (i = 1; i < NSIG; ++i)
>  sigaction (i, , NULL);
>  
> -  if (cmd->close_files) {
> -/* Close all other file descriptors.  This ensures that we don't
> - * hold open (eg) pipes from the parent process.
> - */
> -max_fd = sysconf (_SC_OPEN_MAX);
> -if (max_fd == -1)
> -  max_fd = 1024;
> -if (max_fd > 65536)
> -  max_fd = 65536;/* bound the amount of work we do here */
> -for (fd = 3; fd < max_fd; ++fd)
> -  close (fd);
> -  }
> +  /* Close all other file descriptors.  This ensures that we don't
> +   * hold open (eg) pipes from the parent process.
> +   */
> +  max_fd = sysconf (_SC_OPEN_MAX);
> +  if (max_fd == -1)
> +max_fd = 1024;
> +  if (max_fd > 65536)
> +max_fd = 65536;/* bound the amount of work we do here */
> +  for (fd = 3; fd < max_fd; ++fd)
> +close (fd);
>  
>/* Set the umask for all subcommands to something sensible (RHBZ#610880). 
> */
>umask (022);

Reviewed-by: Richard W.M. Jones 


-- 
Richard Jones, Virtualization Group, Red Hat http://people.redhat.com/~rjones
Read my programming and virtualization blog: http://rwmj.wordpress.com
libguestfs lets you edit virtual machines.  Supports shell scripting,
bindings from many languages.  http://libguestfs.org
___
Libguestfs mailing list
Libguestfs@redhat.com
https://listman.redhat.com/mailman/listinfo/libguestfs



[Libguestfs] [libguestfs PATCH] lib: remove guestfs_int_cmd_clear_close_files()

2023-07-11 Thread Laszlo Ersek
The last (only?) caller of guestfs_int_cmd_clear_close_files() disappeared
in commit e4c396888056 ("lib/info: Remove /dev/fd hacking and pass a true
filename to qemu-img info.", 2018-01-23), part of v1.37.36.

Simplify the code by removing guestfs_int_cmd_clear_close_files().

Signed-off-by: Laszlo Ersek 
---
 lib/guestfs-internal.h |  1 -
 lib/command.c  | 37 ++---
 2 files changed, 10 insertions(+), 28 deletions(-)

diff --git a/lib/guestfs-internal.h b/lib/guestfs-internal.h
index fb55e02614f5..c7ef32277e93 100644
--- a/lib/guestfs-internal.h
+++ b/lib/guestfs-internal.h
@@ -751,7 +751,6 @@ extern void guestfs_int_cmd_set_stdout_callback (struct 
command *, cmd_stdout_ca
 extern void guestfs_int_cmd_set_stderr_to_stdout (struct command *);
 extern void guestfs_int_cmd_set_child_rlimit (struct command *, int resource, 
long limit);
 extern void guestfs_int_cmd_clear_capture_errors (struct command *);
-extern void guestfs_int_cmd_clear_close_files (struct command *);
 extern void guestfs_int_cmd_set_child_callback (struct command *, 
cmd_child_callback child_callback, void *data);
 extern int guestfs_int_cmd_run (struct command *);
 extern void guestfs_int_cmd_close (struct command *);
diff --git a/lib/command.c b/lib/command.c
index 515ef624bd96..82a47bafa9e5 100644
--- a/lib/command.c
+++ b/lib/command.c
@@ -152,9 +152,6 @@ struct command
   /* When using the pipe_* APIs, stderr is pointed to a temporary file. */
   char *error_file;
 
-  /* Close file descriptors (defaults to true). */
-  bool close_files;
-
   /* Supply a callback to receive stdout. */
   cmd_stdout_callback stdout_callback;
   void *stdout_data;
@@ -186,7 +183,6 @@ guestfs_int_new_command (guestfs_h *g)
   cmd = safe_calloc (g, 1, sizeof *cmd);
   cmd->g = g;
   cmd->capture_errors = true;
-  cmd->close_files = true;
   cmd->errorfd = -1;
   cmd->outfd = -1;
   return cmd;
@@ -358,17 +354,6 @@ guestfs_int_cmd_clear_capture_errors (struct command *cmd)
   cmd->capture_errors = false;
 }
 
-/**
- * Don't close file descriptors after the fork.
- *
- * XXX Should allow single fds to be sent to child process.
- */
-void
-guestfs_int_cmd_clear_close_files (struct command *cmd)
-{
-  cmd->close_files = false;
-}
-
 /**
  * Set a function to be executed in the child, right before the
  * execution.  Can be used to setup the child, for example changing
@@ -564,18 +549,16 @@ run_child (struct command *cmd, char **env)
   for (i = 1; i < NSIG; ++i)
 sigaction (i, , NULL);
 
-  if (cmd->close_files) {
-/* Close all other file descriptors.  This ensures that we don't
- * hold open (eg) pipes from the parent process.
- */
-max_fd = sysconf (_SC_OPEN_MAX);
-if (max_fd == -1)
-  max_fd = 1024;
-if (max_fd > 65536)
-  max_fd = 65536;/* bound the amount of work we do here */
-for (fd = 3; fd < max_fd; ++fd)
-  close (fd);
-  }
+  /* Close all other file descriptors.  This ensures that we don't
+   * hold open (eg) pipes from the parent process.
+   */
+  max_fd = sysconf (_SC_OPEN_MAX);
+  if (max_fd == -1)
+max_fd = 1024;
+  if (max_fd > 65536)
+max_fd = 65536;/* bound the amount of work we do here */
+  for (fd = 3; fd < max_fd; ++fd)
+close (fd);
 
   /* Set the umask for all subcommands to something sensible (RHBZ#610880). */
   umask (022);
___
Libguestfs mailing list
Libguestfs@redhat.com
https://listman.redhat.com/mailman/listinfo/libguestfs