From 9329e432a1c19683e114f37a779fd70abc350240 Mon Sep 17 00:00:00 2001 From: giraffedata Date: Tue, 14 Nov 2023 00:34:18 +0000 Subject: No longer accept old-style options git-svn-id: http://svn.code.sf.net/p/netpbm/code/trunk@4783 9d0c8265-081b-0410-96cb-a4ca84ce46f8 --- doc/HISTORY | 5 +++ editor/pnmpad.c | 129 ++++++++++++++++++-------------------------------------- 2 files changed, 45 insertions(+), 89 deletions(-) diff --git a/doc/HISTORY b/doc/HISTORY index 5e0b9aad..72f0762f 100644 --- a/doc/HISTORY +++ b/doc/HISTORY @@ -30,6 +30,8 @@ not yet BJH Release 11.05.00 ppmdither: fix buffer overrun with insanely large dithering matrix. + pnmpad: no longer accept old-style options (e.g. -t50). + libnetpbm, programs that use color maps: fix buffer overrun with insanely deep images. @@ -5404,6 +5406,9 @@ not yet BJH Release 11.05.00 pnmpad: Add -width, -height, -halign, -valign options. Thanks M. van Beilen . + pnmpad: Issue warning about old-style options (e.g. "-t50" + instead of "-t 50"). + ppmhist: remove 100,000 color limit. pnmnlfilt: works with multi-image streams. Thanks diff --git a/editor/pnmpad.c b/editor/pnmpad.c index eaa4a58c..7268a67c 100644 --- a/editor/pnmpad.c +++ b/editor/pnmpad.c @@ -2,6 +2,7 @@ ** AJCD 4/9/90 */ +#include #include #include #include @@ -45,6 +46,43 @@ struct CmdlineInfo { +static void +validateNoOldOptionSyntax( int const argc, const char ** const argv) { +/*---------------------------------------------------------------------------- + Reject obsolete command line syntax, e.g. "pnmpad -l50". + + Starting in Netpbm 9.25 (February 2002), this resulted in a warning message + and was no longer documented. Starting in Netpbm 11.05 (December 2023), + it is no longer accepted. + + It was too hard to maintain. +-----------------------------------------------------------------------------*/ + bool isOld; + + isOld = false; /* initial assumption */ + + if (argc > 1 && argv[1][0] == '-') { + if (argv[1][1] == 't' || argv[1][1] == 'b' + || argv[1][1] == 'l' || argv[1][1] == 'r') { + if (argv[1][2] >= '0' && argv[1][2] <= '9') + isOld = true; + } + } + if (argc > 2 && argv[2][0] == '-') { + if (argv[2][1] == 't' || argv[2][1] == 'b' + || argv[2][1] == 'l' || argv[2][1] == 'r') { + if (argv[2][2] >= '0' && argv[2][2] <= '9') + isOld = true; + } + } + if (isOld) + pm_error("Old-style Unix options (e.g. \"-l50\") " + "not accepted by current 'pnmpad'. " + "Use e.g. \"-l 50\" instead"); +} + + + static void parseCommandLine(int argc, const char ** argv, struct CmdlineInfo * const cmdlineP) { @@ -186,74 +224,6 @@ parseCommandLine(int argc, const char ** argv, -static void -parseCommandLineOld(int argc, const char ** argv, - struct CmdlineInfo * const cmdlineP) { - - /* This syntax was abandoned in February 2002. */ - pm_message("Warning: old style options are deprecated!"); - - cmdlineP->xsize = cmdlineP->ysize = 0; - cmdlineP->left = cmdlineP->right = cmdlineP->top = cmdlineP->bottom = 0; - cmdlineP->xalign = cmdlineP->yalign = 0.5; - cmdlineP->white = cmdlineP->verbose = FALSE; - - while (argc >= 2 && argv[1][0] == '-') { - if (strcmp(argv[1]+1,"black") == 0) cmdlineP->white = FALSE; - else if (strcmp(argv[1]+1,"white") == 0) cmdlineP->white = TRUE; - else switch (argv[1][1]) { - case 'l': - if (atoi(argv[1]+2) < 0) - pm_error("left border too small"); - else if (atoi(argv[1]+2) > MAX_WIDTHHEIGHT) - pm_error("left border too large"); - else - cmdlineP->left = atoi(argv[1]+2); - break; - case 'r': - if (atoi(argv[1]+2) < 0) - pm_error("right border too small"); - else if (atoi(argv[1]+2) > MAX_WIDTHHEIGHT) - pm_error("right border too large"); - else - cmdlineP->right = atoi(argv[1]+2); - break; - case 'b': - if (atoi(argv[1]+2) < 0) - pm_error("bottom border too small"); - else if (atoi(argv[1]+2) > MAX_WIDTHHEIGHT) - pm_error("bottom border too large"); - else - cmdlineP->bottom = atoi(argv[1]+2); - break; - case 't': - if (atoi(argv[1]+2) < 0) - pm_error("top border too small"); - else if (atoi(argv[1]+2) > MAX_WIDTHHEIGHT) - pm_error("top border too large"); - else - cmdlineP->top = atoi(argv[1]+2); - break; - default: - pm_usage("[-white|-black] [-l#] [-r#] [-t#] [-b#] [pnmfile]"); - } - argc--, argv++; - } - - cmdlineP->xsizeSpec = (cmdlineP->xsize > 0); - cmdlineP->ysizeSpec = (cmdlineP->ysize > 0); - - if (argc > 2) - pm_usage("[-white|-black] [-l#] [-r#] [-t#] [-b#] [pnmfile]"); - - if (argc == 2) - cmdlineP->inputFileNm = argv[1]; - else - cmdlineP->inputFileNm = "-"; -} - - - static void validateHorizontalSize(struct CmdlineInfo const cmdline, unsigned int const cols) { @@ -823,32 +793,13 @@ main(int argc, const char ** argv) { xelval maxval; int rows, cols, newcols, format; - bool depr_cmd; /* use deprecated commandline interface */ unsigned int lpad, rpad, tpad, bpad; pm_proginit(&argc, argv); - /* detect deprecated options */ - depr_cmd = FALSE; /* initial assumption */ - if (argc > 1 && argv[1][0] == '-') { - if (argv[1][1] == 't' || argv[1][1] == 'b' - || argv[1][1] == 'l' || argv[1][1] == 'r') { - if (argv[1][2] >= '0' && argv[1][2] <= '9') - depr_cmd = TRUE; - } - } - if (argc > 2 && argv[2][0] == '-') { - if (argv[2][1] == 't' || argv[2][1] == 'b' - || argv[2][1] == 'l' || argv[2][1] == 'r') { - if (argv[2][2] >= '0' && argv[2][2] <= '9') - depr_cmd = TRUE; - } - } + validateNoOldOptionSyntax(argc, argv); - if (depr_cmd) - parseCommandLineOld(argc, argv, &cmdline); - else - parseCommandLine(argc, argv, &cmdline); + parseCommandLine(argc, argv, &cmdline); ifP = pm_openr(cmdline.inputFileNm); -- cgit 1.4.1