From 110a170af4a39b130561258f402bd0e4e5e370dc Mon Sep 17 00:00:00 2001 From: NishiOwO Date: Mon, 2 Mar 2026 01:08:36 +0900 Subject: [PATCH] aaa --- objs.mk | 3 +++ src/seed.c | 18 ++++++++++++++++++ src/site.c | 10 ++++++++-- src/taiga.h | 4 ++++ src/util.c | 8 ++++++++ 5 files changed, 41 insertions(+), 2 deletions(-) diff --git a/objs.mk b/objs.mk index 92b4198..6570a92 100644 --- a/objs.mk +++ b/objs.mk @@ -20,6 +20,9 @@ src/src_help.o: src/help.c OBJS += src/src_main.o src/src_main.o: src/main.c $(CC) $(CFLAGS) -c -o $@ src/main.c +OBJS += src/src_process.o +src/src_process.o: src/process.c + $(CC) $(CFLAGS) -c -o $@ src/process.c OBJS += src/src_seed.o src/src_seed.o: src/seed.c $(CC) $(CFLAGS) -c -o $@ src/seed.c diff --git a/src/seed.c b/src/seed.c index 9ed7f55..5daebfd 100644 --- a/src/seed.c +++ b/src/seed.c @@ -29,10 +29,28 @@ int action_seed(int argc, char** argv){ fprintf(f, "\n"); fclose(f); + if((f = fopen("site/content/index.xml", "w")) == NULL){ + fprintf(stderr, "Failed to open site/content/index.xml\n"); + return 1; + } + fprintf(f, "\n"); + fprintf(f, "\n"); + fprintf(f, "
\n"); + fprintf(f, " Welcome to template\n"); + fprintf(f, "
\n"); + fprintf(f, " \n"); + fprintf(f, "
\n"); + fprintf(f, " Congratulations\n"); + fprintf(f, "
\n"); + fprintf(f, " \n"); + fprintf(f, "
\n"); + fclose(f); + printf("Template project created!\n"); printf("\n"); printf("Here is an outline of the generated files:\n"); describe("site/skinconf.xml", "Skin configuration"); + describe("site/content/index.xml", "Example index file"); return 0; } diff --git a/src/site.c b/src/site.c index fa2c1bb..3a99054 100644 --- a/src/site.c +++ b/src/site.c @@ -5,6 +5,7 @@ static void scan(const char* path){ char* out = u_strvacat("build/", path, NULL); IO_DIR* dir; + io_mkdir(out, 0755); if((dir = io_opendir(in)) != NULL){ struct io_dirent* d; @@ -14,10 +15,15 @@ static void scan(const char* path){ if(strcmp(d->d_name, ".") == 0 || strcmp(d->d_name, "..") == 0) continue; - p = u_strvacat(in, d->d_name, "/", NULL); + p = u_strvacat(in, d->d_name, NULL); if(io_stat(p, &s) == 0){ if(IO_S_ISDIR(s.st_mode)){ - scan(p); + char* p2 = u_strvacat(d->d_name, "/", NULL); + scan(p2); + free(p2); + }else if(strcmp(d->d_name, "index.xml") == 0){ + process(out, p); + printf("%s\n", p); } } free(p); diff --git a/src/taiga.h b/src/taiga.h index 8e29e2d..d72c023 100644 --- a/src/taiga.h +++ b/src/taiga.h @@ -46,5 +46,9 @@ int action_seed(int argc, char** argv); /* util.c */ char* u_strvacat(const char* str, ...); +char* u_strdup(const char* str); + +/* process.c */ +void process(const char* out, const char* full); #endif diff --git a/src/util.c b/src/util.c index 962684e..9d96bbc 100644 --- a/src/util.c +++ b/src/util.c @@ -20,3 +20,11 @@ char* u_strvacat(const char* str, ...){ return r; } + +char* u_strdup(const char* str){ + char* s = malloc(strlen(str) + 1); + + strcpy(s, str); + + return s; +}