"Fossies" - the Fresh Open Source Software Archive

Member "mod_spnego-0.2.0/win32-env.c" (8 May 2011, 3891 Bytes) of package /linux/www/apache_httpd_modules/old/mod_spnego-0.2.0.tar.gz:


As a special service "Fossies" has tried to format the requested source page into HTML format using (guessed) C and C++ source code syntax highlighting (style: standard) with prefixed line numbers and code folding option. Alternatively you can here view or download the uninterpreted source code file. For more information about "win32-env.c" see the Fossies "Dox" file reference documentation.

    1 /* win32-env.c */
    2 
    3 /*
    4  * Frank Balluffi modified the following code from Apache 2.0.
    5  */
    6 
    7 /* ====================================================================
    8  * The Apache Software License, Version 1.1
    9  *
   10  * Copyright (c) 2000-2003 The Apache Software Foundation.  All rights
   11  * reserved.
   12  *
   13  * Redistribution and use in source and binary forms, with or without
   14  * modification, are permitted provided that the following conditions
   15  * are met:
   16  *
   17  * 1. Redistributions of source code must retain the above copyright
   18  *    notice, this list of conditions and the following disclaimer.
   19  *
   20  * 2. Redistributions in binary form must reproduce the above copyright
   21  *    notice, this list of conditions and the following disclaimer in
   22  *    the documentation and/or other materials provided with the
   23  *    distribution.
   24  *
   25  * 3. The end-user documentation included with the redistribution,
   26  *    if any, must include the following acknowledgment:
   27  *       "This product includes software developed by the
   28  *        Apache Software Foundation (http://www.apache.org/)."
   29  *    Alternately, this acknowledgment may appear in the software itself,
   30  *    if and wherever such third-party acknowledgments normally appear.
   31  *
   32  * 4. The names "Apache" and "Apache Software Foundation" must
   33  *    not be used to endorse or promote products derived from this
   34  *    software without prior written permission. For written
   35  *    permission, please contact apache@apache.org.
   36  *
   37  * 5. Products derived from this software may not be called "Apache",
   38  *    nor may "Apache" appear in their name, without prior written
   39  *    permission of the Apache Software Foundation.
   40  *
   41  * THIS SOFTWARE IS PROVIDED ``AS IS'' AND ANY EXPRESSED OR IMPLIED
   42  * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
   43  * OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
   44  * DISCLAIMED.  IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
   45  * ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
   46  * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
   47  * LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
   48  * USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
   49  * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
   50  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
   51  * OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
   52  * SUCH DAMAGE.
   53  * ====================================================================
   54  *
   55  * This software consists of voluntary contributions made by many
   56  * individuals on behalf of the Apache Software Foundation.  For more
   57  * information on the Apache Software Foundation, please see
   58  * <http://www.apache.org/>.
   59  */
   60 
   61 #include "httpd.h"
   62 
   63 /*
   64  * For now, force apr_env_set to call call SetEnvironmentVariableA.
   65  */
   66 
   67 #define APR_HAS_ANSI_FS      1
   68 #define APR_HAS_UNICODE_FS   0
   69 #define APR_SUCCESS          0
   70 #define ELSE_WIN_OS_IS_ANSI
   71 #define IF_WIN_OS_IS_UNICODE
   72 
   73 int
   74 apr_env_set(const char *envvar,
   75     const char *value,
   76     pool * pool)
   77 {
   78 #if APR_HAS_UNICODE_FS
   79     IF_WIN_OS_IS_UNICODE
   80     {
   81     apr_wchar_t wenvvar[APR_PATH_MAX];
   82     apr_wchar_t *wvalue;
   83     apr_size_t inchars, outchars;
   84     apr_status_t status;
   85 
   86     status = widen_envvar_name(wenvvar, APR_PATH_MAX, envvar);
   87     if (status)
   88         return status;
   89 
   90     outchars = inchars = strlen(value) + 1;
   91     wvalue = apr_palloc(pool, outchars * sizeof(*wvalue));
   92     status = apr_conv_utf8_to_ucs2(value, &inchars, wvalue, &outchars);
   93     if (status)
   94         return status;
   95 
   96     if (!SetEnvironmentVariableW(wenvvar, wvalue))
   97         return apr_get_os_error();
   98     }
   99 #endif
  100 #if APR_HAS_ANSI_FS
  101     ELSE_WIN_OS_IS_ANSI
  102     {
  103 
  104     /*
  105      * If SetEnvironmentVariableA fails, return 1 -- do not call
  106      * apr_get_os_error.
  107      */
  108 
  109     if (!SetEnvironmentVariableA(envvar, value))
  110         /* return apr_get_os_error(); */
  111         return 1;
  112     }
  113 #endif
  114 
  115     return APR_SUCCESS;
  116 }