From 9d186959655ae888fb6df2d4da030c2126bff628 Mon Sep 17 00:00:00 2001 From: bqv Date: Sat, 12 Mar 2022 21:47:47 +0000 Subject: [PATCH] rehash --- deps/fdstream.hpp | 184 ++++++++++++++++++++++++++++++++++++++++++++++ libomemo.scm | 126 ------------------------------- 2 files changed, 184 insertions(+), 126 deletions(-) create mode 100644 deps/fdstream.hpp delete mode 100644 libomemo.scm diff --git a/deps/fdstream.hpp b/deps/fdstream.hpp new file mode 100644 index 0000000..585e03d --- /dev/null +++ b/deps/fdstream.hpp @@ -0,0 +1,184 @@ +/* The following code declares classes to read from and write to + * file descriptore or file handles. + * + * See + * http://www.josuttis.com/cppcode + * for details and the latest version. + * + * - open: + * - integrating BUFSIZ on some systems? + * - optimized reading of multiple characters + * - stream for reading AND writing + * - i18n + * + * (C) Copyright Nicolai M. Josuttis 2001. + * Permission to copy, use, modify, sell and distribute this software + * is granted provided this copyright notice appears in all copies. + * This software is provided "as is" without express or implied + * warranty, and with no claim as to its suitability for any purpose. + * + * Version: Jul 28, 2002 + * History: + * Jul 28, 2002: bugfix memcpy() => memmove() + * fdinbuf::underflow(): cast for return statements + * Aug 05, 2001: first public version + */ +#ifndef BOOST_FDSTREAM_HPP +#define BOOST_FDSTREAM_HPP + +#include +#include +#include +// for EOF: +#include +// for memmove(): +#include + + +// low-level read and write functions +#ifdef _MSC_VER +# include +#else +# include +//extern "C" { +// int write (int fd, const char* buf, int num); +// int read (int fd, char* buf, int num); +//} +#endif + + +// BEGIN namespace BOOST +namespace boost { + + +/************************************************************ + * fdostream + * - a stream that writes on a file descriptor + ************************************************************/ + + +class fdoutbuf : public std::streambuf { + protected: + int fd; // file descriptor + public: + // constructor + fdoutbuf (int _fd) : fd(_fd) { + } + protected: + // write one character + virtual int_type overflow (int_type c) { + if (c != EOF) { + char z = c; + if (write (fd, &z, 1) != 1) { + return EOF; + } + } + return c; + } + // write multiple characters + virtual + std::streamsize xsputn (const char* s, + std::streamsize num) { + return write(fd,s,num); + } +}; + +class fdostream : public std::ostream { + protected: + fdoutbuf buf; + public: + fdostream (int fd) : std::ostream(0), buf(fd) { + rdbuf(&buf); + } +}; + + +/************************************************************ + * fdistream + * - a stream that reads on a file descriptor + ************************************************************/ + +class fdinbuf : public std::streambuf { + protected: + int fd; // file descriptor + protected: + /* data buffer: + * - at most, pbSize characters in putback area plus + * - at most, bufSize characters in ordinary read buffer + */ + static const int pbSize = 4; // size of putback area + static const int bufSize = 1024; // size of the data buffer + char buffer[bufSize+pbSize]; // data buffer + + public: + /* constructor + * - initialize file descriptor + * - initialize empty data buffer + * - no putback area + * => force underflow() + */ + fdinbuf (int _fd) : fd(_fd) { + setg (buffer+pbSize, // beginning of putback area + buffer+pbSize, // read position + buffer+pbSize); // end position + } + + protected: + // insert new characters into the buffer + virtual int_type underflow () { +#ifndef _MSC_VER + using std::memmove; +#endif + + // is read position before end of buffer? + if (gptr() < egptr()) { + return traits_type::to_int_type(*gptr()); + } + + /* process size of putback area + * - use number of characters read + * - but at most size of putback area + */ + int numPutback; + numPutback = gptr() - eback(); + if (numPutback > pbSize) { + numPutback = pbSize; + } + + /* copy up to pbSize characters previously read into + * the putback area + */ + memmove (buffer+(pbSize-numPutback), gptr()-numPutback, + numPutback); + + // read at most bufSize new characters + int num; + num = read (fd, buffer+pbSize, bufSize); + if (num <= 0) { + // ERROR or EOF + return EOF; + } + + // reset buffer pointers + setg (buffer+(pbSize-numPutback), // beginning of putback area + buffer+pbSize, // read position + buffer+pbSize+num); // end of buffer + + // return next character + return traits_type::to_int_type(*gptr()); + } +}; + +class fdistream : public std::istream { + protected: + fdinbuf buf; + public: + fdistream (int fd) : std::istream(0), buf(fd) { + rdbuf(&buf); + } +}; + + +} // END namespace boost + +#endif /*BOOST_FDSTREAM_HPP*/ diff --git a/libomemo.scm b/libomemo.scm deleted file mode 100644 index b9c7139..0000000 --- a/libomemo.scm +++ /dev/null @@ -1,126 +0,0 @@ -(define-module (libomemo) - #:use-module (gnu packages) - #:use-module (gnu packages admin) - #:use-module (gnu packages aidc) - #:use-module (gnu packages aspell) - #:use-module (gnu packages audio) - #:use-module (gnu packages autotools) - #:use-module (gnu packages avahi) - #:use-module (gnu packages base) - #:use-module (gnu packages bash) - #:use-module (gnu packages bison) - #:use-module (gnu packages boost) - #:use-module (gnu packages check) - #:use-module (gnu packages compression) - #:use-module (gnu packages cpp) - #:use-module (gnu packages crypto) - #:use-module (gnu packages curl) - #:use-module (gnu packages cyrus-sasl) - #:use-module (gnu packages databases) - #:use-module (gnu packages docbook) - #:use-module (gnu packages documentation) - #:use-module (gnu packages enchant) - #:use-module (gnu packages fontutils) - #:use-module (gnu packages freedesktop) - #:use-module (gnu packages gettext) - #:use-module (gnu packages glib) - #:use-module (gnu packages gnome) - #:use-module (gnu packages gnupg) - #:use-module (gnu packages golang) - #:use-module (gnu packages gperf) - #:use-module (gnu packages graphviz) - #:use-module (gnu packages gstreamer) - #:use-module (gnu packages gtk) - #:use-module (gnu packages guile) - #:use-module (gnu packages icu4c) - #:use-module (gnu packages image) - #:use-module (gnu packages kde) - #:use-module (gnu packages kerberos) - #:use-module (gnu packages less) - #:use-module (gnu packages libcanberra) - #:use-module (gnu packages libffi) - #:use-module (gnu packages libidn) - #:use-module (gnu packages libreoffice) - #:use-module (gnu packages linux) - #:use-module (gnu packages logging) - #:use-module (gnu packages lua) - #:use-module (gnu packages man) - #:use-module (gnu packages markup) - #:use-module (gnu packages matrix) - #:use-module (gnu packages mono) - #:use-module (gnu packages mpd) - #:use-module (gnu packages ncurses) - #:use-module (gnu packages networking) - #:use-module (gnu packages nss) - #:use-module (gnu packages pcre) - #:use-module (gnu packages perl) - #:use-module (gnu packages photo) - #:use-module (gnu packages php) - #:use-module (gnu packages pkg-config) - #:use-module (gnu packages protobuf) - #:use-module (gnu packages python) - #:use-module (gnu packages python-check) - #:use-module (gnu packages python-crypto) - #:use-module (gnu packages python-web) - #:use-module (gnu packages python-xyz) - #:use-module (gnu packages qt) - #:use-module (gnu packages readline) - #:use-module (gnu packages ruby) - #:use-module (gnu packages sphinx) - #:use-module (gnu packages sqlite) - #:use-module (gnu packages tcl) - #:use-module (gnu packages texinfo) - #:use-module (gnu packages textutils) - #:use-module (gnu packages tls) - #:use-module (gnu packages video) - #:use-module (gnu packages web) - #:use-module (gnu packages xdisorg) - #:use-module (gnu packages xiph) - #:use-module (gnu packages xml) - #:use-module (gnu packages xorg) - #:use-module (guix build-system cmake) - #:use-module (guix build-system go) - #:use-module (guix build-system glib-or-gtk) - #:use-module (guix build-system gnu) - #:use-module (guix build-system meson) - #:use-module (guix build-system perl) - #:use-module (guix build-system python) - #:use-module (guix build-system qt) - #:use-module (guix build-system trivial) - #:use-module (guix download) - #:use-module (guix git-download) - #:use-module (guix hg-download) - #:use-module ((guix licenses) #:prefix license:) - #:use-module (guix packages) - #:use-module (guix utils)) - -(define-public libomemo-c - (package - (name "libomemo-c") - (version "2.3.3") - (source (origin - (method git-fetch) - (uri (git-reference - (url "https://github.com/dino/libomemo-c") - (commit "06184660790daa42433e616fa3dee730717d1c1b"))) - (file-name (git-file-name name version)) - (sha256 - (base32 - "1wa85r1b54myabsbmbqlq9jz174mmvd02b8zy1j4j0kml0anp6nx")))) - (arguments - `(;; Required for proper linking and for tests to run. - #:configure-flags '("-DBUILD_SHARED_LIBS=on" "-DBUILD_TESTING=1"))) - (build-system cmake-build-system) - (inputs `( ;; Required for tests: - ("check" ,check) - ("openssl" ,openssl))) - (native-inputs `(("pkg-config" ,pkg-config))) - (home-page "https://github.com/WhisperSystems/libsignal-protocol-c") - (synopsis "Implementation of a ratcheting forward secrecy protocol") - (description "libsignal-protocol-c is an implementation of a ratcheting -forward secrecy protocol that works in synchronous and asynchronous -messaging environments. It can be used with messaging software to provide -end-to-end encryption.") - (license license:gpl3+))) - -libomemo-c