cdesktopenv/cde/lib/tt/bin/dbck/options.C

206 lines
4.8 KiB
C

/*
* CDE - Common Desktop Environment
*
* Copyright (c) 1993-2012, The Open Group. All rights reserved.
*
* These libraries and programs are free software; you can
* redistribute them and/or modify them under the terms of the GNU
* Lesser General Public License as published by the Free Software
* Foundation; either version 2 of the License, or (at your option)
* any later version.
*
* These libraries and programs are distributed in the hope that
* they will be useful, but WITHOUT ANY WARRANTY; without even the
* implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR
* PURPOSE. See the GNU Lesser General Public License for more
* details.
*
* You should have received a copy of the GNU Lesser General Public
* License along with these libraries and programs; if not, write
* to the Free Software Foundation, Inc., 51 Franklin Street, Fifth
* Floor, Boston, MA 02110-1301 USA
*/
//%% (c) Copyright 1993, 1994 Hewlett-Packard Company
//%% (c) Copyright 1993, 1994 International Business Machines Corp.
//%% (c) Copyright 1993, 1994 Sun Microsystems, Inc.
//%% (c) Copyright 1993, 1994 Novell, Inc.
//%% $TOG: options.C /main/4 1998/03/20 14:26:44 mgreess $
/*
*
* options.cc
*
* Common option handling routines
*
* Copyright (c) 1990 by Sun Microsystems, Inc.
*/
#include <stdio.h>
#include <stdlib.h>
#include "util/copyright.h"
#if defined(__linux__) || defined(sgi) || defined(CSRG_BASED)
#include <getopt.h>
#endif
#include "dbck.h"
#include "options.h"
#include "util/tt_iostream.h"
#include "util/tt_gettext.h"
Dbck_options::
Dbck_options()
{
_dbdirectories = new _Tt_string_list;
_sel_filename_p = 0;
_sel_filename = (char *) 0;
_sel_objid_p = 0;
_sel_objid_key = (_Tt_db_key *) 0;
_sel_type_p = 0;
_sel_type = (char *) 0;
_diag_badform_p = 0;
_diag_exist_p = 0;
_disp_id_p = 0;
_disp_mand_p = 0;
_disp_prop_p = 0;
_repair_netisam_p = 0;
_repair_type_p = 0;
_repair_type = (char *) 0;
_repair_delete_p = 0;
_debug_level = 0;
}
int Dbck_options::
set_opts(int argc, char **argv)
{
int c;
char *opts = optstring();
while (-1 != (c = getopt(argc,(char **)argv,opts))) {
if (!set_option(c, optarg)) {
//print help
return 0;
}
}
_dbdirectories = new _Tt_string_list;
for (; optind<argc; ++optind) {
_Tt_string s(argv[optind]);
_dbdirectories->append(s);
}
return 1;
}
int Dbck_options::
set_common_option(int optchar, const char *optval)
{
switch (optchar) {
case '?':
case 'h': // treat h as illegal, forces Usage: msg
return 0;
case 'v':
_TT_PRINT_VERSIONS(progname)
exit(0);
case 'd':
_debug_level = atoi(optval);
break;
case 'f':
_sel_filename_p = 1;
_sel_filename = optval;
break;
case 'k':
_sel_objid_p = 1;
_sel_objid_key = new _Tt_db_key(_Tt_string(optval));
break;
case 't':
_sel_type_p = 1;
_sel_type = optval;
break;
case 'b':
_diag_badform_p = 1;
break;
case 'x':
_diag_exist_p = 1;
break;
case 'i':
_disp_id_p = 1;
break;
case 'm':
_disp_mand_p = 1;
break;
case 'p':
_disp_prop_p = 1;
break;
case 'I':
_repair_netisam_p = 1;
break;
case 'T':
_repair_type_p = 1;
_repair_type = optval;
break;
case 'Z':
_repair_delete_p = 1;
break;
default:
return 0;
}
return 1;
}
void Dbck_options::
print(FILE *f) const
{
fprintf(f,"%s <\n",type_string());
fprintf(f,"\nDirectories:\n");
dbdirectories()->print(_tt_string_print,f);
fprintf(f,"\n");
if (_sel_filename_p) {
fprintf(f,catgets(_ttcatd, 6, 7, "Select by filename: %s\n"),
(char *)_sel_filename);
}
if (_sel_objid_p) {
fprintf(f, "%s", catgets(_ttcatd, 6, 8, "Select by objid key:"));
_sel_objid_key->print(f);
fprintf(f,"\n");
}
if (_sel_type_p) {
fprintf(f,catgets(_ttcatd, 6, 9, "Select by type: %s\n"),
(char *)_sel_type);
}
if (_diag_badform_p) {
fprintf(f, "%s", catgets(_ttcatd, 6, 10,
"Diagnose badly formed entities\n"));
}
if (_diag_exist_p) {
fprintf(f, "%s", catgets(_ttcatd, 6, 11, "Diagnose references to "
"non-existent entities\n"));
}
if (_disp_id_p) {
fprintf(f, "%s", catgets(_ttcatd, 6, 12, "Display ids\n"));
}
if (_disp_mand_p) {
fprintf(f, "%s", catgets(_ttcatd, 6, 13, "Display mandatory data\n"));
}
if (_disp_prop_p) {
fprintf(f, "%s", catgets(_ttcatd, 6, 14,
"Display properties and values data\n"));
}
if (_repair_netisam_p) {
fprintf(f, "%s", catgets(_ttcatd, 6, 15,
"Invoke NetISAM isrepair() function before "
"inspecting\n"));
}
if (_repair_type_p) {
fprintf(f,catgets(_ttcatd, 6, 16,
"Repair by setting to type: %s\n"),
(char *)_repair_type);
}
if (_repair_delete_p) {
fprintf(f, "%s", catgets(_ttcatd, 6, 17, "Repair by deleting\n"));
}
fprintf(f,catgets(_ttcatd, 6, 18, "Debugging printout level %d\n"),
_debug_level);
}