diff options
author | Jan Synacek <jsynacek@redhat.com> | 2014-04-23 12:52:16 +0200 |
---|---|---|
committer | Jan Synacek <jsynacek@redhat.com> | 2014-04-24 13:48:25 +0200 |
commit | 47f3990370bf8f2cba429fce53287fa4e67ce04e (patch) | |
tree | 558a68cc1e94bd44aaa1c9fbba4803404fdd9721 /src/logicalfile/LMI_SymbolicLinkProvider.c | |
parent | 799820bf4b9208f76b290213f501f2cf2a9735dc (diff) | |
download | openlmi-providers-47f3990370bf8f2cba429fce53287fa4e67ce04e.tar.gz openlmi-providers-47f3990370bf8f2cba429fce53287fa4e67ce04e.tar.xz openlmi-providers-47f3990370bf8f2cba429fce53287fa4e67ce04e.zip |
logicalfile: add support for symlink creation
Diffstat (limited to 'src/logicalfile/LMI_SymbolicLinkProvider.c')
-rw-r--r-- | src/logicalfile/LMI_SymbolicLinkProvider.c | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/src/logicalfile/LMI_SymbolicLinkProvider.c b/src/logicalfile/LMI_SymbolicLinkProvider.c index bab03d8..8060307 100644 --- a/src/logicalfile/LMI_SymbolicLinkProvider.c +++ b/src/logicalfile/LMI_SymbolicLinkProvider.c @@ -83,7 +83,25 @@ static CMPIStatus LMI_SymbolicLinkCreateInstance( const CMPIObjectPath* cop, const CMPIInstance* ci) { - CMReturn(CMPI_RC_ERR_NOT_SUPPORTED); + CMPIStatus st = {.rc = CMPI_RC_OK}; + CMPIObjectPath *iop = CMGetObjectPath(ci, &st); + check_status(st); + st = lmi_check_required(_cb, cc, iop); + check_status(st); + + const char *path = get_string_property_from_instance(ci, "Name"); + const char *target = get_string_property_from_instance(ci, "TargetFile"); + + if (symlink(target, path) < 0) { + char errmsg[BUFLEN]; + char strerr[BUFLEN]; + snprintf(errmsg, BUFLEN, "Can't create symlink: %s pointing to %s (%s)", + path, target, + strerror_r(errno, strerr, BUFLEN)); + CMReturnWithChars(_cb, CMPI_RC_ERR_FAILED, errmsg); + } + + return CMReturnObjectPath(cr, iop); } static CMPIStatus LMI_SymbolicLinkModifyInstance( @@ -158,4 +176,5 @@ KONKRET_REGISTRATION( /* vi: set et: */ /* Local Variables: */ /* indent-tabs-mode: nil */ +/* c-basic-offset: 4 */ /* End: */ |