diff mbox series

package/procps-ng/S02sysctl: pass SYSCTL_ARGS before -p argument for busybox

Message ID 20240517141413.1716448-1-peter@korsgaard.com
State Accepted
Headers show
Series package/procps-ng/S02sysctl: pass SYSCTL_ARGS before -p argument for busybox | expand

Commit Message

Peter Korsgaard May 17, 2024, 2:14 p.m. UTC
The busybox sysctl applet expects all arguments after -p to be filenames to
read:

sysctl -p file -h
sysctl: -h: No such file or directory

VS:

sysctl -h -p file
sysctl: invalid option -- 'h'
BusyBox v1.36.1 (2024-05-17 15:27:21 CEST) multi-call binary.

Usage: sysctl [-enq] { -a | -p [FILE]... | [-w] [KEY[=VALUE]]... }

Show/set kernel parameters

        -e      Don't warn about unknown keys
        -n      Don't show key names
        -q      Quiet
        -a      Show all values
        -p      Set values from FILEs (default /etc/sysctl.conf)
        -w      Set values

This seems to be the intented behaviour:
https://git.busybox.net/busybox/tree/procps/sysctl.c#n317

Notice: The procps-ng variant is happy with both:

sysctl -p file -h

Usage:
 sysctl [options] [variable[=value] ...]

VS:

sysctl -h -p file

Usage:
 sysctl [options] [variable[=value] ...]

So pass SYSCTL_ARGS before the -p args so custom sysctl arguments can be
passed.

Signed-off-by: Peter Korsgaard <peter@korsgaard.com>
---
 package/procps-ng/S02sysctl | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

Comments

Yann E. MORIN May 17, 2024, 2:40 p.m. UTC | #1
Peter, All,

On 2024-05-17 16:14 +0200, Peter Korsgaard spake thusly:
> The busybox sysctl applet expects all arguments after -p to be filenames to
> read:
> 
> sysctl -p file -h
> sysctl: -h: No such file or directory
> 
> VS:
> 
> sysctl -h -p file
> sysctl: invalid option -- 'h'
> BusyBox v1.36.1 (2024-05-17 15:27:21 CEST) multi-call binary.
> 
> Usage: sysctl [-enq] { -a | -p [FILE]... | [-w] [KEY[=VALUE]]... }
> 
> Show/set kernel parameters
> 
>         -e      Don't warn about unknown keys
>         -n      Don't show key names
>         -q      Quiet
>         -a      Show all values
>         -p      Set values from FILEs (default /etc/sysctl.conf)
>         -w      Set values
> 
> This seems to be the intented behaviour:
> https://git.busybox.net/busybox/tree/procps/sysctl.c#n317
> 
> Notice: The procps-ng variant is happy with both:
> 
> sysctl -p file -h
> 
> Usage:
>  sysctl [options] [variable[=value] ...]
> 
> VS:
> 
> sysctl -h -p file
> 
> Usage:
>  sysctl [options] [variable[=value] ...]
> 
> So pass SYSCTL_ARGS before the -p args so custom sysctl arguments can be
> passed.
> 
> Signed-off-by: Peter Korsgaard <peter@korsgaard.com>

Applied to master, thanks.

Regards,
Yann E. MORIN.

> ---
>  package/procps-ng/S02sysctl | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/package/procps-ng/S02sysctl b/package/procps-ng/S02sysctl
> index 85d9ed50d0..c202833ab8 100644
> --- a/package/procps-ng/S02sysctl
> +++ b/package/procps-ng/S02sysctl
> @@ -43,7 +43,7 @@ run_logger() {
>  				break
>  			}
>  			echo "* Applying $file ..."
> -			/sbin/sysctl -p "$file" $SYSCTL_ARGS || prog_status="FAIL"
> +			/sbin/sysctl $SYSCTL_ARGS -p "$file" || prog_status="FAIL"
>  		done 2>&1 >&3 | /usr/bin/logger -t sysctl -p kern.err
>  	} 3>&1 | /usr/bin/logger -t sysctl -p kern.info
>  }
> @@ -60,7 +60,7 @@ run_std() {
>  				break
>  			}
>  			echo "* Applying $file ..."
> -			/sbin/sysctl -p "$file" $SYSCTL_ARGS || prog_status="FAIL"
> +			/sbin/sysctl $SYSCTL_ARGS -p "$file" || prog_status="FAIL"
>  		done
>  	}
>  }
> -- 
> 2.39.2
> 
> _______________________________________________
> buildroot mailing list
> buildroot@buildroot.org
> https://lists.buildroot.org/mailman/listinfo/buildroot
diff mbox series

Patch

diff --git a/package/procps-ng/S02sysctl b/package/procps-ng/S02sysctl
index 85d9ed50d0..c202833ab8 100644
--- a/package/procps-ng/S02sysctl
+++ b/package/procps-ng/S02sysctl
@@ -43,7 +43,7 @@  run_logger() {
 				break
 			}
 			echo "* Applying $file ..."
-			/sbin/sysctl -p "$file" $SYSCTL_ARGS || prog_status="FAIL"
+			/sbin/sysctl $SYSCTL_ARGS -p "$file" || prog_status="FAIL"
 		done 2>&1 >&3 | /usr/bin/logger -t sysctl -p kern.err
 	} 3>&1 | /usr/bin/logger -t sysctl -p kern.info
 }
@@ -60,7 +60,7 @@  run_std() {
 				break
 			}
 			echo "* Applying $file ..."
-			/sbin/sysctl -p "$file" $SYSCTL_ARGS || prog_status="FAIL"
+			/sbin/sysctl $SYSCTL_ARGS -p "$file" || prog_status="FAIL"
 		done
 	}
 }