[PATCH 1/3] Move err/mem subroutines to separate files

Dmitry V. Levin ldv at altlinux.org
Mon Aug 7 11:48:03 UTC 2017


On Sat, Aug 05, 2017 at 04:57:34AM +0300, Edgar Kaziakhmedov wrote:
> From: Edgar Kaziakhmedov <edgar.kaziakhmedov at virtuzzo.com>

virtuzzo.com? Really? ;)

> In order to allow usage of utility functions by other binaries
> included in the strace package (like the upcoming asinfo utility),
> these functions should be moved to separate files.
> 
> * Makefile.am (strace_SOURCES): Add error_prints.c, error_prints.h,
> and xmalloc.h.
> * defs.h: Include "xmalloc.h" and "error_prints.h".
> (error_msg,  error_msg_and_help, error_msg_and_die, perror_msg,
> perror_msg_and_die, xcalloc, xmalloc, xreallocarray, xstrdup,
> xstrndup): Move to corresponding headers.
> * error_prints.h: New file.
> (error_msg, error_msg_and_die, error_msg_and_help, perror_msg,
> perror_msg_and_die): Move from defs.h.
> * xmalloc.h: New file.
> (xcalloc, xmalloc, xreallocarray, xstrdup, xstrndup): Move from defs.h.
> * strace.c (die): Remove static quialifier to make visible for error_prints.c
> (die_out_of_memory, error_msg,  error_msg_and_help, error_msg_and_die,
> perror_msg, perror_msg_and_die, verror_msg): Move ...
> * error_prints.c: ... to the new file.
> * xmalloc.c: Remove "defs.h". Add "xmalloc.h". Fix codestyle.
> 
> Signed-off-by: Edgar Kaziakhmedov <edgar.kaziakhmedov at virtuozzo.com>
> ---
>  Makefile.am    |   3 ++
>  defs.h         |  21 ++--------
>  error_prints.c | 123 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++
>  error_prints.h |  50 +++++++++++++++++++++++
>  strace.c       |  79 +-----------------------------------
>  xmalloc.c      |  26 ++++++++----
>  xmalloc.h      |  45 +++++++++++++++++++++
>  7 files changed, 244 insertions(+), 103 deletions(-)
>  create mode 100644 error_prints.c
>  create mode 100644 error_prints.h
>  create mode 100644 xmalloc.h

Note that this commit message is out of sync with the change itself.
For example, die_out_of_memory is not moving anywhere.

Note that config.h must be included, directly or indirectly, by each
compilation unit, and xmalloc.c is no exception because, e.g. it tests
for HAVE_STRNDUP.

OK, I've merged it with the following corrections:

diff --git a/error_prints.h b/error_prints.h
index 0a818c9..7ddcb50 100644
--- a/error_prints.h
+++ b/error_prints.h
@@ -1,8 +1,8 @@
 /*
- * This file contains error printing functions. This set of soubroutines can be
- * used by various binaries included in the strace package. For compilation
- * variable 'program_invocation_name' and function 'die()' have to be defined
- * globally.
+ * This file contains error printing functions.
+ * These functions can be used by various binaries included in the strace
+ * package.  Variable 'program_invocation_name' and function 'die()'
+ * have to be defined globally.
  *
  * Copyright (c) 2001-2017 The strace developers.
  * All rights reserved.
@@ -35,8 +35,7 @@
 
 #include "gcc_compat.h"
 
-extern void
-ATTRIBUTE_NORETURN die(void);
+void die(void) ATTRIBUTE_NORETURN;
 
 void error_msg(const char *fmt, ...) ATTRIBUTE_FORMAT((printf, 1, 2));
 void perror_msg(const char *fmt, ...) ATTRIBUTE_FORMAT((printf, 1, 2));
diff --git a/xmalloc.c b/xmalloc.c
index 4290a01..45ff57b 100644
--- a/xmalloc.c
+++ b/xmalloc.c
@@ -25,10 +25,12 @@
  * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
  */
 
-#include <stdbool.h>
+#ifdef HAVE_CONFIG_H
+# include "config.h"
+#endif
+
 #include <stdlib.h>
 #include <string.h>
-#include <stdio.h>
 
 #include "error_prints.h"
 #include "xmalloc.h"
@@ -36,7 +38,7 @@
 static void
 die_out_of_memory(void)
 {
-	static bool recursed;
+	static int recursed;
 
 	if (recursed)
 		exit(1);
diff --git a/xmalloc.h b/xmalloc.h
index 33b77a0..ae0501d 100644
--- a/xmalloc.h
+++ b/xmalloc.h
@@ -1,6 +1,7 @@
-/* This file contains wrapper functions working with memory, the wrapper
- * just terminates program in case of lack of memory. This set of
- * soubroutines can be used by various binaries included in the strace
+/*
+ * This file contains wrapper functions working with memory allocations,
+ * they just terminate the program in case of memory allocation failure.
+ * These functions can be used by various binaries included in the strace
  * package.
  *
  * Copyright (c) 2001-2017 The strace developers.
@@ -32,6 +33,7 @@
 #ifndef STRACE_XMALLOC_H
 #define STRACE_XMALLOC_H
 
+#include <stddef.h>
 #include "gcc_compat.h"
 
 void *xcalloc(size_t nmemb, size_t size)

-- 
ldv
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 801 bytes
Desc: not available
URL: <http://lists.strace.io/pipermail/strace-devel/attachments/20170807/d8f3bf78/attachment.bin>


More information about the Strace-devel mailing list