Return-Path: Delivered-To: apmail-apr-cvs-archive@apr.apache.org Received: (qmail 778 invoked by uid 500); 4 Oct 2001 00:03:41 -0000 Mailing-List: contact cvs-help@apr.apache.org; run by ezmlm Precedence: bulk List-Post: List-Help: List-Unsubscribe: List-Subscribe: Reply-To: dev@apr.apache.org Delivered-To: mailing list cvs@apr.apache.org Received: (qmail 751 invoked from network); 4 Oct 2001 00:03:40 -0000 Date: 4 Oct 2001 00:01:09 -0000 Message-ID: <20011004000109.51540.qmail@icarus.apache.org> From: bnicholes@apache.org To: apr-cvs@apache.org Subject: cvs commit: apr/file_io/netware pipe.c filepath.c X-Spam-Rating: daedalus.apache.org 1.6.2 0/1000/N bnicholes 01/10/03 17:01:09 Added: file_io/netware pipe.c filepath.c Log: NetWare versions of pipe.c and filepath.c Revision Changes Path 1.1 apr/file_io/netware/pipe.c Index: pipe.c =================================================================== /* ==================================================================== * The Apache Software License, Version 1.1 * * Copyright (c) 2000-2001 The Apache Software Foundation. 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, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The end-user documentation included with the redistribution, * if any, must include the following acknowledgment: * "This product includes software developed by the * Apache Software Foundation (http://www.apache.org/)." * Alternately, this acknowledgment may appear in the software itself, * if and wherever such third-party acknowledgments normally appear. * * 4. The names "Apache" and "Apache Software Foundation" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact apache@apache.org. * * 5. Products derived from this software may not be called "Apache", * nor may "Apache" appear in their name, without prior written * permission of the Apache Software Foundation. * * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED 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 APACHE SOFTWARE FOUNDATION OR * ITS CONTRIBUTORS 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. * ==================================================================== * * This software consists of voluntary contributions made by many * individuals on behalf of the Apache Software Foundation. For more * information on the Apache Software Foundation, please see * . */ #include #include #include "fileio.h" #include "apr_strings.h" static int convert_error (int err) { switch (err) { default : break; case NX_EINVAL: return APR_EINVAL; case NX_EBADF: return APR_EBADF; case NX_ENOENT: return APR_ENOENT; case NX_ENAMETOOLONG:return APR_ENAMETOOLONG; } return err; } static apr_status_t pipeblock(apr_file_t *thepipe) { int err; unsigned long flags; #ifdef TBD if (!(err = NXGetCtlInfo(thepipe->filedes, NX_CTL_FLAGS, &flags))) { flags &= ~NX_O_NONBLOCK; err = NXSetCtlInfo(thepipe->filedes, NX_CTL_FLAGS, flags); } #endif if (err) return convert_error (err); thepipe->blocking = BLK_ON; return APR_SUCCESS; } static apr_status_t pipenonblock(apr_file_t *thepipe) { int err; unsigned long flags; #ifdef TBD if (!(err = NXGetCtlInfo(thepipe->filedes, NX_CTL_FLAGS, &flags))) { flags |= NX_O_NONBLOCK; err = NXSetCtlInfo(thepipe->filedes, NX_CTL_FLAGS, flags); } #endif if (err) return convert_error (err); thepipe->blocking = BLK_OFF; return APR_SUCCESS; } APR_DECLARE(apr_status_t) apr_file_pipe_timeout_set(apr_file_t *thepipe, apr_interval_time_t timeout) { if (thepipe->pipe == 1) { thepipe->timeout = timeout; if (timeout >= 0) { if (thepipe->blocking != BLK_OFF) { /* blocking or unknown state */ return pipenonblock(thepipe); } } else { if (thepipe->blocking != BLK_ON) { /* non-blocking or unknown state */ return pipeblock(thepipe); } } return APR_SUCCESS; } return APR_EINVAL; } 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; } APR_DECLARE(apr_status_t) apr_file_pipe_create(apr_file_t **in, apr_file_t **out, apr_pool_t *cont) { char tname[L_tmpnam+1]; NXHandle_t filedes[2]; int err; if (!tmpnam(tname)) return errno; if ( !(err = NXFifoOpen(0, tname, NX_O_RDONLY, 0, &filedes[0])) && !(err = NXFifoOpen(0, tname, NX_O_WRONLY, 0, &filedes[1]))) { (*in)->cntxt = (*out)->cntxt = cont; (*in)->filedes = filedes[0]; (*out)->filedes = filedes[1]; (*in)->pipe = (*out)->pipe = 1; (*out)->fname = (*in)->fname = NULL; (*in)->buffered = (*out)->buffered = 0; (*in)->blocking = (*out)->blocking = BLK_ON; (*in)->timeout = (*out)->timeout = -1; (*in)->ungetchar = -1; (*in)->thlock = (*out)->thlock = NULL; } else { if (filedes[0] != (NXHandle_t) -1) NXClose(filedes[0]); if (err) return convert_error (err); } return APR_SUCCESS; } APR_DECLARE(apr_status_t) apr_file_namedpipe_create(const char *filename, apr_fileperms_t perm, apr_pool_t *cont) { mode_t mode = apr_unix_perms2mode(perm); NXHandle_t filedes; int err; err = NXFifoOpen(0, filename, mode, 0, &filedes); if (err) return convert_error (err); return APR_SUCCESS; } 1.1 apr/file_io/netware/filepath.c Index: filepath.c =================================================================== /* NetWare & Win32 have much in common with regards to file names (both are * DOSish) so it makes sense to share some code */ #include "../win32/filepath.c"