From f58b1e27a2c7b3455f4489146c4d30f7eb0caa0d Mon Sep 17 00:00:00 2001 From: The MMGen Project Date: Sat, 3 Dec 2022 17:40:45 +0000 Subject: [PATCH] twexport prune: handle overlong filenames --- mmgen/data/version | 2 +- mmgen/tw/json.py | 25 ++++++++++++++++++------- 2 files changed, 19 insertions(+), 8 deletions(-) diff --git a/mmgen/data/version b/mmgen/data/version index c07f3cff..8bb81e79 100644 --- a/mmgen/data/version +++ b/mmgen/data/version @@ -1 +1 @@ -13.3.dev24 +13.3.dev25 diff --git a/mmgen/tw/json.py b/mmgen/tw/json.py index f73db1a2..5f88e67c 100755 --- a/mmgen/tw/json.py +++ b/mmgen/tw/json.py @@ -12,9 +12,10 @@ tw.json: export and import tracking wallet to JSON format """ -import json +import os,json from collections import namedtuple +from ..opts import opt from ..util import msg,ymsg,fmt,suf,die,make_timestamp,make_chksum_8,compare_or_die from ..base_obj import AsyncInit from ..objmethods import MMGenObject @@ -41,14 +42,24 @@ class TwJSON: @property def dump_fn(self): + + def get_fn(prune_id): + return '{a}{b}-{c}-{d}.json'.format( + a = self.fn_pfx, + b = f'-pruned[{prune_id}]' if prune_id else '', + c = self.coin, + d = self.network ) + if self.pruned: from ..addrlist import AddrIdxList - pruned_id = AddrIdxList(idx_list=self.pruned).id_str - return '{a}{b}-{c}-{d}.json'.format( - a = self.fn_pfx, - b = f'-pruned[{pruned_id}]' if self.pruned else '', - c = self.coin, - d = self.network ) + prune_id = AddrIdxList(idx_list=self.pruned).id_str + fn = get_fn(prune_id) + if len(fn) > os.statvfs(opt.outdir or os.curdir).f_namemax: + fn = get_fn(f'idhash={make_chksum_8(prune_id.encode()).lower()}') + else: + fn = get_fn(None) + + return fn def json_dump(self,data,pretty=False): return json.dumps(