Skip to content

Commit

Permalink
feat: 0.1.11 add kls_formatSize() (#12)
Browse files Browse the repository at this point in the history
Updates debug print functions to also show human readable sizes.
  • Loading branch information
jgabaut authored Aug 28, 2023
1 parent b8e5bf4 commit 572e2d3
Show file tree
Hide file tree
Showing 7 changed files with 91 additions and 16 deletions.
1 change: 1 addition & 0 deletions bin/stego.lock
Original file line number Diff line number Diff line change
Expand Up @@ -15,3 +15,4 @@ tests# tests folder name
0.1.8# improved Region API
0.1.9# add kls_usageReport()
0.1.10# add ncurses debug functions
0.1.11# add kls_formatSize()
4 changes: 4 additions & 0 deletions bin/v0.1.11/.gitignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
#amboso compliant version folder, will ignore everything inside BUT the gitignore, to keep the clean dir
*
!.gitignore
!static
1 change: 1 addition & 0 deletions bin/v0.1.11/static
4 changes: 2 additions & 2 deletions configure.ac
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
# Define the package name and version
AC_INIT([koliseo], [0.1.10], [[email protected]])
AC_INIT([koliseo], [0.1.11], [[email protected]])

# Verify automake version and enable foreign option
AM_INIT_AUTOMAKE([foreign -Wall])
Expand All @@ -24,7 +24,7 @@ fi
# Set a default version number if not specified externally
AC_ARG_VAR([VERSION], [Version number])
if test -z "$VERSION"; then
VERSION="0.1.10"
VERSION="0.1.11"
fi

# Output variables to the config.h header
Expand Down
2 changes: 1 addition & 1 deletion docs/koliseo.doxyfile
Original file line number Diff line number Diff line change
Expand Up @@ -48,7 +48,7 @@ PROJECT_NAME = "koliseo"
# could be handy for archiving the generated documentation or if some version
# control system is used.

PROJECT_NUMBER = "0.1.10"
PROJECT_NUMBER = "0.1.11"

# Using the PROJECT_BRIEF tag one can provide an optional one line description
# for a project that appears at the top of each page and should give viewer a
Expand Down
88 changes: 78 additions & 10 deletions src/koliseo.c
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,11 @@ Koliseo* kls_new(ptrdiff_t size) {
void *p = malloc(size);
if (p) {
char msg[500];
sprintf(msg,"Allocated (%li) for new KLS.",size);
//sprintf(msg,"Allocated (%li) for new KLS.",size);
//kls_log("KLS",msg);
char h_size[200];
kls_formatSize(size,h_size,sizeof(h_size));
sprintf(msg,"Allocated (%s) for new KLS.",h_size);
kls_log("KLS",msg);
Koliseo* kls = p;
kls->data = p;
Expand Down Expand Up @@ -141,7 +145,11 @@ void* kls_push(Koliseo* kls, ptrdiff_t size, ptrdiff_t align, ptrdiff_t count) {
kls->prev_offset = kls->offset;
kls->offset += padding + size*count;
char msg[500];
sprintf(msg,"Pushed (%li) for KLS.",size);
char h_size[200];
kls_formatSize(size,h_size,sizeof(h_size));
//sprintf(msg,"Pushed size (%li) for KLS.",size);
//kls_log("KLS",msg);
sprintf(msg,"Pushed size (%s) for KLS.",h_size);
kls_log("KLS",msg);
if (KOLISEO_DEBUG == 1) {
print_kls_2file(KOLISEO_DEBUG_FP,kls);
Expand Down Expand Up @@ -188,7 +196,11 @@ void* kls_push_zero(Koliseo* kls, ptrdiff_t size, ptrdiff_t align, ptrdiff_t cou
}

char msg[500];
sprintf(msg,"Pushed zeroes, size (%li) for KLS.",size);
char h_size[200];
kls_formatSize(size,h_size,sizeof(h_size));
//sprintf(msg,"Pushed zeroes, size (%li) for KLS.",size);
//kls_log("KLS",msg);
sprintf(msg,"Pushed zeroes, size (%s) for KLS.",h_size);
kls_log("KLS",msg);
if (KOLISEO_DEBUG == 1) {
print_kls_2file(KOLISEO_DEBUG_FP,kls);
Expand Down Expand Up @@ -234,7 +246,11 @@ void* kls_push_zero_named(Koliseo* kls, ptrdiff_t size, ptrdiff_t align, ptrdiff
kls->regs = kls_append(reglist, kls->regs);

char msg[500];
sprintf(msg,"Pushed zeroes, size (%li) for KLS.",size);
char h_size[200];
kls_formatSize(size,h_size,sizeof(h_size));
//sprintf(msg,"Pushed zeroes, size (%li) for KLS.",size);
//kls_log("KLS",msg);
sprintf(msg,"Pushed zeroes, size (%s) for KLS.",h_size);
kls_log("KLS",msg);
if (KOLISEO_DEBUG == 1) {
print_kls_2file(KOLISEO_DEBUG_FP,kls);
Expand All @@ -255,6 +271,12 @@ void print_kls_2file(FILE* fp, Koliseo* kls) {
fprintf(fp,"[KLS] kls was NULL.");
} else {
fprintf(fp,"\n[KLS] Size: [%li]\n", kls->size);
char human_size[200];
char curr_size[200];
kls_formatSize(kls->size,human_size,sizeof(human_size));
fprintf(fp,"[KLS] Human: [%s]\n", human_size);
kls_formatSize(kls->offset,curr_size,sizeof(curr_size));
fprintf(fp,"[KLS] Used (Human): [%s]\n", curr_size);
fprintf(fp,"[KLS] Offset: [%li]\n", kls->offset);
fprintf(fp,"[KLS] Prev_Offset: [%li]\n\n", kls->prev_offset);
}
Expand All @@ -268,6 +290,28 @@ void print_dbg_kls(Koliseo* kls) {
print_kls_2file(stderr,kls);
}

/**
* Converts a ptrdiff_t size to human-readable SI units (modulo 1000).
* Fills outputBuffer with the converted string.
* @param size The size at hand.
* @param outputBuffer The output buffer.
* @param bufferSize The output buffer size.
*/
void kls_formatSize(ptrdiff_t size, char* outputBuffer, size_t bufferSize) {
const char* units[] = {"bytes", "KB", "MB", "GB", "TB", "PB", "EB", "ZB", "YB"};
const int numUnits = sizeof(units) / sizeof(units[0]);

int unitIndex = 0;
double sizeValue = (double)size;

while (sizeValue >= 1000 && unitIndex < numUnits - 1) {
sizeValue /= 1000;
unitIndex++;
}

snprintf(outputBuffer, bufferSize, "%.2f %s", sizeValue, units[unitIndex]);
}

#ifdef KOLISEO_HAS_CURSES
/**
* Prints fields and eventually Region_List from the passed Koliseo pointer, to the passed WINDOW pointer.
Expand All @@ -290,10 +334,17 @@ void kls_show_toWin(Koliseo* kls, WINDOW* win) {
int x = 2;
mvwprintw(win, y++, x, "Koliseo data:");
mvwprintw(win, y++, x, "Size: [%li]", kls->size);
char h_size[200];
kls_formatSize(kls->size,h_size,sizeof(h_size));
mvwprintw(win, y++, x, "Human size: [%s]", h_size);
char curr_size[200];
kls_formatSize(kls->offset,curr_size,sizeof(curr_size));
mvwprintw(win, y++, x, "Used (Human): [%s]\n", curr_size);
mvwprintw(win, y++, x, "Offset: [%li]", kls->offset);
mvwprintw(win, y++, x, "Prev_Offset: [%li]", kls->prev_offset);
mvwprintw(win, y++, x, "Region_List len: [%i]", kls_length(kls->regs));
mvwprintw(win, y++, x, "Current usage: [%.3f%%]", (kls->offset * 100.0 ) / kls->size );
mvwprintw(win, y++, x, "%s","");
mvwprintw(win, y++, x, "q or Enter to quit.");
/*
Region_List rl = kls_copy(kls->regs);
Expand Down Expand Up @@ -352,6 +403,11 @@ void kls_showList_toWin(Koliseo* kls, WINDOW* win) {
mvwprintw(win, y++, x, "End_Offset: [%li]", e->end_offset);
mvwprintw(win, y++, x, "Region_List len: [%i]", kls_length(kls->regs));
mvwprintw(win, y++, x, "Current usage: [%.3f%%]", kls_usageShare(e,kls));
char h_size[200];
ptrdiff_t reg_size = e->end_offset - e->begin_offset;
kls_formatSize(reg_size,h_size,sizeof(h_size));
mvwprintw(win, y++, x, "Human size: [%s]", h_size);
mvwprintw(win, y++, x, "%s","");
mvwprintw(win, y++, x, "q to quit, Right arrow to go forward.");
/*
Region_List rl = kls_copy(kls->regs);
Expand Down Expand Up @@ -514,14 +570,19 @@ void kls_showList_toFile(Region_List l, FILE* fp) {
abort();
}
char msg[1000];
fprintf(fp,"[");
fprintf(fp,"{");
while (!kls_empty(l))
{
fprintf(fp,"\n[%s], [%s] ",kls_head(l)->name,kls_head(l)->desc);
fprintf(fp,"[%li]->[%li]",kls_head(l)->begin_offset,kls_head(l)->end_offset);
kls_log("KLS","--BEGIN Region--");
sprintf(msg,"[%s], [%s]",kls_head(l)->name,kls_head(l)->desc);
kls_log("KLS",msg);
char h_size[200];
ptrdiff_t r_size = kls_head(l)->end_offset - kls_head(l)->begin_offset;
kls_formatSize(r_size,h_size,sizeof(h_size));
sprintf(msg,"[%s]",h_size);
kls_log("KLS",msg);
sprintf(msg,"[%li]->[%li]",kls_head(l)->begin_offset,kls_head(l)->end_offset);
kls_log("KLS",msg);
kls_log("KLS","--END Region--");
Expand All @@ -532,7 +593,7 @@ void kls_showList_toFile(Region_List l, FILE* fp) {
fprintf(fp,",\n");
}
}
fprintf(fp,"\n]\n");
fprintf(fp,"\n}\n");
}

void kls_showList(Region_List l) {
Expand Down Expand Up @@ -596,7 +657,7 @@ Region_List kls_copy(Region_List l) {
return kls_cons(kls_head(l), kls_copy(kls_tail(l)));
}
}
Region_List kls_delet(element el, Region_List l) {
Region_List kls_delete(element el, Region_List l) {
if (kls_empty(l))
{
return kls_emptyList();
Expand All @@ -609,7 +670,7 @@ Region_List kls_delet(element el, Region_List l) {
}
else
{
return kls_cons(kls_head(l), kls_delet(el, kls_tail(l)));
return kls_cons(kls_head(l), kls_delete(el, kls_tail(l)));
}
}
}
Expand All @@ -621,6 +682,7 @@ Region_List kls_insord(element el, Region_List l) {
}
else
{
//Insert element according to its begin_offset
if (el->begin_offset <= kls_head(l)->begin_offset)
{
return kls_cons(el, l);
Expand Down Expand Up @@ -728,11 +790,17 @@ Region_List kls_diff(Region_List l1, Region_List l2) {
}

bool kls_isLess(Region* r1, Region* r2) {
return (r1->begin_offset < r2->begin_offset);
//Compare regions by their effective size
ptrdiff_t s1 = r1->end_offset - r1->begin_offset;
ptrdiff_t s2 = r2->end_offset - r2->begin_offset;
return (s1 < s2);
}

bool kls_isEqual(Region* r1, Region* r2) {
return (r1->begin_offset == r2->begin_offset);
//Compare regions by their effective size
ptrdiff_t s1 = r1->end_offset - r1->begin_offset;
ptrdiff_t s2 = r2->end_offset - r2->begin_offset;
return (s1 == s2);
}

double kls_usageShare(Region* r, Koliseo* kls) {
Expand Down
7 changes: 4 additions & 3 deletions src/koliseo.h
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@

#define KLS_MAJOR 0 /**< Represents current major release.*/
#define KLS_MINOR 1 /**< Represents current minor release.*/
#define KLS_PATCH 10 /**< Represents current patch release.*/
#define KLS_PATCH 11 /**< Represents current patch release.*/

/**
* Global variable for debug flag.
Expand All @@ -26,7 +26,7 @@ extern int KOLISEO_AUTOSET_REGIONS;
*/
extern FILE* KOLISEO_DEBUG_FP;

static const char KOLISEO_API_VERSION_STRING[] = "0.1.10"; /**< Represents current version with MAJOR.MINOR.PATCH format.*/
static const char KOLISEO_API_VERSION_STRING[] = "0.1.11"; /**< Represents current version with MAJOR.MINOR.PATCH format.*/

const char* string_koliseo_version(void);

Expand Down Expand Up @@ -116,6 +116,7 @@ void kls_clear(Koliseo* kls);
void kls_free(Koliseo* kls);
void print_kls_2file(FILE* fp, Koliseo* kls);
void print_dbg_kls(Koliseo* kls);
void kls_formatSize(ptrdiff_t size, char* outputBuffer, size_t bufferSize);

#ifdef KOLISEO_HAS_CURSES
#ifndef KOLISEO_CURSES_H
Expand Down Expand Up @@ -151,7 +152,7 @@ int kls_length(Region_List);
Region_List kls_append(Region_List, Region_List);
Region_List kls_reverse(Region_List);
Region_List kls_copy(Region_List);
Region_List kls_delet(element, Region_List);
Region_List kls_delete(element, Region_List);

Region_List kls_insord(element, Region_List);
#define KLS_PUSHLIST(reg,kls_list) kls_insord(reg,kls_list)
Expand Down

0 comments on commit 572e2d3

Please sign in to comment.