Subversion Repositories Kolibri OS

Rev

Blame | Last modification | View Log | RSS feed

  1. /*
  2.  * Copyright (c) 2014 Red Hat, Inc.
  3.  * All rights reserved.
  4.  *
  5.  * Redistribution and use in source and binary forms, with or without
  6.  * modification, are permitted provided that the following conditions
  7.  * are met:
  8.  * 1. Redistributions of source code must retain the above copyright
  9.  *    notice, this list of conditions and the following disclaimer.
  10.  * 2. Redistributions in binary form must reproduce the above copyright
  11.  *    notice, this list of conditions and the following disclaimer in the
  12.  *    documentation and/or other materials provided with the distribution.
  13.  *
  14.  * THIS SOFTWARE IS PROVIDED BY THE AUTHOR AND CONTRIBUTORS ``AS IS'' AND
  15.  * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
  16.  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
  17.  * ARE DISCLAIMED.  IN NO EVENT SHALL THE AUTHOR OR CONTRIBUTORS BE LIABLE
  18.  * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
  19.  * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
  20.  * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
  21.  * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
  22.  * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
  23.  * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
  24.  * SUCH DAMAGE.
  25.  */
  26. /*
  27. FUNCTION
  28. <<__fsetlocking>>---set or query locking mode on FILE stream
  29.  
  30. INDEX
  31.         __fsetlocking
  32.  
  33. ANSI_SYNOPSIS
  34.         #include <stdio.h>
  35.         #include <stdio_ext.h>
  36.         int __fsetlocking(FILE *<[fp]>, int <[type]>);
  37.  
  38. DESCRIPTION
  39. This function sets how the stdio functions handle locking of FILE <[fp]>.
  40. The following values describe <[type]>:
  41.  
  42. <<FSETLOCKING_INTERNAL>> is the default state, where stdio functions
  43. automatically lock and unlock the stream.
  44.  
  45. <<FSETLOCKING_BYCALLER>> means that automatic locking in stdio functions
  46. is disabled. Applications which set this take all responsibility for file
  47. locking themselves.
  48.  
  49. <<FSETLOCKING_QUERY>> returns the current locking mode without changing it.
  50.  
  51. RETURNS
  52. <<__fsetlocking>> returns the current locking mode of <[fp]>.
  53.  
  54. PORTABILITY
  55. This function originates from Solaris and is also provided by GNU libc.
  56.  
  57. No supporting OS subroutines are required.
  58. */
  59.  
  60. #ifndef __rtems__
  61.  
  62. #include <_ansi.h>
  63. #include <stdio.h>
  64. #include <stdio_ext.h>
  65. #include "local.h"
  66.  
  67. int
  68. _DEFUN(__fsetlocking, (fp, type),
  69.        FILE * fp _AND
  70.        int type)
  71. {
  72.   int result;
  73.   CHECK_INIT(_REENT, fp);
  74.   result = (fp->_flags2 & __SNLK) ? FSETLOCKING_BYCALLER : FSETLOCKING_INTERNAL;
  75.   switch (type)
  76.     {
  77.     case FSETLOCKING_BYCALLER:
  78.       fp->_flags2 |= __SNLK;
  79.       break;
  80.     case FSETLOCKING_INTERNAL:
  81.       fp->_flags2 &= ~__SNLK;
  82.       break;
  83.     case FSETLOCKING_QUERY:
  84.     default:
  85.       break;
  86.     }
  87.   return result;
  88. }
  89.  
  90. #endif /* __rtems__ */
  91.