void VerifyStoragePromise(EvalContext *ctx, char *path, Promise *pp, ARG_UNUSED const ReportContext *report_context) /* FIXME: unused param */ { Attributes a = { {0} }; CfLock thislock; a = GetStorageAttributes(ctx, pp); CF_OCCUR++; #ifdef __MINGW32__ if (!a.havemount) { CfOut(OUTPUT_LEVEL_VERBOSE, "", "storage.mount is not supported on Windows"); } #endif /* No parameter conflicts here */ if (a.mount.unmount) { if ((a.mount.mount_source)) { CfOut(OUTPUT_LEVEL_VERBOSE, "", " !! An unmount promise indicates a mount-source information - probably an error\n"); } if ((a.mount.mount_server)) { CfOut(OUTPUT_LEVEL_VERBOSE, "", " !! An unmount promise indicates a mount-server information - probably an error\n"); } } else if (a.havemount) { if ((a.mount.mount_source == NULL) || (a.mount.mount_server == NULL)) { CfOut(OUTPUT_LEVEL_ERROR, "", " !! Insufficient specification in mount promise - need source and server\n"); return; } } thislock = AcquireLock(ctx, path, VUQNAME, CFSTARTTIME, a, pp, false); if (thislock.lock == NULL) { return; } /* Do mounts first */ #ifndef __MINGW32__ if ((!MOUNTEDFSLIST) && (!LoadMountInfo(&MOUNTEDFSLIST))) { CfOut(OUTPUT_LEVEL_ERROR, "", "Couldn't obtain a list of mounted filesystems - aborting\n"); YieldCurrentLock(thislock); return; } if (a.havemount) { VerifyMountPromise(ctx, path, a, pp); } #endif /* !__MINGW32__ */ /* Then check file system */ if (a.havevolume) { VerifyFileSystem(ctx, path, a, pp); if (a.volume.freespace != CF_NOINT) { VerifyFreeSpace(ctx, path, a, pp); } if (a.volume.scan_arrivals) { VolumeScanArrivals(path, a, pp); } } YieldCurrentLock(thislock); }
PromiseResult VerifyStoragePromise(EvalContext *ctx, char *path, Promise *pp) { Attributes a = { {0} }; CfLock thislock; a = GetStorageAttributes(ctx, pp); #ifdef __MINGW32__ if (!a.havemount) { Log(LOG_LEVEL_VERBOSE, "storage.mount is not supported on Windows"); } #endif /* No parameter conflicts here */ if (a.mount.unmount) { if ((a.mount.mount_source)) { Log(LOG_LEVEL_VERBOSE, "An unmount promise indicates a mount-source information - probably an error"); } if ((a.mount.mount_server)) { Log(LOG_LEVEL_VERBOSE, "An unmount promise indicates a mount-server information - probably an error"); } } else if (a.havemount) { if ((a.mount.mount_source == NULL) || (a.mount.mount_server == NULL)) { Log(LOG_LEVEL_ERR, "Insufficient specification in mount promise - need source and server"); return PROMISE_RESULT_NOOP; } } thislock = AcquireLock(ctx, path, VUQNAME, CFSTARTTIME, a.transaction, pp, false); if (thislock.lock == NULL) { return PROMISE_RESULT_NOOP; } /* Do mounts first */ PromiseResult result = PROMISE_RESULT_NOOP; #ifndef __MINGW32__ if ((SeqLength(GetGlobalMountedFSList())) && (!LoadMountInfo(GetGlobalMountedFSList()))) { Log(LOG_LEVEL_ERR, "Couldn't obtain a list of mounted filesystems - aborting"); YieldCurrentLock(thislock); return PROMISE_RESULT_NOOP; } if (a.havemount) { result = PromiseResultUpdate(result, VerifyMountPromise(ctx, path, a, pp)); } #endif /* !__MINGW32__ */ /* Then check file system */ if (a.havevolume) { result = PromiseResultUpdate(result, VerifyFileSystem(ctx, path, a, pp)); if (a.volume.freespace != CF_NOINT) { result = PromiseResultUpdate(result, VerifyFreeSpace(ctx, path, a, pp)); } if (a.volume.scan_arrivals) { result = PromiseResultUpdate(result, VolumeScanArrivals(path, a, pp)); } } YieldCurrentLock(thislock); return result; }
void VerifyStoragePromise(char *path, Promise *pp, const ReportContext *report_context) { Attributes a = { {0} }; CfLock thislock; a = GetStorageAttributes(pp); CF_OCCUR++; #ifdef MINGW if (!a.havemount) { CfOut(cf_verbose, "", "storage.mount is not supported on Windows"); } #endif /* No parameter conflicts here */ if (a.mount.unmount) { if (a.mount.mount_source || a.mount.mount_server) { CfOut(cf_verbose, "", " !! An unmount promise indicates a mount-source information - probably in error\n"); } } else if (a.havemount) { if (a.mount.mount_source == NULL || a.mount.mount_server == NULL) { CfOut(cf_error, "", " !! Insufficient specification in mount promise - need source and server\n"); return; } } thislock = AcquireLock(path, VUQNAME, CFSTARTTIME, a, pp, false); if (thislock.lock == NULL) { return; } /* Do mounts first */ #ifndef MINGW if (!MOUNTEDFSLIST && !LoadMountInfo(&MOUNTEDFSLIST)) { CfOut(cf_error, "", "Couldn't obtain a list of mounted filesystems - aborting\n"); YieldCurrentLock(thislock); return; } if (a.havemount) { VerifyMountPromise(path, a, pp, report_context); } #endif /* NOT MINGW */ /* Then check file system */ if (a.havevolume) { VerifyFileSystem(path, a, pp); if (a.volume.freespace != CF_NOINT) { VerifyFreeSpace(path, a, pp); } if (a.volume.scan_arrivals) { VolumeScanArrivals(path, a, pp); } } YieldCurrentLock(thislock); }