(file) Return to SystemWindows.cpp CVS log (file) (dir) Up to [Pegasus] / pegasus / src / Pegasus / Common

Diff for /pegasus/src/Pegasus/Common/SystemWindows.cpp between version 1.64 and 1.70

version 1.64, 2006/06/26 22:23:29 version 1.70, 2006/11/10 18:14:58
Line 29 
Line 29 
 // //
 //============================================================================== //==============================================================================
 // //
 // Author: Mike Brasher (mbrasher@bmc.com)  
 //  
 // Modified By: Sushma Fernandes (sushma_fernandes@hp.com)  
 //              Nag Boranna, Hewlett-Packard Company (nagaraja_boranna@hp.com)  
 //              Bapu Patil (bapu_patil@hp.com)  
 //  
 // Modified By: Dave Rosckes (rosckes@us.ibm.com)  
 //              Terry Martin, Hewlett-Packard Company (terry.martin@hp.com)  
 //              Amit K Arora, IBM (amita@in.ibm.com) for Bug#1428  
 //              Seema Gupta (gseema@in.ibm.com) for Bug#1617  
 //              David Dillard, VERITAS Software Corp.  
 //                  (david.dillard@veritas.com)  
 //  
 //%///////////////////////////////////////////////////////////////////////////// //%/////////////////////////////////////////////////////////////////////////////
  
 #include "System.h" #include "System.h"
  
 #include "Network.h" #include "Network.h"
   #include "Mutex.h"
 #include <fcntl.h> #include <fcntl.h>
 #include <sys/types.h> #include <sys/types.h>
 #include <time.h> #include <time.h>
Line 176 
Line 164 
     return rename(oldPath, newPath) == 0;     return rename(oldPath, newPath) == 0;
 } }
  
 DynamicLibraryHandle System::loadDynamicLibrary(const char* fileName)  
 {  
     return DynamicLibraryHandle(LoadLibrary(fileName));  
 }  
   
 void System::unloadDynamicLibrary(DynamicLibraryHandle libraryHandle)  
 {  
     FreeLibrary(HINSTANCE(libraryHandle));  
 }  
   
 String System::dynamicLoadError(void) {  
 return String();  
 }  
   
 DynamicSymbolHandle System::loadDynamicSymbol(  
     DynamicLibraryHandle libraryHandle,  
     const char* symbolName)  
 {  
     return DynamicSymbolHandle(GetProcAddress(  
     (HINSTANCE)libraryHandle, symbolName));  
 }  
   
 String System::getHostName() String System::getHostName()
 { {
     static char hostname[PEGASUS_MAXHOSTNAMELEN + 1];     static char hostname[PEGASUS_MAXHOSTNAMELEN + 1];
Line 382 
Line 348 
             userId.append(Char16(userName[i]));             userId.append(Char16(userName[i]));
         }         }
  
         } else      }
       else
         {         {
                 //userId.append(userName);                 //userId.append(userName);
         Uint32 n = wcslen(userName);         Uint32 n = wcslen(userName);
Line 416 
Line 383 
         userId.append(Char16(pUserName[i]));         userId.append(Char16(pUserName[i]));
     }     }
  
   
     return userId;     return userId;
 #endif #endif
 } }
Line 471 
Line 437 
     LPUSER_INFO_1 pUserInfo = NULL;     LPUSER_INFO_1 pUserInfo = NULL;
     NET_API_STATUS nStatus = NULL;     NET_API_STATUS nStatus = NULL;
  
     // Make a copy of the specified username, it cannot be used directly because it's      // Make a copy of the specified username, it cannot be used directly
     // declared as const and strchr() may modify the string.      // because it's declared as const and strchr() may modify the string.
     strncpy(tUserName, userName, sizeof(tUserName) - 1);     strncpy(tUserName, userName, sizeof(tUserName) - 1);
     tUserName[sizeof(tUserName)- 1] = '\0';     tUserName[sizeof(tUserName)- 1] = '\0';
  
Line 484 
Line 450 
         strcpy(mUserName, pbs+1);         strcpy(mUserName, pbs+1);
         usingDomain = true;         usingDomain = true;
  
     } else if ((NULL != (pbs = (strchr(tUserName, '@')))) ||      }
       else if ((NULL != (pbs = (strchr(tUserName, '@')))) ||
                (NULL != (pbs = (strchr(tUserName, '.')))))                (NULL != (pbs = (strchr(tUserName, '.')))))
     {     {
         *pbs = '\0';         *pbs = '\0';
Line 492 
Line 459 
         strcpy(mUserName, tUserName);         strcpy(mUserName, tUserName);
         usingDomain = true;         usingDomain = true;
  
     } else      }
       else
     {     {
         strcpy(mDomainName, ".");         strcpy(mDomainName, ".");
         strcpy(mUserName, tUserName);         strcpy(mUserName, tUserName);
     }     }
  
     //convert domain name to unicode     //convert domain name to unicode
     if (!MultiByteToWideChar(CP_ACP, 0, mDomainName, -1, wDomainName, strlen(mDomainName)+1))      if (!MultiByteToWideChar(
               CP_ACP, 0, mDomainName, -1, wDomainName, strlen(mDomainName) + 1))
     {     {
         return false;         return false;
     }     }
  
     //convert username to unicode     //convert username to unicode
     if (!MultiByteToWideChar(CP_ACP, 0, mUserName, -1, wUserName, strlen(mUserName)+1))      if (!MultiByteToWideChar(
               CP_ACP, 0, mUserName, -1, wUserName, strlen(mUserName) + 1))
     {     {
         return false;         return false;
     }     }
Line 516 
Line 486 
         DWORD rc = NetGetDCName(NULL, wDomainName, &pComputerName);         DWORD rc = NetGetDCName(NULL, wDomainName, &pComputerName);
         if (rc == NERR_Success)         if (rc == NERR_Success)
         {         {
             wcscpy(wDomainName, (LPWSTR) pComputerName); //this is automatically prefixed with "\\"              // this is automatically prefixed with "\\"
               wcscpy(wDomainName, (LPWSTR) pComputerName);
         }         }
         /*         /*
         else         else
         {         {
             // failover             // failover
             // ATTN: This is commented out until there is resolution on Bugzilla 2236. -hns 2/2005              // ATTN: This is commented out until there is resolution on
               // Bugzilla 2236. -hns 2/2005
             // This needs to be more thoroughly tested when we uncomment it out.             // This needs to be more thoroughly tested when we uncomment it out.
  
             PDOMAIN_CONTROLLER_INFO DomainControllerInfo = NULL;             PDOMAIN_CONTROLLER_INFO DomainControllerInfo = NULL;
Line 532 
Line 504 
                              mDomainName,                              mDomainName,
                              NULL,                              NULL,
                              NULL,                              NULL,
                              DS_DIRECTORY_SERVICE_REQUIRED,  //not sure what flags we want here                               //not sure what flags we want here
                                DS_DIRECTORY_SERVICE_REQUIRED,
                              &DomainControllerInfo);                              &DomainControllerInfo);
  
             if (rc == ERROR_SUCCESS && DomainControllerInfo)             if (rc == ERROR_SUCCESS && DomainControllerInfo)
Line 540 
Line 513 
                 strcpy(mDomainName, DomainControllerInfo->DomainName);                 strcpy(mDomainName, DomainControllerInfo->DomainName);
                 NetApiBufferFree(DomainControllerInfo);                 NetApiBufferFree(DomainControllerInfo);
  
                 if (!MultiByteToWideChar(CP_ACP, 0, mDomainName, -1, wDomainName, strlen(mDomainName)+1))                  if (!MultiByteToWideChar(
                           CP_ACP, 0, mDomainName, -1, wDomainName,
                           strlen(mDomainName) + 1))
                 {                 {
                     return false;                     return false;
                 }                 }
Line 602 
Line 577 
         strcpy(mUserName, pbs+1);         strcpy(mUserName, pbs+1);
         usingDomain = true;         usingDomain = true;
  
     } else if ((NULL != (pbs = (strchr(userStr, '@')))) ||      }
       else if ((NULL != (pbs = (strchr(userStr, '@')))) ||
                (NULL != (pbs = (strchr(userStr, '.')))))                (NULL != (pbs = (strchr(userStr, '.')))))
     {     {
         *pbs = '\0';         *pbs = '\0';
Line 610 
Line 586 
         strcpy(mUserName, userStr);         strcpy(mUserName, userStr);
         usingDomain = true;         usingDomain = true;
  
     } else      }
       else
     {     {
         strcpy(mDomainName, ".");         strcpy(mDomainName, ".");
         strcpy(mUserName, userStr);         strcpy(mUserName, userStr);
     }     }
  
     //convert domain name to unicode     //convert domain name to unicode
     if (!MultiByteToWideChar(CP_ACP, 0, mDomainName, -1, wDomainName, strlen(mDomainName)+1))      if (!MultiByteToWideChar(
               CP_ACP, 0, mDomainName, -1, wDomainName, strlen(mDomainName) + 1))
     {     {
         return false;         return false;
     }     }
  
     //convert username to unicode     //convert username to unicode
     if (!MultiByteToWideChar(CP_ACP, 0, mUserName, -1, wUserName, strlen(mUserName)+1))      if (!MultiByteToWideChar(
               CP_ACP, 0, mUserName, -1, wUserName, strlen(mUserName) + 1))
     {     {
         return false;         return false;
     }     }
Line 634 
Line 613 
         DWORD rc = NetGetDCName(NULL, wDomainName, &pComputerName);         DWORD rc = NetGetDCName(NULL, wDomainName, &pComputerName);
         if (rc == NERR_Success)         if (rc == NERR_Success)
         {         {
             wcscpy(wDomainName, (LPWSTR) pComputerName); //this is automatically prefixed with "\\"              // this is automatically prefixed with "\\"
               wcscpy(wDomainName, (LPWSTR) pComputerName);
         }         }
         /*         /*
         else         else
         {         {
             // failover             // failover
             // ATTN: This is commented out until there is resolution on Bugzilla 2236. -hns 2/2005              // ATTN: This is commented out until there is resolution on
               // Bugzilla 2236. -hns 2/2005
             // This needs to be more thoroughly tested when we uncomment it out.             // This needs to be more thoroughly tested when we uncomment it out.
  
             PDOMAIN_CONTROLLER_INFO DomainControllerInfo = NULL;             PDOMAIN_CONTROLLER_INFO DomainControllerInfo = NULL;
Line 650 
Line 631 
                              mDomainName,                              mDomainName,
                              NULL,                              NULL,
                              NULL,                              NULL,
                              DS_DIRECTORY_SERVICE_REQUIRED,  //not sure what flags we want here                               // not sure what flags we want here
                                DS_DIRECTORY_SERVICE_REQUIRED,
                              &DomainControllerInfo);                              &DomainControllerInfo);
  
             if (rc == ERROR_SUCCESS && DomainControllerInfo)             if (rc == ERROR_SUCCESS && DomainControllerInfo)
Line 658 
Line 640 
                 strcpy(mDomainName, DomainControllerInfo->DomainName);                 strcpy(mDomainName, DomainControllerInfo->DomainName);
                 NetApiBufferFree(DomainControllerInfo);                 NetApiBufferFree(DomainControllerInfo);
  
                 if (!MultiByteToWideChar(CP_ACP, 0, mDomainName, -1, wDomainName, strlen(mDomainName)+1))                  if (!MultiByteToWideChar(
                           CP_ACP, 0, mDomainName, -1, wDomainName,
                           strlen(mDomainName) + 1))
                 {                 {
                     return false;                     return false;
                 }                 }
Line 698 
Line 682 
     // ATTN-NB-03-20000304: Implement better way to get the privileged     // ATTN-NB-03-20000304: Implement better way to get the privileged
     // user on the system.     // user on the system.
  
     return (String("Administrator"));      return String("Administrator");
 } }
  
 Boolean System::isGroupMember(const char* userName, const char* groupName) Boolean System::isGroupMember(const char* userName, const char* groupName)
Line 892 
Line 876 
       if (*p == '/')       if (*p == '/')
           *p = '\\';           *p = '\\';
  
     return (strcasecmp(_fullpath( full, path_slash, _MAX_PATH ), path_slash) == 0) ? true : false;      return (strcasecmp(
           _fullpath(full, path_slash, _MAX_PATH), path_slash) == 0);
 } }
  
 // Changes file permissions on the given file. // Changes file permissions on the given file.
Line 914 
Line 899 
     // Not implemented     // Not implemented
 } }
  
   void System::openlog(const char *ident, int logopt, int facility)
   {
       // Not implemented
   }
   
   void System::closelog()
   {
       // Not implemented
   }
   
   
   
 // System ID constants for Logger::put and Logger::trace // System ID constants for Logger::put and Logger::trace
 const String System::CIMSERVER = "cimserver";  // Server system ID const String System::CIMSERVER = "cimserver";  // Server system ID
  
   // check if a given IP address is defined on the local network interfaces
   Boolean System::isIpOnNetworkInterface(Uint32 inIP)
   {
       SOCKET sock;
       int interfaces = 0;
       int errcode;
   
       if ( SOCKET_ERROR != ( sock  = WSASocket(AF_INET,
                            SOCK_RAW, 0, NULL, 0, 0) ) )
       {
           unsigned long *bytes_returned=0;
           char *output_buf = (char *)calloc(1, 256);
           int buf_size = 256;
   
           if ( 0 == (errcode = WSAIoctl(sock,
                                         SIO_ADDRESS_LIST_QUERY,
                                         NULL,
                                         0,
                                         output_buf,
                                         256,
                                         bytes_returned,
                                         NULL,
                                         NULL)) )
           {
               SOCKET_ADDRESS_LIST *addr_list;
               SOCKET_ADDRESS *addr;
               Uint32 ip;
               struct sockaddr_in *sin;
   
               addr_list = (SOCKET_ADDRESS_LIST *)output_buf;
               addr = addr_list->Address;
   
               sin = (struct sockaddr_in *)addr->lpSockaddr;
   
               for ( ; interfaces < addr_list->iAddressCount; interfaces++)
               {
                   ip = sin->sin_addr.s_addr;
                   addr++;
                   sin = (struct sockaddr_in *)addr->lpSockaddr;
                   if (ip == inIP)
                   {
                       free(output_buf);
                       closesocket(sock);
                       return true;
                   }
               }
           }
           else
           {
               free(output_buf);
               return false;
           }
           free(output_buf);
           closesocket(sock);
       }
       return false;
   }
   
   
   
   ///////////////////////////////////////////////////////////////////////////////
   // AutoFileLock class
   ///////////////////////////////////////////////////////////////////////////////
   
   AutoFileLock::AutoFileLock(const char* fileName)
   {
       // ATTN: Not implemented
   }
   
   AutoFileLock::~AutoFileLock()
   {
       // ATTN: Not implemented
   }
   
 PEGASUS_NAMESPACE_END PEGASUS_NAMESPACE_END


Legend:
Removed from v.1.64  
changed lines
  Added in v.1.70

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2