#pragma once #include "config.h" #include #include #include #include /* Before 4.7, gcc's std::exception uses empty throw() specifiers for * its (virtual) destructor and what() in c++11 mode, in violation of spec */ #ifdef __GNUC__ #if __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 7) #define EXCEPTION_NEEDS_THROW_SPEC #endif #endif namespace nix { /* Inherit some names from other namespaces for convenience. */ using std::string; using std::list; using std::set; using std::vector; using boost::format; struct FormatOrString { string s; FormatOrString(const string & s) : s(s) { }; FormatOrString(const format & f) : s(f.str()) { }; FormatOrString(const char * s) : s(s) { }; }; /* BaseError should generally not be caught, as it has Interrupted as a subclass. Catch Error instead. */ class BaseError : public std::exception { protected: string prefix_; // used for location traces etc. string err; public: unsigned int status; // exit status BaseError(const FormatOrString & fs, unsigned int status = 1); #ifdef EXCEPTION_NEEDS_THROW_SPEC ~BaseError() throw () { }; const char * what() const throw () { return err.c_str(); } #else const char * what() const noexcept { return err.c_str(); } #endif const string & msg() const { return err; } const string & prefix() const { return prefix_; } BaseError & addPrefix(const FormatOrString & fs); }; #define MakeError(newClass, superClass) \ class newClass : public superClass \ { \ public: \ newClass(const FormatOrString & fs, unsigned int status = 1) : superClass(fs, status) { }; \ }; MakeError(Error, BaseError) class SysError : public Error { public: int errNo; SysError(const FormatOrString & fs); }; typedef list Strings; typedef set StringSet; /* Paths are just strings. */ typedef string Path; typedef list Paths; typedef set PathSet; typedef enum { lvlError = 0, lvlInfo, lvlTalkative, lvlChatty, lvlDebug, lvlVomit } Verbosity; } 39ecd506c42d8e7d29a9143d03e5897'>gnu/home/services/ssh.scm
AgeCommit message (Expand)Author
2022-08-25services: Use the new maybe/unset API....* gnu/home/services/ssh.scm (serialize-address-family): Use the public API of the maybe infrastructure. * gnu/services/file-sharing.scm (serialize-maybe-string): Use maybe-value. (serialize-maybe-file-object): Use maybe-value-set?. * gnu/services/getmail.scm (getmail-retriever-configuration): Don't use internals in unset field declarations. (getmail-destination-configuration): Ditto. * gnu/services/messaging.scm (raw-content?): Use maybe-value-set?. (prosody-configuration): Use %unset-value. * gnu/services/telephony.scm (jami-shepherd-services): Use maybe-value-set?. (archive-name->username): Use maybe-value-set?. * tests/services/configuration.scm ("maybe type, no default"): Use %unset-value. Modified-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Signed-off-by: Maxim Cournoyer <maxim.cournoyer@gmail.com> Attila Lendvai
2022-08-10home: ssh: Fix invalid value error for address-family....Fixes <https://issues.guix.gnu.org/57110>, a regression introduced with a2b89a3319dc1d621c546855f578acae5baaf6da. * gnu/home/services/ssh.scm (address-family?): Replace *unspecified* with 'unset. (serialize-address-family): Adjust accordingly. (openssh-host): Adjust doc. Reported-by: Oleg Pykhalov <go.wigust@gmail.com> Maxim Cournoyer
2022-06-17home: Add OpenSSH service....* gnu/home/services/ssh.scm: New file. * gnu/local.mk (GNU_SYSTEM_MODULES): Add it. * po/guix/POTFILES.in: Add it. * doc/guix.texi (Secure Shell): New section. Ludovic Courtès