add stuff
This commit is contained in:
commit
dcd63bfd99
43
baci/main.cm
Normal file
43
baci/main.cm
Normal file
@ -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;
|
||||
}
|
46
baci/main.lst
Normal file
46
baci/main.lst
Normal file
@ -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 }
|
BIN
baci/main.pco
Normal file
BIN
baci/main.pco
Normal file
Binary file not shown.
11
baci/makefile
Normal file
11
baci/makefile
Normal file
@ -0,0 +1,11 @@
|
||||
all: compile run
|
||||
echo "Done"
|
||||
|
||||
compile:
|
||||
rm main.lst
|
||||
bacc main.cm
|
||||
|
||||
run:
|
||||
bainterp main.pco
|
||||
|
||||
.PHONY: all compile run
|
42
kolos/main.c
Normal file
42
kolos/main.c
Normal file
@ -0,0 +1,42 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
FILE *fp, *targetfp;
|
||||
char *target;
|
||||
int chr, i;
|
||||
|
||||
if (argc < 3)
|
||||
{
|
||||
printf("%s <file1> <fileN...> <file to copy to>\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;
|
||||
}
|
42
kolos/makefile
Normal file
42
kolos/makefile
Normal file
@ -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
|
11
os/Makefile
Normal file
11
os/Makefile
Normal file
@ -0,0 +1,11 @@
|
||||
TARGETS = all clean
|
||||
|
||||
SUBDIRS = $(wildcard */.)
|
||||
|
||||
$(TARGETS): $(SUBDIRS)
|
||||
@echo Done.
|
||||
|
||||
$(SUBDIRS):
|
||||
@$(MAKE) -C $@ $(MAKECMDGOALS)
|
||||
|
||||
.PHONY: $(TARGETS) $(SUBDIRS)
|
22
os/baci/main.cm
Normal file
22
os/baci/main.cm
Normal file
@ -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;
|
||||
}
|
24
os/baci/main.lst
Normal file
24
os/baci/main.lst
Normal file
@ -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
|
BIN
os/baci/main.pco
Normal file
BIN
os/baci/main.pco
Normal file
Binary file not shown.
11
os/baci/makefile
Normal file
11
os/baci/makefile
Normal file
@ -0,0 +1,11 @@
|
||||
all: compile run
|
||||
echo "Done"
|
||||
|
||||
compile:
|
||||
rm main.lst
|
||||
bacc main.cm
|
||||
|
||||
run:
|
||||
bainterp main.pco
|
||||
|
||||
.PHONY: all compile run
|
42
os/c1/Makefile
Normal file
42
os/c1/Makefile
Normal file
@ -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
|
8
os/c1/main.c
Normal file
8
os/c1/main.c
Normal file
@ -0,0 +1,8 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
puts("Hello world!");
|
||||
|
||||
return (0);
|
||||
}
|
42
os/c10/Makefile
Normal file
42
os/c10/Makefile
Normal file
@ -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
|
26
os/c10/main.c
Normal file
26
os/c10/main.c
Normal file
@ -0,0 +1,26 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
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));
|
||||
}
|
42
os/c11/Makefile
Normal file
42
os/c11/Makefile
Normal file
@ -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
|
62
os/c11/main.c
Normal file
62
os/c11/main.c
Normal file
@ -0,0 +1,62 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
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));
|
||||
}
|
42
os/c2/Makefile
Normal file
42
os/c2/Makefile
Normal file
@ -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
|
13
os/c2/main.c
Normal file
13
os/c2/main.c
Normal file
@ -0,0 +1,13 @@
|
||||
#include <stdio.h>
|
||||
|
||||
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);
|
||||
}
|
42
os/c3/Makefile
Normal file
42
os/c3/Makefile
Normal file
@ -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
|
19
os/c3/main.c
Normal file
19
os/c3/main.c
Normal file
@ -0,0 +1,19 @@
|
||||
#include <stdio.h>
|
||||
|
||||
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);
|
||||
}
|
42
os/c4/Makefile
Normal file
42
os/c4/Makefile
Normal file
@ -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
|
25
os/c4/main.c
Normal file
25
os/c4/main.c
Normal file
@ -0,0 +1,25 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
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]));
|
||||
}
|
42
os/c5/Makefile
Normal file
42
os/c5/Makefile
Normal file
@ -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
|
21
os/c5/main.c
Normal file
21
os/c5/main.c
Normal file
@ -0,0 +1,21 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
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));
|
||||
}
|
42
os/c6/Makefile
Normal file
42
os/c6/Makefile
Normal file
@ -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
|
10
os/c6/main.c
Normal file
10
os/c6/main.c
Normal file
@ -0,0 +1,10 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 1; i < argc; i++)
|
||||
puts(argv[i]);
|
||||
}
|
42
os/c7/Makefile
Normal file
42
os/c7/Makefile
Normal file
@ -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
|
44
os/c7/main.c
Normal file
44
os/c7/main.c
Normal file
@ -0,0 +1,44 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
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));
|
||||
}
|
42
os/c8/Makefile
Normal file
42
os/c8/Makefile
Normal file
@ -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
|
22
os/c8/main.c
Normal file
22
os/c8/main.c
Normal file
@ -0,0 +1,22 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
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));
|
||||
}
|
42
os/c9/Makefile
Normal file
42
os/c9/Makefile
Normal file
@ -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
|
20
os/c9/main.c
Normal file
20
os/c9/main.c
Normal file
@ -0,0 +1,20 @@
|
||||
#include <stdio.h>
|
||||
|
||||
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));
|
||||
}
|
11
os/os/Makefile
Normal file
11
os/os/Makefile
Normal file
@ -0,0 +1,11 @@
|
||||
TARGETS = all clean
|
||||
|
||||
SUBDIRS = $(wildcard */.)
|
||||
|
||||
$(TARGETS): $(SUBDIRS)
|
||||
@echo Done.
|
||||
|
||||
$(SUBDIRS):
|
||||
@$(MAKE) -C $@ $(MAKECMDGOALS)
|
||||
|
||||
.PHONY: $(TARGETS) $(SUBDIRS)
|
42
os/os/c1/Makefile
Normal file
42
os/os/c1/Makefile
Normal file
@ -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
|
8
os/os/c1/main.c
Normal file
8
os/os/c1/main.c
Normal file
@ -0,0 +1,8 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
puts("Hello world!");
|
||||
|
||||
return (0);
|
||||
}
|
42
os/os/c10/Makefile
Normal file
42
os/os/c10/Makefile
Normal file
@ -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
|
26
os/os/c10/main.c
Normal file
26
os/os/c10/main.c
Normal file
@ -0,0 +1,26 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
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));
|
||||
}
|
42
os/os/c11/Makefile
Normal file
42
os/os/c11/Makefile
Normal file
@ -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
|
62
os/os/c11/main.c
Normal file
62
os/os/c11/main.c
Normal file
@ -0,0 +1,62 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
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));
|
||||
}
|
42
os/os/c2/Makefile
Normal file
42
os/os/c2/Makefile
Normal file
@ -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
|
13
os/os/c2/main.c
Normal file
13
os/os/c2/main.c
Normal file
@ -0,0 +1,13 @@
|
||||
#include <stdio.h>
|
||||
|
||||
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);
|
||||
}
|
42
os/os/c3/Makefile
Normal file
42
os/os/c3/Makefile
Normal file
@ -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
|
19
os/os/c3/main.c
Normal file
19
os/os/c3/main.c
Normal file
@ -0,0 +1,19 @@
|
||||
#include <stdio.h>
|
||||
|
||||
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);
|
||||
}
|
42
os/os/c4/Makefile
Normal file
42
os/os/c4/Makefile
Normal file
@ -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
|
25
os/os/c4/main.c
Normal file
25
os/os/c4/main.c
Normal file
@ -0,0 +1,25 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
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]));
|
||||
}
|
42
os/os/c5/Makefile
Normal file
42
os/os/c5/Makefile
Normal file
@ -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
|
21
os/os/c5/main.c
Normal file
21
os/os/c5/main.c
Normal file
@ -0,0 +1,21 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
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));
|
||||
}
|
42
os/os/c6/Makefile
Normal file
42
os/os/c6/Makefile
Normal file
@ -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
|
10
os/os/c6/main.c
Normal file
10
os/os/c6/main.c
Normal file
@ -0,0 +1,10 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
int i;
|
||||
|
||||
for (i = 1; i < argc; i++)
|
||||
puts(argv[i]);
|
||||
}
|
42
os/os/c7/Makefile
Normal file
42
os/os/c7/Makefile
Normal file
@ -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
|
44
os/os/c7/main.c
Normal file
44
os/os/c7/main.c
Normal file
@ -0,0 +1,44 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
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));
|
||||
}
|
42
os/os/c8/Makefile
Normal file
42
os/os/c8/Makefile
Normal file
@ -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
|
22
os/os/c8/main.c
Normal file
22
os/os/c8/main.c
Normal file
@ -0,0 +1,22 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
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));
|
||||
}
|
42
os/os/c9/Makefile
Normal file
42
os/os/c9/Makefile
Normal file
@ -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
|
20
os/os/c9/main.c
Normal file
20
os/os/c9/main.c
Normal file
@ -0,0 +1,20 @@
|
||||
#include <stdio.h>
|
||||
|
||||
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));
|
||||
}
|
42
os/p/c1/Makefile
Normal file
42
os/p/c1/Makefile
Normal file
@ -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
|
10
os/p/c1/main.c
Normal file
10
os/p/c1/main.c
Normal file
@ -0,0 +1,10 @@
|
||||
#include <stdio.h>
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
while (--argc > 0)
|
||||
printf("%s ", argv[argc]);
|
||||
|
||||
puts("");
|
||||
return (0);
|
||||
}
|
42
os/p/c2/Makefile
Normal file
42
os/p/c2/Makefile
Normal file
@ -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
|
15
os/p/c2/main.c
Normal file
15
os/p/c2/main.c
Normal file
@ -0,0 +1,15 @@
|
||||
#include <stdio.h>
|
||||
|
||||
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);
|
||||
}
|
42
os/p/c3/Makefile
Normal file
42
os/p/c3/Makefile
Normal file
@ -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
|
25
os/p/c3/main.c
Normal file
25
os/p/c3/main.c
Normal file
@ -0,0 +1,25 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
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]));
|
||||
}
|
42
os/psh/makefile
Normal file
42
os/psh/makefile
Normal file
@ -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
|
41
os/psh/src/main.c
Normal file
41
os/psh/src/main.c
Normal file
@ -0,0 +1,41 @@
|
||||
#include <stdio.h>
|
||||
#include <stdlib.h>
|
||||
#include <unistd.h>
|
||||
#include <string.h>
|
||||
|
||||
|
||||
/* 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;
|
||||
}
|
42
p/c1/Makefile
Normal file
42
p/c1/Makefile
Normal file
@ -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
|
24
p/c1/main.c
Normal file
24
p/c1/main.c
Normal file
@ -0,0 +1,24 @@
|
||||
#include <stdio.h>
|
||||
|
||||
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);
|
||||
}
|
42
p/c2/Makefile
Normal file
42
p/c2/Makefile
Normal file
@ -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
|
15
p/c2/main.c
Normal file
15
p/c2/main.c
Normal file
@ -0,0 +1,15 @@
|
||||
#include <stdio.h>
|
||||
|
||||
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);
|
||||
}
|
42
p/c3/Makefile
Normal file
42
p/c3/Makefile
Normal file
@ -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
|
25
p/c3/main.c
Normal file
25
p/c3/main.c
Normal file
@ -0,0 +1,25 @@
|
||||
#include <stdio.h>
|
||||
#include <string.h>
|
||||
|
||||
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]));
|
||||
}
|
1
psh
Submodule
1
psh
Submodule
@ -0,0 +1 @@
|
||||
Subproject commit 360cf24ae24b92e11232dd587534c33d238539b3
|
Loading…
Reference in New Issue
Block a user