/* 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 "system.h" 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, const 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, NULL, 0, "Transact Options (not all will apply)", NULL }, { NULL, '\0', POPT_ARG_INCLUDE_TABLE, NULL, 0, "Transact Database Names", NULL }, { NULL, '\0', POPT_ARG_INCLUDE_TABLE, NULL, 0, "User Fields", NULL }, POPT_AUTOHELP { NULL, 0, 0, NULL, 0, NULL, NULL } }; optionsTable[0].arg = transactOptionsTable; optionsTable[1].arg = databaseOptionsTable; optionsTable[2].arg = userOptionsTable; #if defined(HAVE_MCHECK_H) && defined(HAVE_MTRACE) mtrace(); /* Trace malloc only if MALLOC_TRACE=mtrace-output-file. */ #endif optCon = poptGetContext("createuser", argc, argv, optionsTable, 0); poptReadConfigFile(optCon, rcfile ); /* although there are no options to be parsed, check for --help */ poptGetNextOpt(optCon); 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; }