summaryrefslogtreecommitdiffstats
path: root/src/logicalfile/LMI_SymbolicLinkProvider.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/logicalfile/LMI_SymbolicLinkProvider.c')
-rw-r--r--src/logicalfile/LMI_SymbolicLinkProvider.c24
1 files changed, 14 insertions, 10 deletions
diff --git a/src/logicalfile/LMI_SymbolicLinkProvider.c b/src/logicalfile/LMI_SymbolicLinkProvider.c
index c93c087..ea88a8b 100644
--- a/src/logicalfile/LMI_SymbolicLinkProvider.c
+++ b/src/logicalfile/LMI_SymbolicLinkProvider.c
@@ -25,6 +25,7 @@ static const CMPIBroker* _cb = NULL;
static void LMI_SymbolicLinkInitialize()
{
+ lmi_init(provider_name, _cb, provider_config_defaults);
}
static CMPIStatus LMI_SymbolicLinkCleanup(
@@ -61,18 +62,18 @@ static CMPIStatus LMI_SymbolicLinkGetInstance(
const CMPIObjectPath* cop,
const char** properties)
{
- LMI_SymbolicLink lmi_file;
- const char *path;
- char rpath[PATH_MAX];
+ CMPIStatus st = {.rc = CMPI_RC_OK};
+ logicalfile_t logicalfile;
- LMI_SymbolicLink_InitFromObjectPath(&lmi_file, _cb, cop);
- path = KChars(lmi_file.Name.value);
- fill_basic(SymbolicLink, path, S_IFLNK, "No such symlink: %s");
- realpath(path, rpath);
- LMI_SymbolicLink_Set_TargetFile(&lmi_file, rpath);
+ st = lmi_check_required(_cb, cop);
+ check_status(st);
- KReturnInstance(cr, lmi_file);
- CMReturn(CMPI_RC_OK);
+ LMI_SymbolicLink_InitFromObjectPath(&logicalfile.lf.symboliclink, _cb, cop);
+ st = stat_logicalfile_and_fill(_cb, &logicalfile, S_IFLNK, "No such symlink: %s");
+ check_status(st);
+
+ KReturnInstance(cr, logicalfile.lf.symboliclink);
+ return st;
}
static CMPIStatus LMI_SymbolicLinkCreateInstance(
@@ -155,3 +156,6 @@ KONKRET_REGISTRATION(
"LMI_SymbolicLink",
"instance method")
/* vi: set et: */
+/* Local Variables: */
+/* indent-tabs-mode: nil */
+/* End: */