mirror of
https://github.com/Maschell/libutils.git
synced 2024-11-10 23:15:04 +01:00
Added "dumpHex", "FSUtils::saveBufferToFile" and "recvwait"
This commit is contained in:
parent
b115979fb9
commit
169468ad60
2
Makefile
2
Makefile
@ -32,7 +32,7 @@ LIB := lib
|
|||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
# options for code generation
|
# options for code generation
|
||||||
#---------------------------------------------------------------------------------
|
#---------------------------------------------------------------------------------
|
||||||
CFLAGS = -g -O2 -Wall -D__wiiu__ -D_GNU_SOURCE $(MACHDEP) $(INCLUDE)
|
CFLAGS = -g -Os -Wall -D__wiiu__ -D_GNU_SOURCE $(MACHDEP) $(INCLUDE)
|
||||||
CXXFLAGS = $(CFLAGS)
|
CXXFLAGS = $(CFLAGS)
|
||||||
|
|
||||||
ifeq ($(DO_LOGGING), 1)
|
ifeq ($(DO_LOGGING), 1)
|
||||||
|
@ -4,6 +4,7 @@
|
|||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#include "FSUtils.h"
|
#include "FSUtils.h"
|
||||||
|
#include "CFile.hpp"
|
||||||
|
|
||||||
s32 FSUtils::LoadFileToMem(const char *filepath, u8 **inbuffer, u32 *size){
|
s32 FSUtils::LoadFileToMem(const char *filepath, u8 **inbuffer, u32 *size){
|
||||||
//! always initialze input
|
//! always initialze input
|
||||||
@ -136,3 +137,16 @@ s32 FSUtils::CreateSubfolder(const char * fullpath){
|
|||||||
|
|
||||||
return 1;
|
return 1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool FSUtils::saveBufferToFile(const char * path, void * buffer, u32 size){
|
||||||
|
s32 res = open(path, O_CREAT | O_TRUNC | O_WRONLY);
|
||||||
|
close(res);
|
||||||
|
CFile file(path, CFile::WriteOnly);
|
||||||
|
if (!file.isOpen()){
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
file.write((const u8*) buffer,size);
|
||||||
|
file.close();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
@ -9,6 +9,7 @@ class FSUtils{
|
|||||||
//! todo: C++ class
|
//! todo: C++ class
|
||||||
static s32 CreateSubfolder(const char * fullpath);
|
static s32 CreateSubfolder(const char * fullpath);
|
||||||
static s32 CheckFile(const char * filepath);
|
static s32 CheckFile(const char * filepath);
|
||||||
|
static bool saveBufferToFile(const char * path, void * buffer, u32 size);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // __FS_UTILS_H_
|
#endif // __FS_UTILS_H_
|
||||||
|
20
source/utils/net.c
Normal file
20
source/utils/net.c
Normal file
@ -0,0 +1,20 @@
|
|||||||
|
#include "dynamic_libs/socket_functions.h"
|
||||||
|
|
||||||
|
int recvwait(int sock, unsigned char *buffer, int len)
|
||||||
|
{
|
||||||
|
int recvBytes = 0;
|
||||||
|
|
||||||
|
while(len)
|
||||||
|
{
|
||||||
|
int ret = recv(sock, buffer, len, 0);
|
||||||
|
if(ret <= 0) {
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
len -= ret;
|
||||||
|
buffer += ret;
|
||||||
|
recvBytes += ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
return recvBytes;
|
||||||
|
}
|
14
source/utils/net.h
Normal file
14
source/utils/net.h
Normal file
@ -0,0 +1,14 @@
|
|||||||
|
#ifndef __NET_H_
|
||||||
|
#define __NET_H_
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
|
int recvwait(int sock, unsigned char *buffer, int len);
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#endif
|
42
source/utils/utils.c
Normal file
42
source/utils/utils.c
Normal file
@ -0,0 +1,42 @@
|
|||||||
|
#include <string.h>
|
||||||
|
#include <stdlib.h>
|
||||||
|
#include <stdarg.h>
|
||||||
|
#include <stddef.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <malloc.h>
|
||||||
|
#include "utils.h"
|
||||||
|
#include "logger.h"
|
||||||
|
|
||||||
|
// https://gist.github.com/ccbrown/9722406
|
||||||
|
void dumpHex(const void* data, size_t size) {
|
||||||
|
char ascii[17];
|
||||||
|
size_t i, j;
|
||||||
|
ascii[16] = '\0';
|
||||||
|
DEBUG_FUNCTION_LINE("0x%08X (0x0000): ", data);
|
||||||
|
for (i = 0; i < size; ++i) {
|
||||||
|
log_printf("%02X ", ((unsigned char*)data)[i]);
|
||||||
|
if (((unsigned char*)data)[i] >= ' ' && ((unsigned char*)data)[i] <= '~') {
|
||||||
|
ascii[i % 16] = ((unsigned char*)data)[i];
|
||||||
|
} else {
|
||||||
|
ascii[i % 16] = '.';
|
||||||
|
}
|
||||||
|
if ((i+1) % 8 == 0 || i+1 == size) {
|
||||||
|
log_printf(" ");
|
||||||
|
if ((i+1) % 16 == 0) {
|
||||||
|
log_printf("| %s \n", ascii);
|
||||||
|
if(i + 1 < size){
|
||||||
|
DEBUG_FUNCTION_LINE("0x%08X (0x%04X); ", data + i + 1,i+1);
|
||||||
|
}
|
||||||
|
} else if (i+1 == size) {
|
||||||
|
ascii[(i+1) % 16] = '\0';
|
||||||
|
if ((i+1) % 16 <= 8) {
|
||||||
|
log_printf(" ");
|
||||||
|
}
|
||||||
|
for (j = (i+1) % 16; j < 16; ++j) {
|
||||||
|
log_printf(" ");
|
||||||
|
}
|
||||||
|
log_printf("| %s \n", ascii);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@ -41,6 +41,9 @@ extern "C" {
|
|||||||
|
|
||||||
unsigned int getApplicationEndAddr(void);
|
unsigned int getApplicationEndAddr(void);
|
||||||
|
|
||||||
|
//Need to have log_init() called beforehand.
|
||||||
|
void dumpHex(const void* data, size_t size);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
Loading…
Reference in New Issue
Block a user