diff --git a/final/makefile b/final/makefile index 6d99afc..0fdd791 100755 --- a/final/makefile +++ b/final/makefile @@ -3,7 +3,7 @@ all: cos2000.img cos2000.img: (dd if=/dev/zero of=cos2000.img count=2880 bs=512) (mkfs.msdos -F 12 -n "COS2000" cos2000.img) - (mkdir ./mnt) + (mkdir ./mnt -p) (fusefat cos2000.img ./mnt -o rw+) (cp ../boot/loader.sys ./mnt/) (cp ../system/system.sys ./mnt/;sync) diff --git a/include/string.h b/include/string.h index 2db80d1..c9dacf9 100755 --- a/include/string.h +++ b/include/string.h @@ -5,4 +5,10 @@ u32 strlen(const u8 *src); u8 *strchr(const u8 *src, u8 achar); u8 *strncpy(const u8 *src,u8 *des,u32 count); u8 *strcat(const u8 *src,u8 *des); -u8* strcpy(const u8 *src, u8 *des); +u8 *strcpy(const u8 *src, u8 *des); +void strtolower(u8 *src); +void strtoupper(u8 *src); +void stronecase(u8 *src); +void strsetlen(u8 *src, u8 size); +void strinvert(u8 *src); +void strreplace(u8 *src, u8 search, u8 replaced); diff --git a/lib/string.c b/lib/string.c index 3fa9764..2f88752 100755 --- a/lib/string.c +++ b/lib/string.c @@ -68,6 +68,7 @@ u8 *strncpy(const u8 * src, u8 * des, u32 count) /******************************************************************************/ /* concatene 2 chaines de caractère */ + u8 *strcat(const u8 * src, u8 * des) { u8 *temp = des; @@ -76,3 +77,101 @@ u8 *strcat(const u8 * src, u8 * des) while ((*des++ = *src++) != 0) ; return temp; } + +/******************************************************************************/ + +/* Met en minuscule */ + +void strtolower(u8 * src) +{ + while (*src != 0) { + if ((*src >= 'A') && (*src <= 'Z')) + *src=*src+'a'-'A'; + src++; + } +} + +/******************************************************************************/ + +/* Met en majuscule */ + +void strtoupper(u8 * src) +{ + while (*src != 0) { + if ((*src >= 'a') && (*src <= 'z')) + *src=*src-('a'-'A'); + src++; + } +} + +/******************************************************************************/ + +/* inverse la casse */ + +void strinvertcase(u8 * src) +{ + while (*src != 0) { + if ((*src >= 'A') && (*src <= 'Z')) + *src=*src+'a'-'A'; + else if ((*src >= 'a') && (*src <= 'z')) + *src=*src-('a'-'A'); + src++; + } +} + +/******************************************************************************/ + +/* Met une majuscule et met le reste en minuscule */ + +void stronecase(u8 * src) +{ + if ((*src >= 'a') && (*src <= 'z')) + *src=*src-('a'-'A'); + while (*src != 0) { + src++; + if ((*src >= 'A') && (*src <= 'Z')) + *src=*src+'a'-'A'; + } +} + +/******************************************************************************/ + +/* Fixe la taille de la chaine */ + +void strsetlen(u8 * src, u8 size) +{ + *(src+size)='\000'; +} + +/******************************************************************************/ + +/* Inverse la chaine */ + +void strinvert(u8 *src) +{ + u8 *dst=src+strlen(src)-1; + while (src < dst) { + u8 char1=*dst; + u8 char2=*src; + *dst=char2; + *src=char1; + src++; + dst--; + } +} + +/******************************************************************************/ + +/* Remplace tout les caractères rechercher par un autre */ + +void strreplace(u8 *src, u8 search, u8 replaced) +{ + u8 *pos=strchr(src, search); + while (pos!=0) + { + *pos=replaced; + pos=strchr(src, search); + } +} + + diff --git a/system/system.c b/system/system.c index 443aac8..43048f2 100755 --- a/system/system.c +++ b/system/system.c @@ -80,6 +80,15 @@ int main(void) cpu.stepping, cpu.models, cpu.family, &cpu.detectedname, &cpu.techs); ok(); + + u8 test[]="ceCI est UN(une) tes1\000"; + u8 test2[]="ceCI est UN(une) tes2!\000"; + printf(&test); + strreplace(&test, 'e', 'q'); + strreplace(&test2, '(', '['); + printf(&test); + printf(&test2); + while (1) { key = waitascii(); putchar(key);