You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@apr.apache.org by wr...@apache.org on 2003/01/24 19:22:13 UTC

cvs commit: apr/file_io/win32 pipe.c

wrowe       2003/01/24 10:22:13

  Modified:    file_io/win32 pipe.c
  Log:
    Expand the set/get semantic slightly... always allow the user to recover
    the timeout (usually -1 for files and blocking pipes) and allow the user
    to set the timeout to -1 always.  Returns APR_EINVAL (new behavior) when
    the user attempts to set the timeout of a blocking pipe.
  
    While most of our pipes should become non-blocking, console apps cannot
    be passed a non-blocking pipe handle.
  
  Revision  Changes    Path
  1.51      +15 -7     apr/file_io/win32/pipe.c
  
  Index: pipe.c
  ===================================================================
  RCS file: /home/cvs/apr/file_io/win32/pipe.c,v
  retrieving revision 1.50
  retrieving revision 1.51
  diff -u -r1.50 -r1.51
  --- pipe.c	24 Jan 2003 17:15:55 -0000	1.50
  +++ pipe.c	24 Jan 2003 18:22:13 -0000	1.51
  @@ -71,20 +71,28 @@
   
   APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe, apr_interval_time_t timeout)
   {
  -    if (thepipe->pipe == 1) {
  +    /* Always OK to unset timeouts */
  +    if (timeout == -1) {
           thepipe->timeout = timeout;
           return APR_SUCCESS;
       }
  -    return APR_EINVAL;
  +    if (!thepipe->pipe) {
  +        return APR_ENOTIMPL;
  +    }
  +    if (timeout && !(thepipe->pOverlapped)) {
  +        /* Cannot be nonzero if a pipe was opened blocking
  +         */
  +        return APR_EINVAL;
  +    }
  +    thepipe->timeout = timeout;
  +    return APR_SUCCESS;
   }
   
   APR_DECLARE(apr_status_t) apr_file_pipe_timeout_get(apr_file_t *thepipe, apr_interval_time_t *timeout)
   {
  -    if (thepipe->pipe == 1) {
  -        *timeout = thepipe->timeout;
  -        return APR_SUCCESS;
  -    }
  -    return APR_EINVAL;
  +    /* Always OK to get the timeout (even if it's unset ... -1) */
  +    *timeout = thepipe->timeout;
  +    return APR_SUCCESS;
   }
   
   APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out, apr_pool_t *p)