mturk       2003/02/09 08:11:23

  Modified:    daemon/src/native/nt/procrun procrun.vcproj procrun.h
                        procrun.c
  Log:
  Adde PROCRUN_WINDLL build and tree exported functions
  for use in Installation programs.
  1. InstallService  Installs the service
  2. UpdateService Sets the services param/value pair
  3. RemoveService. Deletes the service (used for uninstall)
  
  Revision  Changes    Path
  1.2       +92 -1     
jakarta-commons-sandbox/daemon/src/native/nt/procrun/procrun.vcproj
  
  Index: procrun.vcproj
  ===================================================================
  RCS file: 
/home/cvs/jakarta-commons-sandbox/daemon/src/native/nt/procrun/procrun.vcproj,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- procrun.vcproj    7 Feb 2003 07:04:35 -0000       1.1
  +++ procrun.vcproj    9 Feb 2003 16:11:23 -0000       1.2
  @@ -33,7 +33,7 @@
                        <Tool
                                Name="VCLinkerTool"
                                AdditionalDependencies="comctl32.lib shlwapi.lib"
  -                             OutputFile="$(OutDir)/procrun.exe"
  +                             OutputFile="$(OutDir)/procrunw.exe"
                                LinkIncremental="2"
                                GenerateDebugInformation="TRUE"
                                ProgramDatabaseFile="$(OutDir)/procrun.pdb"
  @@ -174,6 +174,97 @@
                                LinkIncremental="1"
                                GenerateDebugInformation="TRUE"
                                SubSystem="1"
  +                             OptimizeReferences="2"
  +                             EnableCOMDATFolding="2"
  +                             TargetMachine="1"/>
  +                     <Tool
  +                             Name="VCMIDLTool"/>
  +                     <Tool
  +                             Name="VCPostBuildEventTool"/>
  +                     <Tool
  +                             Name="VCPreBuildEventTool"/>
  +                     <Tool
  +                             Name="VCPreLinkEventTool"/>
  +                     <Tool
  +                             Name="VCResourceCompilerTool"/>
  +                     <Tool
  +                             Name="VCWebServiceProxyGeneratorTool"/>
  +                     <Tool
  +                             Name="VCWebDeploymentTool"/>
  +             </Configuration>
  +             <Configuration
  +                     Name="DebugDLL|Win32"
  +                     OutputDirectory="DebugDLL"
  +                     IntermediateDirectory="DebugDLL"
  +                     ConfigurationType="2"
  +                     CharacterSet="2">
  +                     <Tool
  +                             Name="VCCLCompilerTool"
  +                             Optimization="0"
  +                             
AdditionalIncludeDirectories="$(JAVA_HOME)\include,$(JAVA_HOME)\include\win32"
  +                             
PreprocessorDefinitions="_WIN32,WIN32,_DEBUG,_DEBUG_TRACE,_WINDOWS,STRICT,_WIN32_WINNT=0x0400,PROCRUN_WINDLL"

  +                             MinimalRebuild="TRUE"
  +                             BasicRuntimeChecks="3"
  +                             RuntimeLibrary="1"
  +                             UsePrecompiledHeader="0"
  +                             WarningLevel="3"
  +                             Detect64BitPortabilityProblems="FALSE"
  +                             DebugInformationFormat="4"/>
  +                     <Tool
  +                             Name="VCCustomBuildTool"/>
  +                     <Tool
  +                             Name="VCLinkerTool"
  +                             AdditionalDependencies="comctl32.lib shlwapi.lib"
  +                             OutputFile="$(OutDir)/procrun.dll"
  +                             LinkIncremental="2"
  +                             GenerateDebugInformation="TRUE"
  +                             ProgramDatabaseFile="$(OutDir)/procrun.pdb"
  +                             SubSystem="2"
  +                             TargetMachine="1"/>
  +                     <Tool
  +                             Name="VCMIDLTool"/>
  +                     <Tool
  +                             Name="VCPostBuildEventTool"/>
  +                     <Tool
  +                             Name="VCPreBuildEventTool"/>
  +                     <Tool
  +                             Name="VCPreLinkEventTool"/>
  +                     <Tool
  +                             Name="VCResourceCompilerTool"/>
  +                     <Tool
  +                             Name="VCWebServiceProxyGeneratorTool"/>
  +                     <Tool
  +                             Name="VCWebDeploymentTool"/>
  +             </Configuration>
  +             <Configuration
  +                     Name="ReleaseDLL|Win32"
  +                     OutputDirectory="ReleaseDLL"
  +                     IntermediateDirectory="ReleaseDLL"
  +                     ConfigurationType="2"
  +                     CharacterSet="2">
  +                     <Tool
  +                             Name="VCCLCompilerTool"
  +                             Optimization="2"
  +                             InlineFunctionExpansion="1"
  +                             OmitFramePointers="TRUE"
  +                             
AdditionalIncludeDirectories="$(JAVA_HOME)\include,$(JAVA_HOME)\include\win32"
  +                             
PreprocessorDefinitions="_WIN32,WIN32,NDEBUG,_WINDOWS,STRICT,_WIN32_WINNT=0x0400,PROCRUN_WINDLL"

  +                             StringPooling="TRUE"
  +                             RuntimeLibrary="0"
  +                             EnableFunctionLevelLinking="TRUE"
  +                             UsePrecompiledHeader="0"
  +                             WarningLevel="3"
  +                             Detect64BitPortabilityProblems="FALSE"
  +                             DebugInformationFormat="3"/>
  +                     <Tool
  +                             Name="VCCustomBuildTool"/>
  +                     <Tool
  +                             Name="VCLinkerTool"
  +                             AdditionalDependencies="comctl32.lib shlwapi.lib"
  +                             OutputFile="bin/procrun.dll"
  +                             LinkIncremental="1"
  +                             GenerateDebugInformation="TRUE"
  +                             SubSystem="2"
                                OptimizeReferences="2"
                                EnableCOMDATFolding="2"
                                TargetMachine="1"/>
  
  
  
  1.4       +2 -1      jakarta-commons-sandbox/daemon/src/native/nt/procrun/procrun.h
  
  Index: procrun.h
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/daemon/src/native/nt/procrun/procrun.h,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- procrun.h 9 Feb 2003 09:38:54 -0000       1.3
  +++ procrun.h 9 Feb 2003 16:11:23 -0000       1.4
  @@ -134,7 +134,8 @@
       enum { 
           PROCRUN_MODE_WINAPP = 1,
           PROCRUN_MODE_GUI,
  -        PROCRUN_MODE_CONSOLE
  +        PROCRUN_MODE_CONSOLE,
  +        PROCRUN_MODE_WINDLL
       };
   
       enum { 
  
  
  
  1.5       +107 -3    jakarta-commons-sandbox/daemon/src/native/nt/procrun/procrun.c
  
  Index: procrun.c
  ===================================================================
  RCS file: /home/cvs/jakarta-commons-sandbox/daemon/src/native/nt/procrun/procrun.c,v
  retrieving revision 1.4
  retrieving revision 1.5
  diff -u -r1.4 -r1.5
  --- procrun.c 9 Feb 2003 09:38:54 -0000       1.4
  +++ procrun.c 9 Feb 2003 16:11:23 -0000       1.5
  @@ -2208,9 +2208,12 @@
   
   static void free_environment(procrun_t *env)
   {
  -    free(env->m);
  -    free(env->c);
  -    free(env);
  +    if (env) {
  +        free(env->m);
  +        free(env->c);
  +        free(env);
  +        env = NULL;
  +    }
   }
   
   #if defined(PROCRUN_WINAPP)
  @@ -2244,6 +2247,107 @@
       procrun_main(argc, argv, _environ, env);
   
       free_environment(env);
  +}
  +#elif defined(PROCRUN_WINDLL)
  +#pragma message("Compiling DLL Application mode")
  +
  +
  +BOOL WINAPI DllMain(HINSTANCE hInst,
  +                    ULONG ulReason,
  +                    LPVOID lpReserved)
  +{ 
  +
  +    switch (ulReason) {
  +        case DLL_PROCESS_ATTACH:
  +            g_env = NULL;
  +        break;
  +        case DLL_PROCESS_DETACH:
  +            free_environment(g_env);
  +        break;
  +        default:
  +        break;
  +    } 
  +    return TRUE;     
  +}
  +
  +__declspec(dllexport) void InstallService(const char *service_name,
  +                                          const char *install,
  +                                          const char *image_path,
  +                                          const char *display_name,
  +                                          const char *description)
  +{
  +    int argc = 0;
  +    char *argv[12];
  +    char b[MAX_PATH];
  +
  +    procrun_t *env = alloc_environment();
  +    g_proc_mode = PROCRUN_MODE_WINDLL;
  +    g_env = env;
  +    
  +    argv[argc++] = "PROCRUN.DLL";
  +    strcpy(b, PROC_ARG_INSTALL_SERVICE);
  +    strcat(b, service_name);
  +    argv[argc++] = b;
  +    argv[argc++] = "--" PROCRUN_PARAMS_IMAGE;
  +    argv[argc++] = (char *)image_path;
  +    argv[argc++] = "--" PROCRUN_PARAMS_INSTALL;
  +    argv[argc++] = (char *)install;
  +    argv[argc++] = "--" PROCRUN_PARAMS_DISPLAY;
  +    argv[argc++] = (char *)display_name;
  +    argv[argc++] = "--" PROCRUN_PARAMS_DESCRIPTION;
  +    argv[argc++] = (char *)description;
  +    
  +    procrun_main(argc, argv, _environ, env);
  +
  +    free_environment(env);
  +    g_env = NULL;
  +}
  +
  +__declspec(dllexport) void UpdateService(const char *service_name,
  +                                         const char *param,
  +                                         const char *value)
  +{
  +    int argc = 0;
  +    char *argv[4];
  +    char b[MAX_PATH], p[MAX_PATH];
  +
  +    procrun_t *env = alloc_environment();
  +    g_proc_mode = PROCRUN_MODE_WINDLL;
  +    g_env = env;
  +    
  +    argv[argc++] = "PROCRUN.DLL";
  +    strcpy(b, PROC_ARG_UPDATE_SERVICE);
  +    strcat(b, service_name);
  +    strcpy(p, "--");
  +    strcat(p, param);
  +    argv[argc++] = b;
  +    argv[argc++] = p;
  +    argv[argc++] = (char *)value;
  +    
  +    procrun_main(argc, argv, _environ, env);
  +
  +    free_environment(env);
  +    g_env = NULL;
  +}
  +
  +__declspec(dllexport) void RemoveService(const char *service_name)
  +{
  +    int argc = 0;
  +    char *argv[4];
  +    char b[MAX_PATH];
  +
  +    procrun_t *env = alloc_environment();
  +    g_proc_mode = PROCRUN_MODE_WINDLL;
  +    g_env = env;
  +    
  +    argv[argc++] = "PROCRUN.DLL";
  +    strcpy(b, PROC_ARG_DELETE_SERVICE);
  +    strcat(b, service_name);
  +    argv[argc++] = b;
  +    procrun_main(argc, argv, _environ, env);
  +
  +    free_environment(env);
  +    g_env = NULL;
   }
   #else
   #error Unknown application mode
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to