mirror of https://github.com/flysand7/ciabatta.git
Added some string.h functions and fixed up (formatting a bit broken :p)
This commit is contained in:
parent
843f13b504
commit
e93d2070ff
|
@ -1,6 +1,5 @@
|
||||||
|
#include <_platform.h>
|
||||||
#include<_platform.h>
|
#include <locale.h>
|
||||||
#include<locale.h>
|
|
||||||
|
|
||||||
extern int main();
|
extern int main();
|
||||||
|
|
||||||
|
|
|
@ -1,10 +1,57 @@
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
int strcmp(const char *s1, const char *s2)
|
void *memcpy(void *restrict s1, const void *restrict s2, size_t n) {
|
||||||
{
|
const unsigned char *restrict c2 = s2;
|
||||||
while(*s1 != 0 && *s2 != 0) {
|
unsigned char *restrict c1 = s1;
|
||||||
if(*s1 != *s2) break;
|
|
||||||
|
while (n--) {
|
||||||
|
*c1++ = *c2++;
|
||||||
|
}
|
||||||
|
return s1;
|
||||||
|
}
|
||||||
|
|
||||||
|
int memcmp(const void *s1, const void *s2, size_t n) {
|
||||||
|
const unsigned char *u1 = s1;
|
||||||
|
const unsigned char *u2 = s2;
|
||||||
|
|
||||||
|
for (; n--; u1++, u2++) {
|
||||||
|
if (*u1 != *u2) return *u1 - *u2;
|
||||||
}
|
}
|
||||||
if(*s1 > *s2) return 1;
|
|
||||||
if(*s1 < *s2) return -1;
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void *memset(void *s, int c, size_t n) {
|
||||||
|
unsigned char *restrict buf = s;
|
||||||
|
while (n--) {
|
||||||
|
*buf++ = c;
|
||||||
|
}
|
||||||
|
return s;
|
||||||
|
}
|
||||||
|
|
||||||
|
int strcmp(const char *s1, const char *s2) {
|
||||||
|
while (*s1 != 0 && *s2 != 0) {
|
||||||
|
if (*s1 != *s2) break;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(*s1 > *s2) return 1;
|
||||||
|
if(*s1 < *s2) return -1;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t strlen(const char *s) {
|
||||||
|
size_t i = 0;
|
||||||
|
while (s[i]) {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
||||||
|
// __STDC_WANT_LIB_EXT1__
|
||||||
|
size_t strnlen_s(const char *s, size_t maxsize) {
|
||||||
|
size_t i = 0;
|
||||||
|
while (s[i] && i < maxsize) {
|
||||||
|
i++;
|
||||||
|
}
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
|
25
inc/string.h
25
inc/string.h
|
@ -24,18 +24,15 @@ char *strerror(int errnum);
|
||||||
size_t strlen(const char *s);
|
size_t strlen(const char *s);
|
||||||
|
|
||||||
#if __STDC_WANT_LIB_EXT1__
|
#if __STDC_WANT_LIB_EXT1__
|
||||||
errno_t memcpy_s(void * restrict s1, rsize_t s1max, const void * restrict s2, rsize_t n);
|
errno_t memcpy_s(void * restrict s1, rsize_t s1max, const void * restrict s2, rsize_t n);
|
||||||
errno_t memmove_s(void *s1, rsize_t s1max, const void *s2, rsize_t n);
|
errno_t memmove_s(void *s1, rsize_t s1max, const void *s2, rsize_t n);
|
||||||
errno_t strcpy_s(char * restrict s1, rsize_t s1max, const char * restrict s2);
|
errno_t strcpy_s(char * restrict s1, rsize_t s1max, const char * restrict s2);
|
||||||
errno_t strncpy_s(char * restrict s1, rsize_t s1max,
|
errno_t strncpy_s(char * restrict s1, rsize_t s1max,const char * restrict s2, rsize_t n);
|
||||||
const char * restrict s2, rsize_t n);
|
errno_t strcat_s(char * restrict s1, rsize_t s1max, const char * restrict s2);
|
||||||
errno_t strcat_s(char * restrict s1, rsize_t s1max, const char * restrict s2);
|
errno_t strncat_s(char * restrict s1, rsize_t s1max, const char * restrict s2, rsize_t n);
|
||||||
errno_t strncat_s(char * restrict s1, rsize_t s1max,
|
char *strtok_s(char * restrict s1, rsize_t * restrict s1max, const char * restrict s2, char ** restrict ptr);
|
||||||
const char * restrict s2, rsize_t n);
|
errno_t memset_s(void *s, rsize_t smax, int c, rsize_t n);
|
||||||
char *strtok_s(char * restrict s1, rsize_t * restrict s1max,
|
errno_t strerror_s(char *s, rsize_t maxsize, errno_t errnum);
|
||||||
const char * restrict s2, char ** restrict ptr);
|
size_t strerrorlen_s(errno_t errnum);
|
||||||
errno_t memset_s(void *s, rsize_t smax, int c, rsize_t n);
|
size_t strnlen_s(const char *s, size_t maxsize);
|
||||||
errno_t strerror_s(char *s, rsize_t maxsize, errno_t errnum);
|
|
||||||
size_t strerrorlen_s(errno_t errnum);
|
|
||||||
size_t strnlen_s(const char *s, size_t maxsize);
|
|
||||||
#endif
|
#endif
|
4
makefile
4
makefile
|
@ -1,6 +1,6 @@
|
||||||
|
|
||||||
GNUFLAGS=-Werror -Wall -Iinc -Icode
|
GNUFLAGS=-g -gcodeview -Werror -Wall -Iinc -Icode
|
||||||
CLFLAGS=/I:inc /link /incremental:no /subsystem:windows /nodefaultlib kernel32.lib
|
CLFLAGS=/Zi /I:inc /link /incremental:no /subsystem:windows /nodefaultlib kernel32.lib
|
||||||
|
|
||||||
CC=clang
|
CC=clang
|
||||||
CFLAGS=$(GNUFLAGS)
|
CFLAGS=$(GNUFLAGS)
|
||||||
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
version(1);
|
||||||
|
|
||||||
|
project_name = "Ciabatta";
|
||||||
|
|
||||||
|
patterns = {
|
||||||
|
"*.c",
|
||||||
|
"*.cpp",
|
||||||
|
"*.ds",
|
||||||
|
"*.h",
|
||||||
|
"*.bat",
|
||||||
|
"*.vert",
|
||||||
|
"*.frag",
|
||||||
|
"*.geom",
|
||||||
|
"*.sh",
|
||||||
|
"*.4coder",
|
||||||
|
};
|
||||||
|
|
||||||
|
blacklist_patterns = {
|
||||||
|
".*",
|
||||||
|
};
|
||||||
|
|
||||||
|
load_paths = {
|
||||||
|
{
|
||||||
|
{ {"."}, .recursive = true, .relative = true }, .os = "win"
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
command_list = {
|
||||||
|
{
|
||||||
|
.name = "build",
|
||||||
|
.out = "*compilation*",
|
||||||
|
.footer_panel = true,
|
||||||
|
.save_dirty_files = true,
|
||||||
|
.cursor_at_end = true,
|
||||||
|
.cmd = {
|
||||||
|
{ "make", .os = "win" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.name = "bake",
|
||||||
|
.out = "*compilation*",
|
||||||
|
.footer_panel = true,
|
||||||
|
.save_dirty_files = true,
|
||||||
|
.cursor_at_end = true,
|
||||||
|
.cmd = {
|
||||||
|
{ "test\\bake.bat", .os = "win" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
{
|
||||||
|
.name = "debug",
|
||||||
|
.out = "*compilation*",
|
||||||
|
.footer_panel = true,
|
||||||
|
.save_dirty_files = true,
|
||||||
|
.cursor_at_end = true,
|
||||||
|
.cmd = {
|
||||||
|
{ "remedybg.exe test.rdbg", .os = "win" },
|
||||||
|
},
|
||||||
|
},
|
||||||
|
};
|
||||||
|
|
||||||
|
fkey_command[1] = "build";
|
||||||
|
fkey_command[2] = "bake";
|
||||||
|
fkey_command[3] = "debug";
|
|
@ -6,10 +6,10 @@ inctoarg > temp
|
||||||
set /P includes=<temp
|
set /P includes=<temp
|
||||||
del temp
|
del temp
|
||||||
|
|
||||||
cl /Z7 /X /c /I ..\inc %includes% /nologo /GS- /Gm- /GR- /EHa- /Oi /W4 test.c
|
cl /Zi /X /c /I ..\inc %includes% /nologo /GS- /Gm- /GR- /EHa- /Oi /W4 test.c
|
||||||
::clang -c -Wall test.c -otest1.obj
|
::clang -c -Wall test.c -otest1.obj
|
||||||
|
|
||||||
link /nologo test.obj /nodefaultlib user32.lib kernel32.lib ..\ciabatta.lib -subsystem:console
|
link /nologo test.obj /nodefaultlib user32.lib kernel32.lib ..\ciabatta.lib -debug -subsystem:console
|
||||||
::link /nologo test1.obj /nodefaultlib user32.lib kernel32.lib ..\lib\ciabatta.lib -subsystem:console
|
::link /nologo test1.obj /nodefaultlib user32.lib kernel32.lib ..\lib\ciabatta.lib -subsystem:console
|
||||||
|
|
||||||
popd
|
popd
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
#include<stdio.h>
|
#include <stdio.h>
|
||||||
#include<stdlib.h>
|
#include <stdlib.h>
|
||||||
|
|
||||||
int main()
|
int main() {
|
||||||
{
|
|
||||||
char *include = getenv("INCLUDE");
|
char *include = getenv("INCLUDE");
|
||||||
printf(" ");
|
printf(" ");
|
||||||
while(*include != 0) {
|
while (*include != 0) {
|
||||||
printf("-I \"");
|
printf("-I \"");
|
||||||
while(*include != ';' && *include != 0) {
|
while (*include != ';' && *include != 0) {
|
||||||
if (*include == '\\') {
|
if (*include == '\\') {
|
||||||
printf("/");
|
printf("/");
|
||||||
} else {
|
} else {
|
||||||
|
@ -15,7 +14,7 @@ int main()
|
||||||
}
|
}
|
||||||
*include++;
|
*include++;
|
||||||
}
|
}
|
||||||
if(*include == ';') {
|
if (*include == ';') {
|
||||||
++include;
|
++include;
|
||||||
}
|
}
|
||||||
printf("\" ");
|
printf("\" ");
|
||||||
|
|
|
@ -1,10 +1,9 @@
|
||||||
|
|
||||||
#include <assert.h>
|
#include <assert.h>
|
||||||
#include <ctype.h>
|
#include <ctype.h>
|
||||||
int main()
|
|
||||||
{
|
int main(void) {
|
||||||
for(char c = 'a'; c != 'z'; ++c) {
|
for (char c = 'a'; c != 'z'; ++c) {
|
||||||
assert(isupper(toupper(c)));
|
assert(isupper(toupper(c)));
|
||||||
}
|
}
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
Loading…
Reference in New Issue