[Pkg-gnupg-commit] [libgpg-error] 14/32: estream: Rework modestring handling.

Daniel Kahn Gillmor dkg at fifthhorseman.net
Wed Nov 16 01:31:03 UTC 2016


This is an automated email from the git hooks/post-receive script.

dkg pushed a commit to branch master
in repository libgpg-error.

commit 135319b5d1f9a88187687646c762759cfa05a7ec
Author: Justus Winter <justus at g10code.com>
Date:   Wed Oct 19 12:20:41 2016 +0200

    estream: Rework modestring handling.
    
    * src/estream.c (X_SAMETHREAD, X_SYSOPEN): New macros.
    (parse_mode): Rework how information flows from here to 'es_create'.
    Instead of using an integer flag per mode, use flags.
    (init_stream_obj): Adapt accordingly.
    (es_create): Likewise.
    (_gpgrt_fopen): Likewise.
    (_gpgrt_mopen): Likewise.
    (_gpgrt_fopenmem): Likewise.
    (_gpgrt_fopencookie): Likewise.
    (_gpgrt_fdopen): Likewise.
    (_gpgrt_fpopen): Likewise.
    (do_w32open): Likewise.
    (_gpgrt_freopen): Likewise.
    
    Signed-off-by: Justus Winter <justus at g10code.com>
---
 src/estream.c | 90 +++++++++++++++++++++++++++++------------------------------
 1 file changed, 44 insertions(+), 46 deletions(-)

diff --git a/src/estream.c b/src/estream.c
index 752d22e..6e3b985 100644
--- a/src/estream.c
+++ b/src/estream.c
@@ -1680,6 +1680,10 @@ func_file_create (void **cookie, int *filedes,
 
 
 

+/* Flags used by parse_mode and friends.  */
+#define X_SAMETHREAD	(1 << 0)
+#define X_SYSOPEN	(1 << 1)
+
 /* Parse the mode flags of fopen et al.  In addition to the POSIX
  * defined mode flags keyword parameters are supported.  These are
  * key/value pairs delimited by comma and optional white spaces.
@@ -1721,15 +1725,14 @@ func_file_create (void **cookie, int *filedes,
  */
 static int
 parse_mode (const char *modestr,
-            unsigned int *modeflags, int *samethread, int *sysopen,
+            unsigned int *modeflags,
+            unsigned int *r_xmode,
             unsigned int *r_cmode)
 {
   unsigned int omode, oflags, cmode;
   int got_cmode = 0;
 
-  *samethread = 0;
-  if (sysopen)
-    *sysopen = 0;
+  *r_xmode = 0;
 
   switch (*modestr)
     {
@@ -1811,7 +1814,7 @@ parse_mode (const char *modestr,
               _set_errno (EINVAL);
               return -1;
             }
-          *samethread = 1;
+          *r_xmode |= X_SAMETHREAD;
         }
       else if (!strncmp (modestr, "nonblock", 8))
         {
@@ -1831,8 +1834,7 @@ parse_mode (const char *modestr,
               _set_errno (EINVAL);
               return -1;
             }
-          if (sysopen)
-            *sysopen = 1;
+          *r_xmode |= X_SYSOPEN;
         }
     }
   if (!got_cmode)
@@ -2004,7 +2006,7 @@ static void
 init_stream_obj (estream_t stream,
                  void *cookie, es_syshd_t *syshd,
                  gpgrt_cookie_io_functions_t functions,
-                 unsigned int modeflags, int samethread)
+                 unsigned int modeflags, unsigned int xmode)
 {
   stream->intern->cookie = cookie;
   stream->intern->opaque = NULL;
@@ -2025,7 +2027,7 @@ init_stream_obj (estream_t stream,
   stream->intern->deallocate_buffer = 0;
   stream->intern->printable_fname = NULL;
   stream->intern->printable_fname_inuse = 0;
-  stream->intern->samethread = !!samethread;
+  stream->intern->samethread = !! (xmode & X_SAMETHREAD);
   stream->intern->onclose = NULL;
 
   stream->data_len = 0;
@@ -2089,7 +2091,7 @@ es_deinitialize (estream_t stream)
 static int
 es_create (estream_t *stream, void *cookie, es_syshd_t *syshd,
 	   gpgrt_cookie_io_functions_t functions, unsigned int modeflags,
-           int samethread, int with_locked_list)
+           unsigned int xmode, int with_locked_list)
 {
   estream_internal_t stream_internal_new;
   estream_t stream_new;
@@ -2118,7 +2120,7 @@ es_create (estream_t *stream, void *cookie, es_syshd_t *syshd,
   stream_new->unread_buffer_size = sizeof (stream_internal_new->unread_buffer);
   stream_new->intern = stream_internal_new;
 
-  init_stream_obj (stream_new, cookie, syshd, functions, modeflags, samethread);
+  init_stream_obj (stream_new, cookie, syshd, functions, modeflags, xmode);
   init_stream_lock (stream_new);
 
   err = do_list_add (stream_new, with_locked_list);
@@ -3053,8 +3055,8 @@ estream_t
 _gpgrt_fopen (const char *_GPGRT__RESTRICT path,
               const char *_GPGRT__RESTRICT mode)
 {
-  unsigned int modeflags, cmode;
-  int samethread, sysopen, create_called;
+  unsigned int modeflags, cmode, xmode;
+  int create_called;
   estream_t stream;
   void *cookie;
   int err;
@@ -3065,7 +3067,7 @@ _gpgrt_fopen (const char *_GPGRT__RESTRICT path,
   cookie = NULL;
   create_called = 0;
 
-  err = parse_mode (mode, &modeflags, &samethread, &sysopen, &cmode);
+  err = parse_mode (mode, &modeflags, &xmode, &cmode);
   if (err)
     goto out;
 
@@ -3077,7 +3079,7 @@ _gpgrt_fopen (const char *_GPGRT__RESTRICT path,
   syshd.u.fd = fd;
   create_called = 1;
   err = es_create (&stream, cookie, &syshd, estream_functions_fd, modeflags,
-                   samethread, 0);
+                   xmode, 0);
   if (err)
     goto out;
 
@@ -3117,12 +3119,11 @@ _gpgrt_mopen (void *_GPGRT__RESTRICT data, size_t data_n, size_t data_len,
   int create_called = 0;
   estream_t stream = NULL;
   void *cookie = NULL;
-  unsigned int modeflags;
-  int samethread;
+  unsigned int modeflags, xmode;
   int err;
   es_syshd_t syshd;
 
-  err = parse_mode (mode, &modeflags, &samethread, NULL, NULL);
+  err = parse_mode (mode, &modeflags, &xmode, NULL);
   if (err)
     goto out;
 
@@ -3135,7 +3136,7 @@ _gpgrt_mopen (void *_GPGRT__RESTRICT data, size_t data_n, size_t data_len,
   memset (&syshd, 0, sizeof syshd);
   create_called = 1;
   err = es_create (&stream, cookie, &syshd,
-                   estream_functions_mem, modeflags, samethread, 0);
+                   estream_functions_mem, modeflags, xmode, 0);
 
  out:
 
@@ -3150,15 +3151,14 @@ _gpgrt_mopen (void *_GPGRT__RESTRICT data, size_t data_n, size_t data_len,
 estream_t
 _gpgrt_fopenmem (size_t memlimit, const char *_GPGRT__RESTRICT mode)
 {
-  unsigned int modeflags;
-  int samethread;
+  unsigned int modeflags, xmode;
   estream_t stream = NULL;
   void *cookie = NULL;
   es_syshd_t syshd;
 
   /* Memory streams are always read/write.  We use MODE only to get
      the append flag.  */
-  if (parse_mode (mode, &modeflags, &samethread, NULL, NULL))
+  if (parse_mode (mode, &modeflags, &xmode, NULL))
     return NULL;
   modeflags |= O_RDWR;
 
@@ -3170,7 +3170,7 @@ _gpgrt_fopenmem (size_t memlimit, const char *_GPGRT__RESTRICT mode)
 
   memset (&syshd, 0, sizeof syshd);
   if (es_create (&stream, cookie, &syshd, estream_functions_mem, modeflags,
-                 samethread, 0))
+                 xmode, 0))
     (*estream_functions_mem.func_close) (cookie);
 
   if (stream)
@@ -3220,8 +3220,7 @@ _gpgrt_fopencookie (void *_GPGRT__RESTRICT cookie,
                     const char *_GPGRT__RESTRICT mode,
                     gpgrt_cookie_io_functions_t functions)
 {
-  unsigned int modeflags;
-  int samethread;
+  unsigned int modeflags, xmode;
   estream_t stream;
   int err;
   es_syshd_t syshd;
@@ -3229,13 +3228,13 @@ _gpgrt_fopencookie (void *_GPGRT__RESTRICT cookie,
   stream = NULL;
   modeflags = 0;
 
-  err = parse_mode (mode, &modeflags, &samethread, NULL, NULL);
+  err = parse_mode (mode, &modeflags, &xmode, NULL);
   if (err)
     goto out;
 
   memset (&syshd, 0, sizeof syshd);
   err = es_create (&stream, cookie, &syshd, functions, modeflags,
-                   samethread, 0);
+                   xmode, 0);
   if (err)
     goto out;
 
@@ -3248,8 +3247,8 @@ _gpgrt_fopencookie (void *_GPGRT__RESTRICT cookie,
 static estream_t
 do_fdopen (int filedes, const char *mode, int no_close, int with_locked_list)
 {
-  unsigned int modeflags;
-  int samethread, sysopen, create_called;
+  unsigned int modeflags, xmode;
+  int create_called;
   estream_t stream;
   void *cookie;
   int err;
@@ -3259,10 +3258,10 @@ do_fdopen (int filedes, const char *mode, int no_close, int with_locked_list)
   cookie = NULL;
   create_called = 0;
 
-  err = parse_mode (mode, &modeflags, &samethread, &sysopen, NULL);
+  err = parse_mode (mode, &modeflags, &xmode, NULL);
   if (err)
     goto out;
-  if (sysopen)
+  if (xmode & X_SYSOPEN)
     {
       /* Not allowed for fdopen.  */
       _set_errno (EINVAL);
@@ -3278,7 +3277,7 @@ do_fdopen (int filedes, const char *mode, int no_close, int with_locked_list)
   syshd.u.fd = filedes;
   create_called = 1;
   err = es_create (&stream, cookie, &syshd, estream_functions_fd,
-                   modeflags, samethread, with_locked_list);
+                   modeflags, xmode, with_locked_list);
 
   if (!err && stream)
     {
@@ -3312,8 +3311,8 @@ _gpgrt_fdopen_nc (int filedes, const char *mode)
 static estream_t
 do_fpopen (FILE *fp, const char *mode, int no_close, int with_locked_list)
 {
-  unsigned int modeflags, cmode;
-  int samethread, sysopen, create_called;
+  unsigned int modeflags, cmode, xmode;
+  int create_called;
   estream_t stream;
   void *cookie;
   int err;
@@ -3323,10 +3322,10 @@ do_fpopen (FILE *fp, const char *mode, int no_close, int with_locked_list)
   cookie = NULL;
   create_called = 0;
 
-  err = parse_mode (mode, &modeflags, &samethread, &sysopen, &cmode);
+  err = parse_mode (mode, &modeflags, &xmode, &cmode);
   if (err)
     goto out;
-  if (sysopen)
+  if (xmode & X_SYSOPEN)
     {
       /* Not allowed for fpopen.  */
       _set_errno (EINVAL);
@@ -3344,7 +3343,7 @@ do_fpopen (FILE *fp, const char *mode, int no_close, int with_locked_list)
   syshd.u.fd = fp? fileno (fp): -1;
   create_called = 1;
   err = es_create (&stream, cookie, &syshd, estream_functions_fp,
-                   modeflags, samethread, with_locked_list);
+                   modeflags, xmode, with_locked_list);
 
  out:
 
@@ -3384,8 +3383,7 @@ estream_t
 do_w32open (HANDLE hd, const char *mode,
             int no_close, int with_locked_list)
 {
-  unsigned int modeflags, cmode;
-  int samethread;
+  unsigned int modeflags, cmode, xmode;
   int create_called = 0;
   estream_t stream = NULL;
   void *cookie = NULL;
@@ -3393,7 +3391,7 @@ do_w32open (HANDLE hd, const char *mode,
   es_syshd_t syshd;
 
   /* For obvious reasons we ignore sysmode here.  */
-  err = parse_mode (mode, &modeflags, &samethread, NULL, &cmode);
+  err = parse_mode (mode, &modeflags, &xmode, &cmode);
   if (err)
     goto leave;
 
@@ -3405,7 +3403,7 @@ do_w32open (HANDLE hd, const char *mode,
   syshd.u.handle = hd;
   create_called = 1;
   err = es_create (&stream, cookie, &syshd, estream_functions_w32,
-                   modeflags, samethread, with_locked_list);
+                   modeflags, xmode, with_locked_list);
 
  leave:
   if (err && create_called)
@@ -3556,8 +3554,8 @@ _gpgrt_freopen (const char *_GPGRT__RESTRICT path,
 
   if (path)
     {
-      unsigned int modeflags, cmode;
-      int dummy, samethread, create_called;
+      unsigned int modeflags, cmode, xmode, dummy;
+      int create_called;
       void *cookie;
       int fd;
       es_syshd_t syshd;
@@ -3565,13 +3563,13 @@ _gpgrt_freopen (const char *_GPGRT__RESTRICT path,
       cookie = NULL;
       create_called = 0;
 
-      samethread = stream->intern->samethread;
+      xmode = stream->intern->samethread ? X_SAMETHREAD : 0;
 
       lock_stream (stream);
 
       es_deinitialize (stream);
 
-      err = parse_mode (mode, &modeflags, &dummy, NULL, &cmode);
+      err = parse_mode (mode, &modeflags, &dummy, &cmode);
       if (err)
 	goto leave;
       (void)dummy;
@@ -3584,7 +3582,7 @@ _gpgrt_freopen (const char *_GPGRT__RESTRICT path,
       syshd.u.fd = fd;
       create_called = 1;
       init_stream_obj (stream, cookie, &syshd, estream_functions_fd,
-                       modeflags, samethread);
+                       modeflags, xmode);
 
     leave:
 

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-gnupg/libgpg-error.git



More information about the Pkg-gnupg-commit mailing list