1 /* 2 * The Initial Developer of the Original Code is International 3 * Business Machines Corporation. Portions created by IBM 4 * Corporation are Copyright (C) 2005, 2006 International Business 5 * Machines Corporation. All Rights Reserved. 6 * 7 * This program is free software; you can redistribute it and/or modify 8 * it under the terms of the Common Public License as published by 9 * IBM Corporation; either version 1 of the License, or (at your option) 10 * any later version. 11 * 12 * This program is distributed in the hope that it will be useful, 13 * but WITHOUT ANY WARRANTY; without even the implied warranty of 14 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 15 * Common Public License for more details. 16 * 17 * You should have received a copy of the Common Public License 18 * along with this program; if not, a copy can be viewed at 19 * http://www.opensource.org/licenses/cpl1.0.php. 20 */ 21 22 #ifndef __TPM_UTILS_H 23 #define __TPM_UTILS_H 24 25 #ifdef ENABLE_NLS 26 #include <libintl.h> 27 #include <locale.h> 28 #define _(String) gettext(String) 29 #define N_(String) String 30 #else 31 #define setlocale(category, local) 32 #define bindtextdomain(package, localedir) 33 #define textdomain(package); 34 #define _(String) String 35 #define N_(String) String 36 #endif 37 38 #include <string.h> 39 #include <stdio.h> 40 #include <stdlib.h> 41 #include <stdarg.h> 42 //#define GNU_SOURCE 43 #include <getopt.h> 44 45 #ifndef BOOL 46 #define BOOL int 47 #endif 48 49 #ifndef FALSE 50 #define FALSE 0 51 #endif 52 53 #ifndef TRUE 54 #define TRUE (!FALSE) 55 #endif 56 57 #define CMD_VERSION PACKAGE_VERSION 58 59 #define LOG_NONE _("none") 60 #define LOG_LEVEL_NONE 0 61 #define LOG_ERROR _("error") 62 #define LOG_LEVEL_ERROR 1 63 #define LOG_INFO _("info") 64 #define LOG_LEVEL_INFO 2 65 #define LOG_DEBUG _("debug") 66 #define LOG_LEVEL_DEBUG 3 67 68 typedef int (*CmdOptParser)( const int aOpt, const char *aOptArg ); 69 typedef void (*CmdHelpFunction)( const char *aCmd ); 70 71 void initIntlSys( ); 72 73 int genericOptHandler( int a_iNumArgs, char **a_pszArgs, 74 const char *a_pszShortOpts, 75 struct option *a_psLongOpts, int a_iNumOpts, 76 CmdOptParser, CmdHelpFunction ); 77 char *getPlainPasswd( const char* a_pszPrompt, BOOL a_bConfirm ); 78 #ifdef TSS_LIB_IS_12 79 char *_getPasswd12( const char *a_pszPrompt, int *a_iLen, BOOL a_bConfirm, BOOL a_uUseUnicode); 80 char *getPasswd12( const char *a_pszPrompt, int *a_iLen, BOOL a_bConfirm ); 81 82 #define _GETPASSWD _getPasswd12 83 #define GETPASSWD getPasswd12 84 #else 85 char *getPasswd( const char *a_pszPrompt, int *a_iLen, BOOL a_bConfirm ); 86 87 #define _GETPASSWD _getPasswd 88 #define GETPASSWD getPasswd 89 #endif 90 char *_getPasswd( const char *a_pszPrompt, int *a_iLen, BOOL a_bConfirm, BOOL a_bUseUnicode); 91 void shredPasswd( char *a_pszPasswd ); 92 char *getReply( const char *a_pszPrompt, int a_iMaxLen ); 93 94 extern int iLogLevel; 95 extern BOOL useUnicode; 96 97 int logHex( int a_iLen, void *a_pData ); 98 int logMsg( const char *a_pszFormat, ... ); 99 int logDebug( const char *a_pszFormat, ... ); 100 int logInfo( const char *a_pszFormat, ... ); 101 int logError( const char *a_pszFormat, ... ); 102 103 int logProcess( FILE *a_pStream, const char *a_pszFormat, va_list a_vaArgs ); 104 int logIt( FILE *a_pStream, const char *a_pszFormat, va_list a_vaArgs ); 105 106 void logSuccess( const char *a_pszCmd ); 107 void logCmdOption( const char *a_pszOption, const char *a_pszDescr ); 108 void logUnicodeCmdOption( ); 109 void logGenericOptions( ); 110 void logCmdHelp( const char *a_pszCmd ); 111 void logCmdHelpEx( const char *a_pszCmd, char *a_pszArgs[], char *a_pszArgDescs[] ); 112 char *logBool( BOOL aValue ); 113 void logOwnerPassCmdOption( ); 114 void logNVIndexCmdOption( ); 115 116 #endif 117