aboutsummaryrefslogtreecommitdiff
#pragma once

#include "types.hh"


namespace nix {


/* Open (possibly create) a lock file and return the file descriptor.
   -1 is returned if create is false and the lock could not be opened
   because it doesn't exist.  Any other error throws an exception. */
int openLockFile(const Path & path, bool create);

/* Delete an open lock file. */
void deleteLockFile(const Path & path, int fd);

enum LockType { ltRead, ltWrite, ltNone };

bool lockFile(int fd, LockType lockType, bool wait);


class PathLocks 
{
private:
    typedef std::pair<int, Path> FDPair;
    list<FDPair> fds;
    bool deletePaths;

public:
    PathLocks();
    PathLocks(const PathSet & paths,
        const string & waitMsg = "");
    bool lockPaths(const PathSet & _paths,
        const string & waitMsg = "",
        bool wait = true);
    ~PathLocks();
    void unlock();
    void setDeletion(bool deletePaths);
};


bool pathIsLockedByMe(const Path & path);


}
ail'>...* gnu/services/dns.scm (<knot-resolver-configuration>): New record type. (knot-resolver-activation, knot-resolver-shpherd-services): New procedures. (%knot-resolver-accounts, %kresd.conf, knot-resolver-service-type): New variables. * doc/guix.texi (DNS Services): Document it. 宋文武 2019-04-27gnu: knot: Fix typos....* gnu/services/dns.scm: Fix typos. Julien Lepiller 2019-04-27gnu: knot: Add configuration fields....* gnu/services/dns.scm (knot-zone-configuration)[zonefile-load] [journal-content, max-journal-usage, max-journal-depth, max-zone-size]: New fields. (knot-zone-config): Serialize them. * doc/guix.texi (DNS Services): Document them. Julien Lepiller 2019-04-27services: knot: Fix configuration file generation....Fixes a regression introduced in 92eb600f8a94afa36142f8f145efaa485b632433. * gnu/services/dns.scm (knot-config-file): Add ungexp around call to 'knot-configuration-includes'. Ludovic Courtès 2019-04-26gnu: dns: Fix configuration formating....* gnu/services/dns.scm (format-string-list): Fix formating of lists with only one symbol. Julien Lepiller 2019-04-25gnu: knot-service: Add includes field in configuration....* gnu/services/dns.scm (knot-configuration): Add includes field. (verify-knot-configuration): Check includes content. (knot-config-file): Serialize includes. * doc/guix.texi (DNS Services): Document it. Julien Lepiller 2018-12-04services: ddclient: Fix unrecognized keywords....This patch fixes warnings about unrecognized keywords in logs. * gnu/services/dns.scm (serialize-field): Skip some field names. Oleg Pykhalov 2018-11-06gnu: services: dns: Fix 'ddclient-activation'....* gnu/services/dns.scm (ddclient-activation): Fix procedure. Oleg Pykhalov 2018-08-30services: Add ddclient service....* gnu/services/dns.scm (ddclient-configuration, ddclient-service-type): New variables. (uglify-field-name, serialize-field, serialize-boolean, serialize-integer, serialize-string, serialize-list, serialize-extra-options, ddclient-activation, ddclient-shepherd-service, generate-ddclient-documentation): New procedures. * doc/guix.texi (DNS Services): Document it. Oleg Pykhalov 2018-06-08services: dnsmasq-service-type: Add default configuration and description....* gnu/services/dns.scm (dnsmasq-service-type) [default-value, description]: New fields. 宋文武 2018-06-08services: dnsmasq: Use 'negative-cache?' instead of 'no-negcache?'....The 'no-negcache?' option is mapped to the '--no-negcache' command-line argument directly, but we're in the scheme world, where the general guideline is to avoid double-negations in identifiers. * gnu/services/dns.scm <dnsmasq-configuration>: Replace the 'no-negcache?' field with 'negative-cache?'. * doc/guix.texi (DNS Services)[Dnsmasq Service]: Adjust accordingly. 宋文武 2018-06-05services: Add dnsmasq-service-type....* gnu/services/dns.scm (dnsmasq-service-type): New variable. (<dnsmasq-configuration>): New record type. (dnsmasq-shepherd-service): New procedure. * doc/guix.texi (DNS Services): Document it. 宋文武 2017-06-21gnu: services: use seconds instead of duration strings....* gnu/services/dns.scm (zone-file, knot-policy-configuration): Use numbers instead of duration strings. (verify-knot-policy-configuration): Fix typo. * doc/guix.texi (DNS Services): Update documentation. Julien Lepiller 2017-05-27gnu: Add knot-service-type....* gnu/services/dns.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. * doc/guix.texi (DNS Services): New subsubsection. Julien Lepiller