From dcd63bfd999b04d59f992087d7299929d0924682 Mon Sep 17 00:00:00 2001 From: Artur Tamborski Date: Fri, 14 Jun 2019 20:04:43 +0200 Subject: [PATCH] add stuff --- baci/main.cm | 43 +++++++++++++++++++++++++++++++ baci/main.lst | 46 +++++++++++++++++++++++++++++++++ baci/main.pco | Bin 0 -> 3026 bytes baci/makefile | 11 ++++++++ kolos/main.c | 42 ++++++++++++++++++++++++++++++ kolos/makefile | 42 ++++++++++++++++++++++++++++++ os/Makefile | 11 ++++++++ os/baci/main.cm | 22 ++++++++++++++++ os/baci/main.lst | 24 ++++++++++++++++++ os/baci/main.pco | Bin 0 -> 1970 bytes os/baci/makefile | 11 ++++++++ os/c1/Makefile | 42 ++++++++++++++++++++++++++++++ os/c1/main.c | 8 ++++++ os/c10/Makefile | 42 ++++++++++++++++++++++++++++++ os/c10/main.c | 26 +++++++++++++++++++ os/c11/Makefile | 42 ++++++++++++++++++++++++++++++ os/c11/main.c | 62 +++++++++++++++++++++++++++++++++++++++++++++ os/c2/Makefile | 42 ++++++++++++++++++++++++++++++ os/c2/main.c | 13 ++++++++++ os/c3/Makefile | 42 ++++++++++++++++++++++++++++++ os/c3/main.c | 19 ++++++++++++++ os/c4/Makefile | 42 ++++++++++++++++++++++++++++++ os/c4/main.c | 25 ++++++++++++++++++ os/c5/Makefile | 42 ++++++++++++++++++++++++++++++ os/c5/main.c | 21 +++++++++++++++ os/c6/Makefile | 42 ++++++++++++++++++++++++++++++ os/c6/main.c | 10 ++++++++ os/c7/Makefile | 42 ++++++++++++++++++++++++++++++ os/c7/main.c | 44 ++++++++++++++++++++++++++++++++ os/c8/Makefile | 42 ++++++++++++++++++++++++++++++ os/c8/main.c | 22 ++++++++++++++++ os/c9/Makefile | 42 ++++++++++++++++++++++++++++++ os/c9/main.c | 20 +++++++++++++++ os/os/Makefile | 11 ++++++++ os/os/c1/Makefile | 42 ++++++++++++++++++++++++++++++ os/os/c1/main.c | 8 ++++++ os/os/c10/Makefile | 42 ++++++++++++++++++++++++++++++ os/os/c10/main.c | 26 +++++++++++++++++++ os/os/c11/Makefile | 42 ++++++++++++++++++++++++++++++ os/os/c11/main.c | 62 +++++++++++++++++++++++++++++++++++++++++++++ os/os/c2/Makefile | 42 ++++++++++++++++++++++++++++++ os/os/c2/main.c | 13 ++++++++++ os/os/c3/Makefile | 42 ++++++++++++++++++++++++++++++ os/os/c3/main.c | 19 ++++++++++++++ os/os/c4/Makefile | 42 ++++++++++++++++++++++++++++++ os/os/c4/main.c | 25 ++++++++++++++++++ os/os/c5/Makefile | 42 ++++++++++++++++++++++++++++++ os/os/c5/main.c | 21 +++++++++++++++ os/os/c6/Makefile | 42 ++++++++++++++++++++++++++++++ os/os/c6/main.c | 10 ++++++++ os/os/c7/Makefile | 42 ++++++++++++++++++++++++++++++ os/os/c7/main.c | 44 ++++++++++++++++++++++++++++++++ os/os/c8/Makefile | 42 ++++++++++++++++++++++++++++++ os/os/c8/main.c | 22 ++++++++++++++++ os/os/c9/Makefile | 42 ++++++++++++++++++++++++++++++ os/os/c9/main.c | 20 +++++++++++++++ os/p/c1/Makefile | 42 ++++++++++++++++++++++++++++++ os/p/c1/main.c | 10 ++++++++ os/p/c2/Makefile | 42 ++++++++++++++++++++++++++++++ os/p/c2/main.c | 15 +++++++++++ os/p/c3/Makefile | 42 ++++++++++++++++++++++++++++++ os/p/c3/main.c | 25 ++++++++++++++++++ os/psh/makefile | 42 ++++++++++++++++++++++++++++++ os/psh/src/main.c | 41 ++++++++++++++++++++++++++++++ p/c1/Makefile | 42 ++++++++++++++++++++++++++++++ p/c1/main.c | 24 ++++++++++++++++++ p/c2/Makefile | 42 ++++++++++++++++++++++++++++++ p/c2/main.c | 15 +++++++++++ p/c3/Makefile | 42 ++++++++++++++++++++++++++++++ p/c3/main.c | 25 ++++++++++++++++++ psh | 1 + 71 files changed, 2177 insertions(+) create mode 100644 baci/main.cm create mode 100644 baci/main.lst create mode 100644 baci/main.pco create mode 100644 baci/makefile create mode 100644 kolos/main.c create mode 100644 kolos/makefile create mode 100644 os/Makefile create mode 100644 os/baci/main.cm create mode 100644 os/baci/main.lst create mode 100644 os/baci/main.pco create mode 100644 os/baci/makefile create mode 100644 os/c1/Makefile create mode 100644 os/c1/main.c create mode 100644 os/c10/Makefile create mode 100644 os/c10/main.c create mode 100644 os/c11/Makefile create mode 100644 os/c11/main.c create mode 100644 os/c2/Makefile create mode 100644 os/c2/main.c create mode 100644 os/c3/Makefile create mode 100644 os/c3/main.c create mode 100644 os/c4/Makefile create mode 100644 os/c4/main.c create mode 100644 os/c5/Makefile create mode 100644 os/c5/main.c create mode 100644 os/c6/Makefile create mode 100644 os/c6/main.c create mode 100644 os/c7/Makefile create mode 100644 os/c7/main.c create mode 100644 os/c8/Makefile create mode 100644 os/c8/main.c create mode 100644 os/c9/Makefile create mode 100644 os/c9/main.c create mode 100644 os/os/Makefile create mode 100644 os/os/c1/Makefile create mode 100644 os/os/c1/main.c create mode 100644 os/os/c10/Makefile create mode 100644 os/os/c10/main.c create mode 100644 os/os/c11/Makefile create mode 100644 os/os/c11/main.c create mode 100644 os/os/c2/Makefile create mode 100644 os/os/c2/main.c create mode 100644 os/os/c3/Makefile create mode 100644 os/os/c3/main.c create mode 100644 os/os/c4/Makefile create mode 100644 os/os/c4/main.c create mode 100644 os/os/c5/Makefile create mode 100644 os/os/c5/main.c create mode 100644 os/os/c6/Makefile create mode 100644 os/os/c6/main.c create mode 100644 os/os/c7/Makefile create mode 100644 os/os/c7/main.c create mode 100644 os/os/c8/Makefile create mode 100644 os/os/c8/main.c create mode 100644 os/os/c9/Makefile create mode 100644 os/os/c9/main.c create mode 100644 os/p/c1/Makefile create mode 100644 os/p/c1/main.c create mode 100644 os/p/c2/Makefile create mode 100644 os/p/c2/main.c create mode 100644 os/p/c3/Makefile create mode 100644 os/p/c3/main.c create mode 100644 os/psh/makefile create mode 100644 os/psh/src/main.c create mode 100644 p/c1/Makefile create mode 100644 p/c1/main.c create mode 100644 p/c2/Makefile create mode 100644 p/c2/main.c create mode 100644 p/c3/Makefile create mode 100644 p/c3/main.c create mode 160000 psh diff --git a/baci/main.cm b/baci/main.cm new file mode 100644 index 0000000..c61368f --- /dev/null +++ b/baci/main.cm @@ -0,0 +1,43 @@ +binarysem sem_produce; +binarysem sem_consume; + +int g_value; + +void produce(char id) +{ + int r; + + wait(sem_produce); + + r = random(100); + cout << "Producer " << id << " made: " << r << endl; + g_value = r; + + signal(sem_consume); +} + +void consume(char id) +{ + wait(sem_consume); + + cout << "Consumer " << id << " ate: " << g_value << endl; + + signal(sem_produce); +} + +main() +{ + initialsem(sem_produce, 1); + initialsem(sem_consume, 1); + + cobegin { + produce('A'); + produce('B'); + + consume('A'); + consume('B'); + consume('C'); + } + + cout << "done." << endl; +} diff --git a/baci/main.lst b/baci/main.lst new file mode 100644 index 0000000..c69e724 --- /dev/null +++ b/baci/main.lst @@ -0,0 +1,46 @@ +BACI System: C-- to PCODE Compiler in C, 11:30 1 Oct 2012 +Source file: main.cm Sat Dec 1 11:07:53 2018 + line pc + 1 0 binarysem sem_produce; + 2 0 binarysem sem_consume; + 3 0 + 4 0 int g_value; + 5 0 + 6 0 void produce(char id) + 7 0 { + 8 0 int r; + 9 0 + 10 0 wait(sem_produce); + 11 2 + 12 2 r = random(100); + 13 6 cout << "Producer " << id << " made: " << r << endl; + 14 13 g_value = r; + 15 16 + 16 16 signal(sem_consume); + 17 18 } + 18 19 + 19 19 void consume(char id) + 20 19 { + 21 19 wait(sem_consume); + 22 21 + 23 21 cout << "Consumer " << id << " ate: " << g_value << endl; + 24 28 + 25 28 signal(sem_produce); + 26 30 } + 27 31 + 28 31 main() + 29 32 { + 30 32 initialsem(sem_produce, 1); + 31 35 initialsem(sem_consume, 1); + 32 38 + 33 38 cobegin { + 34 39 produce('A'); + 35 43 produce('B'); + 36 47 + 37 47 consume('A'); + 38 51 consume('B'); + 39 55 consume('C'); + 40 59 } + 41 60 + 42 60 cout << "done." << endl; + 43 62 } diff --git a/baci/main.pco b/baci/main.pco new file mode 100644 index 0000000000000000000000000000000000000000..4b8db0b937f9580e40ed0441931d5da08fad074a GIT binary patch literal 3026 zcmb_e%W~UB5Y(ApF?WS7;z3B(O{U}&D=y0=`QnocB0(An9xM=)rF?z5XBNONUCAk1 zr4`Y;)6?7g{BXNk%hTJjFX|gv&F9j$@@4gKcQ329K9p6_N!iHiH;JN~WFaDvJZyT2 z7g0QWYERv!kR5v6NS&9>yGsSu!tU2IL}v*Y!eYt#{JAP-QXx!s z?C{F!Z6?B;{BsqM2p`#qL_p%9nN5-bL7q5ueWJwz2)?cc1Y|&#=yvV;7y{NfM6S@T zq*^Tzh4%RU7?l9Q*Ax|jIWnJyQ0R#e?nOa!1kL7#4GsvsnMN7|q24Jwd4ACx(TORF z%+$<3gNZ1MWwR|_ z(NJ!SrZ0CT4osA)Z2l5ypZ^r;-wuUHSL~!|yE?DfTD+jnx9nQCjpTh>mm3@<+$Wcp z^Y+vi-Td+r0E-FGrSE(Vke_J+hbeQXKWMr}t8K3Wv&*V7R zT`vKidF56=y~>aNH$Gi%gIgROCWsRn7H+}8CtrvCw%Yo5qr}Z(WK0e-l z3#69Kt8VS0!apf0?r^EvpCUiX{SN`6@O|AcSrrjwreLBaC?hq z)y2xT9g(~zux*>--30~uWb5W|>g6MzVv=`V{x-972{z(bvXp$MNt4&3nKnZAa3i5! z@Pj^km~D&a(|%tzdprYoJiq#~ZRi}HYCFrZ!(mr6EkRSHH6KFGdxP;{1mLaph>s_I z^|-(&CE)kq9NGQgI5?sHDvxnF3STNHnl>h>9sCZ!(J%UP9eR+|UzL2MxOaqwB$TdC z02h)li@g + +int main(int argc, char **argv) +{ + FILE *fp, *targetfp; + char *target; + int chr, i; + + if (argc < 3) + { + printf("%s \n", argv[0]); + puts("not enough args, quitting"); + return 1; + } + + /* last argument is treated as target file name */ + target = argv[argc-1]; + targetfp = fopen(target, "a"); + + for (i = 1; i < argc - 1; i++) + { + if ((fp = fopen(argv[i], "r")) == NULL) + { + printf("could not open file %s, quitting.", argv[i]); + fflush(targetfp); + fclose(targetfp); + return 2; + } + + while ((chr = fgetc(fp)) != EOF) + { + fputc(chr, targetfp); + } + + fflush(targetfp); + fclose(fp); + } + + fclose(targetfp); + + return 0; +} diff --git a/kolos/makefile b/kolos/makefile new file mode 100644 index 0000000..089219d --- /dev/null +++ b/kolos/makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/Makefile b/os/Makefile new file mode 100644 index 0000000..25df25e --- /dev/null +++ b/os/Makefile @@ -0,0 +1,11 @@ +TARGETS = all clean + +SUBDIRS = $(wildcard */.) + +$(TARGETS): $(SUBDIRS) + @echo Done. + +$(SUBDIRS): + @$(MAKE) -C $@ $(MAKECMDGOALS) + +.PHONY: $(TARGETS) $(SUBDIRS) diff --git a/os/baci/main.cm b/os/baci/main.cm new file mode 100644 index 0000000..30f0a4b --- /dev/null +++ b/os/baci/main.cm @@ -0,0 +1,22 @@ +void p1(void) +{ + cout << "p1()" << endl; +} + +void p2(void) +{ + cout << "p2()" << endl; +} + +void p3(void) +{ + cout << "p3()" << endl; +} + +main() +{ + cobegin { + } + + cout << "done." << endl; +} diff --git a/os/baci/main.lst b/os/baci/main.lst new file mode 100644 index 0000000..0122589 --- /dev/null +++ b/os/baci/main.lst @@ -0,0 +1,24 @@ +BACI System: C-- to PCODE Compiler in C, 11:30 1 Oct 2012 +Source file: main.cm Sat Nov 17 11:13:44 2018 + line pc + 1 0 binarysem print_semaphore; + 2 0 + 3 0 void hello (char id) + 4 0 { + 5 0 wait(print_semaphore); + 6 2 cout << "Hi! I am a process!" << endl; + 7 4 cout << "My ID is: " << id << endl; + 8 8 cout << "Bye!" << endl; + 9 10 signal(print_semaphore); + 10 12 } + 11 13 + 12 13 main() + 13 14 { + 14 14 initialsem(print_semaphore,1); + 15 17 cobegin { + 16 18 hello('A'); hello('B'); hello('C'); + 17 30 } + 18 31 + 19 31 cout << "All processes finished" << endl; + 20 33 } + 21 35 diff --git a/os/baci/main.pco b/os/baci/main.pco new file mode 100644 index 0000000000000000000000000000000000000000..e4902e86f3fa855f41e66331f35caaeee3168fa5 GIT binary patch literal 1970 zcmaJ?!E)L#5arBQY|fMpvVjn8gd{D~Ht9evJ#`!qM6E4*Y?Fq5ec!HxEjQC@u#BHp zZ=bZg()D7wqRpwQbvCEva7cAdUzZOzx3tW&!lb$+V`=%0l$ysQB2x6QttlF*sK3dN z+LOdCW2iSU~>$OuRb6Fk8zcy4VXwwYjG9NcK=*=7Hw8)yxR{X>E8G zH1pH0OJPRKGsW5?5Hjj*7-7xr9)dZ7-Y!ps@qlLv8+iVUhxfV51I>T&Ky$!z2_Dwm z)x%#M9?3^$Z*n7s<{&!I!+YF~P7DsV3uZy{EJW~MXxWI{>gM+Tado%4U6V^xV|V%$ z17@dfZT1FLf|eTllPG`sK~$d#O;qYV*}Tk>lt=Xo`eetZS#Bw*^UQ3KKb(Jq!7xA8 zx*QG$0JuqjUC#Lb4iTLW@zvyT&S)-#qBOStUg<0;o`uMzx9=q{JYT@n@gPjtq-UL` zxufts=+Ptw9ghDp!KK-Gg60*jVfm>O)ikMU;;u+aDk}3^(+l^!zvAGW8uAtdwINaTb%zhxXAy-Q^!_^Yn20$~i@8{tNLj2Siw>B9TNQ=q4zWsi<;{=YI3JUfqB2 z)E~_SttiPTLB8Z$T~!yoFDK+VnQBhG>yy6dEzO}W*JH^c{mK@{n(lB1 zP*Rr3sqbn7n}^bH&iR5Mn`G@4%9{O+!Gu0S&fMJyJN/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/c1/main.c b/os/c1/main.c new file mode 100644 index 0000000..4e3c521 --- /dev/null +++ b/os/c1/main.c @@ -0,0 +1,8 @@ +#include + +int main(int argc, char **argv) +{ + puts("Hello world!"); + + return (0); +} diff --git a/os/c10/Makefile b/os/c10/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/c10/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/c10/main.c b/os/c10/main.c new file mode 100644 index 0000000..bd97f6f --- /dev/null +++ b/os/c10/main.c @@ -0,0 +1,26 @@ +#include +#include + +unsigned toDec(char *s, int base) +{ + int idx, ret, len, old_base; + + ret = 0; + len = strlen(s); + old_base = base; + + while (len--) + { + idx = s[len] < '9' ? s[len] - 48 : s[len] - 55; + ret += idx * base; + base *= old_base; + } + + return ret / old_base; +} + +int main(int argc, char **argv) +{ + printf("%d \n", toDec("128", 10)); + printf("%X \n", toDec("EF", 16)); +} diff --git a/os/c11/Makefile b/os/c11/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/c11/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/c11/main.c b/os/c11/main.c new file mode 100644 index 0000000..fb440bd --- /dev/null +++ b/os/c11/main.c @@ -0,0 +1,62 @@ +#include +#include + +int toInt(char *s) +{ + int ret = 0, base = 1; + int len; + + len = strlen(s); + while (s[--len] >= '0') + { + ret += (s[len] - '0') * base; + base *= 10; + } + + if (s[0] == '-') + ret *= -1; + + return (ret); +} + +unsigned toDec(char *s, int base) +{ + int idx, ret, len, old_base; + + ret = 0; + len = strlen(s); + old_base = base; + + while (len--) + { + idx = s[len] < '9' ? s[len] - 48 : s[len] - 55; + ret += idx * base; + base *= old_base; + } + + return ret / old_base; +} + +char *fromDec(unsigned int x, int base) +{ + static char buf[80] = {0}; + char *p = &buf[sizeof(buf) - 2]; + + do { + *p = (x % base) + 48; + *p += *p < '9' ? 0 : 7; + p -= 1; + } while (x /= base); + + return ++p; +} + +int main(int argc, char **argv) +{ + int number, from, to; + + to = toInt(argv[3]); + from = toInt(argv[2]); + number = toDec(argv[1], from); + puts(fromDec(number, to)); +} diff --git a/os/c2/Makefile b/os/c2/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/c2/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/c2/main.c b/os/c2/main.c new file mode 100644 index 0000000..8333f21 --- /dev/null +++ b/os/c2/main.c @@ -0,0 +1,13 @@ +#include + +int main(void) +{ + int i; + + for (i = 1; i <= 100; i++) + if (i % 3 == 0) + printf("%d%c", i, i % 10 == 0 ? '\n' : '\t'); + + puts(""); + return (0); +} diff --git a/os/c3/Makefile b/os/c3/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/c3/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/c3/main.c b/os/c3/main.c new file mode 100644 index 0000000..3437965 --- /dev/null +++ b/os/c3/main.c @@ -0,0 +1,19 @@ +#include + +int main(void) +{ + int x = 1; + int i, j; + + for (i = 1; i <= 10; i++) + { + for (j = 1; j <= 10; j++) + { + x = i * j; + printf("%*d", 4, x); + } + puts(""); + } + + return (0); +} diff --git a/os/c4/Makefile b/os/c4/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/c4/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/c4/main.c b/os/c4/main.c new file mode 100644 index 0000000..579d7ba --- /dev/null +++ b/os/c4/main.c @@ -0,0 +1,25 @@ +#include +#include + +int toInt(char *s) +{ + int ret = 0, base = 1; + int len; + + len = strlen(s); + while (s[--len] >= '0') + { + ret += (s[len] - '0') * base; + base *= 10; + } + + if (s[0] == '-') + ret *= -1; + + return (ret); +} + +int main(int argc, char **argv) +{ + printf("%d\n", toInt(argv[1])); +} diff --git a/os/c5/Makefile b/os/c5/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/c5/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/c5/main.c b/os/c5/main.c new file mode 100644 index 0000000..335fb6f --- /dev/null +++ b/os/c5/main.c @@ -0,0 +1,21 @@ +#include +#include + +int nwd(int a, int b) +{ + int c; + + while (b != 0) + { + c = a % b; + a = b; + b = c; + } + + return (a); +} + +int main(void) +{ + printf("%d\n", nwd(36, 48)); +} diff --git a/os/c6/Makefile b/os/c6/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/c6/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/c6/main.c b/os/c6/main.c new file mode 100644 index 0000000..7016b5e --- /dev/null +++ b/os/c6/main.c @@ -0,0 +1,10 @@ +#include +#include + +int main(int argc, char **argv) +{ + int i; + + for (i = 1; i < argc; i++) + puts(argv[i]); +} diff --git a/os/c7/Makefile b/os/c7/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/c7/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/c7/main.c b/os/c7/main.c new file mode 100644 index 0000000..b6de32c --- /dev/null +++ b/os/c7/main.c @@ -0,0 +1,44 @@ +#include +#include + +int nwd(int a, int b) +{ + int c; + + while (b != 0) + { + c = a % b; + a = b; + b = c; + } + + return (a); +} + +int toInt(char *s) +{ + int ret = 0, base = 1; + int len; + + len = strlen(s); + while (s[--len] >= '0') + { + ret += (s[len] - '0') * base; + base *= 10; + } + + if (s[0] == '-') + ret *= -1; + + return (ret); +} + +int main(int argc, char **argv) +{ + int a, b; + + a = toInt(argv[1]); + b = toInt(argv[2]); + + printf("%d\n", nwd(a, b)); +} diff --git a/os/c8/Makefile b/os/c8/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/c8/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/c8/main.c b/os/c8/main.c new file mode 100644 index 0000000..4559dc9 --- /dev/null +++ b/os/c8/main.c @@ -0,0 +1,22 @@ +#include +#include + +int toHex(unsigned x) +{ + unsigned char *p; + int i; + + p = (unsigned char *)&x; + + for (i = 0; i < sizeof(x); i++) + printf("%x\n", p[i]); + + return -1; +} + +int main(int argc, char **argv) +{ + unsigned int x = 0xdeadbeef; + + printf("%x\n", toHex(x)); +} diff --git a/os/c9/Makefile b/os/c9/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/c9/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/c9/main.c b/os/c9/main.c new file mode 100644 index 0000000..d7c257a --- /dev/null +++ b/os/c9/main.c @@ -0,0 +1,20 @@ +#include + +char *fromDec(unsigned int x, int base) +{ + static char buf[128] = {0}; + char *p = &buf[sizeof(buf) - 2]; + + do { + *p = (x % base) + 48; + *p += *p < '9' ? 0 : 7; + p -= 1; + } while (x /= base); + + return ++p; +} + +int main(int argc, char **argv) +{ + puts(fromDec(0xaa, 16)); +} diff --git a/os/os/Makefile b/os/os/Makefile new file mode 100644 index 0000000..25df25e --- /dev/null +++ b/os/os/Makefile @@ -0,0 +1,11 @@ +TARGETS = all clean + +SUBDIRS = $(wildcard */.) + +$(TARGETS): $(SUBDIRS) + @echo Done. + +$(SUBDIRS): + @$(MAKE) -C $@ $(MAKECMDGOALS) + +.PHONY: $(TARGETS) $(SUBDIRS) diff --git a/os/os/c1/Makefile b/os/os/c1/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/os/c1/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/os/c1/main.c b/os/os/c1/main.c new file mode 100644 index 0000000..4e3c521 --- /dev/null +++ b/os/os/c1/main.c @@ -0,0 +1,8 @@ +#include + +int main(int argc, char **argv) +{ + puts("Hello world!"); + + return (0); +} diff --git a/os/os/c10/Makefile b/os/os/c10/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/os/c10/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/os/c10/main.c b/os/os/c10/main.c new file mode 100644 index 0000000..bd97f6f --- /dev/null +++ b/os/os/c10/main.c @@ -0,0 +1,26 @@ +#include +#include + +unsigned toDec(char *s, int base) +{ + int idx, ret, len, old_base; + + ret = 0; + len = strlen(s); + old_base = base; + + while (len--) + { + idx = s[len] < '9' ? s[len] - 48 : s[len] - 55; + ret += idx * base; + base *= old_base; + } + + return ret / old_base; +} + +int main(int argc, char **argv) +{ + printf("%d \n", toDec("128", 10)); + printf("%X \n", toDec("EF", 16)); +} diff --git a/os/os/c11/Makefile b/os/os/c11/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/os/c11/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/os/c11/main.c b/os/os/c11/main.c new file mode 100644 index 0000000..fb440bd --- /dev/null +++ b/os/os/c11/main.c @@ -0,0 +1,62 @@ +#include +#include + +int toInt(char *s) +{ + int ret = 0, base = 1; + int len; + + len = strlen(s); + while (s[--len] >= '0') + { + ret += (s[len] - '0') * base; + base *= 10; + } + + if (s[0] == '-') + ret *= -1; + + return (ret); +} + +unsigned toDec(char *s, int base) +{ + int idx, ret, len, old_base; + + ret = 0; + len = strlen(s); + old_base = base; + + while (len--) + { + idx = s[len] < '9' ? s[len] - 48 : s[len] - 55; + ret += idx * base; + base *= old_base; + } + + return ret / old_base; +} + +char *fromDec(unsigned int x, int base) +{ + static char buf[80] = {0}; + char *p = &buf[sizeof(buf) - 2]; + + do { + *p = (x % base) + 48; + *p += *p < '9' ? 0 : 7; + p -= 1; + } while (x /= base); + + return ++p; +} + +int main(int argc, char **argv) +{ + int number, from, to; + + to = toInt(argv[3]); + from = toInt(argv[2]); + number = toDec(argv[1], from); + puts(fromDec(number, to)); +} diff --git a/os/os/c2/Makefile b/os/os/c2/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/os/c2/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/os/c2/main.c b/os/os/c2/main.c new file mode 100644 index 0000000..8333f21 --- /dev/null +++ b/os/os/c2/main.c @@ -0,0 +1,13 @@ +#include + +int main(void) +{ + int i; + + for (i = 1; i <= 100; i++) + if (i % 3 == 0) + printf("%d%c", i, i % 10 == 0 ? '\n' : '\t'); + + puts(""); + return (0); +} diff --git a/os/os/c3/Makefile b/os/os/c3/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/os/c3/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/os/c3/main.c b/os/os/c3/main.c new file mode 100644 index 0000000..3437965 --- /dev/null +++ b/os/os/c3/main.c @@ -0,0 +1,19 @@ +#include + +int main(void) +{ + int x = 1; + int i, j; + + for (i = 1; i <= 10; i++) + { + for (j = 1; j <= 10; j++) + { + x = i * j; + printf("%*d", 4, x); + } + puts(""); + } + + return (0); +} diff --git a/os/os/c4/Makefile b/os/os/c4/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/os/c4/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/os/c4/main.c b/os/os/c4/main.c new file mode 100644 index 0000000..579d7ba --- /dev/null +++ b/os/os/c4/main.c @@ -0,0 +1,25 @@ +#include +#include + +int toInt(char *s) +{ + int ret = 0, base = 1; + int len; + + len = strlen(s); + while (s[--len] >= '0') + { + ret += (s[len] - '0') * base; + base *= 10; + } + + if (s[0] == '-') + ret *= -1; + + return (ret); +} + +int main(int argc, char **argv) +{ + printf("%d\n", toInt(argv[1])); +} diff --git a/os/os/c5/Makefile b/os/os/c5/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/os/c5/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/os/c5/main.c b/os/os/c5/main.c new file mode 100644 index 0000000..335fb6f --- /dev/null +++ b/os/os/c5/main.c @@ -0,0 +1,21 @@ +#include +#include + +int nwd(int a, int b) +{ + int c; + + while (b != 0) + { + c = a % b; + a = b; + b = c; + } + + return (a); +} + +int main(void) +{ + printf("%d\n", nwd(36, 48)); +} diff --git a/os/os/c6/Makefile b/os/os/c6/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/os/c6/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/os/c6/main.c b/os/os/c6/main.c new file mode 100644 index 0000000..7016b5e --- /dev/null +++ b/os/os/c6/main.c @@ -0,0 +1,10 @@ +#include +#include + +int main(int argc, char **argv) +{ + int i; + + for (i = 1; i < argc; i++) + puts(argv[i]); +} diff --git a/os/os/c7/Makefile b/os/os/c7/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/os/c7/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/os/c7/main.c b/os/os/c7/main.c new file mode 100644 index 0000000..b6de32c --- /dev/null +++ b/os/os/c7/main.c @@ -0,0 +1,44 @@ +#include +#include + +int nwd(int a, int b) +{ + int c; + + while (b != 0) + { + c = a % b; + a = b; + b = c; + } + + return (a); +} + +int toInt(char *s) +{ + int ret = 0, base = 1; + int len; + + len = strlen(s); + while (s[--len] >= '0') + { + ret += (s[len] - '0') * base; + base *= 10; + } + + if (s[0] == '-') + ret *= -1; + + return (ret); +} + +int main(int argc, char **argv) +{ + int a, b; + + a = toInt(argv[1]); + b = toInt(argv[2]); + + printf("%d\n", nwd(a, b)); +} diff --git a/os/os/c8/Makefile b/os/os/c8/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/os/c8/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/os/c8/main.c b/os/os/c8/main.c new file mode 100644 index 0000000..4559dc9 --- /dev/null +++ b/os/os/c8/main.c @@ -0,0 +1,22 @@ +#include +#include + +int toHex(unsigned x) +{ + unsigned char *p; + int i; + + p = (unsigned char *)&x; + + for (i = 0; i < sizeof(x); i++) + printf("%x\n", p[i]); + + return -1; +} + +int main(int argc, char **argv) +{ + unsigned int x = 0xdeadbeef; + + printf("%x\n", toHex(x)); +} diff --git a/os/os/c9/Makefile b/os/os/c9/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/os/c9/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/os/c9/main.c b/os/os/c9/main.c new file mode 100644 index 0000000..d7c257a --- /dev/null +++ b/os/os/c9/main.c @@ -0,0 +1,20 @@ +#include + +char *fromDec(unsigned int x, int base) +{ + static char buf[128] = {0}; + char *p = &buf[sizeof(buf) - 2]; + + do { + *p = (x % base) + 48; + *p += *p < '9' ? 0 : 7; + p -= 1; + } while (x /= base); + + return ++p; +} + +int main(int argc, char **argv) +{ + puts(fromDec(0xaa, 16)); +} diff --git a/os/p/c1/Makefile b/os/p/c1/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/p/c1/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/p/c1/main.c b/os/p/c1/main.c new file mode 100644 index 0000000..726f29d --- /dev/null +++ b/os/p/c1/main.c @@ -0,0 +1,10 @@ +#include + +int main(int argc, char **argv) +{ + while (--argc > 0) + printf("%s ", argv[argc]); + + puts(""); + return (0); +} diff --git a/os/p/c2/Makefile b/os/p/c2/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/p/c2/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/p/c2/main.c b/os/p/c2/main.c new file mode 100644 index 0000000..89e8af4 --- /dev/null +++ b/os/p/c2/main.c @@ -0,0 +1,15 @@ +#include + +int main(void) +{ + int input, sum = 0; + + puts("Press CTRL+D to stop reading"); + + while (scanf("%i", &input) != EOF) + sum += input; + + puts("-- sum --"); + printf("%d\n", sum); + return (0); +} diff --git a/os/p/c3/Makefile b/os/p/c3/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/p/c3/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/p/c3/main.c b/os/p/c3/main.c new file mode 100644 index 0000000..579d7ba --- /dev/null +++ b/os/p/c3/main.c @@ -0,0 +1,25 @@ +#include +#include + +int toInt(char *s) +{ + int ret = 0, base = 1; + int len; + + len = strlen(s); + while (s[--len] >= '0') + { + ret += (s[len] - '0') * base; + base *= 10; + } + + if (s[0] == '-') + ret *= -1; + + return (ret); +} + +int main(int argc, char **argv) +{ + printf("%d\n", toInt(argv[1])); +} diff --git a/os/psh/makefile b/os/psh/makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/os/psh/makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/os/psh/src/main.c b/os/psh/src/main.c new file mode 100644 index 0000000..d8c1b8c --- /dev/null +++ b/os/psh/src/main.c @@ -0,0 +1,41 @@ +#include +#include +#include +#include + + +/* should be enough */ +#define LINE_MAX 1024 +#define PATH_MAX 4096 + + +int +main(int argc, char **argv) +{ + char line[LINE_MAX]; + char cwd[PATH_MAX]; + char *pline = line; + + for (;;) + { + if (getcwd(cwd, sizeof(cwd)) == NULL) + { + perror("getcwd()"); + exit(-1); + } + + printf("[%s] ", cwd); + + fgets(line, sizeof(line), stdin); + + if (strncmp("cd ", line, sizeof("cd "))) + { + while (*pline != ' ') + pline++; + + chdir(pline); + } + } + + return 0; +} diff --git a/p/c1/Makefile b/p/c1/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/p/c1/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/p/c1/main.c b/p/c1/main.c new file mode 100644 index 0000000..3058d4d --- /dev/null +++ b/p/c1/main.c @@ -0,0 +1,24 @@ +#include + +struct c +{ + void *a; + int b; + char c[10]; +}; + +int main(int argc, char **argv) +{ + struct c cc[10]; + + printf("%zu \n", sizeof(struct c)); + printf("%zu \n", sizeof(cc)); + printf("%zu \n", sizeof(cc[0])); + printf("%zu \n", sizeof(*cc)); + + while (--argc > 0) + printf("%s ", argv[argc]); + + puts(""); + return (0); +} diff --git a/p/c2/Makefile b/p/c2/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/p/c2/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/p/c2/main.c b/p/c2/main.c new file mode 100644 index 0000000..89e8af4 --- /dev/null +++ b/p/c2/main.c @@ -0,0 +1,15 @@ +#include + +int main(void) +{ + int input, sum = 0; + + puts("Press CTRL+D to stop reading"); + + while (scanf("%i", &input) != EOF) + sum += input; + + puts("-- sum --"); + printf("%d\n", sum); + return (0); +} diff --git a/p/c3/Makefile b/p/c3/Makefile new file mode 100644 index 0000000..bf14362 --- /dev/null +++ b/p/c3/Makefile @@ -0,0 +1,42 @@ +TARGET = $(notdir $(CURDIR)) + +SRCEXT = .c +INCEXT = .h +OBJEXT = .o + +SRCDIR = . +INCDIR = . +OBJDIR = . + +CC = gcc +LD = gcc + +LDFLAGS = -lm -lpthread +CCFLAGS = -std=gnu99 -g -ggdb -Og -Wall -Wextra -pedantic + +SRCTREE = $(shell find $(SRCDIR) -type d) +INCS = $(shell find $(INCDIR) -type f -name '*$(INCEXT)') +SRCS = $(shell find $(SRCDIR) -type f -name '*$(SRCEXT)') +OBJTREE = $(foreach D,$(SRCTREE),$(shell echo $(D) | sed 's/$(SRCDIR)/$(OBJDIR)/')) +OBJSTMP = $(foreach F,$(SRCS),$(shell echo $(F) | sed -e 's/$(SRCDIR)/$(OBJDIR)/')) +OBJS = $(foreach O,$(OBJSTMP),$(shell echo $(O) | sed -e 's/\$(SRCEXT)/\$(OBJEXT)/')) + +all: $(TARGET) + @echo Done. + +run: $(TARGET) + @./$(TARGET) + +clean: + @rm -r $(TARGET) $(OBJS) $(OBJDIR) 2>/dev/null || true + +$(TARGET): $(OBJS) | $(OBJDIR) + @$(LD) $(LDFLAGS) -L$(OBJDIR) -o $@ $^ + +$(OBJS): $(OBJDIR)/%$(OBJEXT) : $(SRCDIR)/%$(SRCEXT) | $(OBJDIR) + @$(CC) $(CCFLAGS) -I$(INCDIR) -c -o $@ $? + +$(OBJDIR): + @mkdir -p $(OBJDIR) $(OBJTREE) + +.PHONY: all run clean diff --git a/p/c3/main.c b/p/c3/main.c new file mode 100644 index 0000000..579d7ba --- /dev/null +++ b/p/c3/main.c @@ -0,0 +1,25 @@ +#include +#include + +int toInt(char *s) +{ + int ret = 0, base = 1; + int len; + + len = strlen(s); + while (s[--len] >= '0') + { + ret += (s[len] - '0') * base; + base *= 10; + } + + if (s[0] == '-') + ret *= -1; + + return (ret); +} + +int main(int argc, char **argv) +{ + printf("%d\n", toInt(argv[1])); +} diff --git a/psh b/psh new file mode 160000 index 0000000..360cf24 --- /dev/null +++ b/psh @@ -0,0 +1 @@ +Subproject commit 360cf24ae24b92e11232dd587534c33d238539b3