diff options
author | Jan Synacek <jsynacek@redhat.com> | 2014-04-29 08:33:13 +0200 |
---|---|---|
committer | Jan Synacek <jsynacek@redhat.com> | 2014-04-30 15:54:14 +0200 |
commit | 55f63d29f5d2b4e82979d71386df58394e87ef5a (patch) | |
tree | 34227f5696df9b3a85c5999d2fd48f50be82681f /src/logicalfile | |
parent | dab89c6afb2a2b339ebadea3d47e841cd749b5ef (diff) | |
download | openlmi-providers-55f63d29f5d2b4e82979d71386df58394e87ef5a.tar.gz openlmi-providers-55f63d29f5d2b4e82979d71386df58394e87ef5a.tar.xz openlmi-providers-55f63d29f5d2b4e82979d71386df58394e87ef5a.zip |
libopenlmi: reorganize and gather
Make naming consistent. Gather common functionality into one library and
try to use it across all providers.
Introduce libtool-style versioning for libraries.
Diffstat (limited to 'src/logicalfile')
-rw-r--r-- | src/logicalfile/CMakeLists.txt | 2 | ||||
-rw-r--r-- | src/logicalfile/LMI_DataFileProvider.c | 4 | ||||
-rw-r--r-- | src/logicalfile/LMI_DirectoryContainsFileProvider.c | 60 | ||||
-rw-r--r-- | src/logicalfile/LMI_FIFOPipeFileProvider.c | 4 | ||||
-rw-r--r-- | src/logicalfile/LMI_FileIdentityProvider.c | 48 | ||||
-rw-r--r-- | src/logicalfile/LMI_RootDirectoryProvider.c | 40 | ||||
-rw-r--r-- | src/logicalfile/LMI_SymbolicLinkProvider.c | 12 | ||||
-rw-r--r-- | src/logicalfile/LMI_UnixDeviceFileProvider.c | 4 | ||||
-rw-r--r-- | src/logicalfile/LMI_UnixDirectoryProvider.c | 12 | ||||
-rw-r--r-- | src/logicalfile/LMI_UnixFileProvider.c | 2 | ||||
-rw-r--r-- | src/logicalfile/LMI_UnixSocketProvider.c | 4 | ||||
-rw-r--r-- | src/logicalfile/file.c | 89 | ||||
-rw-r--r-- | src/logicalfile/file.h | 50 |
13 files changed, 106 insertions, 225 deletions
diff --git a/src/logicalfile/CMakeLists.txt b/src/logicalfile/CMakeLists.txt index 3a09a4a..4e7e8fa 100644 --- a/src/logicalfile/CMakeLists.txt +++ b/src/logicalfile/CMakeLists.txt @@ -27,7 +27,7 @@ if(LIBSELINUX_FOUND EQUAL 1) endif(LIBSELINUX_FOUND EQUAL 1) include_directories(${CMAKE_CURRENT_BINARY_DIR} ${CMPI_INCLUDE_DIR}) -target_link_libraries(${LIBRARY_NAME} openlmicommon +target_link_libraries(${LIBRARY_NAME} openlmi ${KONKRETCMPI_LIBRARIES} ${LIBUDEV_LIBRARIES} ${LIBSELINUX_LIBRARIES}) diff --git a/src/logicalfile/LMI_DataFileProvider.c b/src/logicalfile/LMI_DataFileProvider.c index 6abf9a4..cef3219 100644 --- a/src/logicalfile/LMI_DataFileProvider.c +++ b/src/logicalfile/LMI_DataFileProvider.c @@ -66,11 +66,11 @@ static CMPIStatus LMI_DataFileGetInstance( logicalfile_t logicalfile; st = lmi_check_required(_cb, cc, cop); - check_status(st); + lmi_check_status(st); LMI_DataFile_InitFromObjectPath(&logicalfile.lf.datafile, _cb, cop); st = stat_logicalfile_and_fill(_cb, &logicalfile, S_IFREG, "Not a regular file: %s"); - check_status(st); + lmi_check_status(st); KReturnInstance(cr, logicalfile.lf.datafile); return st; diff --git a/src/logicalfile/LMI_DirectoryContainsFileProvider.c b/src/logicalfile/LMI_DirectoryContainsFileProvider.c index 2033804..bcf6d14 100644 --- a/src/logicalfile/LMI_DirectoryContainsFileProvider.c +++ b/src/logicalfile/LMI_DirectoryContainsFileProvider.c @@ -51,17 +51,17 @@ static CMPIStatus logicalfile_objectpath_from_path( CMReturnWithChars(_cb, CMPI_RC_ERR_NOT_FOUND, err); } else { get_class_from_stat(&sb, fileclass); - st = check_assoc_class(_cb, namespace, resultClass, fileclass); - if (st.rc == RC_ERR_CLASS_CHECK_FAILED) { + st = lmi_check_assoc_class(_cb, namespace, resultClass, fileclass); + if (st.rc == LMI_RC_ERR_CLASS_CHECK_FAILED) { st.rc = CMPI_RC_OK; *o = NULL; return st; } /* check status again for other possible errors */ - check_status(st); + lmi_check_status(st); st = get_fsinfo_from_stat(_cb, &sb, abspath, &fsclassname, &fsname); - check_status(st); + lmi_check_status(st); } CIM_LogicalFileRef cim_lfr; @@ -107,7 +107,7 @@ static CMPIStatus dir_file_objectpaths( dirname = g_path_get_dirname(path); st = logicalfile_objectpath_from_path(dirname, resultClass, namespace, &o); g_free(dirname); - check_status(st); + lmi_check_status(st); if (o) { ops[i++] = o; } @@ -160,24 +160,24 @@ static CMPIStatus associators( int group = -1; int rgroup = -1; - st = check_assoc_class(_cb, ns, assocClass, LMI_DirectoryContainsFile_ClassName); - check_class_check_status(st); + st = lmi_check_assoc_class(_cb, ns, assocClass, LMI_DirectoryContainsFile_ClassName); + lmi_check_class_check_status(st); /* role && resultRole checks */ if (role) { - if (strcmp(role, GROUP_COMPONENT) != 0 && strcmp(role, PART_COMPONENT) != 0) { + if (strcmp(role, LMI_GROUP_COMPONENT) != 0 && strcmp(role, LMI_PART_COMPONENT) != 0) { CMReturn(CMPI_RC_OK); - } else if (strcmp(role, GROUP_COMPONENT) == 0) { + } else if (strcmp(role, LMI_GROUP_COMPONENT) == 0) { group = 1; - } else if (strcmp(role, PART_COMPONENT) == 0) { + } else if (strcmp(role, LMI_PART_COMPONENT) == 0) { group = 0; } } if (resultRole) { - if (strcmp(resultRole, GROUP_COMPONENT) != 0 && strcmp(resultRole, PART_COMPONENT) != 0) { + if (strcmp(resultRole, LMI_GROUP_COMPONENT) != 0 && strcmp(resultRole, LMI_PART_COMPONENT) != 0) { CMReturn(CMPI_RC_OK); - } else if (strcmp(resultRole, GROUP_COMPONENT) == 0) { + } else if (strcmp(resultRole, LMI_GROUP_COMPONENT) == 0) { rgroup = 1; - } else if (strcmp(resultRole, PART_COMPONENT) == 0) { + } else if (strcmp(resultRole, LMI_PART_COMPONENT) == 0) { rgroup = 0; } } @@ -193,7 +193,7 @@ static CMPIStatus associators( if (st.rc != CMPI_RC_OK) { return st; } - path = get_string_property_from_op(cop, "Name"); + path = lmi_get_string_property_from_objectpath(cop, "Name"); if (!path) CMReturnWithChars(_cb, CMPI_RC_ERR_NOT_FOUND, "Cannot find Name property in provided LMI_UnixDirectory"); st = dir_file_objectpaths(cc, cr, resultClass, group, rgroup, properties, ns, path, refs, &count); @@ -223,11 +223,11 @@ static CMPIStatus associators( if (group == 1 || rgroup == 0) { CMReturn(CMPI_RC_OK); } - path = get_string_property_from_op(cop, "Name"); + path = lmi_get_string_property_from_objectpath(cop, "Name"); if (!path) CMReturnWithChars(_cb, CMPI_RC_ERR_NOT_FOUND, "Cannot find Name property in provided CIM_logicalFile"); - st = check_assoc_class(_cb, ns, resultClass, LMI_UnixDirectory_ClassName); - check_class_check_status(st); + st = lmi_check_assoc_class(_cb, ns, resultClass, LMI_UnixDirectory_ClassName); + lmi_check_class_check_status(st); CIM_DirectoryRef lmi_dr; CIM_DirectoryRef_Init(&lmi_dr, _cb, ns); @@ -236,7 +236,7 @@ static CMPIStatus associators( char *fsclassname = NULL; st = get_fsinfo_from_path(_cb, path, &fsclassname, &fsname); - check_status(st); + lmi_check_status(st); gchar *dirname = g_path_get_dirname(path); fill_logicalfile(CIM_DirectoryRef, &lmi_dr, dirname, fsclassname, fsname, LMI_UnixDirectory_ClassName); @@ -283,14 +283,14 @@ static CMPIStatus references( CMPIInstance *ci; int group = -1; - st = check_assoc_class(_cb, ns, assocClass, LMI_DirectoryContainsFile_ClassName); - check_class_check_status(st); + st = lmi_check_assoc_class(_cb, ns, assocClass, LMI_DirectoryContainsFile_ClassName); + lmi_check_class_check_status(st); if (role) { - if (strcmp(role, GROUP_COMPONENT) != 0 && strcmp(role, PART_COMPONENT) != 0) { + if (strcmp(role, LMI_GROUP_COMPONENT) != 0 && strcmp(role, LMI_PART_COMPONENT) != 0) { CMReturn(CMPI_RC_OK); - } else if (strcmp(role, GROUP_COMPONENT) == 0) { + } else if (strcmp(role, LMI_GROUP_COMPONENT) == 0) { group = 1; - } else if (strcmp(role, PART_COMPONENT) == 0) { + } else if (strcmp(role, LMI_PART_COMPONENT) == 0) { group = 0; } } @@ -302,12 +302,12 @@ static CMPIStatus references( if (CMClassPathIsA(_cb, cop, LMI_UnixDirectory_ClassName, &st)) { st = lmi_check_required(_cb, cc, cop); - check_status(st); - path = get_string_property_from_op(cop, "Name"); + lmi_check_status(st); + path = lmi_get_string_property_from_objectpath(cop, "Name"); if (!path) CMReturnWithChars(_cb, CMPI_RC_ERR_NOT_FOUND, "Cannot find Name property in provided LMI_UnixDirectory"); st = get_fsinfo_from_path(_cb, path, &fsclassname, &fsname); - check_status(st); + lmi_check_status(st); /* got GroupComponent - DirectoryRef */ fill_logicalfile(CIM_DirectoryRef, &lmi_dr, path, fsclassname, fsname, LMI_UnixDirectory_ClassName); o = CIM_DirectoryRef_ToObjectPath(&lmi_dr, &st); @@ -318,7 +318,7 @@ static CMPIStatus references( CMPIObjectPath *refs[MAX_REFS]; unsigned int count = 0; st = dir_file_objectpaths(cc, cr, NULL, group, -1, properties, ns, path, refs, &count); - check_status(st); + lmi_check_status(st); if (count > MAX_REFS) { CMReturnWithChars(_cb, CMPI_RC_ERR_NOT_FOUND, "Too many files in a single directory..."); } @@ -336,13 +336,13 @@ static CMPIStatus references( } } else if (CMClassPathIsA(_cb, cop, CIM_LogicalFile_ClassName, &st)) { st = lmi_check_required(_cb, cc, cop); - check_status(st); - path = get_string_property_from_op(cop, "Name"); + lmi_check_status(st); + path = lmi_get_string_property_from_objectpath(cop, "Name"); if (!path) CMReturnWithChars(_cb, CMPI_RC_ERR_NOT_FOUND, "Cannot find Name property in provided CIM_LogicalFile"); get_class_from_path(path, ccname); st = get_fsinfo_from_path(_cb, path, &fsclassname, &fsname); - check_status(st); + lmi_check_status(st); /* got PartComponent - LogicalFileRef */ if (group == 1) { CMReturn(CMPI_RC_OK); diff --git a/src/logicalfile/LMI_FIFOPipeFileProvider.c b/src/logicalfile/LMI_FIFOPipeFileProvider.c index 49062bd..1330f56 100644 --- a/src/logicalfile/LMI_FIFOPipeFileProvider.c +++ b/src/logicalfile/LMI_FIFOPipeFileProvider.c @@ -66,11 +66,11 @@ static CMPIStatus LMI_FIFOPipeFileGetInstance( logicalfile_t logicalfile; st = lmi_check_required(_cb, cc, cop); - check_status(st); + lmi_check_status(st); LMI_FIFOPipeFile_InitFromObjectPath(&logicalfile.lf.fifopipefile, _cb, cop); st = stat_logicalfile_and_fill(_cb, &logicalfile, S_IFIFO, "No such FIFO: %s"); - check_status(st); + lmi_check_status(st); KReturnInstance(cr, logicalfile.lf.fifopipefile); return st; diff --git a/src/logicalfile/LMI_FileIdentityProvider.c b/src/logicalfile/LMI_FileIdentityProvider.c index 82010b8..b1a8599 100644 --- a/src/logicalfile/LMI_FileIdentityProvider.c +++ b/src/logicalfile/LMI_FileIdentityProvider.c @@ -48,25 +48,25 @@ static CMPIStatus associators( char *fsname = NULL; char *fsclassname = NULL; - st = check_assoc_class(_cb, ns, assocClass, LMI_FileIdentity_ClassName); - check_class_check_status(st); + st = lmi_check_assoc_class(_cb, ns, assocClass, LMI_FileIdentity_ClassName); + lmi_check_class_check_status(st); if (CMClassPathIsA(_cb, cop, LMI_UnixFile_ClassName, &st)) { /* got UnixFile - SameElement */ st = lmi_check_required(_cb, cc, cop); - check_status(st); + lmi_check_status(st); - path = get_string_property_from_op(cop, "LFName"); + path = lmi_get_string_property_from_objectpath(cop, "LFName"); get_class_from_path(path, fileclass); st = get_fsinfo_from_path(_cb, path, &fsclassname, &fsname); - check_status(st); + lmi_check_status(st); - st = check_assoc_class(_cb, ns, resultClass, fileclass); - check_class_check_status(st); - if (role && strcmp(role, SAME_ELEMENT) != 0) { + st = lmi_check_assoc_class(_cb, ns, resultClass, fileclass); + lmi_check_class_check_status(st); + if (role && strcmp(role, LMI_SAME_ELEMENT) != 0) { CMReturn(CMPI_RC_OK); } - if (resultRole && strcmp(resultRole, SYSTEM_ELEMENT) != 0) { + if (resultRole && strcmp(resultRole, LMI_SYSTEM_ELEMENT) != 0) { CMReturn(CMPI_RC_OK); } @@ -78,22 +78,22 @@ static CMPIStatus associators( } else if (CMClassPathIsA(_cb, cop, CIM_LogicalFile_ClassName, &st)) { /* got LogicalFile - SystemElement */ st = lmi_check_required(_cb, cc, cop); - check_status(st); + lmi_check_status(st); - path = get_string_property_from_op(cop, "Name"); + path = lmi_get_string_property_from_objectpath(cop, "Name"); - st = check_assoc_class(_cb, ns, resultClass, LMI_UnixFile_ClassName); - check_class_check_status(st); - if (role && strcmp(role, SYSTEM_ELEMENT) != 0) { + st = lmi_check_assoc_class(_cb, ns, resultClass, LMI_UnixFile_ClassName); + lmi_check_class_check_status(st); + if (role && strcmp(role, LMI_SYSTEM_ELEMENT) != 0) { CMReturn(CMPI_RC_OK); } - if (resultRole && strcmp(resultRole, SAME_ELEMENT) != 0) { + if (resultRole && strcmp(resultRole, LMI_SAME_ELEMENT) != 0) { CMReturn(CMPI_RC_OK); } get_class_from_path(path, fileclass); st = get_fsinfo_from_path(_cb, path, &fsclassname, &fsname); - check_status(st); + lmi_check_status(st); LMI_UnixFile lmi_uf; LMI_UnixFile_Init(&lmi_uf, _cb, ns); @@ -138,8 +138,8 @@ static CMPIStatus references( char *fsname = NULL; char *fsclassname = NULL; - st = check_assoc_class(_cb, ns, assocClass, LMI_FileIdentity_ClassName); - check_class_check_status(st); + st = lmi_check_assoc_class(_cb, ns, assocClass, LMI_FileIdentity_ClassName); + lmi_check_class_check_status(st); LMI_FileIdentity_Init(&lmi_fi, _cb, ns); @@ -152,12 +152,12 @@ static CMPIStatus references( return st; } - path = get_string_property_from_op(cop, "LFName"); + path = lmi_get_string_property_from_objectpath(cop, "LFName"); get_class_from_path(path, fileclass); st = get_fsinfo_from_path(_cb, path, &fsclassname, &fsname); - check_status(st); + lmi_check_status(st); - if (role && strcmp(role, SAME_ELEMENT) != 0) { + if (role && strcmp(role, LMI_SAME_ELEMENT) != 0) { CMReturn(CMPI_RC_OK); } @@ -178,13 +178,13 @@ static CMPIStatus references( return st; } - if (role && strcmp(role, SYSTEM_ELEMENT) != 0) { + if (role && strcmp(role, LMI_SYSTEM_ELEMENT) != 0) { CMReturn(CMPI_RC_OK); } - path = get_string_property_from_op(cop, "Name"); + path = lmi_get_string_property_from_objectpath(cop, "Name"); get_class_from_path(path, fileclass); st = get_fsinfo_from_path(_cb, path, &fsclassname, &fsname); - check_status(st); + lmi_check_status(st); /* SameElement */ LMI_UnixFile lmi_uf; diff --git a/src/logicalfile/LMI_RootDirectoryProvider.c b/src/logicalfile/LMI_RootDirectoryProvider.c index 9c2a2db..4ada3f5 100644 --- a/src/logicalfile/LMI_RootDirectoryProvider.c +++ b/src/logicalfile/LMI_RootDirectoryProvider.c @@ -41,25 +41,25 @@ static CMPIStatus associators( CMPIStatus st; const char *ns = KNameSpace(cop); const char *comp_ccname = get_system_creation_class_name(); - const char *path = get_string_property_from_op(cop, "Name"); + const char *path = lmi_get_string_property_from_objectpath(cop, "Name"); char *fsname = NULL; char *fsclassname = NULL; const char *systemname = lmi_get_system_creation_class_name(); - st = check_assoc_class(_cb, ns, assocClass, LMI_RootDirectory_ClassName); - check_class_check_status(st); + st = lmi_check_assoc_class(_cb, ns, assocClass, LMI_RootDirectory_ClassName); + lmi_check_class_check_status(st); st = get_fsinfo_from_path(_cb, "/", &fsclassname, &fsname); - check_status(st); + lmi_check_status(st); if (CMClassPathIsA(_cb, cop, LMI_UnixDirectory_ClassName, &st)) { /* got LMI_UnixDirectory - PartComponent */ - st = check_assoc_class(_cb, ns, resultClass, comp_ccname); - check_class_check_status(st); - if (role && strcmp(role, PART_COMPONENT) != 0) { + st = lmi_check_assoc_class(_cb, ns, resultClass, comp_ccname); + lmi_check_class_check_status(st); + if (role && strcmp(role, LMI_PART_COMPONENT) != 0) { CMReturn(CMPI_RC_OK); } - if (resultRole && strcmp(resultRole, GROUP_COMPONENT) != 0) { + if (resultRole && strcmp(resultRole, LMI_GROUP_COMPONENT) != 0) { CMReturn(CMPI_RC_OK); } /* ignore this association if the directory is not root */ @@ -75,12 +75,12 @@ static CMPIStatus associators( } } else if (CMClassPathIsA(_cb, cop, systemname, &st)) { /* got CIM_ComputerSystem - GroupComponent */ - st = check_assoc_class(_cb, ns, resultClass, LMI_UnixDirectory_ClassName); - check_class_check_status(st); - if (role && strcmp(role, GROUP_COMPONENT) != 0) { + st = lmi_check_assoc_class(_cb, ns, resultClass, LMI_UnixDirectory_ClassName); + lmi_check_class_check_status(st); + if (role && strcmp(role, LMI_GROUP_COMPONENT) != 0) { CMReturn(CMPI_RC_OK); } - if (resultRole && strcmp(resultRole, PART_COMPONENT) != 0) { + if (resultRole && strcmp(resultRole, LMI_PART_COMPONENT) != 0) { CMReturn(CMPI_RC_OK); } @@ -117,24 +117,24 @@ static CMPIStatus references( CMPIInstance *ci; CMPIStatus st; const char *ns = KNameSpace(cop); - const char *path = get_string_property_from_op(cop, "Name"); + const char *path = lmi_get_string_property_from_objectpath(cop, "Name"); char ccname[BUFLEN]; get_class_from_path(path, ccname); const char *systemname = lmi_get_system_creation_class_name(); - st = check_assoc_class(_cb, ns, assocClass, LMI_RootDirectory_ClassName); - check_class_check_status(st); + st = lmi_check_assoc_class(_cb, ns, assocClass, LMI_RootDirectory_ClassName); + lmi_check_class_check_status(st); char *fsname = NULL; char *fsclassname = NULL; st = get_fsinfo_from_path(_cb, "/", &fsclassname, &fsname); - check_status(st); + lmi_check_status(st); LMI_RootDirectory_Init(&lmi_rd, _cb, ns); if (strcmp(ccname, LMI_UnixDirectory_ClassName) == 0) { /* got UnixDirectory - PartComponent */ - if (role && strcmp(role, PART_COMPONENT) != 0) { + if (role && strcmp(role, LMI_PART_COMPONENT) != 0) { CMReturn(CMPI_RC_OK); } /* ignore this association if the directory is not root */ @@ -142,14 +142,14 @@ static CMPIStatus references( CMReturn(CMPI_RC_OK); } st = lmi_check_required(_cb, cc, cop); - check_status(st); + lmi_check_status(st); LMI_RootDirectory_SetObjectPath_PartComponent(&lmi_rd, cop); LMI_RootDirectory_SetObjectPath_GroupComponent(&lmi_rd, lmi_get_computer_system()); } else if (CMClassPathIsA(_cb, cop, systemname, &st)) { /* got CIM_ComputerSystem - GroupComponent */ - if (role && strcmp(role, GROUP_COMPONENT) != 0) { + if (role && strcmp(role, LMI_GROUP_COMPONENT) != 0) { CMReturn(CMPI_RC_OK); } LMI_RootDirectory_SetObjectPath_GroupComponent(&lmi_rd, cop); @@ -218,7 +218,7 @@ static CMPIStatus LMI_RootDirectoryEnumInstances( LMI_UnixDirectory lmi_ud; LMI_UnixDirectory_Init(&lmi_ud, _cb, ns); st = get_fsinfo_from_path(_cb, "/", &fsclassname, &fsname); - check_status(st); + lmi_check_status(st); fill_logicalfile(LMI_UnixDirectory, &lmi_ud, "/", fsclassname, fsname, LMI_UnixDirectory_ClassName); o = LMI_UnixDirectory_ToObjectPath(&lmi_ud, NULL); LMI_RootDirectory_SetObjectPath_PartComponent(&lmi_rd, o); diff --git a/src/logicalfile/LMI_SymbolicLinkProvider.c b/src/logicalfile/LMI_SymbolicLinkProvider.c index e200316..68a6142 100644 --- a/src/logicalfile/LMI_SymbolicLinkProvider.c +++ b/src/logicalfile/LMI_SymbolicLinkProvider.c @@ -66,11 +66,11 @@ static CMPIStatus LMI_SymbolicLinkGetInstance( logicalfile_t logicalfile; st = lmi_check_required(_cb, cc, cop); - check_status(st); + lmi_check_status(st); LMI_SymbolicLink_InitFromObjectPath(&logicalfile.lf.symboliclink, _cb, cop); st = stat_logicalfile_and_fill(_cb, &logicalfile, S_IFLNK, "No such symlink: %s"); - check_status(st); + lmi_check_status(st); KReturnInstance(cr, logicalfile.lf.symboliclink); return st; @@ -85,12 +85,12 @@ static CMPIStatus LMI_SymbolicLinkCreateInstance( { CMPIStatus st = {.rc = CMPI_RC_OK}; CMPIObjectPath *iop = CMGetObjectPath(ci, &st); - check_status(st); + lmi_check_status(st); st = lmi_check_required(_cb, cc, iop); - check_status(st); + lmi_check_status(st); - const char *path = get_string_property_from_instance(ci, "Name"); - const char *target = get_string_property_from_instance(ci, "TargetFile"); + const char *path = lmi_get_string_property_from_instance(ci, "Name"); + const char *target = lmi_get_string_property_from_instance(ci, "TargetFile"); bool allow = lmi_read_config_boolean("LMI_SymbolicLink", "AllowSymlink"); diff --git a/src/logicalfile/LMI_UnixDeviceFileProvider.c b/src/logicalfile/LMI_UnixDeviceFileProvider.c index ab1ec01..3062094 100644 --- a/src/logicalfile/LMI_UnixDeviceFileProvider.c +++ b/src/logicalfile/LMI_UnixDeviceFileProvider.c @@ -66,11 +66,11 @@ static CMPIStatus LMI_UnixDeviceFileGetInstance( logicalfile_t logicalfile; st = lmi_check_required(_cb, cc, cop); - check_status(st); + lmi_check_status(st); LMI_UnixDeviceFile_InitFromObjectPath(&logicalfile.lf.unixdevicefile, _cb, cop); st = stat_logicalfile_and_fill(_cb, &logicalfile, S_IFCHR | S_IFBLK, "No such device: %s"); - check_status(st); + lmi_check_status(st); KReturnInstance(cr, logicalfile.lf.unixdevicefile); return st; diff --git a/src/logicalfile/LMI_UnixDirectoryProvider.c b/src/logicalfile/LMI_UnixDirectoryProvider.c index 0f19cbb..1ca995b 100644 --- a/src/logicalfile/LMI_UnixDirectoryProvider.c +++ b/src/logicalfile/LMI_UnixDirectoryProvider.c @@ -66,11 +66,11 @@ static CMPIStatus LMI_UnixDirectoryGetInstance( logicalfile_t logicalfile; st = lmi_check_required(_cb, cc, cop); - check_status(st); + lmi_check_status(st); LMI_UnixDirectory_InitFromObjectPath(&logicalfile.lf.unixdirectory, _cb, cop); st = stat_logicalfile_and_fill(_cb, &logicalfile, S_IFDIR, "Not a directory: %s"); - check_status(st); + lmi_check_status(st); KReturnInstance(cr, logicalfile.lf.unixdirectory); return st; @@ -85,11 +85,11 @@ static CMPIStatus LMI_UnixDirectoryCreateInstance( { CMPIStatus st; CMPIObjectPath *iop = CMGetObjectPath(ci, &st); - check_status(st); + lmi_check_status(st); st = lmi_check_required(_cb, cc, iop); - check_status(st); + lmi_check_status(st); - const char *path = get_string_property_from_op(iop, "Name"); + const char *path = lmi_get_string_property_from_objectpath(iop, "Name"); bool allow = lmi_read_config_boolean("LMI_UnixDirectory", "AllowMkdir"); if (allow && mkdir(path, 0777) < 0) { @@ -125,7 +125,7 @@ static CMPIStatus LMI_UnixDirectoryDeleteInstance( const CMPIResult* cr, const CMPIObjectPath* cop) { - const char *path = get_string_property_from_op(cop, "Name"); + const char *path = lmi_get_string_property_from_objectpath(cop, "Name"); bool allow = lmi_read_config_boolean("LMI_UnixDirectory", "AllowRmdir"); if (allow && rmdir(path) < 0) { diff --git a/src/logicalfile/LMI_UnixFileProvider.c b/src/logicalfile/LMI_UnixFileProvider.c index b17da5f..52e7b9c 100644 --- a/src/logicalfile/LMI_UnixFileProvider.c +++ b/src/logicalfile/LMI_UnixFileProvider.c @@ -140,7 +140,7 @@ static CMPIStatus LMI_UnixFileGetInstance( fsname = (char *) KChars(lmi_file.FSName.value); fsclassname = (char *) KChars(lmi_file.FSCreationClassName.value); st = get_fsinfo_from_stat(_cb, &sb, path, &fsclassname, &fsname); - check_status(st); + lmi_check_status(st); LMI_UnixFile_Set_FSCreationClassName(&lmi_file, fsclassname); LMI_UnixFile_Set_FSName(&lmi_file, fsname); get_class_from_stat(&sb, aux); diff --git a/src/logicalfile/LMI_UnixSocketProvider.c b/src/logicalfile/LMI_UnixSocketProvider.c index a637f33..d19753c 100644 --- a/src/logicalfile/LMI_UnixSocketProvider.c +++ b/src/logicalfile/LMI_UnixSocketProvider.c @@ -66,11 +66,11 @@ static CMPIStatus LMI_UnixSocketGetInstance( logicalfile_t logicalfile; st = lmi_check_required(_cb, cc, cop); - check_status(st); + lmi_check_status(st); LMI_UnixSocket_InitFromObjectPath(&logicalfile.lf.unixsocket, _cb, cop); st = stat_logicalfile_and_fill(_cb, &logicalfile, S_IFSOCK, "No such socket: %s"); - check_status(st); + lmi_check_status(st); KReturnInstance(cr, logicalfile.lf.unixsocket); return st; diff --git a/src/logicalfile/file.c b/src/logicalfile/file.c index ac68b6f..03c99da 100644 --- a/src/logicalfile/file.c +++ b/src/logicalfile/file.c @@ -29,40 +29,6 @@ const ConfigEntry *provider_config_defaults = (const ConfigEntry *)&(ConfigEntry const char *provider_name = "logicalfile"; -CMPIStatus lmi_check_required( - const CMPIBroker *b, - const CMPIContext *ctx, - const CMPIObjectPath *o) -{ - const char *prop; - - CMPIStatus st; - CMPIData data; - /* check computer system creation class name */ - data = CMGetKey(o, "CSCreationClassName", &st); - check_status(st); - if (CMIsNullValue(data)) { - CMReturnWithChars(b, CMPI_RC_ERR_FAILED, "CSCreationClassName is empty"); - } - prop = get_string_property_from_op(o, "CSCreationClassName"); - if (strcmp(prop, lmi_get_system_creation_class_name()) != 0) { - CMReturnWithChars(b, CMPI_RC_ERR_FAILED, "Wrong CSCreationClassName"); - } - - /* check fqdn */ - data = CMGetKey(o, "CSName", &st); - check_status(st); - if (CMIsNullValue(data)) { - CMReturnWithChars(b, CMPI_RC_ERR_FAILED, "CSName is empty"); - } - prop = get_string_property_from_op(o, "CSName"); - if (strcmp(prop, lmi_get_system_name()) != 0) { - CMReturnWithChars(b, CMPI_RC_ERR_FAILED, "Wrong CSName"); - } - - CMReturn(CMPI_RC_OK); -} - void get_class_from_stat(const struct stat *sb, char *fileclass) { (S_ISREG(sb->st_mode)) ? strcpy(fileclass, "LMI_DataFile") : (S_ISDIR(sb->st_mode)) ? strcpy(fileclass, "LMI_UnixDirectory") : @@ -99,14 +65,14 @@ CMPIStatus get_fsinfo_from_stat(const CMPIBroker *b, const struct stat *sb, cons udev_ctx = udev_new(); if (!udev_ctx) { - return_with_status(b, &st, ERR_FAILED, "Could not create udev context"); + lmi_return_with_status(b, &st, ERR_FAILED, "Could not create udev context"); } udev_dev = udev_device_new_from_devnum(udev_ctx, 'b', sb->st_dev); if ((dev_name = udev_device_get_property_value(udev_dev, "ID_FS_UUID_ENC"))) { if (!*fsname) { if (asprintf(fsname, "UUID=%s", dev_name) < 0) { - return_with_status(b, &st, ERR_FAILED, "asprintf failed"); + lmi_return_with_status(b, &st, ERR_FAILED, "asprintf failed"); } } if (!*fsclassname) { @@ -115,7 +81,7 @@ CMPIStatus get_fsinfo_from_stat(const CMPIBroker *b, const struct stat *sb, cons } else if ((dev_name = udev_device_get_property_value(udev_dev, "DEVNAME"))) { if (!*fsname) { if (asprintf(fsname, "DEVICE=%s", dev_name) < 0) { - return_with_status(b, &st, ERR_FAILED, "asprintf failed"); + lmi_return_with_status(b, &st, ERR_FAILED, "asprintf failed"); } } if (!*fsclassname) { @@ -124,7 +90,7 @@ CMPIStatus get_fsinfo_from_stat(const CMPIBroker *b, const struct stat *sb, cons } else { if (!*fsname) { if (asprintf(fsname, "PATH=%s", path) < 0) { - return_with_status(b, &st, ERR_FAILED, "asprintf failed"); + lmi_return_with_status(b, &st, ERR_FAILED, "asprintf failed"); } } if (!*fsclassname) { @@ -143,51 +109,12 @@ CMPIStatus get_fsinfo_from_path(const CMPIBroker *b, const char *path, char **fs struct stat sb; if (lstat(path, &sb) < 0) { - return_with_status(b, &st, ERR_FAILED, "lstat(2) failed"); + lmi_return_with_status(b, &st, ERR_FAILED, "lstat(2) failed"); } return get_fsinfo_from_stat(b, &sb, path, fsclassname, fsname); } -const char *get_string_property_from_op(const CMPIObjectPath *o, const char *prop) -{ - CMPIData d; - d = CMGetKey(o, prop, NULL); - return KChars(d.value.string); -} - -const char *get_string_property_from_instance(const CMPIInstance *i, const char *prop) -{ - CMPIData d; - d = CMGetProperty(i, prop, NULL); - return KChars(d.value.string); -} - -CMPIStatus check_assoc_class( - const CMPIBroker *cb, - const char *namespace, - const char *assocClass, - const char *class) -{ - CMPIObjectPath *o; - CMPIStatus st = {.rc = CMPI_RC_OK}; - - o = CMNewObjectPath(cb, namespace, class, &st); - if (!o) { - /* assume that status has been properly set */ - return st; - } else if (st.rc != CMPI_RC_OK) { - CMRelease(o); - return st; - } - if (assocClass && !CMClassPathIsA(cb, o, assocClass, &st)) { - CMRelease(o); - st.rc = RC_ERR_CLASS_CHECK_FAILED; - return st; - } - CMRelease(o); - return st; -} CMPIStatus stat_logicalfile_and_fill( const CMPIBroker *b, @@ -214,7 +141,7 @@ CMPIStatus stat_logicalfile_and_fill( fsname = (char *) KChars(lf->lf.datafile.FSName.value); fsclassname = (char *) KChars(lf->lf.datafile.FSCreationClassName.value); st = get_fsinfo_from_stat(b, &sb, path, &fsclassname, &fsname); - check_status(st); + lmi_check_status(st); switch(mode) { case S_IFREG: @@ -264,10 +191,6 @@ CMPIStatus stat_logicalfile_and_fill( return st; } -void _dump_objectpath(const CMPIObjectPath *o) -{ - printf("OP: %s\n", CMGetCharsPtr(o->ft->toString(o, NULL), NULL)); -} /* vi: set et: */ /* Local Variables: */ /* indent-tabs-mode: nil */ diff --git a/src/logicalfile/file.h b/src/logicalfile/file.h index d2f573b..a5291ed 100644 --- a/src/logicalfile/file.h +++ b/src/logicalfile/file.h @@ -20,48 +20,27 @@ #ifndef _FILE_H #define _FILE_H -#include <linux/limits.h> #include <sys/stat.h> #include <dirent.h> -#include <stdlib.h> -#include <string.h> -#include <limits.h> #include <libgen.h> -#include <konkret/konkret.h> -#include <assert.h> #include <libudev.h> -#include <errno.h> -#include <unistd.h> +#include <assert.h> #include "LMI_DataFile.h" #include "LMI_UnixDeviceFile.h" #include "LMI_SymbolicLink.h" #include "LMI_UnixDirectory.h" #include "LMI_UnixSocket.h" #include "LMI_FIFOPipeFile.h" -#include "globals.h" - -#ifndef BUFLEN - #define BUFLEN 512 -#endif -#ifndef PATH_MAX - #define PATH_MAX 4096 -#endif +#include "openlmi.h" const ConfigEntry *provider_config_defaults; const char *provider_name; #define FSCREATIONCLASSNAME_LOCAL "LMI_LocalFileSystem" #define FSCREATIONCLASSNAME_TRANSIENT "LMI_TransientFileSystem" -#define GROUP_COMPONENT "GroupComponent" -#define PART_COMPONENT "PartComponent" -#define SAME_ELEMENT "SameElement" -#define SYSTEM_ELEMENT "SystemElement" #define DEVTYPE_BLK 2 #define DEVTYPE_CHR 3 -/* CMPI_RC_ERR_<error> values end at 200. 0xFF should be safe. */ -#define RC_ERR_CLASS_CHECK_FAILED 0xFF - #define sb_permmask(sb) ((sb).st_mode & (S_IRWXU | S_IRWXG | S_IRWXO)) #define sb_isreadable(sb) ( \ (sb_permmask(sb) & S_IRUSR) || \ @@ -78,7 +57,6 @@ const char *provider_name; (sb_permmask(sb) & S_IXGRP) || \ (sb_permmask(sb) & S_IXOTH) \ ) -#define stoms(t) ((t)*1000000) #define fill_logicalfile(type, obj, name, fsclassname, fsname, creation_class) \ type##_Set_Name((obj), (name)); \ @@ -96,23 +74,8 @@ const char *provider_name; LMI_##cmpitype##_Set_Writeable(lmi_file, sb_iswriteable(sb)); \ LMI_##cmpitype##_Set_Executable(lmi_file, sb_isexecutable(sb)); \ LMI_##cmpitype##_Set_FileSize(lmi_file, sb.st_size); \ - LMI_##cmpitype##_Set_LastAccessed(lmi_file, CMNewDateTimeFromBinary(b, stoms(sb.st_atime), 0, NULL)); \ - LMI_##cmpitype##_Set_LastModified(lmi_file, CMNewDateTimeFromBinary(b, stoms(sb.st_mtime), 0, NULL)); - -#define check_status(st) \ - if (st.rc != CMPI_RC_OK) { \ - return st; \ - } - -#define check_class_check_status(st) \ - if (st.rc == RC_ERR_CLASS_CHECK_FAILED) { \ - CMReturn(CMPI_RC_OK); \ - } \ - check_status(st); - -#define return_with_status(b, st, code, msg) \ - KSetStatus2(b, st, code, msg); \ - return *(st); + LMI_##cmpitype##_Set_LastAccessed(lmi_file, CMNewDateTimeFromBinary(b, LMI_SECS_TO_MS(sb.st_atime), 0, NULL)); \ + LMI_##cmpitype##_Set_LastModified(lmi_file, CMNewDateTimeFromBinary(b, LMI_SECS_TO_MS(sb.st_mtime), 0, NULL)); typedef struct { union { @@ -125,16 +88,11 @@ typedef struct { } lf; } logicalfile_t; -CMPIStatus lmi_check_required(const CMPIBroker *, const CMPIContext *, const CMPIObjectPath *); void get_class_from_stat(const struct stat *, char *); int get_class_from_path(const char *, char *); CMPIStatus get_fsinfo_from_stat(const CMPIBroker *, const struct stat *, const char *, char **, char **); CMPIStatus get_fsinfo_from_path(const CMPIBroker *, const char *, char **, char **); -const char *get_string_property_from_op(const CMPIObjectPath *, const char *); -const char *get_string_property_from_instance(const CMPIInstance *, const char *); -CMPIStatus check_assoc_class(const CMPIBroker *, const char *, const char *, const char *); CMPIStatus stat_logicalfile_and_fill(const CMPIBroker *, logicalfile_t *, mode_t, const char *); -void _dump_objectpath(const CMPIObjectPath *); #endif /* _FILE_H */ /* vi: set et: */ |