Home | History | Annotate | Line # | Download | only in include
      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 #ifdef __GNUC__
     69 #define __no_optimize __attribute__((optimize("O0")))
     70 #else
     71 #define __no_optimize
     72 #endif
     73 
     74 void * __no_optimize __memset(void *s, int c, size_t n);
     75 
     76 typedef int (*CmdOptParser)( const int aOpt, const char *aOptArg );
     77 typedef void (*CmdHelpFunction)( const char *aCmd );
     78 
     79 void initIntlSys( );
     80 
     81 int genericOptHandler( int a_iNumArgs, char **a_pszArgs,
     82 		       const char *a_pszShortOpts,
     83 		       struct option *a_psLongOpts, int a_iNumOpts,
     84 		       CmdOptParser, CmdHelpFunction );
     85 char *getPlainPasswd( const char* a_pszPrompt, BOOL a_bConfirm );
     86 #ifdef TSS_LIB_IS_12
     87 char *_getPasswd12( const char *a_pszPrompt, int *a_iLen, BOOL a_bConfirm, BOOL a_uUseUnicode);
     88 char *getPasswd12( const char *a_pszPrompt, int *a_iLen, BOOL a_bConfirm );
     89 
     90 #define _GETPASSWD	_getPasswd12
     91 #define GETPASSWD	getPasswd12
     92 #else
     93 char *getPasswd( const char *a_pszPrompt, int *a_iLen, BOOL a_bConfirm );
     94 
     95 #define _GETPASSWD	_getPasswd
     96 #define GETPASSWD	getPasswd
     97 #endif
     98 char *_getPasswd( const char *a_pszPrompt, int *a_iLen, BOOL a_bConfirm, BOOL a_bUseUnicode);
     99 void  shredPasswd( char *a_pszPasswd );
    100 char *getReply( const char *a_pszPrompt, int a_iMaxLen );
    101 
    102 extern int iLogLevel;
    103 extern BOOL useUnicode;
    104 
    105 int logHex( int a_iLen, void *a_pData );
    106 int logMsg( const char *a_pszFormat, ... );
    107 int logDebug( const char *a_pszFormat, ... );
    108 int logInfo( const char *a_pszFormat, ... );
    109 int logError( const char *a_pszFormat, ... );
    110 
    111 int logProcess( FILE *a_pStream, const char *a_pszFormat, va_list a_vaArgs );
    112 int logIt( FILE *a_pStream, const char *a_pszFormat, va_list a_vaArgs );
    113 
    114 void  logSuccess( const char *a_pszCmd );
    115 void  logCmdOption( const char *a_pszOption, const char *a_pszDescr );
    116 void  logUnicodeCmdOption( );
    117 void  logGenericOptions( );
    118 void  logCmdHelp( const char *a_pszCmd );
    119 void  logCmdHelpEx( const char *a_pszCmd, char *a_pszArgs[], char *a_pszArgDescs[] );
    120 char *logBool( BOOL aValue );
    121 void  logOwnerPassCmdOption( );
    122 void  logNVIndexCmdOption( );
    123 
    124 #endif
    125