organised string functions
This commit is contained in:
parent
453c55b454
commit
06d266e425
@ -118,10 +118,6 @@ u8 fatCreateRecIfNotExist(u8 *name, u8 is_dir);
|
||||
u8 fatGetFullName(u8 *name, u32 dir_entry, u32 rec_entry);
|
||||
u8 fatOpenDirByName(u8 *name);
|
||||
void fatInitRam();
|
||||
|
||||
u8 streq(u8 *str1, u8 *str2);
|
||||
u8 streql(u8 *str1, u8 *str2, u8 len);
|
||||
u8 slen(u8 *str);
|
||||
void fatSortRecords();
|
||||
#endif /* _FAT_H */
|
||||
|
||||
|
@ -5,7 +5,6 @@
|
||||
//
|
||||
|
||||
//protos maybe some aren't necessary any longer
|
||||
void strhicase(u8 *str, u8 len);
|
||||
void PI_DMAWait(void);
|
||||
void evd_writeReg(u8 reg, u16 val);
|
||||
void bootRom(display_context_t disp, int silent);
|
||||
|
13
inc/strlib.h
13
inc/strlib.h
@ -5,6 +5,9 @@
|
||||
//
|
||||
|
||||
#ifndef STRLIB_H_
|
||||
|
||||
#include "types.h"
|
||||
|
||||
enum strtrim_mode_t {
|
||||
STRLIB_MODE_ALL = 0,
|
||||
STRLIB_MODE_RIGHT = 0x01,
|
||||
@ -27,4 +30,14 @@ char *triml(char *s);
|
||||
char *trimr(char *s);
|
||||
char *trim(char *s);
|
||||
char *strlibkill(char *s);
|
||||
|
||||
void strhicase(u8 *str, u8 len);
|
||||
u16 strcon(u8 *str1, u8 *str2, u8 *dst, u16 max_len);
|
||||
u8 slen(u8 *str);
|
||||
u8 scopy(u8 *src, u8 *dst);
|
||||
|
||||
u8 streq(u8 *str1, u8 *str2);
|
||||
u8 streql(u8 *str1, u8 *str2, u8 len);
|
||||
|
||||
u16 strContain(u8 *target, u8 *str);
|
||||
#endif
|
||||
|
@ -21,11 +21,6 @@ void dma_read_sram(void *dest, u32 offset, u32 size);
|
||||
u8 getSaveType();
|
||||
u8 getCicType(u8 bios_cic);
|
||||
|
||||
u16 strcon(u8 *str1, u8 *str2, u8 *dst, u16 max_len);
|
||||
u8 slen(u8 *str);
|
||||
u8 scopy(u8 *src, u8 *dst);
|
||||
|
||||
u16 strContain(u8 *target, u8 *str);
|
||||
|
||||
typedef struct SP_regs_s {
|
||||
u32 mem_addr;
|
||||
|
@ -13,6 +13,7 @@
|
||||
#include "everdrive.h"
|
||||
#include "sys.h"
|
||||
#include <libdragon.h>
|
||||
#include "strlib.h"
|
||||
|
||||
|
||||
|
||||
@ -39,7 +40,6 @@ u8 fatCacheApplyTable();
|
||||
u8 fatGetFreeRecord(FatRecord *dir_rec, u8 len);
|
||||
void fatMakeLfnBlock(u8 *name, u8 *lfn_block, u8 block_idx, u8 crc);
|
||||
u32 fatSectorToCluster(u32 sector);
|
||||
void strhicase(u8 *str, u8 len);
|
||||
u8 fatClearClusters(u32 cluster, u8 len);
|
||||
|
||||
u8 fatReadCluster(void *dst);
|
||||
|
108
src/strlib.c
108
src/strlib.c
@ -47,3 +47,111 @@ char *triml(char *s) { return strcpytrim(s, s, STRLIB_MODE_LEFT, 0); }
|
||||
char *trimr(char *s) { return strcpytrim(s, s, STRLIB_MODE_RIGHT, 0); }
|
||||
char *trim(char *s) { return strcpytrim(s, s, STRLIB_MODE_BOTH, 0); }
|
||||
char *strlibkill(char *s) { return strcpytrim(s, s, STRLIB_MODE_ALL, 0); }
|
||||
|
||||
u16 strcon(u8 *str1, u8 *str2, u8 *dst, u16 max_len) {
|
||||
|
||||
u16 len = 0;
|
||||
max_len -= 1;
|
||||
|
||||
while (*str1 != 0 && len < max_len) {
|
||||
*dst++ = *str1++;
|
||||
len++;
|
||||
}
|
||||
|
||||
while (*str2 != 0 && len < max_len) {
|
||||
*dst++ = *str2++;
|
||||
len++;
|
||||
}
|
||||
*dst++ = 0;
|
||||
return len;
|
||||
|
||||
}
|
||||
|
||||
u8 streq(u8 *str1, u8 *str2) {
|
||||
|
||||
u8 s1;
|
||||
u8 s2;
|
||||
|
||||
for (;;) {
|
||||
s1 = *str1++;
|
||||
s2 = *str2++;
|
||||
if (s1 >= 'a' && s1 <= 'z')s1 -= 0x20;
|
||||
if (s2 >= 'a' && s2 <= 'z')s2 -= 0x20;
|
||||
|
||||
if (s1 != s2) return 0;
|
||||
|
||||
if (*str1 == 0 && *str2 == 0)return 1;
|
||||
}
|
||||
}
|
||||
|
||||
u8 streql(u8 *str1, u8 *str2, u8 len) {
|
||||
|
||||
u8 s1;
|
||||
u8 s2;
|
||||
while (len--) {
|
||||
|
||||
s1 = *str1++;
|
||||
s2 = *str2++;
|
||||
if (s1 >= 'a' && s1 <= 'z')s1 -= 0x20;
|
||||
if (s2 >= 'a' && s2 <= 'z')s2 -= 0x20;
|
||||
|
||||
if (s1 != s2) return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
u16 strContain(u8 *target, u8 *str) {
|
||||
|
||||
u16 targ_len = slen(target);
|
||||
u16 eq_len;
|
||||
|
||||
|
||||
for (eq_len = 0; eq_len < targ_len;) {
|
||||
|
||||
if (*str == 0)return 0;
|
||||
if (*str++ == target[eq_len]) {
|
||||
eq_len++;
|
||||
} else {
|
||||
eq_len = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (eq_len != targ_len)return 0;
|
||||
return 1;
|
||||
|
||||
}
|
||||
|
||||
u8 slen(u8 *str) {
|
||||
|
||||
u8 len = 0;
|
||||
while (*str++)len++;
|
||||
return len;
|
||||
}
|
||||
|
||||
u8 scopy(u8 *src, u8 *dst) {
|
||||
|
||||
u8 len = 0;
|
||||
while (*src != 0) {
|
||||
*dst++ = *src++;
|
||||
len++;
|
||||
}
|
||||
*dst = 0;
|
||||
return len;
|
||||
}
|
||||
|
||||
void strhicase(u8 *str, u8 len) {
|
||||
|
||||
if (len) {
|
||||
while (len--) {
|
||||
if (*str >= 'a' && *str <= 'z')*str -= 0x20;
|
||||
str++;
|
||||
}
|
||||
} else {
|
||||
while (*str != 0) {
|
||||
if (*str >= 'a' && *str <= 'z')*str -= 0x20;
|
||||
str++;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
109
src/sys.c
109
src/sys.c
@ -27,26 +27,6 @@ u32 native_tv_mode;
|
||||
#define CIC_6105 5
|
||||
#define CIC_6106 6
|
||||
|
||||
u16 strcon(u8 *str1, u8 *str2, u8 *dst, u16 max_len) {
|
||||
|
||||
u16 len = 0;
|
||||
max_len -= 1;
|
||||
|
||||
while (*str1 != 0 && len < max_len) {
|
||||
*dst++ = *str1++;
|
||||
len++;
|
||||
}
|
||||
|
||||
while (*str2 != 0 && len < max_len) {
|
||||
*dst++ = *str2++;
|
||||
len++;
|
||||
}
|
||||
*dst++ = 0;
|
||||
return len;
|
||||
|
||||
}
|
||||
|
||||
|
||||
void dma_read_s(void * ram_address, unsigned long pi_address, unsigned long len) {
|
||||
|
||||
u32 buff[256];
|
||||
@ -196,8 +176,6 @@ void clean();
|
||||
#define MEM32(addr) *((volatile u32 *)addr)
|
||||
|
||||
|
||||
u8 str_buff[128];
|
||||
|
||||
u8 STR_intToDecString(u32 val, u8 *str) {
|
||||
|
||||
int len;
|
||||
@ -275,91 +253,4 @@ void STR_intToDecStringMin(u32 val, u8 *str, u8 min_size) {
|
||||
}
|
||||
|
||||
|
||||
u8 streq(u8 *str1, u8 *str2) {
|
||||
|
||||
u8 s1;
|
||||
u8 s2;
|
||||
|
||||
for (;;) {
|
||||
s1 = *str1++;
|
||||
s2 = *str2++;
|
||||
if (s1 >= 'a' && s1 <= 'z')s1 -= 0x20;
|
||||
if (s2 >= 'a' && s2 <= 'z')s2 -= 0x20;
|
||||
|
||||
if (s1 != s2) return 0;
|
||||
|
||||
if (*str1 == 0 && *str2 == 0)return 1;
|
||||
}
|
||||
}
|
||||
|
||||
u8 streql(u8 *str1, u8 *str2, u8 len) {
|
||||
|
||||
u8 s1;
|
||||
u8 s2;
|
||||
while (len--) {
|
||||
|
||||
s1 = *str1++;
|
||||
s2 = *str2++;
|
||||
if (s1 >= 'a' && s1 <= 'z')s1 -= 0x20;
|
||||
if (s2 >= 'a' && s2 <= 'z')s2 -= 0x20;
|
||||
|
||||
if (s1 != s2) return 0;
|
||||
}
|
||||
|
||||
return 1;
|
||||
}
|
||||
|
||||
u16 strContain(u8 *target, u8 *str) {
|
||||
|
||||
u16 targ_len = slen(target);
|
||||
u16 eq_len;
|
||||
|
||||
|
||||
for (eq_len = 0; eq_len < targ_len;) {
|
||||
|
||||
if (*str == 0)return 0;
|
||||
if (*str++ == target[eq_len]) {
|
||||
eq_len++;
|
||||
} else {
|
||||
eq_len = 0;
|
||||
}
|
||||
}
|
||||
|
||||
if (eq_len != targ_len)return 0;
|
||||
return 1;
|
||||
|
||||
}
|
||||
|
||||
u8 slen(u8 *str) {
|
||||
|
||||
u8 len = 0;
|
||||
while (*str++)len++;
|
||||
return len;
|
||||
}
|
||||
|
||||
u8 scopy(u8 *src, u8 *dst) {
|
||||
|
||||
u8 len = 0;
|
||||
while (*src != 0) {
|
||||
*dst++ = *src++;
|
||||
len++;
|
||||
}
|
||||
*dst = 0;
|
||||
return len;
|
||||
}
|
||||
|
||||
void strhicase(u8 *str, u8 len) {
|
||||
|
||||
if (len) {
|
||||
while (len--) {
|
||||
if (*str >= 'a' && *str <= 'z')*str -= 0x20;
|
||||
str++;
|
||||
}
|
||||
} else {
|
||||
while (*str != 0) {
|
||||
if (*str >= 'a' && *str <= 'z')*str -= 0x20;
|
||||
str++;
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user