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

  Server: rpm5.org                         Name:   Jeff Johnson
  Root:   /v/rpm/cvs                       Email:  [email protected]
  Module: rpm                              Date:   16-Jun-2017 14:30:31
  Branch: rpm-5_4                          Handle: 2017061612303000

  Modified files:           (Branch: rpm-5_4)
    rpm/rpmio               librpmio.vers rpmeio.c rpmeio.h

  Log:
    - rpmeio: expose Eio_request/Eio_submit, haul out the trash.

  Summary:
    Revision    Changes     Path
    2.199.2.94  +1  -0      rpm/rpmio/librpmio.vers
    1.1.2.5     +187 -494   rpm/rpmio/rpmeio.c
    1.1.2.4     +3  -1      rpm/rpmio/rpmeio.h
  ____________________________________________________________________________

  patch -p0 <<'@@ .'
  Index: rpm/rpmio/librpmio.vers
  ============================================================================
  $ cvs diff -u -r2.199.2.93 -r2.199.2.94 librpmio.vers
  --- rpm/rpmio/librpmio.vers   16 Jun 2017 06:14:09 -0000      2.199.2.93
  +++ rpm/rpmio/librpmio.vers   16 Jun 2017 12:30:30 -0000      2.199.2.94
  @@ -484,6 +484,7 @@
       rpmeioStart;
       Eio_cancel;
       Eio_destroy;
  +    Eio_request;
       Eio_submit;
       rpmeioCB;
       rpmeioCB_readdir;
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmeio.c
  ============================================================================
  $ cvs diff -u -r1.1.2.4 -r1.1.2.5 rpmeio.c
  --- rpm/rpmio/rpmeio.c        16 Jun 2017 11:00:06 -0000      1.1.2.4
  +++ rpm/rpmio/rpmeio.c        16 Jun 2017 12:30:30 -0000      1.1.2.5
  @@ -311,14 +311,17 @@
   
   }
   
  -void Eio_submit(eio_req * req)
  +eio_req * Eio_submit(eio_req * req)
   {
       rpmeio eio = (rpmeio) (((rpmioItem)req) - 1);
  -SPEW("--> %s(%p) eio %p\n", __FUNCTION__, req, eio);
   #ifdef       NOTYET
       eio = rpmeioLink(eio);
   #endif
  -    eio_submit(&eio->req);
  +assert(req == &eio->req);
  +    req = &eio->req;
  +    eio_submit(req);
  +SPEW("<-- %s(%p) eio %p\n", __FUNCTION__, req, eio);
  +    return req;
   }
   
   /*==============================================================*/
  @@ -423,32 +426,11 @@
   }
   
   /*==============================================================*/
  -static eio_req * rpmeioReq(int reqtype, ...)
  +eio_req * Eio_request(int reqtype, ...)
   {
       rpmeio eio = NULL;
       eio_req * req = NULL;
   
  -    eio_wd wd = NULL;
  -    const char * path = NULL;
  -    const char * npath = NULL;
  -    void (*execute) (eio_req *req);
  -    int fdno = -1;
  -    int fdno2 = -1;
  -    off_t offset = 0;
  -    int whence = 0;
  -    void *buf = NULL;
  -    size_t length = 0;
  -    size_t nbytes = 0;
  -    eio_tstamp atime = 0.0;
  -    eio_tstamp mtime = 0.0;
  -    uid_t uid = -1;
  -    gid_t gid = -1;
  -    mode_t mode = 0;
  -    void *addr = NULL;
  -    int flags = 0;
  -    eio_tstamp delay = 0.0;
  -    dev_t dev = 0;
  -    
       int pri = 0;
       eio_cb cb = rpmeioCB;
       void * data = NULL;
  @@ -464,440 +446,327 @@
   
       switch (reqtype) {
       case EIO_CUSTOM:
  -     execute = va_arg(ap, void (*) (eio_req *));
  +     req->feed = va_arg(ap, void (*) (eio_req *));
        cb = rpmeioCB;          /* XXX */
        data = "custom";
  -//   req = eio_custom(execute, pri, cb, data);
  -     req->feed = execute;
        break;
       case EIO_WD_OPEN:
  -     path = va_arg(ap, const char *);
  +     req->ptr1 = va_arg(ap, char *);
  +     req->ptr1 = xstrdup((char *)req->ptr1);
  +     req->flags |= EIO_FLAG_PTR1_FREE;
        cb = rpmeioCB;          /* XXX */
        data = "wd_open";
  -//   req = eio_wd_open(path, pri, cb, data);
  -     req->flags |= EIO_FLAG_PTR1_FREE;
  -     req->ptr1 = xstrdup(path);
        break;
       case EIO_WD_CLOSE:
  -     wd = va_arg(ap, eio_wd);
  +     req->wd = va_arg(ap, eio_wd);
        cb = rpmeioCB;          /* XXX */
        data = "wd_close";
  -//   req = eio_wd_close(wd, pri, cb, data);
  -     req->wd = wd;
        break;
       case EIO_CLOSE:
  -     fdno = va_arg(ap, int);
  +     req->int1 = va_arg(ap, int);
        cb = rpmeioCB;
        data = "close";
  -//   req = eio_close(fdno, pri, cb, data);
  -     req->int1 = fdno;
        break;
       case EIO_DUP2:
  -     fdno = va_arg(ap, int);
  -     fdno2 = va_arg(ap, int);
  +     req->int1 = va_arg(ap, int);
  +     req->int2 = va_arg(ap, int);
        cb = rpmeioCB;
        data = "dup2";
  -//   req = eio_dup2(fdno, fdno2, pri, cb, data);
  -     req->int1 = fdno;
  -     req->int2 = fdno2;
        break;
       case EIO_SEEK:
  -     fdno = va_arg(ap, int);
  -     offset = va_arg(ap, off_t);
  -     whence = va_arg(ap, int);
  +     req->int1 = va_arg(ap, int);
  +     req->offs = va_arg(ap, off_t);
  +     req->int2 = va_arg(ap, int);
        cb = rpmeioCB;          /* XXX */
        data = "seek";
  -//   req = eio_seek(fdno, offset, whence, pri, cb, data);
  -     req->int1 = fdno;
  -     req->offs = offset;
  -     req->int2 = whence;
        break;
       case EIO_READ:
  -     fdno = va_arg(ap, int);
  -     buf = va_arg(ap, void *);
  -     length = va_arg(ap, size_t);
  -     offset = va_arg(ap, off_t);
  +     req->int1 = va_arg(ap, int);
  +     req->ptr2 = va_arg(ap, void *);
  +     req->size = va_arg(ap, size_t);
  +     req->offs = va_arg(ap, off_t);
        cb = rpmeioCB_read;
        data = "read";
  -//   req = eio_read(fdno, buf, length, offset, pri, cb, data);
  -     req->int1 = fdno;
  -     req->ptr2 = buf;
  -     req->size = length;
  -     req->offs = offset;
        break;
       case EIO_WRITE:
  -     fdno = va_arg(ap, int);
  -     buf = va_arg(ap, void *);
  -     length = va_arg(ap, size_t);
  -     offset = va_arg(ap, off_t);
  +     req->int1 = va_arg(ap, int);
  +     req->ptr2 = va_arg(ap, void *);
  +     req->size = va_arg(ap, size_t);
  +     req->offs = va_arg(ap, off_t);
        cb = rpmeioCB;
        data = "write";
  -//   req = eio_write(fdno, buf, length, offset, pri, cb, data);
  -     req->int1 = fdno;
  -     req->ptr2 = buf;
  -     req->size = length;
  -     req->offs = offset;
        break;
       case EIO_READAHEAD:
  -     fdno = va_arg(ap, int);
  -     offset = va_arg(ap, off_t);
  -     length = va_arg(ap, size_t);
  +     req->int1 = va_arg(ap, int);
  +     req->offs = va_arg(ap, off_t);
  +     req->size = va_arg(ap, size_t);
        cb = rpmeioCB;
        data = "readahead";
  -//   req = eio_readahead(fdno, offset, length, pri, cb, data);
  -     req->int1 = fdno;
  -     req->offs = offset;
  -     req->size = length;
        break;
       case EIO_SENDFILE:
  -     fdno = va_arg(ap, int);
  -     fdno2 = va_arg(ap, int);
  -     offset = va_arg(ap, off_t);
  -     length = va_arg(ap, size_t);
  +     req->int1 = va_arg(ap, int);
  +     req->int2 = va_arg(ap, int);
  +     req->offs = va_arg(ap, off_t);
  +     req->size = va_arg(ap, size_t);
        cb = rpmeioCB;
        data = "sendfile";
  -//   req = eio_sendfile(fdno, fdno2, offset, length, pri, cb, data);
  -     req->int1 = fdno;
  -     req->int2 = fdno2;
  -     req->offs = offset;
  -     req->size = length;
        break;
       case EIO_FSTAT:
  -     fdno = va_arg(ap, int);
  +     req->int1 = va_arg(ap, int);
        cb = rpmeioCB_stat;
        data = "fstat";
  -//   req = eio_fstat(fdno, pri, cb, data);
  -     req->int1 = fdno;
        break;
       case EIO_FSTATVFS:
  -     fdno = va_arg(ap, int);
  +     req->int1 = va_arg(ap, int);
        cb = rpmeioCB;          /* XXX */
        data = "statvfs";
  -//   req = eio_fstatvfs(fdno, pri, cb, data);
  -     req->int1 = fdno;
        break;
       case EIO_FTRUNCATE:
  -     fdno = va_arg(ap, int);
  -     offset = va_arg(ap, off_t);
  +     req->int1 = va_arg(ap, int);
  +     req->offs = va_arg(ap, off_t);
        cb = rpmeioCB;
        data = "ftruncate";
  -//   req = eio_ftruncate(fdno, offset, pri, cb, data);
  -     req->int1 = fdno;
  -     req->offs = offset;
        break;
       case EIO_FUTIME:
  -     fdno = va_arg(ap, int);
  -     atime = va_arg(ap, eio_tstamp);
  -     mtime = va_arg(ap, eio_tstamp);
  +     req->int1 = va_arg(ap, int);
  +     req->nv1 = va_arg(ap, eio_tstamp);
  +     req->nv2 = va_arg(ap, eio_tstamp);
        cb = rpmeioCB;
        data = "futime";
  -//   req = eio_futime(fdno, atime, mtime, pri, cb, data);
  -     req->int1 = fdno;
        break;
       case EIO_FCHMOD:
  -     fdno = va_arg(ap, int);
  -     mode = va_arg(ap, mode_t);
  +     req->int1 = va_arg(ap, int);
  +     req->int2 = va_arg(ap, mode_t);
        cb = rpmeioCB;
        data = "fchmod";
  -//   req = eio_fchmod(fdno, mode, pri, cb, data);
  -     req->int1 = fdno;
  -     req->int2 = (long)mode;
        break;
       case EIO_FCHOWN:
  -     fdno = va_arg(ap, int);
  -     uid = va_arg(ap, uid_t);
  -     gid = va_arg(ap, gid_t);
  +     req->int1 = va_arg(ap, int);
  +     req->int2 = va_arg(ap, uid_t);
  +     req->int3 = va_arg(ap, gid_t);
        cb = rpmeioCB;
        data = "fchown";
  -//   req = eio_fchown(fdno, uid, gid, pri, cb, data);
  -     req->int1 = fdno;
  -     req->int2 = uid;
  -     req->int3 = gid;
        break;
       case EIO_SYNC:
        cb = rpmeioCB;
        data = "sync";
  -//   req = eio_sync(pri, cb, data);
        break;
       case EIO_FSYNC:
  -     fdno = va_arg(ap, int);
  +     req->int1 = va_arg(ap, int);
        cb = rpmeioCB;
        data = "fsync";
  -//   req = eio_fsync(fdno, pri, cb, data);
  -     req->int1 = fdno;
        break;
       case EIO_FDATASYNC:
  -     fdno = va_arg(ap, int);
  +     req->int1 = va_arg(ap, int);
        cb = rpmeioCB;
        data = "fdatasync";
  -//   req = eio_fdatasync(fdno, pri, cb, data);
  -     req->int1 = fdno;
        break;
       case EIO_SYNCFS:
  -     fdno = va_arg(ap, int);
  +     req->int1 = va_arg(ap, int);
        cb = rpmeioCB;          /* XXX */
        data = "syncfs";
  -//   req = eio_syncfs(fdno, pri, cb, data);
  -     req->int1 = fdno;
        break;
       case EIO_MSYNC:
  -     addr = va_arg(ap, void *);
  -     length = va_arg(ap, size_t);
  -     flags = va_arg(ap, int);
  +     req->ptr2 = va_arg(ap, void *);
  +     req->size = va_arg(ap, size_t);
  +     req->int1 = va_arg(ap, int);
        cb = rpmeioCB;          /* XXX */
        data = "msync";
  -//   req = eio_msync(addr, length, flags, pri, cb, data);
  -     req->ptr2 = addr;
  -     req->size = length;
  -     req->int1 = flags;
        break;
       case EIO_MTOUCH:
  -     addr = va_arg(ap, void *);
  -     length = va_arg(ap, size_t);
  -     flags = va_arg(ap, int);
  +     req->ptr2 = va_arg(ap, void *);
  +     req->size = va_arg(ap, size_t);
  +     req->int1 = va_arg(ap, int);
        cb = rpmeioCB;          /* XXX */
        data = "mtouch";
  -//   req = eio_mtouch(addr, length, flags, pri, cb, data);
  -     req->ptr2 = addr;
  -     req->size = length;
  -     req->int1 = flags;
        break;
       case EIO_SYNC_FILE_RANGE:
  -     fdno = va_arg(ap, int);
  -     offset = va_arg(ap, off_t);
  -     nbytes = va_arg(ap, size_t);
  -     flags = va_arg(ap, int);
  +     req->int1 = va_arg(ap, int);
  +     req->offs = va_arg(ap, off_t);
  +     req->size = va_arg(ap, size_t);
  +     req->int2 = va_arg(ap, int);
        cb = rpmeioCB;          /* XXX */
        data = "sync_file_range";
  -//   req = eio_sync_file_range(fdno, offset, nbytes, flags, pri, cb, data);
  -     req->int1 = fdno;
  -     req->offs = offset;
  -     req->size = nbytes;
  -     req->int2 = flags;
        break;
       case EIO_FALLOCATE:
  -     fdno = va_arg(ap, int);
  -     mode = va_arg(ap, mode_t);
  -     offset = va_arg(ap, off_t);
  -     length = va_arg(ap, size_t);
  +     req->int1 = va_arg(ap, int);
  +     req->int2 = va_arg(ap, mode_t);
  +     req->offs = va_arg(ap, off_t);
  +     req->size = va_arg(ap, size_t);
        cb = rpmeioCB;          /* XXX */
        data = "fallocate";
  -//   req = eio_fallocate (fdno, mode, offset, length, pri, cb, data);
  -     req->int1 = fdno;
  -     req->int2 = (long)mode;
  -     req->offs = offset;
  -     req->size = length;
        break;
       case EIO_MLOCK:
  -     addr = va_arg(ap, void *);
  -     length = va_arg(ap, size_t);
  +     req->ptr2 = va_arg(ap, void *);
  +     req->size = va_arg(ap, size_t);
        cb = rpmeioCB;          /* XXX */
        data = "mlock";
  -//   req = eio_mlock(addr, length, pri, cb, data);
  -     req->ptr2 = addr;
  -     req->size = length;
        break;
       case EIO_MLOCKALL:
  -     fdno = va_arg(ap, int);
  +     req->int1 = va_arg(ap, int);
        cb = rpmeioCB;          /* XXX */
        data = "mlockall";
  -//   req = eio_mlockall(flags, pri, cb, data);
  -     req->int1 = fdno;
        break;
       case EIO_GROUP:
        cb = rpmeioCB;          /* XXX */
        data = "group";
        pri = EIO_PRI_MAX;      /* XXX */
  -//   req = eio_grp(cb, data);
        break;
       case EIO_NOP:
        cb = rpmeioCB;
        data = "nop";
  -//   req = eio_nop(pri,cb, data);
        break;
       case EIO_BUSY:
  -     delay = va_arg(ap, eio_tstamp);
  +     req->nv1 = va_arg(ap, eio_tstamp);
        cb = rpmeioCB;
        data = "busy";
  -//   req = eio_busy(delay, pri, cb, data);
  -     req->nv1 = delay;
        break;
       case EIO_REALPATH:
  -     path = va_arg(ap, const char *);
  +     req->ptr1 = va_arg(ap, char *);
  +     req->ptr1 = xstrdup((char *)req->ptr1);
  +     req->flags |= EIO_FLAG_PTR1_FREE;
        cb = rpmeioCB;          /* XXX */
        data = "realpath";
  -//   req = eio_realpath(path, pri, cb, data);
  -     req->flags |= EIO_FLAG_PTR1_FREE;
  -     req->ptr1 = xstrdup(path);
        break;
       case EIO_READDIR:
  -     path = va_arg(ap, const char *);
  -     flags = va_arg(ap, int);
  +     req->ptr1 = va_arg(ap, char *);
  +     req->ptr1 = xstrdup((char *)req->ptr1);
  +     req->flags |= EIO_FLAG_PTR1_FREE;
  +     req->int1 = va_arg(ap, int);
        cb = rpmeioCB_readdir;
        data = "readdir";
  -//   req = eio_readdir(path, flags, pri, cb, data);
  -     req->flags |= EIO_FLAG_PTR1_FREE;
  -     req->ptr1 = xstrdup(path);
  -     req->int1 = flags;
        break;
       case EIO_OPEN:
  -     path = va_arg(ap, const char *);
  -     flags = va_arg(ap, int);
  -     mode = va_arg(ap, mode_t);
  +     req->ptr1 = va_arg(ap, char *);
  +     req->ptr1 = xstrdup((char *)req->ptr1);
  +     req->flags |= EIO_FLAG_PTR1_FREE;
  +     req->int1 = va_arg(ap, int);
  +     req->int2 = va_arg(ap, mode_t);
        cb = rpmeioCB_open;
        data = "open";
  -//   req = eio_open(path, flags, mode, pri, cb, data);
  -     req->flags |= EIO_FLAG_PTR1_FREE;
  -     req->ptr1 = xstrdup(path);
  -     req->int1 = flags;
  -     req->int2 = (long)mode;;
        break;
       case EIO_STAT:
  -     path = va_arg(ap, const char *);
  +     req->ptr1 = va_arg(ap, char *);
  +     req->ptr1 = xstrdup((char *)req->ptr1);
  +     req->flags |= EIO_FLAG_PTR1_FREE;
        cb = rpmeioCB_stat;
        data = "stat";
  -//   req = eio_stat(path, pri, cb, data);
  -     req->flags |= EIO_FLAG_PTR1_FREE;
  -     req->ptr1 = xstrdup(path);
        break;
       case EIO_LSTAT:
  -     path = va_arg(ap, const char *);
  +     req->ptr1 = va_arg(ap, char *);
  +     req->ptr1 = xstrdup((char *)req->ptr1);
  +     req->flags |= EIO_FLAG_PTR1_FREE;
        cb = rpmeioCB_stat;
        data = "lstat";
  -//   req = eio_lstat(path, pri, cb, data);
  -     req->flags |= EIO_FLAG_PTR1_FREE;
  -     req->ptr1 = xstrdup(path);
        break;
       case EIO_STATVFS:
  -     path = va_arg(ap, const char *);
  +     req->ptr1 = va_arg(ap, char *);
  +     req->ptr1 = xstrdup((char *)req->ptr1);
  +     req->flags |= EIO_FLAG_PTR1_FREE;
        cb = rpmeioCB;          /* XXX */
        data = "statvfs";
  -//   req = eio_statvfs(path, pri, cb, data);
  -     req->flags |= EIO_FLAG_PTR1_FREE;
  -     req->ptr1 = xstrdup(path);
        break;
       case EIO_TRUNCATE:
  -     path = va_arg(ap, const char *);
  -     offset = va_arg(ap, off_t);
  +     req->ptr1 = va_arg(ap, char *);
  +     req->ptr1 = xstrdup((char *)req->ptr1);
  +     req->flags |= EIO_FLAG_PTR1_FREE;
  +     req->offs = va_arg(ap, off_t);
        cb = rpmeioCB;
        data = "truncate";
  -//   req = eio_truncate(path, offset, pri, cb, data);
  -     req->flags |= EIO_FLAG_PTR1_FREE;
  -     req->ptr1 = xstrdup(path);
  -     req->offs = offset;
        break;
       case EIO_UTIME:
  -     path = va_arg(ap, const char *);
  -     atime = va_arg(ap, eio_tstamp);
  -     mtime = va_arg(ap, eio_tstamp);
  +     req->ptr1 = va_arg(ap, char *);
  +     req->ptr1 = xstrdup((char *)req->ptr1);
  +     req->flags |= EIO_FLAG_PTR1_FREE;
  +     req->nv1 = va_arg(ap, eio_tstamp);
  +     req->nv2 = va_arg(ap, eio_tstamp);
        cb = rpmeioCB;
        data = "utime";
  -//   req = eio_utime(path, atime, mtime, pri, cb, data);
  -     req->flags |= EIO_FLAG_PTR1_FREE;
  -     req->ptr1 = xstrdup(path);
  -     req->nv1 = atime;
  -     req->nv2 = mtime;
        break;
       case EIO_CHMOD:
  -     path = va_arg(ap, const char *);
  -     mode = va_arg(ap, mode_t);
  +     req->ptr1 = va_arg(ap, char *);
  +     req->ptr1 = xstrdup((char *)req->ptr1);
  +     req->flags |= EIO_FLAG_PTR1_FREE;
  +     req->int2 = va_arg(ap, mode_t);
        cb = rpmeioCB;          /* XXX */
        data = "chmod";
  -//   req = eio_chmod(path, mode, pri, cb, data);
  -     req->flags |= EIO_FLAG_PTR1_FREE;
  -     req->ptr1 = xstrdup(path);
  -     req->int2 = (long)mode;
        break;
       case EIO_CHOWN:
  -     path = va_arg(ap, const char *);
  -     uid = va_arg(ap, uid_t);
  -     gid = va_arg(ap, gid_t);
  +     req->ptr1 = va_arg(ap, char *);
  +     req->ptr1 = xstrdup((char *)req->ptr1);
  +     req->flags |= EIO_FLAG_PTR1_FREE;
  +     req->int2 = va_arg(ap, uid_t);
  +     req->int3 = va_arg(ap, gid_t);
        cb = rpmeioCB;
        data = "chown";
  -//   req = eio_chown(path, uid, gid, pri, cb, data);
  -     req->flags |= EIO_FLAG_PTR1_FREE;
  -     req->ptr1 = xstrdup(path);
  -     req->int2 = (long)uid;
  -     req->int3 = (long)gid;
        break;
       case EIO_UNLINK:
  -     path = va_arg(ap, const char *);
  +     req->ptr1 = va_arg(ap, char *);
  +     req->ptr1 = xstrdup((char *)req->ptr1);
  +     req->flags |= EIO_FLAG_PTR1_FREE;
        cb = rpmeioCB;
        data = "unlink";
  -//   req = eio_unlink(path, pri, cb, data);
  -     req->flags |= EIO_FLAG_PTR1_FREE;
  -     req->ptr1 = xstrdup(path);
        break;
       case EIO_RMDIR:
  -     path = va_arg(ap, const char *);
  +     req->ptr1 = va_arg(ap, char *);
  +     req->ptr1 = xstrdup((char *)req->ptr1);
  +     req->flags |= EIO_FLAG_PTR1_FREE;
        cb = rpmeioCB;
        data = "rmdir";
  -//   req = eio_rmdir(path, pri, cb, data);
  -     req->flags |= EIO_FLAG_PTR1_FREE;
  -     req->ptr1 = xstrdup(path);
        break;
       case EIO_MKDIR:
  -     path = va_arg(ap, const char *);
  -     mode = va_arg(ap, mode_t);
  +     req->ptr1 = va_arg(ap, char *);
  +     req->ptr1 = xstrdup((char *)req->ptr1);
  +     req->flags |= EIO_FLAG_PTR1_FREE;
  +     req->int2 = va_arg(ap, mode_t);
        cb = rpmeioCB;
        data = "mkdir";
  -//   req = eio_mkdir(path, mode, pri, cb, data);
  -     req->flags |= EIO_FLAG_PTR1_FREE;
  -     req->ptr1 = xstrdup(path);
  -     req->int2 = (long)mode;
        break;
       case EIO_RENAME:
  -     path = va_arg(ap, const char *);
  -     npath = va_arg(ap, const char *);
  -     cb = rpmeioCB;
  -     data = "rename";
  -//   req = eio_rename(path, npath, pri, cb, data);
  +     req->ptr1 = va_arg(ap, char *);
  +     req->ptr1 = xstrdup((char *)req->ptr1);
        req->flags |= EIO_FLAG_PTR1_FREE;
  -     req->ptr1 = xstrdup(path);
  +     req->ptr2 = va_arg(ap, char *);
  +     req->ptr2 = xstrdup((char *)req->ptr2);
        req->flags |= EIO_FLAG_PTR2_FREE;
  -     req->ptr2 = xstrdup(npath);
  +     cb = rpmeioCB;
  +     data = "rename";
        break;
       case EIO_MKNOD:
  -     path = va_arg(ap, const char *);
  -     mode = va_arg(ap, mode_t);
  -     dev = va_arg(ap, dev_t);
  +     req->ptr1 = va_arg(ap, char *);
  +     req->ptr1 = xstrdup((char *)req->ptr1);
  +     req->flags |= EIO_FLAG_PTR1_FREE;
  +     req->int2 = va_arg(ap, mode_t);
  +     req->offs = va_arg(ap, dev_t);
        cb = rpmeioCB;
        data = "mknod";
  -//   req = eio_mknod(path, mode, dev, pri, cb, data);
  -     req->flags |= EIO_FLAG_PTR1_FREE;
  -     req->ptr1 = xstrdup(path);
  -     req->int2 = (long)mode;
  -     req->offs = (off_t)dev;
        break;
       case EIO_LINK:
  -     path = va_arg(ap, const char *);
  -     npath = va_arg(ap, const char *);
  -     cb = rpmeioCB;
  -     data = "link";
  -//   req = eio_link(path, npath, pri, cb, data);
  +     req->ptr1 = va_arg(ap, char *);
  +     req->ptr1 = xstrdup((char *)req->ptr1);
        req->flags |= EIO_FLAG_PTR1_FREE;
  -     req->ptr1 = xstrdup(path);
  +     req->ptr2 = va_arg(ap, char *);
  +     req->ptr2 = xstrdup((char *)req->ptr2);
        req->flags |= EIO_FLAG_PTR2_FREE;
  -     req->ptr2 = xstrdup(npath);
  +     cb = rpmeioCB;
  +     data = "link";
        break;
       case EIO_SYMLINK:
  -     path = va_arg(ap, const char *);
  -     npath = va_arg(ap, const char *);
  -     cb = rpmeioCB;
  -     data = "symlink";
  -//   req = eio_symlink(path, npath, pri, cb, data);
  +     req->ptr1 = va_arg(ap, char *);
  +     req->ptr1 = xstrdup((char *)req->ptr1);
        req->flags |= EIO_FLAG_PTR1_FREE;
  -     req->ptr1 = xstrdup(path);
  +     req->ptr2 = va_arg(ap, char *);
  +     req->ptr2 = xstrdup((char *)req->ptr2);
        req->flags |= EIO_FLAG_PTR2_FREE;
  -     req->ptr2 = xstrdup(npath);
  +     cb = rpmeioCB;
  +     data = "symlink";
        break;
       case EIO_READLINK:
  -     path = va_arg(ap, const char *);
  +     req->ptr1 = va_arg(ap, char *);
  +     req->ptr1 = xstrdup((char *)req->ptr1);
  +     req->flags |= EIO_FLAG_PTR1_FREE;
        cb = rpmeioCB;
        data = "readlink";
  -//   req = eio_readlink(path, pri, cb, data);
  -     req->flags |= EIO_FLAG_PTR1_FREE;
  -     req->ptr1 = xstrdup(path);
        break;
       default:
   assert(0);
  @@ -906,33 +775,9 @@
   
       va_end(ap);
   
  -//   eio->req.next = NULL;
  -//   eio->req.wd = NULL;
  -//   eio->req.result = 0;
  -//   eio->req.offs = 0;
  -//   eio->req.size = 0;
  -//   eio->req.ptr1 = NULL;
  -//   eio->req.ptr2 = NULL;
  -//   eio->req.nv1 = 0.0;
  -//   eio->req.nv2 = 0.0;
  -//   eio->req.int1 = 0;
  -//   eio->req.int2 = 0;
  -//   eio->req.int3 = 0;
  -//   eio->req.errorno = 0;
  -
  -//    eio->req.type = reqtype;
  -//   eio->req.cancelled = 0;
  -//   eio->req.flags = 0;
       eio->req.pri = pri;
  -
       eio->req.data = data;
       eio->req.finish = cb;
  -//    eio->req.destroy = Eio_destroy;
  -
  -//   eio->req.feed = NULL;
  -//   eio->req.grp = NULL;
  -//   eio->req.grp_prev = NULL;
  -//   eio->req.grp_next = NULL;
   
   rpmeioDumpREQ(__FUNCTION__, req, NULL);
   
  @@ -942,387 +787,235 @@
       return req;
   }
   
  -static int rpmeioReqCompare(eio_req * Areq, eio_req * Breq)
  -{
  -    int rc = 0;
  -#ifdef       NOTYET
  -rpmeioDumpREQ(__FUNCTION__, Areq, NULL);
  -rpmeioDumpREQ(__FUNCTION__, Breq, NULL);
  -
  -    Eio_destroy(Areq);
  -#endif
  -
  -    return rc;
  -}
  -
   /*==============================================================*/
   eio_req *Eio_wd_open   (const char *path, int pri, eio_cb cb, void *data)
   {
  -    eio_req * req = rpmeioReq(EIO_WD_OPEN, path, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    
  -    return req;
  +    return Eio_submit( Eio_request(EIO_WD_OPEN, path, pri, cb, data) );
   }
   
   eio_req *Eio_wd_close  (eio_wd wd, int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_WD_CLOSE, wd, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_WD_CLOSE, wd, pri, cb, data) );
   }
   
   eio_req *Eio_nop       (int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_NOP, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_NOP, pri, cb, data) );
   }
   
   eio_req *Eio_busy      (eio_tstamp delay, int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_BUSY, delay, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_BUSY, delay, pri, cb, data) );
   }
   
   eio_req *Eio_sync      (int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_SYNC, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_SYNC, pri, cb, data) );
   }
   
   eio_req *Eio_fsync     (int fd, int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_FSYNC, fd, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_FSYNC, fd, pri, cb, data) );
   }
   
   eio_req *Eio_fdatasync (int fd, int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_FDATASYNC, fd, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_FDATASYNC, fd, pri, cb, data) );
   }
   
   eio_req *Eio_syncfs    (int fd, int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_SYNC, fd, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_SYNC, fd, pri, cb, data) );
   }
   
   eio_req *Eio_msync     (void *addr, size_t length, int flags, int pri, 
eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_MSYNC, addr, length, flags, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_MSYNC, addr, length, flags, pri, cb, 
data) );
   }
   
   eio_req *Eio_mtouch    (void *addr, size_t length, int flags, int pri, 
eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_MTOUCH, addr, length, flags, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_MTOUCH, addr, length, flags, pri, cb, 
data) );
   }
   
   eio_req *Eio_mlock     (void *addr, size_t length, int pri, eio_cb cb, void 
*data)
   {
  -    eio_req *req = rpmeioReq(EIO_MLOCK, addr, length, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_MLOCK, addr, length, pri, cb, data) );
   }
   
   eio_req *Eio_mlockall  (int flags, int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_MLOCKALL, flags, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_MLOCKALL, flags, pri, cb, data) );
   }
   
   eio_req *Eio_sync_file_range (int fd, off_t offset, size_t nbytes, unsigned 
int flags, int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_SYNC_FILE_RANGE, fd, offset, nbytes, flags, 
pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_SYNC_FILE_RANGE, fd, offset, nbytes, 
flags, pri, cb, data) );
   }
   
   eio_req *Eio_fallocate (int fd, int mode, off_t offset, size_t len, int pri, 
eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_FALLOCATE, fd, mode, offset, len, pri, cb, 
data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_FALLOCATE, fd, mode, offset, len, 
pri, cb, data) );
   }
   
   eio_req *Eio_close     (int fd, int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_CLOSE, fd, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_CLOSE, fd, pri, cb, data) );
   }
   
   eio_req *Eio_readahead (int fd, off_t offset, size_t length, int pri, eio_cb 
cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_READAHEAD, fd, offset, length, pri, cb, 
data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_READAHEAD, fd, offset, length, pri, 
cb, data) );
   }
   
   eio_req *Eio_seek      (int fd, off_t offset, int whence, int pri, eio_cb 
cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_SEEK, fd, offset, whence, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_SEEK, fd, offset, whence, pri, cb, 
data) );
   }
   
   eio_req *Eio_read      (int fd, void *buf, size_t length, off_t offset, int 
pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_READ, fd, buf, length, offset, pri, cb, 
data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_READ, fd, buf, length, offset, pri, 
cb, data) );
   }
   
   eio_req *Eio_write     (int fd, void *buf, size_t length, off_t offset, int 
pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_WRITE, fd, buf, length, offset, pri, cb, 
data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_WRITE, fd, buf, length, offset, pri, 
cb, data) );
   }
   
   eio_req *Eio_fstat     (int fd, int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_FSTAT, fd, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_FSTAT, fd, pri, cb, data) );
   }
   
   eio_req *Eio_fstatvfs  (int fd, int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_FSTATVFS, fd, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_FSTATVFS, fd, pri, cb, data) );
   }
   
   eio_req *Eio_futime    (int fd, eio_tstamp atime, eio_tstamp mtime, int pri, 
eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_FUTIME, fd, atime, mtime, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_FUTIME, fd, atime, mtime, pri, cb, 
data) );
   }
   
   eio_req *Eio_ftruncate (int fd, off_t offset, int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_FTRUNCATE, fd, offset, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_FTRUNCATE, fd, offset, pri, cb, data) 
);
   }
   
   eio_req *Eio_fchmod    (int fd, mode_t mode, int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_FCHMOD, fd, mode, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_FCHMOD, fd, mode, pri, cb, data) );
   }
   
   eio_req *Eio_fchown    (int fd, eio_uid_t uid, eio_gid_t gid, int pri, 
eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_FCHOWN, fd, uid, gid, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_FCHOWN, fd, uid, gid, pri, cb, data) 
);
   }
   
   eio_req *Eio_dup2      (int fd, int fd2, int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_DUP2, fd, fd2, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_DUP2, fd, fd2, pri, cb, data) );
   }
   
   eio_req *Eio_sendfile  (int out_fd, int in_fd, off_t in_offset, size_t 
length, int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_SENDFILE, out_fd, in_fd, in_offset, length, 
pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_SENDFILE, out_fd, in_fd, in_offset, 
length, pri, cb, data) );
   }
   
   eio_req *Eio_open      (const char *path, int flags, mode_t mode, int pri, 
eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_OPEN, path, flags, mode, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_OPEN, path, flags, mode, pri, cb, 
data) );
   }
   
   eio_req *Eio_utime     (const char *path, eio_tstamp atime, eio_tstamp 
mtime, int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_UTIME, path, atime, mtime, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_UTIME, path, atime, mtime, pri, cb, 
data) );
   }
   
   eio_req *Eio_truncate  (const char *path, off_t offset, int pri, eio_cb cb, 
void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_TRUNCATE, path, offset, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_TRUNCATE, path, offset, pri, cb, 
data) );
   }
   
   eio_req *Eio_chown     (const char *path, eio_uid_t uid, eio_gid_t gid, int 
pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_CHOWN, path, uid, gid, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_CHOWN, path, uid, gid, pri, cb, data) 
);
   }
   
   eio_req *Eio_chmod     (const char *path, mode_t mode, int pri, eio_cb cb, 
void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_CHMOD, path, mode, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_CHMOD, path, mode, pri, cb, data) );
   }
   
   eio_req *Eio_mkdir     (const char *path, mode_t mode, int pri, eio_cb cb, 
void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_MKDIR, path, mode, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_MKDIR, path, mode, pri, cb, data) );
   }
   
   eio_req *Eio_readdir   (const char *path, int flags, int pri, eio_cb cb, 
void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_READDIR, path, flags, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_READDIR, path, flags, pri, cb, data) 
);
   }
   
   eio_req *Eio_rmdir     (const char *path, int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_RMDIR, path, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_RMDIR, path, pri, cb, data) );
   }
   
   eio_req *Eio_unlink    (const char *path, int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_UNLINK, path, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_UNLINK, path, pri, cb, data) );
   }
   
   eio_req *Eio_readlink  (const char *path, int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_READLINK, path, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_READLINK, path, pri, cb, data) );
   }
   
   eio_req *Eio_realpath  (const char *path, int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_REALPATH, path, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_REALPATH, path, pri, cb, data) );
   }
   
   eio_req *Eio_stat      (const char *path, int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_STAT, path, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_STAT, path, pri, cb, data) );
   }
   
   eio_req *Eio_lstat     (const char *path, int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_LSTAT, path, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_LSTAT, path, pri, cb, data) );
   }
   
   eio_req *Eio_statvfs   (const char *path, int pri, eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_STATVFS, path, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_STATVFS, path, pri, cb, data) );
   }
   
   eio_req *Eio_mknod     (const char *path, mode_t mode, dev_t dev, int pri, 
eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_MKNOD, path, mode, dev, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_MKNOD, path, mode, dev, pri, cb, 
data) );
   }
   
   eio_req *Eio_link      (const char *path, const char *new_path, int pri, 
eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_LINK, path, new_path, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_LINK, path, new_path, pri, cb, data) 
);
   }
   
   eio_req *Eio_symlink   (const char *path, const char *new_path, int pri, 
eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_SYMLINK, path, new_path, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_SYMLINK, path, new_path, pri, cb, 
data) );
   }
   
   eio_req *Eio_rename    (const char *path, const char *new_path, int pri, 
eio_cb cb, void *data)
   {
  -    eio_req *req = rpmeioReq(EIO_RENAME, path, new_path, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_RENAME, path, new_path, pri, cb, 
data) );
   }
   
   eio_req *Eio_custom    (void (*execute)(eio_req *), int pri, eio_cb cb, void 
*data)
   {
  -    eio_req *req = rpmeioReq(EIO_CUSTOM, execute, pri, cb, data);
  -    Eio_submit(req);
  -SPEW("<-- %s(%s|%p) req %p\n", __FUNCTION__, REQ_TYPE(req), REQ_DATA(req), 
req);
  -    return req;
  +    return Eio_submit( Eio_request(EIO_CUSTOM, execute, pri, cb, data) );
   }
   
   /*==============================================================*/
  @@ .
  patch -p0 <<'@@ .'
  Index: rpm/rpmio/rpmeio.h
  ============================================================================
  $ cvs diff -u -r1.1.2.3 -r1.1.2.4 rpmeio.h
  --- rpm/rpmio/rpmeio.h        16 Jun 2017 06:14:09 -0000      1.1.2.3
  +++ rpm/rpmio/rpmeio.h        16 Jun 2017 12:30:30 -0000      1.1.2.4
  @@ -104,7 +104,9 @@
   
   void Eio_cancel(eio_req * req);
   void Eio_destroy(eio_req * req);
  -void Eio_submit(eio_req * req);
  +
  +eio_req * Eio_request(int reqtype, ...);
  +eio_req * Eio_submit(eio_req * req);
   
   int rpmeioCB(eio_req * req);
   int rpmeioCB_readdir(eio_req * req);
  @@ .
______________________________________________________________________
RPM Package Manager                                    http://rpm5.org
CVS Sources Repository                                [email protected]

Reply via email to