str_trim
This commit is contained in:
parent
bf56984482
commit
c415e2ca8f
@ -22,7 +22,7 @@ typedef struct Error {
|
|||||||
} Error;
|
} Error;
|
||||||
|
|
||||||
Error* Error_create(const char* msg, bool is_msg_on_heap, ErrorCallPos p);
|
Error* Error_create(const char* msg, bool is_msg_on_heap, ErrorCallPos p);
|
||||||
void Error_destroy(Error* e);
|
void Error_free(Error* e);
|
||||||
void Error_addCallPos(Error* e, ErrorCallPos p);
|
void Error_addCallPos(Error* e, ErrorCallPos p);
|
||||||
str Error_toStr(Error* e);
|
str Error_toStr(Error* e);
|
||||||
void Error_printAndExit(Error* e) __attribute__ ((__noreturn__));
|
void Error_printAndExit(Error* e) __attribute__ ((__noreturn__));
|
||||||
|
|||||||
@ -48,3 +48,6 @@ str str_toUpper(str src);
|
|||||||
str str_toLower(str src);
|
str str_toLower(str src);
|
||||||
|
|
||||||
str hex_to_str(Array(u8) buf, bool uppercase);
|
str hex_to_str(Array(u8) buf, bool uppercase);
|
||||||
|
|
||||||
|
/// @brief removes blank characters from start and end of the line
|
||||||
|
void str_trim(str* line, bool set_zero_at_end);
|
||||||
|
|||||||
@ -12,10 +12,11 @@ Error* Error_create(const char* msg, bool is_msg_on_heap, ErrorCallPos p){
|
|||||||
return e;
|
return e;
|
||||||
}
|
}
|
||||||
|
|
||||||
void Error_destroy(Error* e){
|
void Error_free(Error* e){
|
||||||
if(e->is_msg_on_heap)
|
if(e->is_msg_on_heap)
|
||||||
free(e->msg.data);
|
free(e->msg.data);
|
||||||
free(e->call_stack.data);
|
free(e->call_stack.data);
|
||||||
|
free(e);
|
||||||
}
|
}
|
||||||
|
|
||||||
void Error_addCallPos(Error* e, ErrorCallPos p){
|
void Error_addCallPos(Error* e, ErrorCallPos p){
|
||||||
@ -47,7 +48,6 @@ void Error_printAndExit(Error* e){
|
|||||||
str e_str = Error_toStr(e);
|
str e_str = Error_toStr(e);
|
||||||
printfe("%s\n", e_str.data);
|
printfe("%s\n", e_str.data);
|
||||||
free(e_str.data);
|
free(e_str.data);
|
||||||
Error_destroy(e);
|
Error_free(e);
|
||||||
free(e);
|
|
||||||
exit(111);
|
exit(111);
|
||||||
}
|
}
|
||||||
|
|||||||
@ -132,3 +132,39 @@ str hex_to_str(Array(u8) buf, bool uppercase){
|
|||||||
StringBuilder_append_memory(&sb, buf, uppercase);
|
StringBuilder_append_memory(&sb, buf, uppercase);
|
||||||
return StringBuilder_getStr(&sb);
|
return StringBuilder_getStr(&sb);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void str_trim(str* line, bool set_zero_at_end){
|
||||||
|
bool stop = false;
|
||||||
|
// loop forward
|
||||||
|
while(line->size > 0 && !stop){
|
||||||
|
char first_char = line->data[line->size - 1];
|
||||||
|
switch(first_char){
|
||||||
|
case '\0': case '\r': case '\n':
|
||||||
|
case '\t': case ' ':
|
||||||
|
line->data++;
|
||||||
|
line->size--;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
stop = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
// loop backward
|
||||||
|
while(line->size > 0 && !stop)
|
||||||
|
{
|
||||||
|
char last_char = line->data[line->size - 1];
|
||||||
|
switch(last_char){
|
||||||
|
case '\0': case '\r': case '\n':
|
||||||
|
case '\t': case ' ':
|
||||||
|
line->size--;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
stop = true;
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if(set_zero_at_end){
|
||||||
|
line->data[line->size] = '\0';
|
||||||
|
line->isZeroTerminated = true;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user