pkgsrc-Changes archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
CVS commit: pkgsrc/finance/ledger32
Module Name: pkgsrc
Committed By: riastradh
Date: Thu May 2 12:22:13 UTC 2024
Modified Files:
pkgsrc/finance/ledger32: Makefile distinfo
pkgsrc/finance/ledger32/patches: patch-src_utils.cc
Added Files:
pkgsrc/finance/ledger32/patches: patch-src_amount.cc patch-src_expr.cc
patch-src_format.cc patch-src_item.cc patch-src_lookup.cc
patch-src_option.cc patch-src_pool.cc patch-src_report.cc
patch-src_strptime.cc patch-src_textual.cc patch-src_times.cc
patch-src_xact.cc
Log Message:
finance/ledger32: Fix ctype abuse.
To generate a diff of this commit:
cvs rdiff -u -r1.2 -r1.3 pkgsrc/finance/ledger32/Makefile \
pkgsrc/finance/ledger32/distinfo
cvs rdiff -u -r0 -r1.1 pkgsrc/finance/ledger32/patches/patch-src_amount.cc \
pkgsrc/finance/ledger32/patches/patch-src_expr.cc \
pkgsrc/finance/ledger32/patches/patch-src_format.cc \
pkgsrc/finance/ledger32/patches/patch-src_item.cc \
pkgsrc/finance/ledger32/patches/patch-src_lookup.cc \
pkgsrc/finance/ledger32/patches/patch-src_option.cc \
pkgsrc/finance/ledger32/patches/patch-src_pool.cc \
pkgsrc/finance/ledger32/patches/patch-src_report.cc \
pkgsrc/finance/ledger32/patches/patch-src_strptime.cc \
pkgsrc/finance/ledger32/patches/patch-src_textual.cc \
pkgsrc/finance/ledger32/patches/patch-src_times.cc \
pkgsrc/finance/ledger32/patches/patch-src_xact.cc
cvs rdiff -u -r1.1 -r1.2 pkgsrc/finance/ledger32/patches/patch-src_utils.cc
Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.
Modified files:
Index: pkgsrc/finance/ledger32/Makefile
diff -u pkgsrc/finance/ledger32/Makefile:1.2 pkgsrc/finance/ledger32/Makefile:1.3
--- pkgsrc/finance/ledger32/Makefile:1.2 Sun Apr 21 16:59:09 2024
+++ pkgsrc/finance/ledger32/Makefile Thu May 2 12:22:13 2024
@@ -1,7 +1,7 @@
-# $NetBSD: Makefile,v 1.2 2024/04/21 16:59:09 adam Exp $
+# $NetBSD: Makefile,v 1.3 2024/05/02 12:22:13 riastradh Exp $
DISTNAME= ledger-3.2.1
-PKGREVISION= 1
+PKGREVISION= 2
PKGNAME= ${DISTNAME:C/^ledger-/ledger32-/}
CATEGORIES= finance
MASTER_SITES= ${MASTER_SITE_GITHUB:=ledger/}
Index: pkgsrc/finance/ledger32/distinfo
diff -u pkgsrc/finance/ledger32/distinfo:1.2 pkgsrc/finance/ledger32/distinfo:1.3
--- pkgsrc/finance/ledger32/distinfo:1.2 Sun Apr 21 16:59:09 2024
+++ pkgsrc/finance/ledger32/distinfo Thu May 2 12:22:13 2024
@@ -1,9 +1,21 @@
-$NetBSD: distinfo,v 1.2 2024/04/21 16:59:09 adam Exp $
+$NetBSD: distinfo,v 1.3 2024/05/02 12:22:13 riastradh Exp $
BLAKE2s (ledger-3.2.1.tar.gz) = c07ef3f13ef6fa24c3a0d4e1ef91e02c39673f143aa910810d64f00751ab76ff
SHA512 (ledger-3.2.1.tar.gz) = 526c60cee354c9d2ead38cef3b89b349467e41fa3ec0927b51e7246a3352f19f0f81574211f20ba9bac5915590b870b9f9478a103ab661d3d9a10f41c52f4512
Size (ledger-3.2.1.tar.gz) = 790959 bytes
SHA1 (patch-src_CMakeLists.txt) = 8d6a16523554c98c8559702db681af6fb4f413aa
+SHA1 (patch-src_amount.cc) = ddabd294a25d05b7caf85e701817f5a78d28e04a
+SHA1 (patch-src_expr.cc) = e707cbcba58a31534072ed490c9ba95f8dc4005d
+SHA1 (patch-src_format.cc) = c7fe4821bc86a9126978235fa44859f84ea92989
+SHA1 (patch-src_item.cc) = 5e97a09824a04092161d8a0ca956a43ef084a03d
+SHA1 (patch-src_lookup.cc) = 0140f88386a6a9bbfa82e48fca4f3555f40a03aa
SHA1 (patch-src_main.cc) = d887e39e2a68fe594c93819e95eed9a4f469844d
+SHA1 (patch-src_option.cc) = e2fced2a03927b91afbc3b3e390b5e1d9ea09a6e
+SHA1 (patch-src_pool.cc) = 69198d4961646171b85b73fbfa6920cfe4a5ac5c
+SHA1 (patch-src_report.cc) = b17a06c54dd7c3b20e8219add23cf2b26095f6d7
+SHA1 (patch-src_strptime.cc) = 9e5f77e6300b3c88aa47540f03675a5001eac5bc
SHA1 (patch-src_system.hh.in) = d96c4bf691868e790110c73473e4a9f81e48d617
-SHA1 (patch-src_utils.cc) = fa3fac1f240f3bf4c7141f5db88350252bbdc000
+SHA1 (patch-src_textual.cc) = 3b52947bbdf41bbf4181e5c5519df2b105da60ad
+SHA1 (patch-src_times.cc) = 544235432f6811f1a5c73ee72b3011709b606f17
+SHA1 (patch-src_utils.cc) = 764badb5363a6ab6a98672ff5fde897a477d2fbd
+SHA1 (patch-src_xact.cc) = 89befd42102146e7a46f92ce458a7f1bc321ce55
Index: pkgsrc/finance/ledger32/patches/patch-src_utils.cc
diff -u pkgsrc/finance/ledger32/patches/patch-src_utils.cc:1.1 pkgsrc/finance/ledger32/patches/patch-src_utils.cc:1.2
--- pkgsrc/finance/ledger32/patches/patch-src_utils.cc:1.1 Sun Apr 21 16:59:09 2024
+++ pkgsrc/finance/ledger32/patches/patch-src_utils.cc Thu May 2 12:22:13 2024
@@ -1,9 +1,21 @@
-$NetBSD: patch-src_utils.cc,v 1.1 2024/04/21 16:59:09 adam Exp $
+$NetBSD: patch-src_utils.cc,v 1.2 2024/05/02 12:22:13 riastradh Exp $
+
+Fix ctype abuse.
+https://github.com/ledger/ledger/pull/2341
Fix build with newer boost.
--- src/utils.cc.orig 2024-04-21 16:37:21.648652970 +0000
+++ src/utils.cc
+@@ -516,7 +516,7 @@ strings_list split_arguments(const char
+ char in_quoted_string = '\0';
+
+ for (const char * p = line; *p; p++) {
+- if (! in_quoted_string && std::isspace(*p)) {
++ if (! in_quoted_string && std::isspace(static_cast<unsigned char>(*p))) {
+ if (q != buf) {
+ *q = '\0';
+ args.push_back(buf);
@@ -849,7 +849,7 @@ path resolve_path(const path& pathname)
path temp = pathname;
if (temp.string()[0] == '~')
Added files:
Index: pkgsrc/finance/ledger32/patches/patch-src_amount.cc
diff -u /dev/null pkgsrc/finance/ledger32/patches/patch-src_amount.cc:1.1
--- /dev/null Thu May 2 12:22:13 2024
+++ pkgsrc/finance/ledger32/patches/patch-src_amount.cc Thu May 2 12:22:13 2024
@@ -0,0 +1,35 @@
+$NetBSD: patch-src_amount.cc,v 1.1 2024/05/02 12:22:13 riastradh Exp $
+
+Fix ctype abuse.
+https://github.com/ledger/ledger/pull/2341
+
+--- src/amount.cc.orig 2020-05-18 05:30:10.000000000 +0000
++++ src/amount.cc
+@@ -979,7 +979,8 @@ namespace {
+ std::isdigit(c) || c == '-' || c == '.' || c == ',');
+
+ string::size_type len = std::strlen(buf);
+- while (len > 0 && ! std::isdigit(buf[len - 1])) {
++ while (len > 0 &&
++ ! std::isdigit(static_cast<unsigned char>(buf[len - 1]))) {
+ buf[--len] = '\0';
+ in.unget();
+ }
+@@ -1014,7 +1015,7 @@ bool amount_t::parse(std::istream& in, c
+ parse_quantity(in, quant);
+
+ if (! in.eof() && ((n = static_cast<char>(in.peek())) != '\n')) {
+- if (std::isspace(n))
++ if (std::isspace(static_cast<unsigned char>(n)))
+ comm_flags |= COMMODITY_STYLE_SEPARATED;
+
+ commodity_t::parse_symbol(in, symbol);
+@@ -1030,7 +1031,7 @@ bool amount_t::parse(std::istream& in, c
+ commodity_t::parse_symbol(in, symbol);
+
+ if (! in.eof() && ((n = static_cast<char>(in.peek())) != '\n')) {
+- if (std::isspace(static_cast<char>(in.peek())))
++ if (std::isspace(in.peek()))
+ comm_flags |= COMMODITY_STYLE_SEPARATED;
+
+ parse_quantity(in, quant);
Index: pkgsrc/finance/ledger32/patches/patch-src_expr.cc
diff -u /dev/null pkgsrc/finance/ledger32/patches/patch-src_expr.cc:1.1
--- /dev/null Thu May 2 12:22:13 2024
+++ pkgsrc/finance/ledger32/patches/patch-src_expr.cc Thu May 2 12:22:13 2024
@@ -0,0 +1,16 @@
+$NetBSD: patch-src_expr.cc,v 1.1 2024/05/02 12:22:13 riastradh Exp $
+
+Fix ctype abuse.
+https://github.com/ledger/ledger/pull/2341
+
+--- src/expr.cc.orig 2023-03-30 07:40:48.000000000 +0000
++++ src/expr.cc
+@@ -222,7 +222,7 @@ bool merged_expr_t::check_for_single_ide
+ {
+ bool single_identifier = true;
+ for (const char * p = expr.c_str(); *p; ++p)
+- if (! std::isalnum(*p) || *p == '_') {
++ if (! std::isalnum(static_cast<unsigned char>(*p)) || *p == '_') {
+ single_identifier = false;
+ break;
+ }
Index: pkgsrc/finance/ledger32/patches/patch-src_format.cc
diff -u /dev/null pkgsrc/finance/ledger32/patches/patch-src_format.cc:1.1
--- /dev/null Thu May 2 12:22:13 2024
+++ pkgsrc/finance/ledger32/patches/patch-src_format.cc Thu May 2 12:22:13 2024
@@ -0,0 +1,78 @@
+$NetBSD: patch-src_format.cc,v 1.1 2024/05/02 12:22:13 riastradh Exp $
+
+Fix ctype abuse.
+https://github.com/ledger/ledger/pull/2341
+
+--- src/format.cc.orig 2023-03-30 07:40:48.000000000 +0000
++++ src/format.cc
+@@ -109,7 +109,7 @@ namespace {
+
+ // Don't gobble up any whitespace
+ const char * base = p;
+- while (p >= base && std::isspace(*p))
++ while (p >= base && std::isspace(static_cast<unsigned char>(*p)))
+ p--;
+ }
+ return expr;
+@@ -183,7 +183,7 @@ format_t::element_t * format_t::parse_el
+ }
+
+ std::size_t num = 0;
+- while (*p && std::isdigit(*p)) {
++ while (*p && std::isdigit(static_cast<unsigned char>(*p))) {
+ num *= 10;
+ num += static_cast<std::size_t>(*p++ - '0');
+ }
+@@ -192,7 +192,7 @@ format_t::element_t * format_t::parse_el
+ if (*p == '.') {
+ ++p;
+ num = 0;
+- while (*p && std::isdigit(*p)) {
++ while (*p && std::isdigit(static_cast<unsigned char>(*p))) {
+ num *= 10;
+ num += static_cast<std::size_t>(*p++ - '0');
+ }
+@@ -201,7 +201,7 @@ format_t::element_t * format_t::parse_el
+ current->min_width = current->max_width;
+ }
+
+- if (std::isalpha(*p)) {
++ if (std::isalpha(static_cast<unsigned char>(*p))) {
+ bool found = false;
+ for (std::size_t i = 0; i < (sizeof(single_letter_mappings) /
+ sizeof(format_mapping_t)); i++) {
+@@ -210,7 +210,7 @@ format_t::element_t * format_t::parse_el
+ for (const char * ptr = single_letter_mappings[i].expr; *ptr;) {
+ if (*ptr == '$') {
+ const char * beg = ++ptr;
+- while (*ptr && std::isalpha(*ptr))
++ while (*ptr && std::isalpha(static_cast<unsigned char>(*ptr)))
+ ++ptr;
+ string::size_type klen = static_cast<string::size_type>(ptr - beg);
+ string keyword(beg, 0, klen);
+@@ -250,12 +250,13 @@ format_t::element_t * format_t::parse_el
+ throw_(format_error, _("Prior field reference, but no template"));
+
+ p++;
+- if (*p == '0' || (! std::isdigit(*p) &&
++ if (*p == '0' || (! std::isdigit(static_cast<unsigned char>(*p)) &&
+ *p != 'A' && *p != 'B' && *p != 'C' &&
+ *p != 'D' && *p != 'E' && *p != 'F'))
+ throw_(format_error, _("%$ field reference must be a digit from 1-9"));
+
+- int index = std::isdigit(*p) ? *p - '0' : (*p - 'A' + 10);
++ int index = std::isdigit(static_cast<unsigned char>(*p))
++ ? *p - '0' : (*p - 'A' + 10);
+ element_t * tmpl_elem = tmpl->elements.get();
+
+ for (int i = 1; i < index && tmpl_elem; i++) {
+@@ -630,7 +631,8 @@ string format_t::truncate(const unistrin
+ if (adjust > 0) {
+ DEBUG("format.abbrev",
+ "Reducing segment " << ++index << " by " << adjust << " chars");
+- while (std::isspace((*x)[*i - adjust - 1]) && adjust < *i) {
++ while (std::isspace(static_cast<unsigned char>(
++ (*x)[*i - adjust - 1])) && adjust < *i) {
+ DEBUG("format.abbrev",
+ "Segment ends in whitespace, adjusting down");
+ ++adjust;
Index: pkgsrc/finance/ledger32/patches/patch-src_item.cc
diff -u /dev/null pkgsrc/finance/ledger32/patches/patch-src_item.cc:1.1
--- /dev/null Thu May 2 12:22:13 2024
+++ pkgsrc/finance/ledger32/patches/patch-src_item.cc Thu May 2 12:22:13 2024
@@ -0,0 +1,17 @@
+$NetBSD: patch-src_item.cc,v 1.1 2024/05/02 12:22:13 riastradh Exp $
+
+Fix ctype abuse.
+https://github.com/ledger/ledger/pull/2341
+
+--- src/item.cc.orig 2023-03-30 07:40:48.000000000 +0000
++++ src/item.cc
+@@ -151,7 +151,8 @@ void item_t::parse_tags(const char * p,
+ if (! std::strchr(p, ':')) {
+ if (const char * b = std::strchr(p, '[')) {
+ if (*(b + 1) != '\0' &&
+- (std::isdigit(*(b + 1)) || *(b + 1) == '=')) {
++ (std::isdigit(static_cast<unsigned char>(*(b + 1))) ||
++ *(b + 1) == '=')) {
+ if (const char * e = std::strchr(b, ']')) {
+ char buf[256];
+ std::strncpy(buf, b + 1, static_cast<std::size_t>(e - b - 1));
Index: pkgsrc/finance/ledger32/patches/patch-src_lookup.cc
diff -u /dev/null pkgsrc/finance/ledger32/patches/patch-src_lookup.cc:1.1
--- /dev/null Thu May 2 12:22:13 2024
+++ pkgsrc/finance/ledger32/patches/patch-src_lookup.cc Thu May 2 12:22:13 2024
@@ -0,0 +1,22 @@
+$NetBSD: patch-src_lookup.cc,v 1.1 2024/05/02 12:22:13 riastradh Exp $
+
+Fix ctype abuse.
+https://github.com/ledger/ledger/pull/2341
+
+--- src/lookup.cc.orig 2023-03-30 07:40:48.000000000 +0000
++++ src/lookup.cc
+@@ -188,7 +188,13 @@ lookup_probable_account(const string& id
+
+ #if 0
+ #if !HAVE_BOOST_REGEX_UNICODE
+- if (pos == 0 || (pos > 0 && !std::isalnum(value_key[pos - 1])))
++ // Probably doesn't make sense with value_key as unistring,
++ // but this code is under #if 0 anyway, so if anyone is
++ // tempted to use this by changing value_key to string, let's
++ // avoid leaving a rake to step on.
++ if (pos == 0 ||
++ (pos > 0 &&
++ !std::isalnum(static_cast<unsigned char>(value_key[pos - 1]))))
+ addend++;
+ #else
+ // jww (2010-03-07): Not yet implemented
Index: pkgsrc/finance/ledger32/patches/patch-src_option.cc
diff -u /dev/null pkgsrc/finance/ledger32/patches/patch-src_option.cc:1.1
--- /dev/null Thu May 2 12:22:13 2024
+++ pkgsrc/finance/ledger32/patches/patch-src_option.cc Thu May 2 12:22:13 2024
@@ -0,0 +1,17 @@
+$NetBSD: patch-src_option.cc,v 1.1 2024/05/02 12:22:13 riastradh Exp $
+
+Fix ctype abuse.
+https://github.com/ledger/ledger/pull/2341
+
+--- src/option.cc.orig 2023-03-30 07:40:48.000000000 +0000
++++ src/option.cc
+@@ -132,7 +132,8 @@ void process_environment(const char ** e
+ if (*q == '_')
+ *r++ = '-';
+ else
+- *r++ = static_cast<char>(std::tolower(*q));
++ *r++ = static_cast<char>(std::tolower(
++ static_cast<unsigned char>(*q)));
+ *r = '\0';
+
+ if (*q == '=') {
Index: pkgsrc/finance/ledger32/patches/patch-src_pool.cc
diff -u /dev/null pkgsrc/finance/ledger32/patches/patch-src_pool.cc:1.1
--- /dev/null Thu May 2 12:22:13 2024
+++ pkgsrc/finance/ledger32/patches/patch-src_pool.cc Thu May 2 12:22:13 2024
@@ -0,0 +1,25 @@
+$NetBSD: patch-src_pool.cc,v 1.1 2024/05/02 12:22:13 riastradh Exp $
+
+Fix ctype abuse.
+https://github.com/ledger/ledger/pull/2341
+
+--- src/pool.cc.orig 2023-03-30 07:40:48.000000000 +0000
++++ src/pool.cc
+@@ -327,13 +327,15 @@ commodity_pool_t::parse_price_directive
+ datetime_t datetime;
+ string symbol;
+
+- if (! no_date && std::isdigit(time_field_ptr[0])) {
++ if (! no_date &&
++ std::isdigit(static_cast<unsigned char>(time_field_ptr[0]))) {
+ symbol_and_price = next_element(time_field_ptr);
+ if (! symbol_and_price) return none;
+
+ datetime = parse_datetime(date_field + " " + time_field_ptr);
+ }
+- else if (! no_date && std::isdigit(date_field_ptr[0])) {
++ else if (! no_date &&
++ std::isdigit(static_cast<unsigned char>(date_field_ptr[0]))) {
+ symbol_and_price = time_field_ptr;
+ datetime = datetime_t(parse_date(date_field));
+ }
Index: pkgsrc/finance/ledger32/patches/patch-src_report.cc
diff -u /dev/null pkgsrc/finance/ledger32/patches/patch-src_report.cc:1.1
--- /dev/null Thu May 2 12:22:13 2024
+++ pkgsrc/finance/ledger32/patches/patch-src_report.cc Thu May 2 12:22:13 2024
@@ -0,0 +1,20 @@
+$NetBSD: patch-src_report.cc,v 1.1 2024/05/02 12:22:13 riastradh Exp $
+
+Fix ctype abuse.
+https://github.com/ledger/ledger/pull/2341
+
+--- src/report.cc.orig 2023-03-30 07:40:48.000000000 +0000
++++ src/report.cc
+@@ -642,10 +642,10 @@ value_t report_t::fn_trim(call_scope_t&
+ const char * p = buf.get();
+ const char * e = buf.get() + temp.length() - 1;
+
+- while (p <= e && std::isspace(*p))
++ while (p <= e && std::isspace(static_cast<unsigned char>(*p)))
+ p++;
+
+- while (e > p && std::isspace(*e))
++ while (e > p && std::isspace(static_cast<unsigned char>(*e)))
+ e--;
+
+ if (p > e) {
Index: pkgsrc/finance/ledger32/patches/patch-src_strptime.cc
diff -u /dev/null pkgsrc/finance/ledger32/patches/patch-src_strptime.cc:1.1
--- /dev/null Thu May 2 12:22:13 2024
+++ pkgsrc/finance/ledger32/patches/patch-src_strptime.cc Thu May 2 12:22:13 2024
@@ -0,0 +1,27 @@
+$NetBSD: patch-src_strptime.cc,v 1.1 2024/05/02 12:22:13 riastradh Exp $
+
+Fix ctype abuse.
+https://github.com/ledger/ledger/pull/2341
+
+--- src/strptime.cc.orig 2020-05-18 05:30:10.000000000 +0000
++++ src/strptime.cc
+@@ -62,7 +62,9 @@ static const char* kMonthAbbr[] = {
+
+ static const char* _parse_num(const char* s, int low, int high, int* value) {
+ const char* p = s;
+- for (*value = 0; *p != NULL && isdigit(*p); ++p) {
++ for (*value = 0;
++ *p != NULL && isdigit(static_cast<unsigned char>(*p));
++ ++p) {
+ *value = (*value) * 10 + static_cast<int>(*p) - static_cast<int>('0');
+ }
+
+@@ -177,7 +179,7 @@ static char* _strptime(const char *s, co
+ // arbitray whitespace.
+ case 't':
+ case 'n':
+- while (isspace(*s)) ++s;
++ while (isspace(static_cast<unsigned char>(*s))) ++s;
+ break;
+
+ // '%'.
Index: pkgsrc/finance/ledger32/patches/patch-src_textual.cc
diff -u /dev/null pkgsrc/finance/ledger32/patches/patch-src_textual.cc:1.1
--- /dev/null Thu May 2 12:22:13 2024
+++ pkgsrc/finance/ledger32/patches/patch-src_textual.cc Thu May 2 12:22:13 2024
@@ -0,0 +1,110 @@
+$NetBSD: patch-src_textual.cc,v 1.1 2024/05/02 12:22:13 riastradh Exp $
+
+Fix ctype abuse.
+https://github.com/ledger/ledger/pull/2341
+
+--- src/textual.cc.orig 2020-05-18 05:30:10.000000000 +0000
++++ src/textual.cc
+@@ -329,7 +329,8 @@ std::streamsize instance_t::read_line(ch
+ }
+
+ --len;
+- while (len > 0 && std::isspace(line[len - 1])) // strip trailing whitespace
++ // strip trailing whitespace
++ while (len > 0 && std::isspace(static_cast<unsigned char>(line[len - 1])))
+ line[--len] = '\0';
+
+ return len;
+@@ -344,7 +345,7 @@ void instance_t::read_next_directive(boo
+ if (len == 0 || line == NULL)
+ return;
+
+- if (! std::isspace(line[0]))
++ if (! std::isspace(static_cast<unsigned char>(line[0])))
+ error_flag = false;
+
+ switch (line[0]) {
+@@ -604,12 +605,16 @@ void instance_t::automated_xact_directiv
+ item->pos->end_line++;
+ }
+ else if ((remlen > 7 && *p == 'a' &&
+- std::strncmp(p, "assert", 6) == 0 && std::isspace(p[6])) ||
++ std::strncmp(p, "assert", 6) == 0 &&
++ std::isspace(static_cast<unsigned char>(p[6]))) ||
+ (remlen > 6 && *p == 'c' &&
+- std::strncmp(p, "check", 5) == 0 && std::isspace(p[5])) ||
++ std::strncmp(p, "check", 5) == 0 &&
++ std::isspace(static_cast<unsigned char>(p[5]))) ||
+ (remlen > 5 && *p == 'e' &&
+- ((std::strncmp(p, "expr", 4) == 0 && std::isspace(p[4])) ||
+- (std::strncmp(p, "eval", 4) == 0 && std::isspace(p[4]))))) {
++ ((std::strncmp(p, "expr", 4) == 0 &&
++ std::isspace(static_cast<unsigned char>(p[4]))) ||
++ (std::strncmp(p, "eval", 4) == 0 &&
++ std::isspace(static_cast<unsigned char>(p[4])))))) {
+ const char c = *p;
+ p = skip_ws(&p[*p == 'a' ? 6 : (*p == 'c' ? 5 : 4)]);
+ if (! ae->check_exprs)
+@@ -997,7 +1002,7 @@ void instance_t::alias_directive(char *
+ {
+ if (char * e = std::strchr(line, '=')) {
+ char * z = e - 1;
+- while (std::isspace(*z))
++ while (std::isspace(static_cast<unsigned char>(*z)))
+ *z-- = '\0';
+ *e++ = '\0';
+ e = skip_ws(e);
+@@ -1211,7 +1216,7 @@ void instance_t::python_directive(char *
+ if (read_line(line) > 0) {
+ if (! indent) {
+ const char * p = line;
+- while (*p && std::isspace(*p)) {
++ while (*p && std::isspace(static_cast<unsigned char>(*p))) {
+ ++indent;
+ ++p;
+ }
+@@ -1219,7 +1224,7 @@ void instance_t::python_directive(char *
+
+ const char * p = line;
+ for (std::size_t i = 0; i < indent; i++) {
+- if (std::isspace(*p))
++ if (std::isspace(static_cast<unsigned char>(*p)))
+ ++p;
+ else
+ break;
+@@ -1450,7 +1455,7 @@ post_t * instance_t::parse_post(char *
+ char * next = next_element(p, true);
+ char * e = p + std::strlen(p);
+
+- while (e > p && std::isspace(*(e - 1)))
++ while (e > p && std::isspace(static_cast<unsigned char>(*(e - 1))))
+ e--;
+
+ if ((*p == '[' && *(e - 1) == ']') || (*p == '(' && *(e - 1) == ')')) {
+@@ -1850,7 +1855,7 @@ xact_t * instance_t::parse_xact(char *
+ }
+ else if (*p == ';' && (tabs > 0 || spaces > 1)) {
+ char *q = p - 1;
+- while (q > next && std::isspace(*q))
++ while (q > next && std::isspace(static_cast<unsigned char>(*q)))
+ --q;
+ if (q >= next)
+ *(q + 1) = '\0';
+@@ -1903,11 +1908,14 @@ xact_t * instance_t::parse_xact(char *
+ item->pos->end_line++;
+ }
+ else if ((remlen > 7 && *p == 'a' &&
+- std::strncmp(p, "assert", 6) == 0 && std::isspace(p[6])) ||
++ std::strncmp(p, "assert", 6) == 0 &&
++ std::isspace(static_cast<unsigned char>(p[6]))) ||
+ (remlen > 6 && *p == 'c' &&
+- std::strncmp(p, "check", 5) == 0 && std::isspace(p[5])) ||
++ std::strncmp(p, "check", 5) == 0 &&
++ std::isspace(static_cast<unsigned char>(p[5]))) ||
+ (remlen > 5 && *p == 'e' &&
+- std::strncmp(p, "expr", 4) == 0 && std::isspace(p[4]))) {
++ std::strncmp(p, "expr", 4) == 0 &&
++ std::isspace(static_cast<unsigned char>(p[4])))) {
+ const char c = *p;
+ p = skip_ws(&p[*p == 'a' ? 6 : (*p == 'c' ? 5 : 4)]);
+ expr_t expr(p);
Index: pkgsrc/finance/ledger32/patches/patch-src_times.cc
diff -u /dev/null pkgsrc/finance/ledger32/patches/patch-src_times.cc:1.1
--- /dev/null Thu May 2 12:22:13 2024
+++ pkgsrc/finance/ledger32/patches/patch-src_times.cc Thu May 2 12:22:13 2024
@@ -0,0 +1,57 @@
+$NetBSD: patch-src_times.cc,v 1.1 2024/05/02 12:22:13 riastradh Exp $
+
+Fix ctype abuse.
+https://github.com/ledger/ledger/pull/2341
+
+--- src/times.cc.orig 2023-03-30 07:40:48.000000000 +0000
++++ src/times.cc
+@@ -1467,7 +1467,7 @@ date_parser_t::lexer_t::token_t date_par
+ return tok;
+ }
+
+- while (begin != end && std::isspace(*begin))
++ while (begin != end && std::isspace(static_cast<unsigned char>(*begin)))
+ begin++;
+
+ if (begin == end)
+@@ -1486,9 +1486,11 @@ date_parser_t::lexer_t::token_t date_par
+ // date using the typical date formats. This allows not only dates like
+ // "2009/08/01", but also dates that fit the user's --input-date-format,
+ // assuming their format fits in one argument and begins with a digit.
+- if (std::isdigit(*begin)) {
++ if (std::isdigit(static_cast<unsigned char>(*begin))) {
+ string::const_iterator i = begin;
+- for (i = begin; i != end && ! std::isspace(*i); i++) {}
++ for (i = begin;
++ i != end && ! std::isspace(static_cast<unsigned char>(*i));
++ i++) {}
+ assert(i != begin);
+
+ string possible_date(start, i);
+@@ -1513,18 +1515,20 @@ date_parser_t::lexer_t::token_t date_par
+ start = begin;
+
+ string term;
+- bool alnum = std::isalnum(*begin);
+- for (; (begin != end && ! std::isspace(*begin) &&
+- ((alnum && static_cast<bool>(std::isalnum(*begin))) ||
+- (! alnum && ! static_cast<bool>(std::isalnum(*begin))))); begin++)
++ bool alnum = std::isalnum(static_cast<unsigned char>(*begin));
++ for (; (begin != end && ! std::isspace(static_cast<unsigned char>(*begin)) &&
++ ((alnum && static_cast<bool>(std::isalnum(
++ static_cast<unsigned char>(*begin)))) ||
++ (! alnum && ! static_cast<bool>(std::isalnum(
++ static_cast<unsigned char>(*begin)))))); begin++)
+ term.push_back(*begin);
+
+ if (! term.empty()) {
+- if (std::isdigit(term[0])) {
++ if (std::isdigit(static_cast<unsigned char>(term[0]))) {
+ return token_t(token_t::TOK_INT,
+ token_t::content_t(lexical_cast<unsigned short>(term)));
+ }
+- else if (std::isalpha(term[0])) {
++ else if (std::isalpha(static_cast<unsigned char>(term[0]))) {
+ to_lower(term);
+
+ if (optional<date_time::months_of_year> month =
Index: pkgsrc/finance/ledger32/patches/patch-src_xact.cc
diff -u /dev/null pkgsrc/finance/ledger32/patches/patch-src_xact.cc:1.1
--- /dev/null Thu May 2 12:22:13 2024
+++ pkgsrc/finance/ledger32/patches/patch-src_xact.cc Thu May 2 12:22:13 2024
@@ -0,0 +1,20 @@
+$NetBSD: patch-src_xact.cc,v 1.1 2024/05/02 12:22:13 riastradh Exp $
+
+Fix ctype abuse.
+https://github.com/ledger/ledger/pull/2341
+
+--- src/xact.cc.orig 2023-03-30 07:40:48.000000000 +0000
++++ src/xact.cc
+@@ -116,8 +116,10 @@ value_t xact_base_t::magnitude() const
+ namespace {
+ inline bool account_ends_with_special_char(const string& name) {
+ string::size_type len(name.length());
+- return (std::isdigit(name[len - 1]) || name[len - 1] == ')' ||
+- name[len - 1] == '}' || name[len - 1] == ']');
++ return (std::isdigit(static_cast<unsigned char>(name[len - 1])) ||
++ name[len - 1] == ')' ||
++ name[len - 1] == '}' ||
++ name[len - 1] == ']');
+ }
+
+ struct add_balancing_post
Home |
Main Index |
Thread Index |
Old Index