On Tue, 27 Jun 2017 00:21:52 +0300 "Dmitry V. Levin" <l...@altlinux.org> wrote:
> On Mon, Jun 26, 2017 at 09:05:31PM +0300, Edgar Kaziahmedov wrote: > > According to the current state of affairs, strace.c contains > > functions, which could be replaced to separate file, for instance, > > file with functions printing errors. Also it could be useful for > > the future, because other binaries, included to the strace package, > > will use wrappers for printing errors, thus it would avoid the > > duplication of code. Now, all common prototypes are placed in > > common.h. NOTE: asinfo also needs these subroutines. > > While I fully support the idea of moving some declarations from defs.h > to separate header files for later use outside strace, ... > > [...] > > --- /dev/null > > +++ b/common.h > > @@ -0,0 +1,62 @@ > > +/* > > + * Copyright (c) 2001-2017 The strace developers. > > + * All rights reserved. > > + * > > + * Redistribution and use in source and binary forms, with or > > without > > + * modification, are permitted provided that the following > > conditions > > + * are met: > > + * 1. Redistributions of source code must retain the above > > copyright > > + * notice, this list of conditions and the following disclaimer. > > + * 2. Redistributions in binary form must reproduce the above > > copyright > > + * notice, this list of conditions and the following disclaimer > > in the > > + * documentation and/or other materials provided with the > > distribution. > > + * 3. The name of the author may not be used to endorse or promote > > products > > + * derived from this software without specific prior written > > permission. > > + * > > + * THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY > > EXPRESS OR > > + * IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED > > WARRANTIES > > + * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE > > DISCLAIMED. > > + * IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, > > + * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES > > (INCLUDING, BUT > > + * NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; > > LOSS OF USE, > > + * DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND > > ON ANY > > + * THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR > > TORT > > + * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF > > THE USE OF > > + * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH > > DAMAGE. > > + */ > > + > > +#ifndef STRACE_COMMON_H > > +#define STRACE_COMMON_H > > + > > +#include <stdbool.h> > > +#include <stdint.h> > > +#include <stdio.h> > > +#include <stdlib.h> > > +#include <string.h> > > +#include <sys/types.h> > > +#include <unistd.h> > > + > > +#include "kernel_types.h" > > +#include "gcc_compat.h" > > ... I think we should avoid introducing more defs.h-like umbrella > headers. In particular, I don't see any use in creating headers that > include other headers without any reason besides including them in a > single place. defs.h is a legacy we have to deal with, let's do > better this time. Agree > > + > > +#define ARRAY_SIZE(a) (sizeof(a) / sizeof((a)[0]) + > > MUST_BE_ARRAY(a)) + > > +void error_msg(const char *fmt, ...) ATTRIBUTE_FORMAT((printf, 1, > > 2)); +void perror_msg(const char *fmt, ...) > > ATTRIBUTE_FORMAT((printf, 1, 2)); +void perror_msg_and_die(const > > char *fmt, ...) > > + ATTRIBUTE_FORMAT((printf, 1, 2)) ATTRIBUTE_NORETURN; > > +void error_msg_and_help(const char *fmt, ...) > > + ATTRIBUTE_FORMAT((printf, 1, 2)) ATTRIBUTE_NORETURN; > > +void error_msg_and_die(const char *fmt, ...) > > + ATTRIBUTE_FORMAT((printf, 1, 2)) ATTRIBUTE_NORETURN; > > +void die_out_of_memory(void) ATTRIBUTE_NORETURN; > > + > > +void *xcalloc(size_t nmemb, size_t size) > > + ATTRIBUTE_MALLOC ATTRIBUTE_ALLOC_SIZE((1, 2)); > > +void *xmalloc(size_t size) ATTRIBUTE_MALLOC > > ATTRIBUTE_ALLOC_SIZE((1)); +void *xreallocarray(void *ptr, size_t > > nmemb, size_t size) > > + ATTRIBUTE_ALLOC_SIZE((2, 3)); > > +char *xstrdup(const char *str) ATTRIBUTE_MALLOC; > > +char *xstrndup(const char *str, size_t n) ATTRIBUTE_MALLOC; > > This looks to me like three different groups of declarations. Hm, good catch. But here I am quite sure that it is a good idea to create separate header just for ARRAY_SIZE, but I can name it "macros.h" and while developing developers will be able to expand it as necessary.
pgp29tTFvmC3r.pgp
Description: OpenPGP digital signature
------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot
_______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel