From d6e79034ed220cf37ec25cd23aa2eb51fe65ce92 Mon Sep 17 00:00:00 2001 From: misomosi Date: Mon, 3 Aug 2026 13:56:57 -0400 Subject: [PATCH] Add force and append options --- MSR605X/mxser.py | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/MSR605X/mxser.py b/MSR605X/mxser.py index d037f42..d0cba95 100644 --- a/MSR605X/mxser.py +++ b/MSR605X/mxser.py @@ -1,6 +1,7 @@ #!/usr/bin/env python3 import argparse import datetime +import os import getpass import sys @@ -10,6 +11,8 @@ def main(argv): parser.add_argument('-e', '--expires', default='9912', help='Date of expiration on card (Format: YYMM)') parser.add_argument('-s', '--service', default='121', help='Service code of card (TODO: help for service code)') parser.add_argument('-p', '--pan', default='', help='Primary account number of card (CAUTION: COMMAND LINE SAVED IN SHELL HISTORIES)') + parser.add_argument('-f', '--force', action=argparse.BooleanOptionalAction, default=False, help='Force file write even if exists') + parser.add_argument('-a', '--append', action=argparse.BooleanOptionalAction, default=False, help='Append to the file instead of overwriting it') parser.add_argument('FILE') args = parser.parse_args(args=argv[1:]) @@ -56,6 +59,11 @@ def main(argv): print(f'Primary account number is not numeric or is longer than 19 characters!') exitcode |= 16 + FILE = args.FILE + if not args.force and not args.append and os.path.exists(args.FILE): + print(f'File ({FILE}) exists (use -a to append or -f to overwrite)') + exitcode |= 32 + if exitcode != 0: return exitcode @@ -64,8 +72,7 @@ def main(argv): T1 = f'%B{PAN}^{NAME}^{EXP}{SVC}^^^?' T2 = f';{PAN}={EXP}{SVC}===?' T3 = '+?' - FILE = args.FILE - with open(FILE, 'w') as fp: + with open(FILE, 'a' if args.append else 'w') as fp: datestr = TODAY.strftime('%Y.%m.%d %H:%M:%S') fp.write('\n'.join([datestr, T1, T2, T3, '', ''])) print(f'Magstripe track file "{FILE}" written!') -- 2.49.1