Add function for parsing arguments
Signed-off-by: Piotr Nowicki <piotr.nowicki@arm.com>
diff --git a/programs/ssl/ssl_base64_dump.c b/programs/ssl/ssl_base64_dump.c
index 3b664c9..ca435f2 100644
--- a/programs/ssl/ssl_base64_dump.c
+++ b/programs/ssl/ssl_base64_dump.c
@@ -19,8 +19,134 @@
* This file is part of mbed TLS (https://tls.mbed.org)
*/
+#include <stdio.h>
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+
+/*
+ * This program version
+ */
+#define PROG_NAME "ssl_base64_dump"
+#define VER_MAJOR 0
+#define VER_MINOR 1
+
+/*
+ * Global values
+ */
+FILE *b64_file = NULL; /* file with base64 codes to deserialize */
+char debug = 0; /* flag for debug messages */
+
+/*
+ * Basic printing functions
+ */
+void print_version( )
+{
+ printf( "%s v%d.%d\n", PROG_NAME, VER_MAJOR, VER_MINOR );
+}
+
+void print_usage( )
+{
+ print_version();
+ printf(
+ "Usage:\n"
+ "\t-f path - Path to the file with base64 code\n"
+ "\t-v - Show version\n"
+ "\t-h - Show this usage\n"
+ "\t-d - Print more information\n"
+ "\n"
+ );
+}
+
+void printf_dbg( const char *str, ... )
+{
+ if( debug )
+ {
+ va_list args;
+ va_start( args, str );
+ printf( "debug: " );
+ vprintf( str, args );
+ fflush( stdout );
+ va_end( args );
+ }
+}
+
+void printf_err( const char *str, ... )
+{
+ va_list args;
+ va_start( args, str );
+ fprintf( stderr, "ERROR: " );
+ vfprintf( stderr, str, args );
+ fflush( stderr );
+ va_end( args );
+}
+
+/*
+ * Exit from the program in case of error
+ */
+void error_exit()
+{
+ if( NULL != b64_file )
+ {
+ fclose( b64_file );
+ }
+ exit( -1 );
+}
+
+/*
+ * This function takes the input arguments of this program
+ */
+void parse_arguments( int argc, char *argv[] )
+{
+ int i = 1;
+
+ if( argc < 2 )
+ {
+ print_usage();
+ error_exit();
+ }
+
+ while( i < argc )
+ {
+ if( strcmp( argv[i], "-d" ) == 0 )
+ {
+ debug = 1;
+ }
+ else if( strcmp( argv[i], "-h" ) == 0 )
+ {
+ print_usage();
+ }
+ else if( strcmp( argv[i], "-v" ) == 0 )
+ {
+ print_version();
+ }
+ else if( strcmp( argv[i], "-f" ) == 0 )
+ {
+ if( ++i >= argc )
+ {
+ printf_err( "File path is empty\n" );
+ error_exit();
+ }
+
+ if( ( b64_file = fopen( argv[i], "r" ) ) == NULL )
+ {
+ printf_err( "Cannot find file \"%s\"\n", argv[i] );
+ error_exit();
+ }
+ }
+ else
+ {
+ print_usage();
+ error_exit();
+ }
+
+ i++;
+ }
+}
+
int main( int argc, char *argv[] )
{
+ parse_arguments( argc, argv );
return 0;
}