Bug 6200

Summary: short options sometimes do not work.
Product: [Retired] Red Hat Linux Reporter: jay
Component: poptAssignee: Jeff Johnson <jbj>
Status: CLOSED CURRENTRELEASE QA Contact:
Severity: high Docs Contact:
Priority: medium    
Version: 6.1   
Target Milestone: ---   
Target Release: ---   
Hardware: All   
OS: Linux   
Whiteboard:
Fixed In Version: Doc Type: Bug Fix
Doc Text:
Story Points: ---
Clone Of: Environment:
Last Closed: 1999-10-25 20:19:06 UTC Type: ---
Regression: --- Mount Type: ---
Documentation: --- CRM:
Verified Versions: Category: ---
oVirt Team: --- RHEL 7.3 requirements from Atomic Host:
Cloudforms Team: --- Target Upstream Version:
Embargoed:

Description jay 1999-10-21 21:41:27 UTC
popt does not parse short and long argument mixes properly.
these bugs do not manifest in rpm, since most people use a
single short opt, followed by lots of long opts.  this is
the case on intel linux and sparc solaris.

while using the popt library for a real world project (tm),
i discovered that it could not parse a mix of short options
and long options correctly.  the short options would fail
for some reason.

i have written a set of 8 addition unit tests for the popt
library.  they are in the form of another test program and
some param/answer files.  i have modified testit.sh to use
these tests.

three of my tests fail with popt 1.2, 1.3, and 1.4.  as i
read the docs and expect common sense to parse, the results
do not appear to be what i'd like them to be.

for test 33, my usage could be wrong, so that test might
have to be removed from my submission.  tests 29 and 36
definately output the incorrect results.

enclosed are my patches for the test programs the
demonstrate the bugs.  i do not have patches for the popt
library.

Comment 1 jay 1999-10-21 21:45:59 UTC
i hope word wrap doesn't kill this.....


diff -rN popt-1.4/Makefile.am popt.NEW/Makefile.am
14c14
< noinst_PROGRAMS = test1
---
> noinst_PROGRAMS = test1 test2
16a17,18
> test2_SOURCES = test2.c
> test2_LDADD = $(lib_LTLIBRARIES)
diff -rN popt-1.4/Makefile.in popt.NEW/Makefile.in
1c1
< # Makefile.in generated automatically by automake 1.4 from
Makefile.am
---
> # Makefile.in generated automatically by automake 1.4a from
Makefile.am
51c51
< INSTALL_PROGRAM = @INSTALL_PROGRAM@ $(AM_INSTALL_PROGRAM_FLAGS)
---
> INSTALL_PROGRAM = @INSTALL_PROGRAM@
53a54
> INSTALL_STRIP_FLAG =
91c92
< noinst_PROGRAMS = test1
---
> noinst_PROGRAMS = test1 test2
93a95,96
> test2_SOURCES = test2.c
> test2_LDADD = $(lib_LTLIBRARIES)
120a124,126
> test2_OBJECTS =  test2.o
> test2_DEPENDENCIES =  libpopt.la
> test2_LDFLAGS =
142,144c148,150
< .deps/popthelp.P .deps/poptparse.P .deps/test1.P
< SOURCES = $(libpopt_la_SOURCES) $(test1_SOURCES)
< OBJECTS = $(libpopt_la_OBJECTS) $(test1_OBJECTS)
---
> .deps/popthelp.P .deps/poptparse.P .deps/test1.P .deps/test2.P
> SOURCES = $(libpopt_la_SOURCES) $(test1_SOURCES) $(test2_SOURCES)
> OBJECTS = $(libpopt_la_OBJECTS) $(test1_OBJECTS) $(test2_OBJECTS)
264a271,274
> test2: $(test2_OBJECTS) $(test2_DEPENDENCIES)
> 	@rm -f test2
> 	$(LINK) $(test2_LDFLAGS) $(test2_OBJECTS) $(test2_LDADD) $(LIBS)
>
455c465
< 	    cp -pr $$/$$file $(distdir)/$$file; \
---
> 	    cp -pr $$d/$$file $(distdir)/$$file; \
530c540
< 	$(MAKE) $(AM_MAKEFLAGS) AM_INSTALL_PROGRAM_FLAGS=-s install
---
> 	$(MAKE) $(AM_MAKEFLAGS) INSTALL_STRIP_FLAG=-s install
diff -rN popt-1.4/po/Makefile.in popt.NEW/po/Makefile.in
5c5
< LOCALEDIR=/usr/share/locale
---
> LOCALEDIR=/usr/local/share/locale
diff -rN popt-1.4/po/popt.pot popt.NEW/po/popt.pot
9c9
< "POT-Creation-Date: 1999-09-04 10:55-0400\n"
---
> "POT-Creation-Date: 1999-09-10 00:50-0400\n"
diff -rN popt-1.4/test-data/29.answer popt.NEW/test-data/29.answer
0a1,5
> dbusername txadmin	dbpassword txadmin666
> txhost quack.invengen.com	txsslport 443	txstoreid 400001
pathofkeyfile quack_flat_O.kf
> username dauser	password passwd	firstname first	lastname last
> addr1 addr1	addr2 addr2	city hoboken	state NJ	postal 07030
> country US	email null	dayphone 666.666.9999	fax
444.444.4444
diff -rN popt-1.4/test-data/29.param popt.NEW/test-data/29.param
0a1,7
> --keyfile=quack_flat_O.kf \
> --storeid=400001 --txhost=quack.invengen.com \
> --txsslport=443 --dbpassword=txadmin666 --dbusername=txadmin \
> -f first -l last --username=dauser --password=passwd \
> -1 addr1 -2 addr2 -c hoboken -s NJ -z 07030  -C US \
> -e null -d 666.666.9999 -F 444.444.4444
>
diff -rN popt-1.4/test-data/30.answer popt.NEW/test-data/30.answer
0a1,5
> dbusername txadmin	dbpassword txadmin666
> txhost quack.invengen.com	txsslport 443	txstoreid 400001
pathofkeyfile quack_flat_O.kf
> username someuser	password passwd	firstname first	lastname last
> addr1 addr1	addr2 addr2	city city	state NJ	postal 07999
> country US	email null	dayphone 666.666.9999	fax
444.444.4444
diff -rN popt-1.4/test-data/30.param popt.NEW/test-data/30.param
0a1,9
> --keyfile=quack_flat_O.kf \
> --storeid=400001 --txhost=quack.invengen.com \
> --txsslport=443 --dbpassword=txadmin666 --dbusername=txadmin \
> --first=first --last=last \
> --addr1=addr1 --addr2=addr2 --city=city --state=NJ --zip=07999 \
> --dayphone=666.666.9999 --fax=444.444.4444 --country=US \
> --email=null \
> --password=passwd \
> --username=someuser
diff -rN popt-1.4/test-data/31.answer popt.NEW/test-data/31.answer
0a1,5
> dbusername (null)	dbpassword (null)
> txhost (null)	txsslport 443	txstoreid 0	pathofkeyfile (null)
> username (null)	password (null)	firstname first	lastname last
> addr1 addr1	addr2 addr2	city hoboken	state NJ	postal 07030
> country US	email null	dayphone 666.666.9999	fax
444.444.4444
diff -rN popt-1.4/test-data/31.param popt.NEW/test-data/31.param
0a1,4
> -f first -l last \
> -1 addr1 -2 addr2 -c hoboken -s NJ -z 07030  -C US \
> -e null -d 666.666.9999 -F 444.444.4444
>
diff -rN popt-1.4/test-data/32.answer popt.NEW/test-data/32.answer
0a1,5
> dbusername (null)	dbpassword (null)
> txhost (null)	txsslport 443	txstoreid 0	pathofkeyfile (null)
> username (null)	password (null)	firstname (null)	lastname (null)
> addr1 (null)	addr2 (null)	city (null)	state (null)	postal 2222
> country (null)	email (null)	dayphone (null)	fax (null)
diff -rN popt-1.4/test-data/32.param popt.NEW/test-data/32.param
0a1
> --postal=1111 --zip=2222
diff -rN popt-1.4/test-data/33.answer popt.NEW/test-data/33.answer
0a1,5
> dbusername (null)	dbpassword (null)
> txhost (null)	txsslport 443	txstoreid 0	pathofkeyfile (null)
> username (null)	password (null)	firstname (null)	lastname (null)
> addr1 (null)	addr2 (null)	city (null)	state (null)	postal 2222
> country (null)	email (null)	dayphone (null)	fax (null)
diff -rN popt-1.4/test-data/33.param popt.NEW/test-data/33.param
0a1
> -P=1111 -z=2222
diff -rN popt-1.4/test-data/34.answer popt.NEW/test-data/34.answer
0a1,5
> dbusername (null)	dbpassword (null)
> txhost (null)	txsslport 443	txstoreid 0	pathofkeyfile (null)
> username (null)	password (null)	firstname (null)	lastname (null)
> addr1 (null)	addr2 (null)	city (null)	state (null)	postal 2222
> country (null)	email (null)	dayphone (null)	fax (null)
diff -rN popt-1.4/test-data/34.param popt.NEW/test-data/34.param
0a1
> -P 1111 -z 2222
diff -rN popt-1.4/test-data/35.answer popt.NEW/test-data/35.answer
0a1,5
> dbusername (null)	dbpassword (null)
> txhost (null)	txsslport 443	txstoreid 0	pathofkeyfile (null)
> username (null)	password (null)	firstname (null)	lastname (null)
> addr1 (null)	addr2 (null)	city (null)	state (null)	postal 8888
> country (null)	email (null)	dayphone (null)	fax (null)
diff -rN popt-1.4/test-data/35.param popt.NEW/test-data/35.param
0a1,2
> -P 1111 --postal=2222 -z 3333 --zip=4444 \
> -P 5555 -z 6666 --postal=7777 --zip=8888
diff -rN popt-1.4/test-data/36.answer popt.NEW/test-data/36.answer
0a1,5
> dbusername (null)	dbpassword (null)
> txhost (null)	txsslport 443	txstoreid 0	pathofkeyfile (null)
> username (null)	password (null)	firstname (null)	lastname (null)
> addr1 (null)	addr2 (null)	city (null)	state (null)	postal 8888
> country (null)	email (null)	dayphone (null)	fax (null)
diff -rN popt-1.4/test-data/36.param popt.NEW/test-data/36.param
0a1,2
> --postal=2222 -z 3333 --zip=4444 \
> -P 5555 -z 6666
diff -rN popt-1.4/test2.c popt.NEW/test2.c
0a1,145
> /*
>     Popt Library Test Program Number Too
>
>     --> "a real world test of popt bugs" <--
>
>     Copyright (C) 1999 US Interactive, Inc.
>
>     This program can be used under the GPL or LGPL at your
>     whim as long as this Copyright remains attached.
> */
>
> #include <stdio.h>
> #include <string.h>
> #include <popt.h>
>
> #define TEST2
>
> char *PathnameOfKeyFile		= NULL;
> char *PathnameOfOfferFile	= NULL;
>
> char *txHost			= NULL;
> int   txSslPort			= 443;
> int   txStoreId			= 0;
>
> char *contentProtocol		= NULL;
> char *contentHost		= NULL;
> int   contentPort		= 80;
> char *contentPath		= NULL;
>
> char *dbPassword		= NULL;
> char *dbUserName		= NULL;
>
> char *rcfile = "createuser-defaults";
> char *username=NULL;
>
> char *password			= NULL;
> char *firstname			= NULL;
> char *lastname			= NULL;
> char *addr1			= NULL;
> char *addr2			= NULL;
> char *city			= NULL;
> char *state			= NULL;
> char *postal			= NULL;
> char *country			= NULL;
>
> char *email			= NULL;
>
> char *dayphone			= NULL;
> char *fax			= NULL;
>
>
> int
> main(int argc, char**argv ) {
>
>     poptContext optCon;   /* context for parsing command-line
options */
>     struct poptOption userOptionsTable[] = {
>         { "first", 'f', POPT_ARG_STRING, &firstname, 0,
>             "user's first name", "first" },
>         { "last", 'l', POPT_ARG_STRING, &lastname, 0,
>             "user's last name", "last" },
>         { "username", 'u', POPT_ARG_STRING, &username, 0,
>             "system user name", "user" },
>         { "password", 'p', POPT_ARG_STRING, &password, 0,
>             "system password name", "password" },
>         { "addr1", '1', POPT_ARG_STRING, &addr1, 0,
>             "line 1 of address", "addr1" },
>         { "addr2", '2', POPT_ARG_STRING, &addr2, 0,
>             "line 2 of address", "addr2" },
>         { "city", 'c', POPT_ARG_STRING, &city, 0,
>             "city", "city" },
>         { "state", 's', POPT_ARG_STRING, &state, 0,
>             "state or province", "state" },
>         { "postal", 'P', POPT_ARG_STRING, &postal, 0,
>             "postal or zip code", "postal" },
>         { "zip", 'z', POPT_ARG_STRING, &postal, 0,
>             "postal or zip code", "postal" },
>         { "country", 'C', POPT_ARG_STRING, &country, 0,
>             "two letter ISO country code", "country" },
>         { "email", 'e', POPT_ARG_STRING, &email, 0,
>             "user's email address", "email" },
>         { "dayphone", 'd', POPT_ARG_STRING, &dayphone, 0,
>             "day time phone number", "dayphone" },
>         { "fax", 'F', POPT_ARG_STRING, &fax, 0,
>             "fax number", "fax" },
>         { NULL, 0, 0, NULL, 0, NULL, NULL }
>     };
>     struct poptOption transactOptionsTable[] = {
>         { "keyfile", '\0', POPT_ARG_STRING, &PathnameOfKeyFile, 0,
>             "transact offer key file (flat_O.kf)", "key-file" },
>         { "offerfile", '\0', POPT_ARG_STRING, &PathnameOfOfferFile,
0,
>             "offer template file (osl.ofr)", "offer-file" },
>         { "storeid", '\0', POPT_ARG_INT, &txStoreId, 0,
>             "store id", "store-id" },
>         { "rcfile", '\0', POPT_ARG_STRING, &rcfile, 0,
>             "default command line options (in popt format)",
"rcfile" },
>         { "txhost", '\0', POPT_ARG_STRING, &txHost, 0,
>             "transact host", "transact-host" },
>         { "txsslport", '\0', POPT_ARG_INT, &txSslPort, 0,
>             "transact server ssl port ", "transact ssl port" },
>         { "cnhost", '\0', POPT_ARG_STRING, &contentHost, 0,
>             "content host", "content-host" },
>         { "cnpath", '\0', POPT_ARG_STRING, &contentPath, 0,
>             "content url path", "content-path" },
>         { NULL, 0, 0, NULL, 0, NULL, NULL }
>     };
>
>     struct poptOption databaseOptionsTable[] = {
>         { "dbpassword", '\0', POPT_ARG_STRING, &dbPassword, 0,
>             "Database password", "DB password" },
>         { "dbusername", '\0', POPT_ARG_STRING, &dbUserName, 0,
>             "Database user name", "DB UserName" },
>         { NULL, 0, 0, NULL, 0, NULL, NULL }
>     };
>
>     struct poptOption optionsTable[] = {
> 	{ NULL, '\0', POPT_ARG_INCLUDE_TABLE,  transactOptionsTable, 0,
>             "Transact Options (not all will apply)", NULL },
> 	{ NULL, '\0', POPT_ARG_INCLUDE_TABLE,  databaseOptionsTable, 0,
>             "Transact Database Names", NULL },
> 	{ NULL, '\0', POPT_ARG_INCLUDE_TABLE,  userOptionsTable, 0,
>             "User Fields", NULL },
>         POPT_AUTOHELP
>         { NULL, 0, 0, NULL, 0, NULL, NULL }
>     };
>
>     optCon = poptGetContext("createuser", argc, argv, optionsTable,
0);
>     poptReadConfigFile(optCon, rcfile );
>
>     /* although there are no options to be parsed, check for --help
*/
>     poptGetNextOpt(optCon);
>
>     poptFreeContext(optCon);
>
>     printf( "dbusername %s\tdbpassword %s\n"
>             "txhost %s\ttxsslport %d\ttxstoreid %d\tpathofkeyfile
%s\n"
> 	    "username %s\tpassword %s\tfirstname %s\tlastname %s\n"
> 	    "addr1 %s\taddr2 %s\tcity %s\tstate %s\tpostal %s\n"
> 	    "country %s\temail %s\tdayphone %s\tfax %s\n",
>         dbUserName, dbPassword,
>         txHost, txSslPort, txStoreId, PathnameOfKeyFile,
>         username, password, firstname, lastname,
>         addr1,addr2, city, state, postal,
>         country, email, dayphone, fax);
>     return 0;
> }
diff -rN popt-1.4/testit.sh popt.NEW/testit.sh
2a3,4
> testdir=test-data
>
16a19,36
> run2() {
>     prog=$1; shift
>     name=$1; shift
>     number=$1; shift
>
>     answer=`cat $testdir/$number.answer`
>     params=`cat $testdir/$number.param`
>     #echo "--->$params<---";
>     echo Running test $name.
>
>     result=`./$prog $params`
>     if [ "$answer" != "$result" ]; then
> 	echo "Test --->$params<--- failed with:"
> 	echo "---}$result{---"
> 	#exit 2
>     fi
> }
>
46a67,76
>
>
> run2 test2 "test2 - 29 - long/short param mix"				29
> run2 test2 "test2 - 30 - same data as 29 but with long opts"		30
> run2 test2 "test2 - 31 - only short opts of 29"				31
> run2 test2 "test2 - 32 - long opt, two alternatives to set"		32
> run2 test2 "test2 - 33 - short opt with =, two alternatives to set"
33
> run2 test2 "test2 - 34 - short opt w/o =, two alternatives to set"
34
> run2 test2 "test2 - 35 - long/short, two alternatives to set mix"	35
> run2 test2 "test2 - 36 - long/short, two alternatives to set mix II"
36

Comment 2 jay 1999-10-21 21:49:59 UTC
ignore the last comment.  this is a uuencode'd gzip of the patch file
of "diff -rN popt-1.4 popt.NEW"


begin 644 diff.gz
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
0L+,ST#2H_P<V;L-9AC(`````
`
end

Comment 3 Jeff Johnson 1999-10-21 22:51:59 UTC
Speak of the Devil :-)

I was just hacking in popt, as constructs like --prefix=/foo don't
work in rpm (which does a poptResetContext to reread arguments that
aren't quite the same anymore ...).

Thanks *very* much for the new test! I should have a fix for you by
early next week.

BTW, large patches are most easily sent as an attachment in a reply
to the notification mail you get from bugzilla.

Comment 4 Jeff Johnson 1999-10-25 20:19:59 UTC
The problem is in poptGetNextOpt(), where the argument longArg
needs to be reset to NULL at the beginning of each "while (!done)"
traversal rather than at the entry to poptGetNextOpt. I've fixed
this in popt CVS.