Nilorea Library
C utilities for networking, threading, graphics
ex_base64.c
1
8#include "nilorea/n_log.h"
9#include "nilorea/n_list.h"
10#include "nilorea/n_str.h"
11#include "nilorea/n_base64.h"
12
13
14int main( int argc , char *argv[] )
15{
17
18 N_STR *example_text = char_to_nstr( "This is an example of base64 encode/decode, with a newline:\nThis is the end of the testing test." );
19 example_text -> written= 0 ;
20 while( example_text -> data[ example_text -> written ] != '\0' )
21 {
22 example_text -> written ++ ;
23 }
24
25 n_log( LOG_NOTICE, "Testing base64, encoding text of size (%ld/%ld):\n%s" , example_text -> written , example_text -> length , _nstr( example_text ) );
26
27 N_STR *encoded_answer = n_base64_encode( example_text );
28 n_log( LOG_DEBUG , "encoded=\n%s" , _nstr( encoded_answer ) );
29
30 N_STR *decoded_answer = n_base64_decode( encoded_answer );
31 n_log( LOG_DEBUG , "decoded=\n%s" , _nstr( decoded_answer ) );
32
33 free_nstr( &encoded_answer );
34 free_nstr( &decoded_answer );
35
36 if( argc > 0 && argv[ 1 ] )
37 {
38 N_STR *input_data = NULL;
39 N_STR *output_name = NULL;
40 N_STR *output_data = NULL;
41 N_STR *decoded_data = NULL;
42
43 nstrprintf( output_name , "%s.encoded" , argv[ 1 ] );
44 input_data = file_to_nstr( argv[ 1 ] );
45 n_log( LOG_DEBUG , "Encoding file %s size %ld" , argv[ 1 ] , input_data -> written );
46
47 if( input_data )
48 {
49 output_data = n_base64_encode( input_data );
50 nstr_to_file( output_data , _nstr( output_name ) );
51 n_log( LOG_DEBUG , "Generated encoded %s version of size %ld" , _nstr( output_name ) , output_data -> written );
52
53
54 nstrprintf( output_name , "%s.decoded" , argv[ 1 ] );
55 decoded_data = n_base64_decode( output_data );
56 nstr_to_file( decoded_data , _nstr( output_name ) );
57
58 n_log( LOG_DEBUG , "Generated decoded %s version of size %ld" , _nstr( output_name ) , decoded_data -> written );
59 free_nstr( &decoded_data );
60 }
61 free_nstr( &input_data );
62 free_nstr( &output_name );
63 free_nstr( &output_data );
64 }
65 free_nstr( &example_text );
66 exit( 0 );
67} /* END_OF_MAIN */
#define _nstr(__PTR)
N_STR or "NULL" string for logging purposes.
Definition: n_common.h:178
N_STR * n_base64_decode(N_STR *bufcoded)
decode a N_STR *string
Definition: n_base64.c:174
N_STR * n_base64_encode(N_STR *input)
encode a N_STR *string
Definition: n_base64.c:249
#define n_log(__LEVEL__,...)
Logging function wrapper to get line and func.
Definition: n_log.h:74
#define LOG_DEBUG
debug-level messages
Definition: n_log.h:66
void set_log_level(const int log_level)
Set the global log level value ( static int LOG_LEVEL )
Definition: n_log.c:97
#define LOG_NOTICE
normal but significant condition
Definition: n_log.h:62
#define free_nstr(__ptr)
free a N_STR structure and set the pointer to NULL
Definition: n_str.h:222
#define nstrprintf(__nstr_var,...)
Macro to quickly allocate and sprintf to N_STR *.
Definition: n_str.h:97
int nstr_to_file(N_STR *str, char *filename)
Write a N_STR content into a file.
Definition: n_str.c:459
N_STR * char_to_nstr(const char *src)
Convert a char into a N_STR, short version.
Definition: n_str.c:273
N_STR * file_to_nstr(char *filename)
Load a whole file into a N_STR.
Definition: n_str.c:332
A box including a string and his lenght.
Definition: n_str.h:173
base64 encoding and decoding functions using N_STR
List structures and definitions.
Generic log system.
N_STR and string function declaration.