RPM Community Forums

Mailing List Message of <rpm-cvs>

[CVS] RPM: rpm-5_1: rpm/misc/ Makefile.am asprintf.h

From: Jeff Johnson <jbj@rpm5.org>
Date: Sat 16 Aug 2008 - 19:01:36 CEST
Message-Id: <20080816170136.22F547F85@rpm5.org>
  RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  jbj@rpm5.org
  Module: rpm                              Date:   16-Aug-2008 19:01:36
  Branch: rpm-5_1                          Handle: 2008081617013500

  Added files:              (Branch: rpm-5_1)
    rpm/misc                asprintf.h
  Modified files:           (Branch: rpm-5_1)
    rpm/misc                Makefile.am

  Log:
    - jbj: include misc/asprintf.h for use by rpmmtree on QNX.

  Summary:
    Revision    Changes     Path
    1.32.4.2    +1  -1      rpm/misc/Makefile.am
    1.2.2.2     +93 -0      rpm/misc/asprintf.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/misc/Makefile.am
  ============================================================================
  $ cvs diff -u -r1.32.4.1 -r1.32.4.2 Makefile.am
  --- rpm/misc/Makefile.am	13 Aug 2008 17:05:25 -0000	1.32.4.1
  +++ rpm/misc/Makefile.am	16 Aug 2008 17:01:35 -0000	1.32.4.2
  @@ -18,7 +18,7 @@
   	strtoul.c
   
   noinst_HEADERS = \
  -	err.h		error.h	
  +	asprintf.h	err.h		error.h	
   
   usrlibdir = $(libdir)
   usrlib_LTLIBRARIES = librpmmisc.la
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/misc/asprintf.h
  ============================================================================
  $ cvs diff -u -r0 -r1.2.2.2 asprintf.h
  --- /dev/null	2008-08-16 19:00:26 +0200
  +++ asprintf.h	2008-08-16 19:01:36 +0200
  @@ -0,0 +1,93 @@
  +/*==============================================================================
  + *
  + * Copyright (C) 2005 Jason Evans <jasone@canonware.com>.  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(s),
  + *    this list of conditions and the following disclaimer unmodified other than
  + *    the allowable addition of one or more copyright notices.
  + *
  + * 2. Redistributions in binary form must reproduce the above copyright
  + *    notice(s), this list of conditions and the following disclaimer in the
  + *    documentation and/or other materials provided with the distribution.
  + *
  + * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDER(S) `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 COPYRIGHT HOLDER(S) 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.
  + *
  + *==============================================================================
  + *
  + * Emulate vasprintf() and asprintf().
  + *
  + *==============================================================================
  + */
  +
  +#include <stdlib.h>
  +#include <stdio.h>
  +#include <stdarg.h>
  +
  +static inline int
  +vasprintf(char ** rResult, const char * aFormat, va_list aAp)
  +{
  +    int rVal;
  +    char * result;
  +    va_list ap;
  +#define XarAsprintfStartLen 16
  +
  +    result = (char *) malloc(XarAsprintfStartLen);
  +    if (result == NULL)
  +    {
  +	rVal = -1;
  +	goto RETURN;
  +    }
  +
  +    va_copy(ap, aAp);
  +    rVal = vsnprintf(result, XarAsprintfStartLen, aFormat, ap);
  +    va_end(ap);
  +
  +    if (rVal == -1)
  +    {
  +	goto RETURN;
  +    }
  +    else if (rVal >= XarAsprintfStartLen)
  +    {
  +	free(result);
  +	result = (char *) malloc(rVal + 1);
  +	if (result == NULL)
  +	{
  +	    rVal = -1;
  +	    goto RETURN;
  +	}
  +
  +	va_copy(ap, aAp);
  +	rVal = vsnprintf(result, rVal + 1, aFormat, aAp);
  +	va_end(ap);
  +    }
  +
  +    *rResult = result;
  +    RETURN:
  +#undef XarAsprintfStartLen
  +    return rVal;
  +}
  +
  +static inline int
  +asprintf(char ** rResult, const char * aFormat, ...)
  +{
  +    int rVal;
  +    va_list ap;
  +
  +    va_start(ap, aFormat);
  +    rVal = vasprintf(rResult, aFormat, ap);
  +    va_end(ap);
  +
  +    return rVal;
  +}
  @@ .
Received on Sat Aug 16 19:01:36 2008
Driven by Jeff Johnson and the RPM project team.
Hosted by OpenPKG and Ralf S. Engelschall.
Powered by FreeBSD and OpenPKG.