summaryrefslogtreecommitdiffstats
path: root/lib
diff options
context:
space:
mode:
authorNoriko Hosoi <nhosoi@redhat.com>2007-04-27 22:16:54 +0000
committerNoriko Hosoi <nhosoi@redhat.com>2007-04-27 22:16:54 +0000
commit237aa2dcedfe62681e32905058af6c068d2958fb (patch)
tree493da607f2aab32411153cd93d5d9ef074745c29 /lib
parentcdaf25f0089623a6bf277db47ca35011cf8c6a77 (diff)
downloadds-237aa2dcedfe62681e32905058af6c068d2958fb.tar.gz
ds-237aa2dcedfe62681e32905058af6c068d2958fb.tar.xz
ds-237aa2dcedfe62681e32905058af6c068d2958fb.zip
Resolves: #237356
Summary: Move DS Admin Code into Admin Server (Comment #3) Description: Cleaning up NT code
Diffstat (limited to 'lib')
-rw-r--r--lib/libnt/Makefile59
-rw-r--r--lib/libnt/info.c118
-rw-r--r--lib/libnt/path.c303
-rw-r--r--lib/libnt/pmddeml.c412
-rw-r--r--lib/libnt/registry.c279
-rw-r--r--lib/libnt/service.c412
-rw-r--r--lib/libnt/tcpip.c182
7 files changed, 0 insertions, 1765 deletions
diff --git a/lib/libnt/Makefile b/lib/libnt/Makefile
deleted file mode 100644
index b43797be..00000000
--- a/lib/libnt/Makefile
+++ /dev/null
@@ -1,59 +0,0 @@
-#
-# BEGIN COPYRIGHT BLOCK
-# This Program is free software; you can redistribute it and/or modify it under
-# the terms of the GNU General Public License as published by the Free Software
-# Foundation; version 2 of the License.
-#
-# This Program is distributed in the hope that it will be useful, but WITHOUT
-# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
-# FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License along with
-# this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
-# Place, Suite 330, Boston, MA 02111-1307 USA.
-#
-# In addition, as a special exception, Red Hat, Inc. gives You the additional
-# right to link the code of this Program with code not covered under the GNU
-# General Public License ("Non-GPL Code") and to distribute linked combinations
-# including the two, subject to the limitations in this paragraph. Non-GPL Code
-# permitted under this exception must only link to the code of this Program
-# through those well defined interfaces identified in the file named EXCEPTION
-# found in the source code files (the "Approved Interfaces"). The files of
-# Non-GPL Code may instantiate templates or use macros or inline functions from
-# the Approved Interfaces without causing the resulting work to be covered by
-# the GNU General Public License. Only Red Hat, Inc. may make changes or
-# additions to the list of Approved Interfaces. You must obey the GNU General
-# Public License in all respects for all of the Program code and other code used
-# in conjunction with the Program except the Non-GPL Code covered by this
-# exception. If you modify this file, you may extend this exception to your
-# version of the file, but you are not obligated to do so. If you do not wish to
-# provide this exception without modification, you must delete this exception
-# statement from your version and license this file solely under the GPL without
-# exception.
-#
-#
-# Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
-# Copyright (C) 2005 Red Hat, Inc.
-# All rights reserved.
-# END COPYRIGHT BLOCK
-#
-#! gmake
-
-DEPTH = ../..
-
-CSRCS = info.c \
- path.c \
- pmddeml.c \
- registry.c \
- service.c \
- tcpip.c \
- $(NULL)
-
-OBJS = $(CSRCS:.c=.o)
-
-LIBRARY = libnt.$(LIB_SUFFIX)
-
-include $(DEPTH)/config/rules.mk
-
-export:: $(TARGETS)
- $(INSTALL) -m 444 $(LIBRARY) $(DIST)/lib
diff --git a/lib/libnt/info.c b/lib/libnt/info.c
deleted file mode 100644
index f0b333e1..00000000
--- a/lib/libnt/info.c
+++ /dev/null
@@ -1,118 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <windows.h>
-#include "nt/ntos.h"
-
-OS_TYPE NS_WINAPI INFO_GetOperatingSystem ()
-{
- OSVERSIONINFO versionInfo;
- versionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
- GetVersionEx( &versionInfo );
-
- switch ( versionInfo.dwPlatformId ) {
- case VER_PLATFORM_WIN32s:
- return OS_WIN32S;
- case VER_PLATFORM_WIN32_WINDOWS:
- return OS_WIN95;
- case VER_PLATFORM_WIN32_NT:
- return OS_WINNT;
- default:
- break;
- }
- return OS_UNKNOWN;
-}
-DWORD NS_WINAPI INFO_GetOSMajorVersion ()
-{
- OSVERSIONINFO versionInfo;
- versionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
- GetVersionEx( &versionInfo );
-
- return versionInfo.dwMajorVersion;
-}
-DWORD NS_WINAPI INFO_GetOSMinorVersion ()
-{
- OSVERSIONINFO versionInfo;
- versionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
- GetVersionEx( &versionInfo );
-
- return versionInfo.dwMinorVersion;
-}
-DWORD NS_WINAPI INFO_GetOSServicePack ()
-{
- OSVERSIONINFO versionInfo;
- char * servicePackString = "Service Pack ";
- int servicePackStringLng = strlen(servicePackString);
- int servicePackNumber = 0;
-
- versionInfo.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
- GetVersionEx( &versionInfo );
- if ( strncmp ( versionInfo.szCSDVersion, servicePackString, servicePackStringLng ) == 0 )
- servicePackNumber = atoi ( &versionInfo.szCSDVersion[servicePackStringLng] );
-
- return servicePackNumber;
-}
-void NS_WINAPI OS_GetComputerName (LPTSTR computerName, int nComputerNameLength )
-{
- DWORD computerNameLength = nComputerNameLength;
- GetComputerName( computerName, &computerNameLength );
-}
-
-PROCESSOR_TYPE NS_WINAPI OS_GetProcessor ()
-{
- SYSTEM_INFO systemInfo;
- GetSystemInfo( &systemInfo);
-
- switch ( systemInfo.wProcessorArchitecture ) {
- case PROCESSOR_ARCHITECTURE_INTEL:
- return PROCESSOR_I386;
- case PROCESSOR_ARCHITECTURE_MIPS:
- return PROCESSOR_MIPS;
- case PROCESSOR_ARCHITECTURE_ALPHA:
- return PROCESSOR_ALPHA;
- case PROCESSOR_ARCHITECTURE_PPC:
- return PROCESSOR_PPC;
- default:
- break;
- }
- return PROCESSOR_UNKNOWN;
-}
diff --git a/lib/libnt/path.c b/lib/libnt/path.c
deleted file mode 100644
index e623de9e..00000000
--- a/lib/libnt/path.c
+++ /dev/null
@@ -1,303 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/***********************************************************
- * Path functions - removing ../ from path
- **********************************************************/
-#include <windows.h>
-#include <stdio.h>
-#include <sys/types.h>
-#include <sys/stat.h>
-#include <io.h> /* For _findfirst */
-#include <direct.h> /* For _rmdir */
-#include <errno.h>
-#include "nt/ntos.h"
-
-DWORD NS_WINAPI
-PATH_RemoveRelative ( char * path )
-{
- char * src;
- char * dst;
-
- src = path;
- dst = path;
- while ( *src ) {
- if ( *src == '.' ) {
- if ( *(src+1) == '.' ) {
- /* strip off the "../" */
- src += 2;
-
- /* back off least significant directory */
- dst--;
- if ( ( *dst == '\\' ) || ( *dst == '/' ) )
- *dst--;
- while ( dst > path ) {
- if ( ( *dst == '\\' ) || ( *dst == '/' ) )
- break;
- dst--;
- }
- } else {
- // remove single "."
- }
-
- } else
- *dst++ = *src++;
- }
- *dst = '\0';
-
- return TRUE;
-}
-DWORD NS_WINAPI
-PATH_ConvertNtSlashesToUnix( LPCTSTR lpszNtPath, LPSTR lpszUnixPath )
-{
- if ( lpszNtPath == NULL )
- return 0;
-
- /* create reverse slashes and escape them */
- while ( *lpszNtPath ) {
- if ( *lpszNtPath == '\\' )
- *lpszUnixPath = '/';
- else
- *lpszUnixPath = *lpszNtPath;
- lpszNtPath++;
- lpszUnixPath++;
- }
- *lpszUnixPath = '\0';
- return 0;
-}
-
-static DWORD
-PATH_DeleteRecursivelyFoundFile ( char * fullFileName, char * path, char * fileName )
-{
- if ( strcmp ( fileName, "." ) == 0)
- return TRUE;
-
- if ( strcmp ( fileName, ".." ) == 0)
- return TRUE;
-
- strcpy ( fullFileName, path );
- strcat ( fullFileName, "\\" );
- strcat ( fullFileName, fileName );
- return PATH_DeleteRecursively ( fullFileName );
-}
-
-/* if the path specified is a file name, the file is deleted
- * If the path specifies a directory, the directory is deleted
- */
-DWORD NS_WINAPI
-PATH_DeleteRecursively ( char * path )
-{
- int result;
- unsigned short fileStatus;
- struct _stat buf;
- struct _finddata_t fileFound;
- long hFile;
- DWORD retStatus = TRUE;
- char fullFileName[_MAX_PATH];
- int error;
-
- /* Check if statistics are valid: */
- result = _stat( path, &buf );
- if( result != 0 )
- return TRUE; // file or directory does not exist
-
- fileStatus = buf.st_mode & _S_IFMT;
-
- /* check if regular file */
- if ( fileStatus & _S_IFREG ) {
- if ( remove ( path ) == -1 ) {
- error = errno;
- switch ( error ) {
- case ENOENT:
- break;
-
- case EACCES:
- break;
-
- default:
- break;
- }
-
- return FALSE;
- }
- return TRUE;
- }
- if ( (fileStatus & _S_IFDIR) == 0 )
- return FALSE;
-
-
- /* path contains a directory, delete all files recursively */
- /* Find first .c file in current directory */
- strcpy ( fullFileName, path );
- strcat ( fullFileName, "\\*.*");
- if( (hFile = _findfirst( fullFileName, &fileFound )) != -1L ) { /* directory contain files? */
- if ( !PATH_DeleteRecursivelyFoundFile ( fullFileName, path, fileFound.name ) )
- retStatus = FALSE;
-
- /* Find the rest of the .c files */
- while( _findnext( hFile, &fileFound ) == 0 ) {
- if ( !PATH_DeleteRecursivelyFoundFile ( fullFileName, path, fileFound.name ) )
- retStatus = FALSE;
- }
- _findclose( hFile );
- }
-
- /* remove the directory, now that it is empty */
- if ( _rmdir( path ) == -1 )
- retStatus = FALSE;
- return retStatus;
-}
-/* GetNextFileInDirectory - gets next file in the directory
- * Set hFile to zero, when you call it. The routine returns the
- * next value for hFile. When the routine returns NULL, there is
- * no more files
- *
- */
-DWORD NS_WINAPI
-PATH_GetNextFileInDirectory ( long hFile, char * path, char * lpFileName )
-{
- int result;
- unsigned short fileStatus;
- struct _stat buf;
- struct _finddata_t fileFound;
- DWORD retStatus = TRUE;
- char fullFileName[_MAX_PATH];
-
- if ( hFile == 0 ) {
- /* Check if statistics are valid: */
- result = _stat( path, &buf );
- if( result != 0 )
- return 0; // file or directory does not exist
-
- fileStatus = buf.st_mode & _S_IFMT;
- if ( (fileStatus & _S_IFDIR) == 0 )
- return 0;
-
-
- /* path contains a directory, delete all files recursively */
- /* Find first .c file in current directory */
- strcpy ( fullFileName, path );
- strcat ( fullFileName, "\\*.*");
- if( (hFile = _findfirst( fullFileName, &fileFound )) == -1L )
- return 0;
- if ( ( strcmp ( fileFound.name , "." ) != 0)
- && ( strcmp ( fileFound.name , ".." ) != 0) ) {
- strcpy ( lpFileName, fileFound.name );
- return hFile;
- }
- }
-
- /* Find the rest of the .c files */
- while( _findnext( hFile, &fileFound ) == 0 ) {
- if ( ( strcmp ( fileFound.name , "." ) != 0)
- && ( strcmp ( fileFound.name , ".." ) != 0) ) {
- strcpy ( lpFileName, fileFound.name );
- return hFile;
- }
- }
-
- _findclose( hFile );
- return 0;
-}
-/*---------------------------------------------------------------------------*\
- *
- * Function: PATH_GetNextSubDirectory
- *
- * Purpose: Gets next sub directory in the path
- *
- * Input:
- * hFile: set to zero first time called; use return value for subsequent calls
- * path: directory containing sub directories
- * lpSubDirectoryName: buffer to store sub directorie name
- * lpSubDirectoryPrefix: chars to exactly match begining of directory name
- *
- * Returns:
- * hFile to be used on subsequent call (0, if no more directories)
- *
- * Comments:
-\*---------------------------------------------------------------------------*/
-DWORD NS_WINAPI
-PATH_GetNextSubDirectory( long hFile, char * path, char * lpSubDirectoryName, char * lpSubDirectoryPrefix )
-{
- int result;
- unsigned short fileStatus;
- struct _stat buf;
- char * subDirectoryPrefix;
- char * p;
- char fullFileName[_MAX_PATH];
- BOOL bSubDirectoryFound;
-
- do {
- hFile = PATH_GetNextFileInDirectory ( hFile, path, lpSubDirectoryName );
- if ( hFile == 0 )
- return 0;
-
- /* Check if file is a directory */
- strcpy ( fullFileName, path );
- strcat ( fullFileName, "\\" );
- strcat ( fullFileName, lpSubDirectoryName );
- result = _stat( fullFileName, &buf );
- if( result == 0 ) {
- fileStatus = buf.st_mode & _S_IFMT;
- if ( (fileStatus & _S_IFDIR) == _S_IFDIR ) {
-
- /* check if sub directory matches prefix */
- bSubDirectoryFound = TRUE;
- if ( lpSubDirectoryPrefix ) {
- p = lpSubDirectoryName;
- subDirectoryPrefix = lpSubDirectoryPrefix;
- while ( *subDirectoryPrefix ) {
- if ( *subDirectoryPrefix++ != *p++ ) {
- bSubDirectoryFound = FALSE;
- break;
- }
- }
- }
- if ( bSubDirectoryFound )
- return hFile;
- }
- }
- } while ( hFile );
-
- return 0; // no more sub directories
-}
-
diff --git a/lib/libnt/pmddeml.c b/lib/libnt/pmddeml.c
deleted file mode 100644
index 3a9ed1ba..00000000
--- a/lib/libnt/pmddeml.c
+++ /dev/null
@@ -1,412 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-/****************************************************************************
- PROGRAM: pmddeml.c
-
- PURPOSE: DDEML interface with ProgMan
-
-****************************************************************************/
-
-#include <windows.h> // required for all Windows applications
-#include <ddeml.h> // required for DDEML
-#include <stdio.h> // required for strcpy and strlen
-#include "nt/ntos.h" // specific to this program
-
-BOOL PMDDEML_SendShellCommand (DWORD idInst, LPSTR lpCommand);
-
-HDDEDATA CALLBACK PMDDEML_DdeCallback( UINT uType, // transaction type
- UINT uFmt, // clipboard data format
- HCONV hconv, // handle of the conversation
- HSZ hsz1, // handle of a string
- HSZ hsz2, // handle of a string
- HDDEDATA hdata,// handle of a global memory object
- DWORD dwData1, // transaction-specific data
- DWORD dwData2 // transaction-specific data
- );
-/****************************************************************************
- FUNCTION: PMDDEML_Open()
-
- PURPOSE: Open PMDDEML interface
-
- PARAMETERS:
-
- RETURNS:
- DWORD handle used in subsequent calls
-****************************************************************************/
-
-DWORD PMDDEML_Open ( void )
-{
- DWORD idInst = 0L; // instance identifier
-
- // register this app with the DDEML
- if (DdeInitialize(&idInst, // receives instance ID
- (PFNCALLBACK)PMDDEML_DdeCallback, // address of callback function
- APPCMD_CLIENTONLY, // this is a client app
- 0L)) // reserved
- return 0;
- return idInst;
-}
-/****************************************************************************
- FUNCTION: PMDDEML_Close()
-
- PURPOSE: Closes PMDDEML interface
-
- PARAMETERS:
- DWORD idInst handle returned by PMDDEML_Open
-
- RETURNS:
- TRUE, if successful
-****************************************************************************/
-
-BOOL PMDDEML_Close ( DWORD idInst )
-{
- // free all DDEML resources associated with this app
- return DdeUninitialize ( idInst );
-}
-/****************************************************************************
- FUNCTION: PMDDEML_CreateProgramManagerGroup()
-
- PURPOSE: Creates a program group
-
- PARAMETERS:
- DWORD idInst handle returned by PMDDEML_Open
- LPCTSTR lpszGroupNamee name of group
-
- RETURNS:
- TRUE, if successful
-****************************************************************************/
-
-BOOL PMDDEML_CreateProgramManagerGroup ( DWORD idInst, LPCTSTR lpszGroupName )
-{
- char szDDEMsg[256]; // instance identifier
-
- if ( lpszGroupName == NULL )
- return FALSE;
-
- sprintf ( szDDEMsg, "[CreateGroup(%s)]", lpszGroupName );
-
- if ( !PMDDEML_SendShellCommand(idInst, (LPSTR)szDDEMsg ) )
- return FALSE;
- return TRUE;
-}
-/****************************************************************************
- FUNCTION: PMDDEML_DeleteProgramManagerGroup()
-
- PURPOSE: Deletes a program group
-
- PARAMETERS:
- DWORD idInst handle returned by PMDDEML_Open
- LPCTSTR lpszGroupNamee name of group
-
- RETURNS:
- TRUE, if successful
-****************************************************************************/
-
-BOOL PMDDEML_DeleteProgramManagerGroup ( DWORD idInst, LPCTSTR lpszGroupName )
-{
- char szDDEMsg[256]; // instance identifier
-
- if ( lpszGroupName == NULL )
- return FALSE;
-
- sprintf ( szDDEMsg, "[DeleteGroup(%s)]", lpszGroupName );
-
- if ( !PMDDEML_SendShellCommand(idInst, (LPSTR)szDDEMsg ) )
- return FALSE;
- return TRUE;
-}
-
-BOOL PMDDEML_DeleteProgramCommonManagerGroup ( DWORD idInst,
- LPCTSTR lpszGroupName )
-{
- char szDDEMsg[256]; // instance identifier
-
- if ( lpszGroupName == NULL )
- return FALSE;
-
- sprintf ( szDDEMsg, "[DeleteGroup(%s,1)]", lpszGroupName );
-
- if ( !PMDDEML_SendShellCommand(idInst, (LPSTR)szDDEMsg ) )
- return FALSE;
- return TRUE;
-}
-
-/****************************************************************************
- FUNCTION: PMDDEML_ShowProgramManagerGroup()
-
- PURPOSE: Deletes a program group
-
- PARAMETERS:
- DWORD idInst handle returned by PMDDEML_Open
- LPCTSTR lpszGroupNamee name of group
-
- RETURNS:
- TRUE, if successful
-****************************************************************************/
-
-BOOL PMDDEML_ShowProgramManagerGroup ( DWORD idInst, LPCTSTR lpszGroupName )
-{
- char szDDEMsg[256]; // instance identifier
-
- if ( lpszGroupName == NULL )
- return FALSE;
-
- sprintf ( szDDEMsg, "[ShowGroup(%s,1)]", lpszGroupName );
-
- if ( !PMDDEML_SendShellCommand(idInst, (LPSTR)szDDEMsg ) )
- return FALSE;
- return TRUE;
-}
-
-BOOL PMDDEML_ShowProgramManagerCommonGroup ( DWORD idInst,
- LPCTSTR lpszGroupName )
-{
- char szDDEMsg[256]; // instance identifier
-
- if ( lpszGroupName == NULL )
- return FALSE;
-
- sprintf ( szDDEMsg, "[ShowGroup(%s,1,1)]", lpszGroupName );
-
- if ( !PMDDEML_SendShellCommand(idInst, (LPSTR)szDDEMsg ) )
- return FALSE;
- return TRUE;
-}
-
-/****************************************************************************
- FUNCTION: PMDDEML_AddIconToProgramManagerGroup()
-
- PURPOSE: Deletes icon a program group
-
- PARAMETERS:
- DWORD idInst handle returned by PMDDEML_Open
- LPCTSTR lpszCmdLine title of icon in group
- LPCTSTR lpszTitle title of icon in group
- LPCTSTR lpszWorkingDir title of icon in group
- BOOL bReplace True, if icon should be replaced
-
- RETURNS:
- TRUE, if successful
-****************************************************************************/
-
-BOOL PMDDEML_AddIconToProgramManagerGroup ( DWORD idInst, LPCTSTR lpszCmdLine,
- LPCTSTR lpszTitle, LPCTSTR lpszIconPath, LPCTSTR lpszWorkingDir, BOOL bReplace )
-{
- char szDDEMsg[256]; // instance identifier
-
- if ( ( lpszCmdLine == NULL ) || ( lpszTitle == NULL ) || ( lpszWorkingDir == NULL ) )
- return FALSE;
-
- if ( bReplace ) {
- sprintf ( szDDEMsg, "[ReplaceItem(%s)]", lpszTitle );
- PMDDEML_SendShellCommand(idInst, (LPSTR)szDDEMsg );
- }
-
- sprintf ( szDDEMsg, "[AddItem(%s,%s,%s,,,,%s)]", lpszCmdLine, lpszTitle,
- lpszIconPath, lpszWorkingDir );
-
- if ( !PMDDEML_SendShellCommand(idInst, (LPSTR)szDDEMsg ) )
- return FALSE;
- return TRUE;
-}
-
-/****************************************************************************
- FUNCTION: PMDDEML_DeleteIconInProgramManagerGroup()
-
- PURPOSE: Deletes icon a program group
-
- PARAMETERS:
- DWORD idInst handle returned by PMDDEML_Open
- LPCTSTR lpszTitle title of icon in group
-
- RETURNS:
- TRUE, if successful
-****************************************************************************/
-
-BOOL PMDDEML_DeleteIconInProgramManagerGroup ( DWORD idInst, LPCTSTR lpszTitle )
-{
- char szDDEMsg[256]; // instance identifier
-
- if ( lpszTitle == NULL )
- return FALSE;
-
- sprintf ( szDDEMsg, "[DeleteItem(%s)]", lpszTitle );
-
- if ( !PMDDEML_SendShellCommand(idInst, (LPSTR)szDDEMsg ) )
- return FALSE;
- return TRUE;
-}
-
-/****************************************************************************
- FUNCTION: PMDDEML_DdeCallback()
-
- PURPOSE: Processes messages for DDEML conversation
-
- PARAMETERS:
- UINT uType, // transaction type
- UINT uFmt, // clipboard data format
- HCONV hconv, // handle of the conversation
- HSZ hsz1, // handle of a string
- HSZ hsz2, // handle of a string
- HDDEDATA hdata,// handle of a global memory object
- DWORD dwData1, // transaction-specific data
- DWORD dwData2 // transaction-specific data
-
- RETURNS:
- HDDEDATA
-****************************************************************************/
-
-HDDEDATA CALLBACK PMDDEML_DdeCallback( UINT uType, // transaction type
- UINT uFmt, // clipboard data format
- HCONV hconv, // handle of the conversation
- HSZ hsz1, // handle of a string
- HSZ hsz2, // handle of a string
- HDDEDATA hdata,// handle of a global memory object
- DWORD dwData1, // transaction-specific data
- DWORD dwData2 // transaction-specific data
- )
-{
- // Nothing need be done here...
- return (HDDEDATA)NULL;
-}
-
-
-/****************************************************************************
- FUNCTION: PMDDEML_SendShellCommand()
-
- PURPOSE: Sends the given command string to Program Manager
-
- PARAMETERS:
- LPSTR - pointer to command string
-
- RETURNS:
- BOOL - TRUE if this function succeeds, FALSE otherwise
-****************************************************************************/
-
-BOOL PMDDEML_SendShellCommand (DWORD idInst, // instance identifier
- LPSTR lpCommand) // command string to execute
-{
- HSZ hszServTop; // Service and Topic name are "PROGMAN"
- HCONV hconv; // handle of conversation
- int nLen; // length of command string
- HDDEDATA hData; // return value of DdeClientTransaction
- DWORD dwResult; // result of transaction
- BOOL bResult=FALSE; // TRUE if this function is successful
-
- // create string handle to service/topic
- hszServTop = DdeCreateStringHandle(idInst, "PROGMAN", CP_WINANSI);
-
- // attempt to start conversation with server app
- if ((hconv = DdeConnect(idInst, hszServTop, hszServTop, NULL))!= NULL)
- {
- // get length of the command string
- nLen = lstrlen((LPSTR)lpCommand);
-
- // send command to server app
- hData = DdeClientTransaction((LPBYTE)lpCommand, // data to pass
- nLen + 1, // length of data
- hconv, // handle of conversation
- NULL, // handle of name-string
- CF_TEXT, // clipboard format
- XTYP_EXECUTE, // transaction type
- 1000, // timeout duration
- &dwResult); // points to transaction result
-
- if (hData)
- bResult = TRUE;
-
- // end conversation
- DdeDisconnect(hconv);
- }
-
- // free service/topic string handle
- DdeFreeStringHandle(idInst, hszServTop);
-
- return bResult;
-}
-
-
-/****************************************************************************
- FUNCTION: PMDDEML_GetProgramGroupInfo()
-
- PURPOSE: Gets group info from progman
-
- PARAMETERS:
- LPSTR - pointer to command string
-
- RETURNS:
- BOOL - TRUE if this function succeeds, FALSE otherwise
-****************************************************************************/
-BOOL PMDDEML_GetProgramGroupInfo(DWORD idInst, LPSTR lpProgramGroup, char *szBuffer, DWORD cbBuffer)
-{
- HSZ hszServTop; // Service and Topic name are "PROGMAN"
- HSZ hszTopic; // Topic name is the lpRequest
- HCONV hconv; // handle of conversation
- HDDEDATA hData = 0; // return value of DdeClientTransaction
- DWORD dwResult; // result of transaction
- BOOL bResult=FALSE; // TRUE if this function is successful
-
- hszServTop = DdeCreateStringHandle(idInst, "PROGMAN", CP_WINANSI);
- hszTopic = DdeCreateStringHandle(idInst, lpProgramGroup, CP_WINANSI);
-
- if((hconv = DdeConnect(idInst, hszServTop, hszServTop, NULL)) != NULL)
- {
- hData = DdeClientTransaction((LPBYTE)NULL, // data to pass
- 0L, // length of data
- hconv, // handle of conversation
- hszTopic, // handle of name-string
- CF_TEXT, // clipboard format
- XTYP_REQUEST, // transaction type
- 5000, // timeout duration
- &dwResult); // points to transaction result
-
- bResult = (BOOL)DdeGetData(hData, (void FAR*)szBuffer, cbBuffer, 0);
- DdeDisconnect(hconv);
- }
-
- // free service/topic string handle
- DdeFreeStringHandle(idInst, hszServTop);
- DdeFreeStringHandle(idInst, hszTopic);
-
- return bResult;
-}
diff --git a/lib/libnt/registry.c b/lib/libnt/registry.c
deleted file mode 100644
index e3eddd0b..00000000
--- a/lib/libnt/registry.c
+++ /dev/null
@@ -1,279 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-// ERROR.C
-//
-// This file contains the functions needed to install the httpd server.
-// They are as follows.
-//
-// getreg.c
-//
-// This file has the function needed to get a particular value of a key from the registry...
-// 1/16/95 aruna
-//
-
-#include <windows.h>
-#include "nt/ntos.h"
-
-BOOL NS_WINAPI
-REG_CheckIfKeyExists( HKEY hKey, LPCTSTR key )
-{
- HKEY hQueryKey;
-
- if (RegOpenKeyEx(hKey, key, 0, KEY_ALL_ACCESS,
- &hQueryKey) != ERROR_SUCCESS) {
- return FALSE;
- }
-
- RegCloseKey(hQueryKey);
- return TRUE;
-}
-
-BOOL NS_WINAPI
-REG_GetRegistryParameter(
- HKEY hKey,
- LPCTSTR registryKey,
- LPTSTR QueryValueName,
- LPDWORD ValueType,
- LPBYTE ValueBuffer,
- LPDWORD ValueBufferSize
- )
-{
- HKEY hQueryKey;
-
- if (RegOpenKeyEx(hKey, registryKey, 0, KEY_ALL_ACCESS,
- &hQueryKey) != ERROR_SUCCESS) {
-
- return FALSE;
- }
-
- if (RegQueryValueEx(hQueryKey, QueryValueName, 0,
- ValueType, ValueBuffer, ValueBufferSize) != ERROR_SUCCESS) {
- RegCloseKey(hQueryKey);
- return FALSE;
- }
-
- RegCloseKey(hQueryKey);
- return TRUE;
-}
-
-BOOL NS_WINAPI
-REG_CreateKey( HKEY hKey, LPCTSTR registryKey )
-{
- HKEY hNewKey;
-
- if ( RegCreateKey (hKey, registryKey, &hNewKey) != ERROR_SUCCESS) {
- return FALSE;
- }
-
- RegCloseKey(hNewKey);
- return TRUE;
-}
-
-BOOL NS_WINAPI
-REG_DeleteKey( HKEY hKey, LPCTSTR registryKey )
-{
- HKEY hQueryKey;
- DWORD dwNumberOfSubKeys;
- char registrySubKey[256];
- DWORD i;
-
- /* if key does not exist, then consider it deleted */
- if ( !REG_CheckIfKeyExists( hKey, registryKey ) )
- return TRUE;
-
- if ( !REG_GetSubKeysInfo( hKey, registryKey, &dwNumberOfSubKeys, NULL ) )
- return FALSE;
-
- if ( dwNumberOfSubKeys ) {
- if (RegOpenKeyEx(hKey, registryKey, 0, KEY_ALL_ACCESS,
- &hQueryKey) != ERROR_SUCCESS) {
- return FALSE;
- }
-
- // loop through all sub keys and delete the subkeys (recursion)
- for ( i=0; i<dwNumberOfSubKeys; i++ ) {
- if ( RegEnumKey( hQueryKey, 0, registrySubKey, sizeof(registrySubKey) ) != ERROR_SUCCESS) {
- RegCloseKey(hQueryKey);
- return FALSE;
- }
- if ( !REG_DeleteKey( hQueryKey, registrySubKey ) ) {
- RegCloseKey(hQueryKey);
- return FALSE;
- }
- }
- RegCloseKey(hQueryKey);
- }
-
- if ( RegDeleteKey (hKey, registryKey) != ERROR_SUCCESS) {
- return FALSE;
- }
-
- return TRUE;
-}
-
-BOOL NS_WINAPI
-REG_GetSubKey( HKEY hKey, LPCTSTR registryKey, DWORD nSubKeyIndex, LPTSTR registrySubKeyBuffer, DWORD subKeyBufferSize )
-{
- HKEY hQueryKey;
-
- if (RegOpenKeyEx(hKey, registryKey, 0, KEY_ALL_ACCESS,
- &hQueryKey) != ERROR_SUCCESS) {
- return FALSE;
- }
-
- if ( RegEnumKey( hQueryKey, nSubKeyIndex, registrySubKeyBuffer, subKeyBufferSize ) != ERROR_SUCCESS) {
- RegCloseKey(hQueryKey);
- return FALSE;
- }
-
- RegCloseKey(hQueryKey);
- return TRUE;
-}
-
-BOOL NS_WINAPI
-REG_GetSubKeysInfo( HKEY hKey, LPCTSTR registryKey, LPDWORD lpdwNumberOfSubKeys, LPDWORD lpdwMaxSubKeyLength )
-{
- HKEY hQueryKey;
- char szClass[256]; // address of buffer for class string
- DWORD cchClass; // address of size of class string buffer
- DWORD cSubKeys; // address of buffer for number of subkeys
- DWORD cchMaxSubkey; // address of buffer for longest subkey name length
- DWORD cchMaxClass; // address of buffer for longest class string length
- DWORD cValues; // address of buffer for number of value entries
- DWORD cchMaxValueName; // address of buffer for longest value name length
- DWORD cbMaxValueData; // address of buffer for longest value data length
- DWORD cbSecurityDescriptor; // address of buffer for security descriptor length
- FILETIME ftLastWriteTime; // address of buffer for last write time
-
-
- if (RegOpenKeyEx(hKey, registryKey, 0, KEY_ALL_ACCESS,
- &hQueryKey) != ERROR_SUCCESS) {
- return FALSE;
- }
-
- if ( RegQueryInfoKey( hQueryKey, // handle of key to query
- (char*)&szClass, // address of buffer for class string
- &cchClass, // address of size of class string buffer
- NULL, // reserved
- &cSubKeys, // address of buffer for number of subkeys
- &cchMaxSubkey, // address of buffer for longest subkey name length
- &cchMaxClass, // address of buffer for longest class string length
- &cValues, // address of buffer for number of value entries
- &cchMaxValueName, // address of buffer for longest value name length
- &cbMaxValueData, // address of buffer for longest value data length
- &cbSecurityDescriptor, // address of buffer for security descriptor length
- &ftLastWriteTime // address of buffer for last write time
- ) != ERROR_SUCCESS) {
- RegCloseKey(hQueryKey);
- return FALSE;
- }
-
- // return desired information
- if ( lpdwNumberOfSubKeys )
- *lpdwNumberOfSubKeys = cSubKeys;
- if ( lpdwMaxSubKeyLength )
- *lpdwMaxSubKeyLength = cchMaxSubkey;
-
- RegCloseKey(hQueryKey);
- return TRUE;
-}
-
-BOOL NS_WINAPI
-REG_SetRegistryParameter(
- HKEY hKey,
- LPCTSTR registryKey,
- LPTSTR valueName,
- DWORD valueType,
- LPCTSTR ValueString,
- DWORD valueStringLength
- )
-{
- HKEY hQueryKey;
-
- if (RegOpenKeyEx(hKey, registryKey, 0, KEY_ALL_ACCESS,
- &hQueryKey) != ERROR_SUCCESS) {
- return FALSE;
- }
-
- if ( RegSetValueEx( hQueryKey, valueName, 0, valueType, (CONST BYTE *)ValueString,
- valueStringLength ) != ERROR_SUCCESS) {
- RegCloseKey(hQueryKey);
- return FALSE;
- }
-
- RegCloseKey(hQueryKey);
- return TRUE;
-}
-
-
-
-
-BOOL NS_WINAPI
-REG_DeleteValue( HKEY hKey, LPCTSTR registryKey, LPCSTR valueName )
-{
- HKEY hQueryKey;
- DWORD ValueBufferSize = 256;
- char ValueBuffer[256];
- DWORD i, ValueType;
-
- /* if key does not exist, then consider it deleted */
- if (RegOpenKeyEx(hKey, registryKey, 0, KEY_ALL_ACCESS,
- &hQueryKey) != ERROR_SUCCESS) {
- return FALSE;
- }
-
- /* if valuename does not exist, then consider it deleted */
- if (RegQueryValueEx(hQueryKey, valueName, 0,
- &ValueType, ValueBuffer, &ValueBufferSize) != ERROR_SUCCESS) {
- RegCloseKey(hQueryKey);
- return TRUE;
- }
-
- if (RegDeleteValue(hQueryKey, valueName) != ERROR_SUCCESS) {
- RegCloseKey(hQueryKey);
- return FALSE;
- }
-
- RegCloseKey(hQueryKey);
- return TRUE;
-}
diff --git a/lib/libnt/service.c b/lib/libnt/service.c
deleted file mode 100644
index c4a20f4c..00000000
--- a/lib/libnt/service.c
+++ /dev/null
@@ -1,412 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <windows.h>
-#include "nt/ntos.h"
-
-#define SERVRET_ERROR 0
-#define SERVRET_INSTALLED 1
-#define SERVRET_STARTING 2
-#define SERVRET_STARTED 3
-#define SERVRET_STOPPING 4
-#define SERVRET_REMOVED 5
-
-
-DWORD NS_WINAPI
-SERVICE_GetNTServiceStatus(LPCTSTR szServiceName, LPDWORD lpLastError )
-{
- SERVICE_STATUS ServiceStatus;
- SC_HANDLE schService = NULL;
- SC_HANDLE schSCManager = NULL;
- DWORD lastError = 0;
- int ret = 0;
-
- //ereport(LOG_INFORM, "open SC Manager");
- if ((schSCManager = OpenSCManager(
- NULL, // machine (NULL == local)
- NULL, // database (NULL == default)
- SC_MANAGER_ALL_ACCESS // access required
- )) == NULL ) {
- lastError = GetLastError();
- ret = SERVRET_ERROR;
- goto finish;
- }
-
- schService = OpenService(schSCManager, szServiceName, SERVICE_ALL_ACCESS);
-
- if (schService == NULL ) {
- lastError = GetLastError();
- if (lastError == ERROR_SERVICE_DOES_NOT_EXIST) {
- lastError = 0;
- ret = SERVRET_REMOVED;
- } else
- ret = SERVRET_ERROR;
- goto finish;
- }
-
- ret = ControlService(schService, SERVICE_CONTROL_INTERROGATE, &ServiceStatus);
-
- if ( !ret ) {
- lastError = GetLastError();
- if ( lastError == ERROR_SERVICE_NOT_ACTIVE ) {
- lastError = 0;
- ret = SERVRET_INSTALLED;
- } else
- ret = SERVRET_ERROR;
- goto finish;
- }
-
- switch ( ServiceStatus.dwCurrentState ) {
- case SERVICE_STOPPED: ret = SERVRET_INSTALLED; break;
- case SERVICE_START_PENDING: ret = SERVRET_STARTING; break;
- case SERVICE_STOP_PENDING: ret = SERVRET_STOPPING; break;
- case SERVICE_RUNNING: ret = SERVRET_STARTED; break;
- case SERVICE_CONTINUE_PENDING: ret = SERVRET_STARTED; break;
- case SERVICE_PAUSE_PENDING: ret = SERVRET_STARTED; break;
- case SERVICE_PAUSED: ret = SERVRET_STARTED; break;
- default: ret = SERVRET_ERROR; break;
- }
-
-finish:
- if ( schService)
- CloseServiceHandle(schService);
- if ( schSCManager)
- CloseServiceHandle(schSCManager);
- if ( lpLastError )
- *lpLastError = lastError;
- return ret;
-}
-
-DWORD NS_WINAPI
-SERVICE_InstallNTService(LPCTSTR szServiceName, LPCTSTR szServiceDisplayName, LPCTSTR szServiceExe )
-{
- LPCTSTR lpszBinaryPathName = szServiceExe;
- SC_HANDLE schService = NULL;
- SC_HANDLE schSCManager = NULL;
- int lastError = 0;
- int ret = 0;
-
-
- //ereport(LOG_INFORM, "open SC Manager");
- if ((schSCManager = OpenSCManager(
- NULL, // machine (NULL == local)
- NULL, // database (NULL == default)
- SC_MANAGER_ALL_ACCESS // access required
- )) == NULL ) {
- lastError = GetLastError();
- goto finish;
- }
-
- /* check if service already exists */
- schService = OpenService( schSCManager,
- szServiceName,
- SERVICE_ALL_ACCESS
- );
- if (schService) {
- lastError = ERROR_SERVICE_EXISTS;
- goto finish;
- }
-
- schService = CreateService(
- schSCManager, // SCManager database
- szServiceName, // name of service
- szServiceDisplayName, // name to display
- SERVICE_ALL_ACCESS, // desired access
- SERVICE_WIN32_OWN_PROCESS |
- SERVICE_INTERACTIVE_PROCESS, // service type
- SERVICE_AUTO_START, //SERVICE_DEMAND_START, // start type
- SERVICE_ERROR_NORMAL, // error control type
- lpszBinaryPathName, // service's binary
- NULL, // no load ordering group
- NULL, // no tag identifier
- NULL, // no dependencies
- NULL, // LocalSystem account
- NULL); // no password
-
- if (schService == NULL) {
- lastError = GetLastError();
- }
-
- // successfully installed service
-
-finish:
- if ( schService)
- CloseServiceHandle(schService);
- if ( schSCManager)
- CloseServiceHandle(schSCManager);
- return lastError;
-}
-
-
-DWORD NS_WINAPI
-SERVICE_RemoveNTService(LPCTSTR szServiceName)
-{
- SC_HANDLE schService = NULL;
- SC_HANDLE schSCManager = NULL;
- int lastError = 0;
- int ret = 0;
-
- //ereport(LOG_INFORM, "open SC Manager");
- if ((schSCManager = OpenSCManager(
- NULL, // machine (NULL == local)
- NULL, // database (NULL == default)
- SC_MANAGER_ALL_ACCESS // access required
- )) == NULL ) {
- lastError = GetLastError();
- goto finish;
- }
-
- schService = OpenService(schSCManager, szServiceName, SERVICE_ALL_ACCESS);
-
- if (schService == NULL ) {
- lastError = GetLastError();
- goto finish;
- }
-
- ret = DeleteService(schService);
-
- if ( !ret) {
- lastError = GetLastError();
- goto finish;
- }
-
- // successfully removed service
-
-finish:
- if ( schService)
- CloseServiceHandle(schService);
- if ( schSCManager)
- CloseServiceHandle(schSCManager);
- return lastError;
-}
-
-DWORD NS_WINAPI
-SERVICE_StartNTService(LPCTSTR szServiceName)
-{
- SC_HANDLE schService = NULL;
- SC_HANDLE schSCManager = NULL;
- int lastError = 0;
- int ret = 0;
-
- //ereport(LOG_INFORM, "open SC Manager");
- if ((schSCManager = OpenSCManager(
- NULL, // machine (NULL == local)
- NULL, // database (NULL == default)
- SC_MANAGER_ALL_ACCESS // access required
- )) == NULL ) {
- lastError = GetLastError();
- goto finish;
- }
-
- schService = OpenService(schSCManager, szServiceName, SERVICE_ALL_ACCESS);
-
- if (schService == NULL ) {
- lastError = GetLastError();
- goto finish;
- }
-
- ret = StartService(schService, 0, NULL);
-
- if ( !ret ) {
- lastError = GetLastError();
- goto finish;
- }
-
- // successfully started service
-
-
-finish:
- if ( schService)
- CloseServiceHandle(schService);
- if ( schSCManager)
- CloseServiceHandle(schSCManager);
- return lastError;
-}
-
-DWORD NS_WINAPI
-SERVICE_StartNTServiceAndWait(LPCTSTR szServiceName, LPDWORD lpdwLastError)
-{
- DWORD dwLastError;
- DWORD dwStatus;
- int i;
-
- /* check if service is running */
- dwStatus = SERVICE_GetNTServiceStatus( szServiceName, &dwLastError );
- if ( dwStatus == SERVRET_STARTED )
- return TRUE;
-
- dwLastError = SERVICE_StartNTService( szServiceName );
- if ( dwLastError != 0 ) {
- goto errorExit;
- }
-
- for ( i=0; i<5; i++ ) {
- // make sure the service got installed
- dwStatus = SERVICE_GetNTServiceStatus( szServiceName, &dwLastError );
- if ( dwStatus == SERVRET_ERROR) {
- if ( dwLastError != ERROR_SERVICE_CANNOT_ACCEPT_CTRL )
- goto errorExit;
- } else if ( dwStatus == SERVRET_STARTED )
- return TRUE;
-
- Sleep ( 1000 );
- }
-
- dwLastError = 0;
-
-errorExit:
- if ( lpdwLastError )
- *lpdwLastError = dwLastError;
- return FALSE;
-}
-
-DWORD NS_WINAPI
-SERVICE_StopNTService(LPCTSTR szServiceName)
-{
- SC_HANDLE schService = NULL;
- SC_HANDLE schSCManager = NULL;
- int lastError = 0;
- int ret = 0;
- SERVICE_STATUS ServiceStatus;
-
- //ereport(LOG_INFORM, "open SC Manager");
- if ((schSCManager = OpenSCManager(
- NULL, // machine (NULL == local)
- NULL, // database (NULL == default)
- SC_MANAGER_ALL_ACCESS // access required
- )) == NULL ) {
- lastError = GetLastError();
- goto finish;
- }
-
- schService = OpenService(schSCManager, szServiceName, SERVICE_ALL_ACCESS);
-
- if (schService == NULL ) {
- lastError = GetLastError();
- goto finish;
- }
-
- ret = ControlService(schService, SERVICE_CONTROL_STOP, &ServiceStatus);
-
- if ( !ret ) {
- lastError = GetLastError();
- goto finish;
- }
-
- // server is stopping
-
-finish:
- if ( schService)
- CloseServiceHandle(schService);
- if ( schSCManager)
- CloseServiceHandle(schSCManager);
- return lastError;
-}
-
-DWORD NS_WINAPI
-SERVICE_StopNTServiceAndWait(LPCTSTR szServiceName, LPDWORD lpdwLastError)
-{
- DWORD dwLastError;
- DWORD dwStatus;
- int i;
-
- /* check if service is running */
- dwStatus = SERVICE_GetNTServiceStatus( szServiceName, &dwLastError );
- if ( dwStatus != SERVRET_STARTED )
- return TRUE;
-
- for ( i=0; i<30; i++ ) {
- dwLastError = SERVICE_StopNTService( szServiceName );
- Sleep ( 1000 );
-
- // make sure the service is stoppped and just installed
- dwStatus = SERVICE_GetNTServiceStatus( szServiceName, &dwLastError );
- Sleep ( 1000 );
- if ( dwStatus == SERVRET_INSTALLED ) {
- Sleep ( 1000 );
- return TRUE;
- }
- }
-
- if ( lpdwLastError )
- *lpdwLastError = dwLastError;
- return FALSE;
-}
-
-DWORD NS_WINAPI
-SERVICE_ReinstallNTService(LPCTSTR szServiceName, LPCTSTR szServiceDisplayName, LPCTSTR szServiceExe )
-{
- DWORD dwLastError;
- DWORD dwStatus;
- int i;
-
- for ( i=0; i< 5; i++ ) {
-
- /* if service is running, stop it */
- dwStatus = SERVICE_GetNTServiceStatus( szServiceName, &dwLastError );
- if ( dwStatus == SERVRET_STARTED )
- SERVICE_StopNTServiceAndWait( szServiceName, &dwLastError );
-
- /* if service is installed, remove it */
- dwStatus = SERVICE_GetNTServiceStatus( szServiceName, &dwLastError );
- if ( dwStatus == SERVRET_INSTALLED )
- SERVICE_RemoveNTService( szServiceName );
-
- /* try and install the service again */
- dwStatus = SERVICE_GetNTServiceStatus( szServiceName, &dwLastError );
- if ( dwStatus == SERVRET_REMOVED )
- SERVICE_InstallNTService( szServiceName, szServiceDisplayName, szServiceExe );
-
- /* try and start the service again */
- dwStatus = SERVICE_GetNTServiceStatus( szServiceName, &dwLastError );
- if ( dwStatus == SERVRET_INSTALLED ) {
- return NO_ERROR;
- }
- }
-
- /* if no error reported, force an error */
- if ( dwLastError == NO_ERROR )
- dwLastError = (DWORD)-1;
-
- return dwLastError;
-}
-
diff --git a/lib/libnt/tcpip.c b/lib/libnt/tcpip.c
deleted file mode 100644
index c54e86c3..00000000
--- a/lib/libnt/tcpip.c
+++ /dev/null
@@ -1,182 +0,0 @@
-/** BEGIN COPYRIGHT BLOCK
- * This Program is free software; you can redistribute it and/or modify it under
- * the terms of the GNU General Public License as published by the Free Software
- * Foundation; version 2 of the License.
- *
- * This Program is distributed in the hope that it will be useful, but WITHOUT
- * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
- * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
- *
- * You should have received a copy of the GNU General Public License along with
- * this Program; if not, write to the Free Software Foundation, Inc., 59 Temple
- * Place, Suite 330, Boston, MA 02111-1307 USA.
- *
- * In addition, as a special exception, Red Hat, Inc. gives You the additional
- * right to link the code of this Program with code not covered under the GNU
- * General Public License ("Non-GPL Code") and to distribute linked combinations
- * including the two, subject to the limitations in this paragraph. Non-GPL Code
- * permitted under this exception must only link to the code of this Program
- * through those well defined interfaces identified in the file named EXCEPTION
- * found in the source code files (the "Approved Interfaces"). The files of
- * Non-GPL Code may instantiate templates or use macros or inline functions from
- * the Approved Interfaces without causing the resulting work to be covered by
- * the GNU General Public License. Only Red Hat, Inc. may make changes or
- * additions to the list of Approved Interfaces. You must obey the GNU General
- * Public License in all respects for all of the Program code and other code used
- * in conjunction with the Program except the Non-GPL Code covered by this
- * exception. If you modify this file, you may extend this exception to your
- * version of the file, but you are not obligated to do so. If you do not wish to
- * provide this exception without modification, you must delete this exception
- * statement from your version and license this file solely under the GPL without
- * exception.
- *
- *
- * Copyright (C) 2001 Sun Microsystems, Inc. Used by permission.
- * Copyright (C) 2005 Red Hat, Inc.
- * All rights reserved.
- * END COPYRIGHT BLOCK **/
-
-#ifdef HAVE_CONFIG_H
-# include <config.h>
-#endif
-
-#include <windows.h>
-#include "nt/ntos.h"
-
-/*---------------------------------------------------------------------------*\
- *
- * Function: GetServerDefaultHostName
- *
- * Purpose: This function gets the default host name
- *
- * Input:
- *
- * Returns:
- *
- * Comments:
-\*---------------------------------------------------------------------------*/
-DWORD NS_WINAPI
-TCPIP_GetDefaultHostName( LPTSTR lpszFullHostName, LPTSTR lpszHostName, LPTSTR lpszDomainName )
-{
- char * szKey;
- char * szName;
- DWORD dwValueType;
- DWORD dwIpHostSize = 256;
- char szIpHost[256];
- DWORD dwIpDomainSize = 256;
- char szIpDomain[256];
- BOOL bWinNT;
-
- /* get operating system */
- switch ( INFO_GetOperatingSystem() ) {
- case OS_WIN95: bWinNT = FALSE; break;
- case OS_WINNT: bWinNT = TRUE; break;
- default: return TCPIP_UNSUPPORTED_OS;
- }
-
-
-#if 0
- int lastError;
- WSADATA WSAData;
- if ( WSAStartup( 0x0101, &WSAData ) != 0 ) {
- lastError = WSAGetLastError();
- m_pMainWnd->MessageBox ( "TCP/IP must be installed.\nUse the Network Icon in Control Panel" );
- return FALSE;
- }
- lastError = gethostname ( szIpHost, sizeof(szIpHost) );
-#endif
-
- /* get list of all keys under Netscape */
- if ( bWinNT )
- szKey = "SYSTEM\\CurrentControlSet\\Services\\Tcpip\\Parameters";
- else
- szKey = "SYSTEM\\CurrentControlSet\\Services\\Vxd\\MSTCP";
-
- if( !REG_CheckIfKeyExists( HKEY_LOCAL_MACHINE, szKey ) ) {
- return TCPIP_NO_TCPIP;
- }
-
- /* get host name for computer. May have to get DHCP host name if empty */
- szName = "Hostname";
- if( !REG_GetRegistryParameter( HKEY_LOCAL_MACHINE, szKey, szName, &dwValueType, (LPBYTE)szIpHost, &dwIpHostSize ) ) {
- szIpHost[0] = '\0';
- }
-
- /* get domain name for computer. May have to get DHCP host name if empty */
- szName = "Domain";
- if( !REG_GetRegistryParameter( HKEY_LOCAL_MACHINE, szKey, szName, &dwValueType, (LPBYTE)szIpDomain, &dwIpDomainSize ) ) {
- dwIpDomainSize = 0;
- }
- if ( dwIpDomainSize == 0 ) {
- szName = "DhcpDomain";
- if( !REG_GetRegistryParameter( HKEY_LOCAL_MACHINE, szKey, szName, &dwValueType, (LPBYTE)szIpDomain, &dwIpDomainSize ) ) {
- dwIpDomainSize = 0;
- }
- }
-
- if ( lpszHostName )
- strcpy ( lpszHostName, szIpHost );
-
- strcpy ( lpszFullHostName, szIpHost );
- if ( lpszDomainName ) {
- if ( dwIpDomainSize == 0 )
- *lpszDomainName = '\0';
- else {
- strcpy ( lpszDomainName, szIpDomain );
- strcat ( lpszFullHostName, "." );
- strcat ( lpszFullHostName, lpszDomainName );
- }
- }
-
- return TCPIP_NO_ERROR;
-}
-/*---------------------------------------------------------------------------*\
- *
- * Function: TCPIP_VerifyHostName
- *
- * Purpose: This function validates the host name
- *
- * Input:
- *
- * Returns:
- *
- * Comments:
-\*---------------------------------------------------------------------------*/
-DWORD NS_WINAPI
-TCPIP_VerifyHostName( LPCTSTR lpszHostName )
-{
- struct hostent *ent;
- WSADATA wsd;
- int lastError;
-
- if(WSAStartup(MAKEWORD(1, 1), &wsd) != 0)
- return TCPIP_NO_WINSOCK_DLL;
-
- ent = gethostbyname ( lpszHostName );
- lastError = WSAGetLastError();
- WSACleanup();
-
- if ( ent == NULL ) {
- switch ( lastError ) {
- case WSANOTINITIALISED: // A successful WSAStartup must occur before using this function.
- break;
- case WSAENETDOWN: // The Windows Sockets implementation has detected that the network subsystem has failed.
- return TCPIP_NETWORK_DOWN;
- case WSAHOST_NOT_FOUND: // Authoritative Answer Host not found.
- return TCPIP_HOST_NOT_FOUND;
- case WSATRY_AGAIN: // Non-Authoritative Host not found, or SERVERFAIL.
- return TCPIP_HOST_SERVER_DOWN;
- case WSANO_RECOVERY: // Nonrecoverable errors: FORMERR, REFUSED, NOTIMP.
- return TCPIP_NETWORK_ERROR;
- case WSANO_DATA: // Valid name, no data record of requested type.
- return TCPIP_HOST_VALID_NAME;
- case WSAEINPROGRESS: // A blocking Windows Sockets operation is in progress.
- return TCPIP_NETWORK_ERROR;
- case WSAEINTR: // The (blocking) call was canceled using
- return TCPIP_NETWORK_ERROR;
- default:
- return TCPIP_NETWORK_ERROR;
- }
- }
- return TCPIP_NO_ERROR;
-}