(file) Return to Identify.c CVS log (file) (dir) Up to [OMI] / omi / providers / identify

Diff for /omi/providers/identify/Identify.c between version 1.2 and 1.3

version 1.2, 2015/04/20 18:10:13 version 1.3, 2015/04/20 18:19:56
Line 26 
Line 26 
 #include <MI.h> #include <MI.h>
 #include <common.h> #include <common.h>
 #include <base/paths.h> #include <base/paths.h>
 #include <base/dir.h>  #include <pal/dir.h>
 #include <base/strings.h>  #include <pal/strings.h>
 #include <base/batch.h> #include <base/batch.h>
 #include <base/strarr.h> #include <base/strarr.h>
 #include <base/stringarray.h> #include <base/stringarray.h>
Line 36 
Line 36 
  
 extern MI_Server* __mi_server; extern MI_Server* __mi_server;
  
 #define PROVIDER_ID  "2FDB5542-5896-45D5-9BE9-DC04430AAABE"  #define T MI_T
   
   #define PROVIDER_ID MI_T("2FDB5542-5896-45D5-9BE9-DC04430AAABE")
   
   MI_Char** Listdir(const char* path)
   {
       Dir* dir;
       MI_Char** arr;
   
       dir = Dir_Open(path);
       if (!dir)
           return NULL;
   
       arr = ZArr();
       if (!arr)
       {
           Dir_Close(dir);
           return NULL;
       }
   
       for (;;)
       {
           DirEnt* ent = Dir_Read(dir);
           MI_Char path[PAL_MAX_PATH_SIZE];
           MI_Char** oldArr = arr;
   
   
           if (!ent)
               break;
   
           if (strcmp(ent->name, ".") == 0 || strcmp(ent->name, "..") == 0)
               continue;
   
           TcsStrlcpy(path, ent->name, MI_COUNT(path));
   #ifdef _PREFAST_
       #pragma prefast(push)
       #pragma prefast(disable:26018)
           /* Prefast is getting confused with the fact that ZArrCat can return NULL for first parameter */
   #endif
           ZArrCat(&arr, path);
   #ifdef _PREFAST_
       #pragma prefast(pop)
   #endif
           if (!arr)
           {
               ZArrFree(oldArr);
               Dir_Close(dir);
               return NULL;
           }
       }
   
       Dir_Close(dir);
       return arr;
   }
  
 static MI_Result _MakeInstance(Identify* inst, MI_Context* context) static MI_Result _MakeInstance(Identify* inst, MI_Context* context)
 { {
       MI_Char buf[1024];
   
     ProvMgrFT* ft = (ProvMgrFT*)__mi_server->serverFT - 1;     ProvMgrFT* ft = (ProvMgrFT*)__mi_server->serverFT - 1;
  
     if (ft->magic != PROVMGRFT_MAGIC)     if (ft->magic != PROVMGRFT_MAGIC)
Line 48 
Line 103 
     Identify_Construct(inst, context);     Identify_Construct(inst, context);
  
     Identify_Set_InstanceID(inst, PROVIDER_ID);     Identify_Set_InstanceID(inst, PROVIDER_ID);
   
   #if defined(_MSC_VER)
     Identify_Set_ProductName(inst, CONFIG_PRODUCT);     Identify_Set_ProductName(inst, CONFIG_PRODUCT);
     Identify_Set_ProductVendor(inst, "Microsoft");  #else
       TcsStrlcpy(buf, CONFIG_PRODUCT, MI_COUNT(buf));
       Identify_Set_ProductName(inst, buf);
   #endif
   
       Identify_Set_ProductVendor(inst, T("Microsoft"));
   
     Identify_Set_ProductVersionMajor(inst, CONFIG_MAJOR);     Identify_Set_ProductVersionMajor(inst, CONFIG_MAJOR);
   
     Identify_Set_ProductVersionMinor(inst, CONFIG_MINOR);     Identify_Set_ProductVersionMinor(inst, CONFIG_MINOR);
   
     Identify_Set_ProductVersionRevision(inst, CONFIG_REVISION);     Identify_Set_ProductVersionRevision(inst, CONFIG_REVISION);
   
   #if defined(_MSC_VER)
     Identify_Set_ProductVersionString(inst, CONFIG_VERSION);     Identify_Set_ProductVersionString(inst, CONFIG_VERSION);
     Identify_Set_Platform(inst, CONFIG_PLATFORM);  #else
     Identify_Set_OperatingSystem(inst, CONFIG_OS);      TcsStrlcpy(buf, CONFIG_VERSION, MI_COUNT(buf));
     Identify_Set_Architecture(inst, CONFIG_ARCH);      Identify_Set_ProductVersionString(inst, buf);
     Identify_Set_Compiler(inst, CONFIG_COMPILER);  #endif
     Identify_Set_ConfigPrefix(inst, CONFIG_PREFIX);  
     Identify_Set_ConfigLibDir(inst, CONFIG_LIBDIR);      TcsStrlcpy(buf, CONFIG_PLATFORM, MI_COUNT(buf));
     Identify_Set_ConfigBinDir(inst, CONFIG_BINDIR);      Identify_Set_Platform(inst, buf);
     Identify_Set_ConfigIncludeDir(inst, CONFIG_INCLUDEDIR);  
     Identify_Set_ConfigDataDir(inst, CONFIG_DATADIR);      TcsStrlcpy(buf, CONFIG_OS, MI_COUNT(buf));
     Identify_Set_ConfigLocalStateDir(inst, CONFIG_LOCALSTATEDIR);      Identify_Set_OperatingSystem(inst, buf);
     Identify_Set_ConfigSysConfDir(inst, CONFIG_SYSCONFDIR);  
     Identify_Set_ConfigProviderDir(inst, CONFIG_SYSCONFDIR);      TcsStrlcpy(buf, CONFIG_ARCH, MI_COUNT(buf));
     Identify_Set_ConfigLogFile(inst, GetPath(ID_LOGFILE));      Identify_Set_Architecture(inst, buf);
     Identify_Set_ConfigPIDFile(inst, GetPath(ID_PIDFILE));  
     Identify_Set_ConfigRegisterDir(inst, GetPath(ID_REGISTERDIR));      TcsStrlcpy(buf, CONFIG_COMPILER, MI_COUNT(buf));
     Identify_Set_ConfigSchemaDir(inst, GetPath(ID_SCHEMADIR));      Identify_Set_Compiler(inst, buf);
   
       TcsStrlcpy(buf, CONFIG_COMPILER, MI_COUNT(buf));
       Identify_Set_ConfigPrefix(inst, buf);
   
       TcsStrlcpy(buf, CONFIG_LIBDIR, MI_COUNT(buf));
       Identify_Set_ConfigLibDir(inst, buf);
   
       TcsStrlcpy(buf, CONFIG_BINDIR, MI_COUNT(buf));
       Identify_Set_ConfigBinDir(inst, buf);
   
       TcsStrlcpy(buf, CONFIG_INCLUDEDIR, MI_COUNT(buf));
       Identify_Set_ConfigIncludeDir(inst, buf);
   
       TcsStrlcpy(buf, CONFIG_DATADIR, MI_COUNT(buf));
       Identify_Set_ConfigDataDir(inst, buf);
   
       TcsStrlcpy(buf, CONFIG_LOCALSTATEDIR, MI_COUNT(buf));
       Identify_Set_ConfigLocalStateDir(inst, buf);
   
       TcsStrlcpy(buf, CONFIG_SYSCONFDIR, MI_COUNT(buf));
       Identify_Set_ConfigSysConfDir(inst, buf);
   
       TcsStrlcpy(buf, CONFIG_SYSCONFDIR, MI_COUNT(buf));
       Identify_Set_ConfigProviderDir(inst, buf);
   
       TcsStrlcpy(buf, OMI_GetPath(ID_LOGFILE), MI_COUNT(buf));
       Identify_Set_ConfigLogFile(inst, buf);
   
       TcsStrlcpy(buf, OMI_GetPath(ID_PIDFILE), MI_COUNT(buf));
       Identify_Set_ConfigPIDFile(inst, buf);
   
       TcsStrlcpy(buf, OMI_GetPath(ID_REGISTERDIR), MI_COUNT(buf));
       Identify_Set_ConfigRegisterDir(inst, buf);
   
       TcsStrlcpy(buf, OMI_GetPath(ID_SCHEMADIR), MI_COUNT(buf));
       Identify_Set_ConfigSchemaDir(inst, buf);
  
     /* Identify.SystemName */     /* Identify.SystemName */
     {     {
Line 83 
Line 186 
         typedef const char* (*GetPathFunc)(PathID id);         typedef const char* (*GetPathFunc)(PathID id);
         GetPathFunc func;         GetPathFunc func;
  
         if ((func = (GetPathFunc)ft->FindSymbol("GetPath")))          if ((func = (GetPathFunc)ft->FindSymbol("OMI_GetPath")))
         {         {
             char** data = Listdir(func(ID_REGISTERDIR));              MI_Char** data = Listdir(func(ID_REGISTERDIR));
  
             if (data)             if (data)
             {             {
                 Identify_Set_ConfigNameSpaces(                 Identify_Set_ConfigNameSpaces(
                     inst, (const char**)data, (MI_Uint32)StrArrLen(data));                      inst, (const MI_Char**)data, (MI_Uint32)ZArrLen(data));
  
                 StrArrFree(data);                  ZArrFree(data);
             }             }
         }         }
     }     }
Line 142 
Line 245 
 { {
     if (!instanceName ||     if (!instanceName ||
         !instanceName->InstanceID.exists ||         !instanceName->InstanceID.exists ||
         strcmp(PROVIDER_ID,instanceName->InstanceID.value) != 0)          Tcscmp(PROVIDER_ID, instanceName->InstanceID.value) != 0)
     {     {
         MI_PostResult(context, MI_RESULT_NOT_FOUND);         MI_PostResult(context, MI_RESULT_NOT_FOUND);
         return;         return;
Line 187 
Line 290 
 { {
     MI_PostResult(context, MI_RESULT_NOT_SUPPORTED);     MI_PostResult(context, MI_RESULT_NOT_SUPPORTED);
 } }
   


Legend:
Removed from v.1.2  
changed lines
  Added in v.1.3

ViewCVS 0.9.2