<pre style='margin:0'>
Herby Gillot (herbygillot) pushed a commit to branch master
in repository macports-ports.

</pre>
<p><a href="https://github.com/macports/macports-ports/commit/31662758af746ac340098001c52bb524318dcaa6">https://github.com/macports/macports-ports/commit/31662758af746ac340098001c52bb524318dcaa6</a></p>
<pre style="white-space: pre; background: #F8F8F8"><span style='display:block; white-space:pre;color:#808000;'>commit 31662758af746ac340098001c52bb524318dcaa6
</span>Author: Sergey Fedorov <vital.had@gmail.com>
AuthorDate: Wed Feb 22 06:32:42 2023 +0800

<span style='display:block; white-space:pre;color:#404040;'>    R-readstata13: new port
</span>---
 R/R-readstata13/Portfile                    | 24 +++++++++
 R/R-readstata13/files/patch-big-endian.diff | 80 +++++++++++++++++++++++++++++
 2 files changed, 104 insertions(+)

<span style='display:block; white-space:pre;color:#808080;'>diff --git a/R/R-readstata13/Portfile b/R/R-readstata13/Portfile
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..c39d1dfc3ff
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/R/R-readstata13/Portfile
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,24 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# -*- coding: utf-8; mode: tcl; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- vim:fenc=utf-8:ft=tcl:et:sw=4:ts=4:sts=4
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortSystem          1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+PortGroup           R 1.0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+R.setup             github sjewo readstata13 0.10.0 v
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+revision            0
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+maintainers         {@barracuda156 gmail.com:vital.had} openmaintainer
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+license             GPL-2
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+description         Import Stata data files
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+long_description    {*}${description}
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+checksums           rmd160  9a976d33fb4e122ea60b1306244b8f4c93811e4c \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    sha256  9d004aa6d42f962786c0b1012dfd75fe59ebd100c8d6057ed88bdd38a7335c9b \
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+                    size    62642
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_lib-append  port:R-Rcpp
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+patchfiles          patch-big-endian.diff
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+compilers.setup     require_fortran
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+depends_test-append port:R-testthat
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+test.run            yes
</span><span style='display:block; white-space:pre;color:#808080;'>diff --git a/R/R-readstata13/files/patch-big-endian.diff b/R/R-readstata13/files/patch-big-endian.diff
</span>new file mode 100644
<span style='display:block; white-space:pre;color:#808080;'>index 00000000000..018a07fd49f
</span><span style='display:block; white-space:pre;background:#ffe0e0;'>--- /dev/null
</span><span style='display:block; white-space:pre;background:#e0e0ff;'>+++ b/R/R-readstata13/files/patch-big-endian.diff
</span><span style='display:block; white-space:pre;background:#e0e0e0;'>@@ -0,0 +1,80 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+# https://github.com/sjewo/readstata13/commit/e1142421200e342173dd852194a26eedec627796
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/RcppExports.cpp.orig       2021-05-25 18:50:49.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/RcppExports.cpp    2023-02-22 06:20:26.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -5,6 +5,11 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ using namespace Rcpp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#ifdef RCPP_USE_GLOBAL_ROSTREAM
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Rcpp::Rostream<true>&  Rcpp::Rcout = Rcpp::Rcpp_cout_get();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++Rcpp::Rostream<false>& Rcpp::Rcerr = Rcpp::Rcpp_cerr_get();
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++#endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // stata_read
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ List stata_read(const char * filePath, const bool missing, const IntegerVector selectrows, const CharacterVector selectcols, const bool strlexport, const CharacterVector strlpath);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ RcppExport SEXP _readstata13_stata_read(SEXP filePathSEXP, SEXP missingSEXP, SEXP selectrowsSEXP, SEXP selectcolsSEXP, SEXP strlexportSEXP, SEXP strlpathSEXP) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/read_data.cpp.orig 2021-05-25 18:50:49.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/read_data.cpp      2023-02-22 06:20:54.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -207,7 +207,7 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         // FixMe: works if we read a big-endian file on little-endian
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         if (byteorder.compare("MSF")==0) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-          v = (z >> 48) & ((1 << 24) - 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++          v = (z >> 40) & ((1 << 24) - 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+           o = z & ((1 << 24) - 1);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+         }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+--- src/save_dta.cpp.orig  2021-05-25 18:50:49.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++++ src/save_dta.cpp       2023-02-22 06:23:10.000000000 +0800
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -20,6 +20,16 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ using namespace Rcpp;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ using namespace std;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// // create big endian file from little endian
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// #ifdef swapit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// #undef swapit
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// #undef sbyteorder
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// #undef SBYTEORDER
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// #define swapit TRUE
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// #define sbyteorder "MSF"
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// #define SBYTEORDER 1
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++// #endif
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // Writes the binary Stata file
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ //
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ // @param filePath The full systempath to the dta file you want to export.
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -483,13 +493,13 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             char    z[8];
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // push back every v, o and val_strl
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            V.push_back(v);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            V.push_back(v); if (swapit) v = swap_endian(v);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             O.push_back(o);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // z is 'vv-- ----'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             memcpy(&z[0], &v, sizeof(v));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if (SBYTEORDER == 1) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-              o <<= 16;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++              o <<= 16; if (swapit) o = swap_endian(o);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             memcpy(&z[2], &o, 6);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // z is 'vvoo oooo'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+@@ -509,10 +519,13 @@
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             V.push_back(v);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             O.push_back(o);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+ 
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            // z is 'vv-- ----'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-            memcpy(&z[0], &v, sizeof(v));
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            // z is 'vvv- ----'
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            if (SBYTEORDER == 1) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++              v <<= 8; if (swapit) v = swap_endian(v);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++            memcpy(&z[0], &v, 3);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             if (SBYTEORDER == 1) {
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+-              o <<= 24;
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>++              o <<= 24; if (swapit) o = swap_endian(o);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             }
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             memcpy(&z[3], &o, 5);
</span><span style='display:block; white-space:pre;background:#e0ffe0;'>+             // z is 'vvvo oooo'
</span></pre><pre style='margin:0'>

</pre>