From 2271650ca833946733c18ec84e79cfd4b77ae230 Mon Sep 17 00:00:00 2001 From: radhitya Date: Tue, 14 Jan 2025 15:53:06 +0700 Subject: [PATCH] Bimbang is an Indonesian pop song originally composed and written by Melly Goeslaw --- main.c | 215 +++++++++++++++++++++++++++------------------------------ 1 file changed, 103 insertions(+), 112 deletions(-) diff --git a/main.c b/main.c index 6534ba2..e5a29ab 100644 --- a/main.c +++ b/main.c @@ -6,12 +6,12 @@ #define MAX_LENGTH 1000 typedef struct markdown { - int bold; - int quote; - int italic; - int headingone; - int headingtwo; - int headingthree; + int bold; + int quote; + int italic; + int headingone; + int headingtwo; + int headingthree; } markdown; markdown mdt; @@ -19,11 +19,11 @@ markdown mdt; FILE *fptr; void checker() { - fptr = fopen("./source/data.txt", "rb+"); - if (fptr == NULL) { - perror("Galat checker buat ./source/data.txt"); - exit(1); - } + fptr = fopen("./source/data.txt", "rb+"); + if (fptr == NULL) { + perror("galat checker buat ./source/data.txt"); + exit(1); + } } int main(int argc, char *argv[]) { @@ -35,135 +35,127 @@ int main(int argc, char *argv[]) { for (int i = 1; i < argc; i++) { if (strcmp("-v", argv[i]) == 0) { printf("daisy © radhitya.org\n"); - return 0; + return 0; } - else if(strcmp("-h", argv[i]) == 0) { - printf("ini -h\n"); - return 0; - } - else if(strcmp("new", argv[i]) == 0) { - struct stat st; - if(stat("./source", &st) == 0) { - if(stat("./target", &st) == 0) { - printf("./source dan ./target telah dibuat\n"); - } else { - mkdir("./target", 0700); - } - } else { - mkdir("./source", 0700); - mkdir("./target", 0700); - } + else if(strcmp("-h", argv[i]) == 0) { + printf("ini -h\n"); + return 0; + } + else if(strcmp("new", argv[i]) == 0) { + struct stat st; + if(stat("./source", &st) == 0) { + if(stat("./target", &st) == 0) { + printf("./source dan ./target telah dibuat\n"); + } else { + mkdir("./target", 0700); + } + } else { + mkdir("./source", 0700); + mkdir("./target", 0700); + } - fptr = fopen("./source/data.txt", "rb+"); - if (fptr == NULL) { - fptr = fopen("./source/data.txt", "wb"); - if (fptr == NULL) { - perror("galat buat ./source/data.txt (fptr)"); - exit(1); - } else { - printf("sukses buat ./source/data.txt\n"); - } - } else { - printf("./source/data.txt sudah ada\n"); - fclose(fptr); - } - return 0; - } + fptr = fopen("./source/data.txt", "r"); + if (fptr == NULL) { + fptr = fopen("./source/data.txt", "w"); + if (fptr == NULL) { + perror("galat buat ./source/data.txt (fptr)"); + exit(1); + } else { + printf("sukses buat ./source/data.txt\n"); + } + } else { + printf("./source/data.txt sudah ada\n"); + fclose(fptr); + } + return 0; + } } char txt[MAX_LENGTH], of[MAX_LENGTH]; int i, len; - mdt.italic = 0, mdt.bold = 0, mdt.quote = 0; + mdt.italic = 0, mdt.bold = 0, mdt.quote = 0, mdt.headingone = 0; const char *file_name = strrchr(argv[1], '/'); if (file_name == NULL) { - file_name = argv[1]; + file_name = argv[1]; } else { - file_name++; + file_name++; } snprintf(of, sizeof(of), "target/%s.html", file_name); fptr = fopen(argv[1], "rt"); if (fptr == NULL) { - perror("Galat membuka masukan berkas fptr\n"); + perror("galat membuka masukan berkas fptr\n"); return 1; } FILE *fpto = fopen(of, "wb"); if (fpto == NULL) { - perror("Galat membuat keluaran berkas fpto\n"); + perror("galat membuat keluaran berkas fpto\n"); fclose(fptr); return 1; } fprintf(fpto, "\n\n"); while (fgets(txt, MAX_LENGTH, fptr) != NULL) { - len = strlen(txt); + len = strlen(txt); + if (len > 0 && txt[len-1] == '\n') { + txt[--len] = '\0'; + } + mdt.headingone = 0; + mdt.quote = 0; + if(len == 0) { + fprintf(fpto, "\n"); + } else { + if(len > 0 && txt[0] == '#' && (len == 1 || txt[1] != '\\')) { + fprintf(fpto, "

"); + mdt.headingone = 1; + } + else if (len > 0 && txt[0] == '>' && (len == 1 || txt[1] != '\\')) { + fprintf(fpto, "
"); + mdt.quote = 1; + } + else { + fprintf(fpto, "

"); + } + for(i = 0; i < len; i++) { + if (txt[i] == '_' && (i == 0 || txt[i-1] != '\\')) { + if(!mdt.italic) { + fprintf(fpto, ""); + mdt.italic = 1; + } else { + fprintf(fpto, ""); + mdt.italic = 0; + } + } + else if (i + 1 < len && txt[i] == '*' && txt[i+1] == '*' && (i == 0 || txt[i-1] != '\\')) { + if(!mdt.bold) { + fprintf(fpto, ""); + mdt.bold = 1; + i++; + } else { + fprintf(fpto, ""); + mdt.bold = 0; + i++; + } + } + else { + fputc(txt[i], fpto); + } + } - if (len > 0 && txt[len-1] == '\n') { - txt[--len] = '\0'; - } - - mdt.headingone = 0; - mdt.quote = 0; - if(len > 0 && txt[0] == '#' && ) - fprintf(fpto, "

"); - - for(i = 0; i < len; i++) { - - if (txt[i] == '_' && (i == 0 || txt[i-1] != '\\')) { - if(!mdt.italic) { - fprintf(fpto, ""); - mdt.italic = 1; - } else { - fprintf(fpto, ""); - mdt.italic = 0; - } - } - - else if (i + 1 < len && txt[i] == '*' && txt[i+1] == '*' && (i == 0 || txt[i-1] != '\\')) { - if(mdt.bold) { - fprintf(fpto, ""); - mdt.bold = 1; - i++; - } else { - fprintf(fpto, ""); - mdt.bold = 0; - i++; - } - } - - else if (txt[i] == '>' && (i == 0 || txt[i-1] != '\\')) { - if(!mdt.quote) { - fprintf(fpto, "

"); - mdt.quote = 1; - } else { - fprintf(fpto, "
"); - mdt.quote = 0; - } - } - - else { - fputc(txt[i], fpto); - } - } - - if(mdt.italic) { - fprintf(fpto, ""); - }; - if(mdt.bold) { - fprintf(fpto, ""); - } - if(mdt.quote) { - fprintf(fpto, "
"); - } - if(mdt.headingone) { - fprintf(fpto, "

"); - } - fprintf(fpto, "

\n"); - mdt.italic = mdt.bold = mdt.quote = mdt.headingone = 0; + if(mdt.italic) fprintf(fpto, ""); + else if(mdt.bold) fprintf(fpto, ""); + else if(mdt.quote) fprintf(fpto, ""); + else if(mdt.headingone) { + fprintf(fpto, "\n"); + } else { + fprintf(fpto, "

\n"); + } + mdt.italic = mdt.bold = mdt.quote = mdt.headingone = 0; + } } fprintf(fpto, "\n"); @@ -171,4 +163,3 @@ int main(int argc, char *argv[]) { fclose(fpto); return 0; } -