RPM Package Manager, CVS Repository
  http://rpm5.org/cvs/
  ____________________________________________________________________________

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  j...@rpm5.org
  Module: rpm                              Date:   04-Jul-2017 05:13:28
  Branch: rpm-5_4                          Handle: 2017070403132800

  Modified files:           (Branch: rpm-5_4)
    rpm/rpmio               msqio.c

  Log:
    - rpmmsq: permit building --without-mq & --without-msq.

  Summary:
    Revision    Changes     Path
    1.1.2.25    +79 -9      rpm/rpmio/msqio.c
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/rpmio/msqio.c
  ============================================================================
  $ cvs diff -u -r1.1.2.24 -r1.1.2.25 msqio.c
  --- rpm/rpmio/msqio.c 3 Jun 2017 09:02:26 -0000       1.1.2.24
  +++ rpm/rpmio/msqio.c 4 Jul 2017 03:13:28 -0000       1.1.2.25
  @@ -5,20 +5,34 @@
   
   #include "system.h"
   
  -#if defined(WITH_MQ) || defined(WITH_MSQ)
  -#if defined(HAVE_AIO_H)
  -# include <aio.h>
  +#if defined(HAVE_SYS_IPC_H)
  +# include <sys/ipc.h>
   #endif
  +
  +#if defined(WITH_MQ) || defined(WITH_MSQ)
   #if defined(HAVE_SYS_MSG_H)
   # include <sys/msg.h>
   #endif
  -#if defined(HAVE_SYS_IPC_H)
  -# include <sys/ipc.h>
  -#endif
   #if defined(HAVE_MQUEUE_H)
   # include <mqueue.h>
   #endif
  -#endif       /* WITH_MQ */
  +
  +#else        /* WITH_MQ || WITH_MSQ */
  +
  +/* XXX stub in enough to use struct mq_attr */
  +
  +typedef int mqd_t;
  +
  +struct mq_attr
  +{
  +    long mq_flags;           /* Message queue flags.  */
  +    long mq_maxmsg;          /* Maximum number of messages.  */
  +    long mq_msgsize;         /* Maximum message size.  */
  +    long mq_curmsgs;         /* Number of messages currently queued.  */
  +    long __pad[4];
  +};
  +
  +#endif       /* WITH_MQ || WITH_MSQ */
   
   #include "rpmio_internal.h"
   #include <rpmlog.h>
  @@ -27,6 +41,60 @@
   #include <rpmzlog.h>         /* XXX rpmzLog type */
   #include <yarn.h>
   
  +#if defined(WITH_AIO)
  +
  +#if defined(HAVE_AIO_H)
  +# include <aio.h>
  +#endif
  +
  +#else        /* WITH_AIO */
  +
  +/* XXX stub in enough to use struct aiocb_s pool */
  +enum {
  +    LIO_READ,
  +    LIO_WRITE,
  +    LIO_NOP,
  +};
  +
  +struct aiocb
  +{
  +  int aio_fildes;            /* File desriptor.  */
  +  int aio_lio_opcode;                /* Operation to be performed.  */
  +  int aio_reqprio;           /* Request priority offset.  */
  +  volatile void *aio_buf;    /* Location of buffer.  */
  +  size_t aio_nbytes;         /* Length of transfer.  */
  +  struct sigevent aio_sigevent;      /* Signal number and value.  */
  +
  +  /* Internal members.  */
  +  struct aiocb *__next_prio;
  +  int __abs_prio;
  +  int __policy;
  +  int __error_code;
  +  __ssize_t __return_value;
  +
  +#ifndef __USE_FILE_OFFSET64
  +  __off_t aio_offset;                /* File offset.  */
  +  char __pad[sizeof (__off64_t) - sizeof (__off_t)];
  +#else
  +  __off64_t aio_offset;              /* File offset.  */
  +#endif
  +  char __glibc_reserved[32];
  +};
  +
  +static ssize_t
  +aio_return (struct aiocb *aiocbp)
  +{
  +    return aiocbp->__return_value;
  +}
  +
  +static int
  +aio_error (const struct aiocb *aiocbp)
  +{
  +    return aiocbp->__error_code;
  +}
  +
  +#endif       /* WITH_AIO */
  +
   #define      _RPMAIO_INTERNAL
   #include "rpmaio.h"
   
  @@ -822,9 +890,10 @@
   
   static ssize_t rpmmsqReaderLoop(rpmmsq msq, int op, char *b, size_t nb, 
unsigned *priop)
   {
  -    struct timespec ts = { 0, 1000 };        /* XXX move into msq for 
persistence? */
  -    ssize_t rc;
  +    ssize_t rc = -2; /* assume error */
   
  +#if defined(WITH_MQ)
  +    struct timespec ts = { 0, 1000 };        /* XXX move into msq for 
persistence? */
       errno = 0;
       do {
            
  @@ -863,6 +932,7 @@
   #undef       NSEC
        break;
       } while (rc < 0);
  +#endif       /* WITH_MQ */
   
       return rc;
   }
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                rpm-cvs@rpm5.org

Reply via email to