⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tlib.cxx

📁 安装 H323需要的pwlib库
💻 CXX
📖 第 1 页 / 共 2 页
字号:
/* * tlib.cxx * * Miscelaneous class implementation * * Portable Windows Library * * Copyright (c) 1993-1998 Equivalence Pty. Ltd. * * The contents of this file are subject to the Mozilla Public License * Version 1.0 (the "License"); you may not use this file except in * compliance with the License. You may obtain a copy of the License at * http://www.mozilla.org/MPL/ * * Software distributed under the License is distributed on an "AS IS" * basis, WITHOUT WARRANTY OF ANY KIND, either express or implied. See * the License for the specific language governing rights and limitations * under the License. * * The Original Code is Portable Windows Library. * * The Initial Developer of the Original Code is Equivalence Pty. Ltd. * * Portions are Copyright (C) 1993 Free Software Foundation, Inc. * All Rights Reserved. * * Contributor(s): ______________________________________. * * $Log: tlib.cxx,v $ * Revision 1.70  2004/07/11 07:56:36  csoutheren * Applied jumbo VxWorks patch, thanks to Eize Slange * * Revision 1.69  2003/09/18 23:52:08  dereksmithies * Fix checks on NULL pointers. Many thanks to Chris Rankin. * * Revision 1.68  2003/09/17 01:18:04  csoutheren * Removed recursive include file system and removed all references * to deprecated coooperative threading support * * Revision 1.67  2003/01/24 10:21:06  robertj * Fixed issues in RTEMS support, thanks Vladimir Nesic * * Revision 1.66  2002/12/11 23:02:39  robertj * Added ability to set user identity temporarily and permanently. * Added ability to have username exclusively digits which corresponds to a uid. * Added get and set users group functions. * * Revision 1.65  2002/12/02 03:57:18  robertj * More RTEMS support patches, thank you Vladimir Nesic. * * Revision 1.64  2002/11/22 10:14:07  robertj * QNX port, thanks Xiaodan Tang * * Revision 1.63  2002/11/02 00:32:21  robertj * Further fixes to VxWorks (Tornado) port, thanks Andreas Sikkema. * * Revision 1.62  2002/10/17 13:44:27  robertj * Port to RTEMS, thanks Vladimir Nesic. * * Revision 1.61  2002/10/10 04:43:44  robertj * VxWorks port, thanks Martijn Roest * * Revision 1.60  2002/06/27 08:09:06  robertj * GNU GCC 3.1 compatibility under Solaris * * Revision 1.59  2001/11/25 23:30:31  robertj * Added PProcess::SetUserName() function to set euid * * Revision 1.58  2001/10/11 02:20:54  robertj * Added IRIX support (no audio/video), thanks Andre Schulze. * * Revision 1.57  2001/09/18 05:56:03  robertj * Fixed numerous problems with thread suspend/resume and signals handling. * * Revision 1.56  2001/08/11 15:38:43  rogerh * Add Mac OS Carbon changes from John Woods <jfw@jfwhome.funhouse.com> * * Revision 1.55  2001/06/30 06:59:07  yurik * Jac Goudsmit from Be submit these changes 6/28. Implemented by Yuri Kiryanov * * Revision 1.54  2001/03/29 03:24:31  robertj * Removed capture of SIGQUIT so can still dro a core on demand. * * Revision 1.53  2001/03/14 01:16:11  robertj * Fixed signals processing, now uses housekeeping thread to handle signals *   synchronously. This also fixes issues with stopping PServiceProcess. * * Revision 1.52  2001/03/07 07:31:25  yurik * refined BeOS constants * * Revision 1.51  2000/06/21 01:01:22  robertj * AIX port, thanks Wolfgang Platzer (wolfgang.platzer@infonova.at). * * Revision 1.50  2000/04/09 18:19:23  rogerh * Add my changes for NetBSD support. * * Revision 1.49  2000/04/06 12:19:49  rogerh * Add Mac OS X support submitted by Kevin Packard * * Revision 1.48  2000/03/08 12:17:09  rogerh * Add OpenBSD support * * Revision 1.47  1999/09/03 02:26:25  robertj * Changes to aid in breaking I/O locks on thread termination. Still needs more work esp in BSD! * * Revision 1.46  1999/07/19 01:32:24  craigs * Changed signals used in pthreads code, is used by linux version. * * Revision 1.45  1999/07/11 13:42:13  craigs * pthreads support for Linux * * Revision 1.44  1999/06/28 09:28:02  robertj * Portability issues, especially n BeOS (thanks Yuri!) * * Revision 1.43  1999/05/13 04:44:18  robertj * Added SIGHUP and SIGWINCH handlers to increase and decrease the log levels. * * Revision 1.42  1999/03/02 05:41:59  robertj * More BeOS changes * * Revision 1.41  1999/02/26 04:10:39  robertj * More BeOS port changes * * Revision 1.40  1999/02/19 11:34:15  robertj * Added platform dependent function for "system configuration" directory. * * Revision 1.39  1999/02/06 05:49:44  robertj * BeOS port effort by Yuri Kiryanov <openh323@kiryanov.com> * * Revision 1.38  1999/01/11 12:10:39  robertj * Improved operating system version display. * * Revision 1.37  1999/01/08 01:31:01  robertj * Support for pthreads under FreeBSD * * Revision 1.36  1998/11/24 11:24:40  robertj * Added FreeBSD OSName * * Revision 1.35  1998/11/24 09:39:16  robertj * FreeBSD port. * * Revision 1.34  1998/10/31 14:14:21  robertj * Changed syncptack.h to syncthrd.h for more thread synchronisation objects. * * Revision 1.33  1998/10/19 00:29:57  robertj * Moved error stream to common. * * Revision 1.32  1998/09/24 04:12:22  robertj * Added open software license. * * Revision 1.31  1998/05/30 14:58:56  robertj * Fixed shutdown deadlock (and other failure modes) in cooperative threads. * * Revision 1.30  1998/04/17 15:13:08  craigs * Added lazy writes to Config cache * * Revision 1.29  1998/03/29 10:42:16  craigs * Changed for new initialisation scheme * * Revision 1.28  1998/03/26 05:01:12  robertj * Added PMutex and PSyncPoint classes. * * Revision 1.27  1998/01/04 08:09:23  craigs * Added support for PThreads through use of reentrant system calls * * Revision 1.26  1998/01/03 22:46:44  craigs * Added PThread support * * Revision 1.25  1997/05/10 08:04:15  craigs * Added new routines for access to PErrorStream * * Revision 1.24  1997/04/22 10:57:53  craigs * Removed DLL functions and added call the FreeStack * * Revision 1.23  1997/02/23 03:06:00  craigs * Changed for PProcess::Current reference * * Revision 1.22  1997/02/14 09:18:36  craigs * Changed for PProcess::Current being a reference rather that a ptr * * Revision 1.21  1996/12/30 03:21:46  robertj * Added timer to block on wait for child process. * * Revision 1.20  1996/12/29 13:25:02  robertj * Fixed GCC warnings. * * Revision 1.19  1996/11/16 11:11:46  craigs * Fixed problem with timeout on blocked IO channels * * Revision 1.18  1996/11/03 04:35:58  craigs * Added hack to avoid log timeouts, which shouldn't happen! * * Revision 1.17  1996/09/21 05:40:10  craigs * Changed signal hcnalding * * Revision 1.16  1996/09/03 11:55:19  craigs * Removed some potential problems with return values from system calls * * Revision 1.15  1996/06/29 01:43:11  craigs * Moved AllocateStack to switch.cxx to keep platform dependent routines in one place * * Revision 1.14  1996/06/10 12:46:53  craigs * Changed process.h include * * Revision 1.13  1996/05/25 06:06:33  craigs * Sun4 fixes and updated for gcc 2.7.2 * * Revision 1.12  1996/05/09 10:55:59  craigs * More SunOS fixes * * Revision 1.11  1996/05/03 13:15:27  craigs * More Sun4 & Solaris fixes * * Revision 1.10  1996/05/03 13:11:35  craigs * More Sun4 fixes * * Revision 1.9  1996/05/02 12:11:54  craigs * Sun4 fixes * * Revision 1.8  1996/04/18 11:43:38  craigs * Changed GetHomeDir to use effective UID for uid, and changed to * look at passwd file info *before* $HOME variable * * Revision 1.7  1996/04/15 10:49:11  craigs * Last build prior to release of MibMaster v1.0 * * Revision 1.6  1996/01/26 11:09:42  craigs * Added signal handlers * */#define _OSUTIL_CXX//#define SIGNALS_DEBUG#pragma implementation "args.h"#pragma implementation "pprocess.h"#pragma implementation "thread.h"#pragma implementation "semaphor.h"#pragma implementation "mutex.h"#pragma implementation "syncpoint.h"#pragma implementation "syncthrd.h"#include "ptlib.h"#ifdef P_VXWORKS#include <sys/times.h>#include <time.h>#include <hostLib.h>#include <remLib.h>#include <taskLib.h>#include <intLib.h>#else#include <sys/time.h>#include <pwd.h>#include <grp.h>#endif // P_VXWORKS#include <signal.h>#include <sys/wait.h>#include <errno.h>#if defined(P_LINUX)#include <sys/cdefs.h>#include <sys/types.h>#include <sys/mman.h>#endif#if defined(P_LINUX) || defined(P_SUN4) || defined(P_SOLARIS) || defined(P_FREEBSD) || defined(P_OPENBSD) || defined(P_NETBSD) || defined(P_MACOSX) || defined(P_MACOS) || defined (P_AIX) || defined(__BEOS__) || defined(P_IRIX) || defined(P_QNX)#include <sys/utsname.h>#define  HAS_UNAME#elif defined(P_RTEMS)extern "C" {#include <sys/utsname.h>}#define  HAS_UNAME#endif#include "uerror.h"#if defined(P_HPUX9)#define	SELECT(p1,p2,p3,p4,p5)		select(p1,(int *)(p2),(int *)(p3),(int *)(p4),p5)#else#define	SELECT(p1,p2,p3,p4,p5)		select(p1,p2,p3,p4,p5)#endif#if defined(P_SUN4)extern "C" void bzero(void *, int);extern "C" int select(int width,			fd_set *readfds,			fd_set *writefds,			fd_set *exceptfds,			struct timeval *timeout);#endif#ifdef __BEOS__#include "OS.h"#endifPString PProcess::GetOSClass(){#ifndef __BEOS__  return PString("Unix");#elif defined P_VXWORKS  return PString("VxWorks");#else  return PString("Be Inc.");#endif}PString PProcess::GetOSName(){#if defined(HAS_UNAME)  struct utsname info;  uname(&info);#ifdef P_SOLARIS  return PString(info.sysname) & info.release;#else  return PString(info.sysname);#endif#elif defined(P_VXWORKS)  return PString::Empty();#else#warning No GetOSName specified  return PString("Unknown");#endif}PString PProcess::GetOSHardware(){#if defined(HAS_UNAME)  struct utsname info;  uname(&info);  return PString(info.machine);#elif defined(P_VXWORKS)  return PString(sysModel());#else#warning No GetOSHardware specified  return PString("unknown");#endif}PString PProcess::GetOSVersion(){#if defined(HAS_UNAME)  struct utsname info;  uname(&info);#ifdef P_SOLARIS  return PString(info.version);#else  return PString(info.release);#endif#elif defined(P_VXWORKS)  return PString(sysBspRev());#else#warning No GetOSVersion specified  return PString("?.?");#endif}PDirectory PProcess::GetOSConfigDir(){#ifdef P_VXWORKS  return "./";#else  return "/etc";#endif // P_VXWORKS}PDirectory PProcess::PXGetHomeDir (){#ifdef P_VXWORKS  return "./";#else  PString dest;  char *ptr;  struct passwd *pw = NULL;#if defined(P_PTHREADS) && !defined(P_THREAD_SAFE_CLIB)  struct passwd pwd;  char buffer[1024];#if defined (P_LINUX) || defined(P_AIX) || defined(P_IRIX) || (__GNUC__>=3 && defined(P_SOLARIS)) || defined(P_RTEMS)  ::getpwuid_r(geteuid(), &pwd,               buffer, 1024,               &pw);#else  pw = ::getpwuid_r(geteuid(), &pwd, buffer, 1024);#endif#else  pw = ::getpwuid(geteuid());#endif  if (pw != NULL && pw->pw_dir != NULL)     dest = pw->pw_dir;  else if ((ptr = getenv ("HOME")) != NULL)     dest = ptr;  else     dest = ".";  if (dest.GetLength() > 0 && dest[dest.GetLength()-1] != '/')    dest += "/";  return dest;#endif}/////////////////////////////////////////////////////////////////////////////////// PProcess//// Return the effective user name of the process, eg "root" etc.PString PProcess::GetUserName() const{#ifdef P_VXWORKS  char pnamebuf[1024];  int len = 1024;  STATUS gethostresult;  gethostresult =::gethostname(pnamebuf,len);	  if (gethostresult == OK)    return PString(pnamebuf,len);  else    return PString("VxWorks");#else#if defined(P_PTHREADS) && !defined(P_THREAD_SAFE_CLIB)  struct passwd pwd;  char buffer[1024];  struct passwd * pw = NULL;#if defined (P_LINUX) || defined (P_AIX) || defined(P_IRIX) || (__GNUC__>=3 && defined(P_SOLARIS)) || defined(P_RTEMS)  ::getpwuid_r(geteuid(), &pwd, buffer, 1024, &pw);#else  pw = ::getpwuid_r(geteuid(), &pwd, buffer, 1024);#endif#else  struct passwd * pw = ::getpwuid(geteuid());#endif  char * ptr;  if (pw != NULL && pw->pw_name != NULL)    return PString(pw->pw_name);  else if ((ptr = getenv("USER")) != NULL)    return PString(ptr);  else    return PString("user");#endif // P_VXWORKS}BOOL PProcess::SetUserName(const PString & username, BOOL permanent){#ifdef P_VXWORKS  PAssertAlways("PProcess::SetUserName - not implemented for VxWorks");  return FALSE;#else  if (username.IsEmpty())    return seteuid(getuid()) != -1;  int uid = -1;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -