setegid.c
上传用户:weiyuanprp
上传日期:2020-05-20
资源大小:1169k
文件大小:2k
源码类别:

传真(Fax)编程

开发平台:

C/C++

  1. /* $Id: setegid.c,v 1.1.1.1 2005/11/11 21:32:03 faxguy Exp $
  2. /*
  3.  * Copyright (c) 1994-1996 Sam Leffler
  4.  * Copyright (c) 1994-1996 Silicon Graphics, Inc.
  5.  * HylaFAX is a trademark of Silicon Graphics, Inc.
  6.  *
  7.  * Permission to use, copy, modify, distribute, and sell this software and 
  8.  * its documentation for any purpose is hereby granted without fee, provided
  9.  * that (i) the above copyright notices and this permission notice appear in
  10.  * all copies of the software and related documentation, and (ii) the names of
  11.  * Sam Leffler and Silicon Graphics may not be used in any advertising or
  12.  * publicity relating to the software without the specific, prior written
  13.  * permission of Sam Leffler and Silicon Graphics.
  14.  * 
  15.  * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, 
  16.  * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY 
  17.  * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.  
  18.  * 
  19.  * IN NO EVENT SHALL SAM LEFFLER OR SILICON GRAPHICS BE LIABLE FOR
  20.  * ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND,
  21.  * OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
  22.  * WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF 
  23.  * LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE 
  24.  * OF THIS SOFTWARE.
  25.  */
  26. #include "port.h"
  27. #include <unistd.h>
  28. #if defined(hpux) || defined(__hpux) || defined(__hpux__)
  29. int
  30. setegid(gid_t gid)
  31. {
  32.     return (setresgid(-1, gid, -1));
  33. }
  34. #endif
  35. #ifdef sco
  36. #include <fcntl.h>
  37. #include <sys/socket.h>
  38. #include <sys/types.h>
  39. #define NULL 0
  40. extern errno;
  41. int setregid(rgid, egid)
  42. int rgid, egid;
  43. {
  44. int myfile; 
  45. int res;
  46. int tmperrno;
  47. struct socksysreq request;
  48. if ((myfile = open("/dev/socksys", O_RDWR)) < NULL)
  49. return(-1);
  50. request.args[0] = SO_SETREGID;
  51. request.args[1] = rgid;
  52. request.args[2] = egid;
  53. res = ioctl(myfile, SIOCSOCKSYS, &request);
  54. tmperrno = errno;
  55. close(myfile);
  56. errno = tmperrno;
  57. return(res);
  58. }
  59. int setegid(gid)
  60. int gid;
  61. {
  62. return(setregid(-1, gid));
  63. }
  64. #endif