diff mbox

[kvm-unit-tests] Add a proper header for the lib/argv.c file

Message ID 1498538647-2721-1-git-send-email-thuth@redhat.com (mailing list archive)
State New, archived
Headers show

Commit Message

Thomas Huth June 27, 2017, 4:44 a.m. UTC
Instead of declaring the prototypes for these functions in various
C files, introduce a proper header for them. This change also
revealed that the prototypes of setup_args_progname() did not match
the implementation - the argument can be a "const char *", so change
the code in argv.c accordingly.

Signed-off-by: Thomas Huth <thuth@redhat.com>
---
 lib/argv.c          | 16 +++++++---------
 lib/argv.h          | 10 ++++++++++
 lib/arm/setup.c     |  3 +--
 lib/powerpc/setup.c |  3 +--
 lib/s390x/io.c      |  2 +-
 5 files changed, 20 insertions(+), 14 deletions(-)
 create mode 100644 lib/argv.h

Comments

David Hildenbrand June 27, 2017, 8:30 a.m. UTC | #1
On 27.06.2017 06:44, Thomas Huth wrote:
> Instead of declaring the prototypes for these functions in various
> C files, introduce a proper header for them. This change also
> revealed that the prototypes of setup_args_progname() did not match
> the implementation - the argument can be a "const char *", so change
> the code in argv.c accordingly.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---


Reviewed-by: David Hildenbrand <david@redhat.com>
Andrew Jones June 27, 2017, 11:35 a.m. UTC | #2
On Tue, Jun 27, 2017 at 06:44:07AM +0200, Thomas Huth wrote:
> Instead of declaring the prototypes for these functions in various
> C files, introduce a proper header for them. This change also
> revealed that the prototypes of setup_args_progname() did not match
> the implementation - the argument can be a "const char *", so change
> the code in argv.c accordingly.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  lib/argv.c          | 16 +++++++---------
>  lib/argv.h          | 10 ++++++++++
>  lib/arm/setup.c     |  3 +--
>  lib/powerpc/setup.c |  3 +--
>  lib/s390x/io.c      |  2 +-
>  5 files changed, 20 insertions(+), 14 deletions(-)
>  create mode 100644 lib/argv.h
>

Reviewed-by: Andrew Jones <drjones@redhat.com>
Paolo Bonzini June 27, 2017, 12:29 p.m. UTC | #3
On 27/06/2017 06:44, Thomas Huth wrote:
> Instead of declaring the prototypes for these functions in various
> C files, introduce a proper header for them. This change also
> revealed that the prototypes of setup_args_progname() did not match
> the implementation - the argument can be a "const char *", so change
> the code in argv.c accordingly.
> 
> Signed-off-by: Thomas Huth <thuth@redhat.com>
> ---
>  lib/argv.c          | 16 +++++++---------
>  lib/argv.h          | 10 ++++++++++
>  lib/arm/setup.c     |  3 +--
>  lib/powerpc/setup.c |  3 +--
>  lib/s390x/io.c      |  2 +-
>  5 files changed, 20 insertions(+), 14 deletions(-)
>  create mode 100644 lib/argv.h
> 
> diff --git a/lib/argv.c b/lib/argv.c
> index f2466d4..f0e183a 100644
> --- a/lib/argv.c
> +++ b/lib/argv.c
> @@ -6,10 +6,11 @@
>   */
>  
>  #include "libcflat.h"
> +#include "argv.h"
>  #include "auxinfo.h"
>  
>  int __argc;
> -char *__args;
> +const char *__args;
>  char *__argv[100];
>  char *__environ[200];
>  
> @@ -22,7 +23,7 @@ static char *copy_ptr = args_copy;
>  #define isalpha(c) (((c) >= 'A' && (c) <= 'Z') || ((c) >= 'a' && (c) <= 'z') || (c) == '_')
>  #define isalnum(c) (isalpha(c) || ((c) >= '0' && (c) <= '9'))
>  
> -static char *skip_blanks(char *p)
> +static const char *skip_blanks(const char *p)
>  {
>  	while (isblank(*p))
>  		++p;
> @@ -31,7 +32,7 @@ static char *skip_blanks(char *p)
>  
>  void __setup_args(void)
>  {
> -	char *args = __args;
> +	const char *args = __args;
>  	char **argv = __argv + __argc;
>  
>  	while (*(args = skip_blanks(args)) != '\0') {
> @@ -43,7 +44,7 @@ void __setup_args(void)
>  	__argc = argv - __argv;
>  }
>  
> -void setup_args(char *args)
> +static void setup_args(const char *args)
>  {
>  	if (!args)
>  		return;
> @@ -52,16 +53,13 @@ void setup_args(char *args)
>  	__setup_args();
>  }
>  
> -void setup_args_progname(char *args)
> +void setup_args_progname(const char *args)
>  {
>  	__argv[0] = copy_ptr;
>  	strcpy(__argv[0], auxinfo.progname);
>  	copy_ptr += strlen(auxinfo.progname) + 1;
>  	++__argc;
> -	if (args) {
> -		__args = args;
> -		__setup_args();
> -	}
> +	setup_args(args);
>  }
>  
>  static char *env_eol(char *env)
> diff --git a/lib/argv.h b/lib/argv.h
> new file mode 100644
> index 0000000..2104dd4
> --- /dev/null
> +++ b/lib/argv.h
> @@ -0,0 +1,10 @@
> +/*
> + * Set up arguments for main() and prepare environment variables
> + *
> + * This code is free software; you can redistribute it and/or modify it
> + * under the terms of the GNU Library General Public License version 2.
> + */
> +
> +extern void __setup_args(void);
> +extern void setup_args_progname(const char *args);
> +extern void setup_env(char *env, int size);
> diff --git a/lib/arm/setup.c b/lib/arm/setup.c
> index 9974b4c..a0b1795 100644
> --- a/lib/arm/setup.c
> +++ b/lib/arm/setup.c
> @@ -14,6 +14,7 @@
>  #include <libfdt/libfdt.h>
>  #include <devicetree.h>
>  #include <alloc.h>
> +#include <argv.h>
>  #include <asm/thread_info.h>
>  #include <asm/setup.h>
>  #include <asm/page.h>
> @@ -22,8 +23,6 @@
>  
>  extern unsigned long stacktop;
>  extern void io_init(void);
> -extern void setup_args_progname(const char *args);
> -extern void setup_env(char *env, int size);
>  
>  char *initrd;
>  u32 initrd_size;
> diff --git a/lib/powerpc/setup.c b/lib/powerpc/setup.c
> index f6cacdc..20a1e37 100644
> --- a/lib/powerpc/setup.c
> +++ b/lib/powerpc/setup.c
> @@ -14,14 +14,13 @@
>  #include <libfdt/libfdt.h>
>  #include <devicetree.h>
>  #include <alloc.h>
> +#include <argv.h>
>  #include <asm/setup.h>
>  #include <asm/page.h>
>  #include <asm/hcall.h>
>  
>  extern unsigned long stacktop;
>  extern void io_init(void);
> -extern void setup_args_progname(const char *args);
> -extern void setup_env(char *env, int size);
>  
>  char *initrd;
>  u32 initrd_size;
> diff --git a/lib/s390x/io.c b/lib/s390x/io.c
> index 067ecf7..4ab5bd9 100644
> --- a/lib/s390x/io.c
> +++ b/lib/s390x/io.c
> @@ -11,10 +11,10 @@
>   * under the terms of the GNU Library General Public License version 2.
>   */
>  #include <libcflat.h>
> +#include <argv.h>
>  #include <asm/spinlock.h>
>  #include "sclp.h"
>  
> -extern void setup_args_progname(const char *args);
>  extern char ipl_args[];
>  
>  static struct spinlock lock;
> 

Applied, thanks.

Paolo
diff mbox

Patch

diff --git a/lib/argv.c b/lib/argv.c
index f2466d4..f0e183a 100644
--- a/lib/argv.c
+++ b/lib/argv.c
@@ -6,10 +6,11 @@ 
  */
 
 #include "libcflat.h"
+#include "argv.h"
 #include "auxinfo.h"
 
 int __argc;
-char *__args;
+const char *__args;
 char *__argv[100];
 char *__environ[200];
 
@@ -22,7 +23,7 @@  static char *copy_ptr = args_copy;
 #define isalpha(c) (((c) >= 'A' && (c) <= 'Z') || ((c) >= 'a' && (c) <= 'z') || (c) == '_')
 #define isalnum(c) (isalpha(c) || ((c) >= '0' && (c) <= '9'))
 
-static char *skip_blanks(char *p)
+static const char *skip_blanks(const char *p)
 {
 	while (isblank(*p))
 		++p;
@@ -31,7 +32,7 @@  static char *skip_blanks(char *p)
 
 void __setup_args(void)
 {
-	char *args = __args;
+	const char *args = __args;
 	char **argv = __argv + __argc;
 
 	while (*(args = skip_blanks(args)) != '\0') {
@@ -43,7 +44,7 @@  void __setup_args(void)
 	__argc = argv - __argv;
 }
 
-void setup_args(char *args)
+static void setup_args(const char *args)
 {
 	if (!args)
 		return;
@@ -52,16 +53,13 @@  void setup_args(char *args)
 	__setup_args();
 }
 
-void setup_args_progname(char *args)
+void setup_args_progname(const char *args)
 {
 	__argv[0] = copy_ptr;
 	strcpy(__argv[0], auxinfo.progname);
 	copy_ptr += strlen(auxinfo.progname) + 1;
 	++__argc;
-	if (args) {
-		__args = args;
-		__setup_args();
-	}
+	setup_args(args);
 }
 
 static char *env_eol(char *env)
diff --git a/lib/argv.h b/lib/argv.h
new file mode 100644
index 0000000..2104dd4
--- /dev/null
+++ b/lib/argv.h
@@ -0,0 +1,10 @@ 
+/*
+ * Set up arguments for main() and prepare environment variables
+ *
+ * This code is free software; you can redistribute it and/or modify it
+ * under the terms of the GNU Library General Public License version 2.
+ */
+
+extern void __setup_args(void);
+extern void setup_args_progname(const char *args);
+extern void setup_env(char *env, int size);
diff --git a/lib/arm/setup.c b/lib/arm/setup.c
index 9974b4c..a0b1795 100644
--- a/lib/arm/setup.c
+++ b/lib/arm/setup.c
@@ -14,6 +14,7 @@ 
 #include <libfdt/libfdt.h>
 #include <devicetree.h>
 #include <alloc.h>
+#include <argv.h>
 #include <asm/thread_info.h>
 #include <asm/setup.h>
 #include <asm/page.h>
@@ -22,8 +23,6 @@ 
 
 extern unsigned long stacktop;
 extern void io_init(void);
-extern void setup_args_progname(const char *args);
-extern void setup_env(char *env, int size);
 
 char *initrd;
 u32 initrd_size;
diff --git a/lib/powerpc/setup.c b/lib/powerpc/setup.c
index f6cacdc..20a1e37 100644
--- a/lib/powerpc/setup.c
+++ b/lib/powerpc/setup.c
@@ -14,14 +14,13 @@ 
 #include <libfdt/libfdt.h>
 #include <devicetree.h>
 #include <alloc.h>
+#include <argv.h>
 #include <asm/setup.h>
 #include <asm/page.h>
 #include <asm/hcall.h>
 
 extern unsigned long stacktop;
 extern void io_init(void);
-extern void setup_args_progname(const char *args);
-extern void setup_env(char *env, int size);
 
 char *initrd;
 u32 initrd_size;
diff --git a/lib/s390x/io.c b/lib/s390x/io.c
index 067ecf7..4ab5bd9 100644
--- a/lib/s390x/io.c
+++ b/lib/s390x/io.c
@@ -11,10 +11,10 @@ 
  * under the terms of the GNU Library General Public License version 2.
  */
 #include <libcflat.h>
+#include <argv.h>
 #include <asm/spinlock.h>
 #include "sclp.h"
 
-extern void setup_args_progname(const char *args);
 extern char ipl_args[];
 
 static struct spinlock lock;