Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 11 additions & 3 deletions src/baseconv.c
Original file line number Diff line number Diff line change
Expand Up @@ -101,7 +101,7 @@ void bcv_print(uf64_t value)
}


void bcv_guess_base(const char * restrict num)
uf64_t __bcv_guess_base(const char * restrict num , void (*base_printer)(uf64_t))
{

uf64_t options = __allbase_enable__,
Expand Down Expand Up @@ -138,11 +138,14 @@ void bcv_guess_base(const char * restrict num)

excluded= (__allbase_enable__ ^ options) ;
__allbase_enable__^=excluded;
bcv_print(value) ;

if(base_printer)
base_printer(value) ;

__allbase_enable__ = restore_option ;

_end:
return ;
return value ;
}

int bcv_launch_interactive_repl_on(int check_shell_argument)
Expand All @@ -152,3 +155,8 @@ int bcv_launch_interactive_repl_on(int check_shell_argument)

return 0;
}

uf64_t bcv_guess_base(const char * restrict num)
{
return __bcv_guess_base(num , bcv_print) ;
}
7 changes: 4 additions & 3 deletions src/baseconv.h
Original file line number Diff line number Diff line change
Expand Up @@ -88,7 +88,8 @@
"

__extension__
typedef unsigned long long int uf64_t ;
typedef unsigned long long int uf64_t;
//typeof (void (uf64_t)) * bcv_printer_t;

struct __bcb_t
{
Expand Down Expand Up @@ -192,7 +193,7 @@ __BCX(char *) bc_hex(uf64_t value) ;
__BCX(char *) bc_dec(uf64_t value) ;
__BCX(char *) bc_chr(uf64_t value) ;
__BCX(void) bcv_print(uf64_t value) ;
__BCX(void) bcv_guess_base(const char * rawinput) ;
__BCX(uf64_t) __bcv_guess_base(const char * rawinput, void (*)(uf64_t)) ;
__BCX(uf64_t) bcv_guess_base(const char * rawinput);
__BCX(int) bcv_launch_interactive_repl_on(int no_args) ;

#endif //!__BASECONV
17 changes: 8 additions & 9 deletions src/bcvrepl.c
Original file line number Diff line number Diff line change
Expand Up @@ -9,8 +9,8 @@
#include <ctype.h>
#include <errno.h>

#include "bcvrepl.h"
#include "baseconv.h"
#include "bcvrepl.h"


void bcrepl_shell(const char * prompt)
Expand Down Expand Up @@ -78,7 +78,7 @@ void bcrepl_compute(const char * buffer)

char *should_be_tokinezed = 00,
*buffer_clone = (char*) buffer ,
toksymb = 0 ;
toksymb = 0, *out = (void *)0 ;

uf64_t vtok =0 , value =0 ;

Expand All @@ -91,22 +91,18 @@ void bcrepl_compute(const char * buffer)
value = bcrepl_analyse_braw(buffer_clone);
value ? bcv_print(value) : bcv_guess_base(buffer_clone) ;
bcrepl_show_helper(buffer_clone) ;

return ;
}

toksymb = (vtok >> 0x20) & 0xff ;
value = (vtok & 0xffffffff);

if(!toksymb)
{
bcv_print(value) ;
return ;
}


//bcrepl_inline_out_convertion(toksymb) ;
char *out = (void *)0 ;
switch( toksymb )
{
case 'x' :
Expand Down Expand Up @@ -174,7 +170,10 @@ uf64_t bcrepl_process(const char * buffer , const char ftokn)
scan_limite=3;
uf64_t vtok=0;


//#>d/0x23
// d base cible
// 0x23 :
// 1> detection de la base
while( --scan_limite && __nptr != (token = strtok(buffer_clone, (const char []) { ftokn , 00 } )))
{
if(buffer_clone) buffer_clone=00;
Expand All @@ -187,7 +186,7 @@ uf64_t bcrepl_process(const char * buffer , const char ftokn)
free(s) , s=0 ;
}
else
vtok|=(uf64_t)(strtol(token , __nptr , 0xa)) ;
vtok|= __bcv_guess_base(token , __nptr);
}
return vtok ;
}
Expand Down