diff wedding/main.c @ 12:de54585a40f1

Adding bun and node modules.
author June Park <parkjune1995@gmail.com>
date Thu, 02 Oct 2025 14:39:48 -0700
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/wedding/main.c	Thu Oct 02 14:39:48 2025 -0700
@@ -0,0 +1,64 @@
+#include "dowa/dowa.h"
+
+
+size_t Dowa_File_ReadLine(FILE *restrict stream, char *buffer, size_t buffer_size)
+{
+  char c;
+  size_t res = 0;
+  while ((c = getc(stream)) != EOF && c != '\n')
+  {
+    if (res + 1 > buffer_size)
+      break;
+    buffer[res++] = c;
+  }
+  buffer[res] = '\0';
+  return res;
+}
+
+
+int main(void)
+{
+  char c;
+  char *comma, *curr;
+  char **keys;
+  FILE *f = fopen("wedding/invities.csv", "rb");
+  if (!f)
+    perror("fopen\n");
+
+  char *line = malloc(128);
+
+  Dowa_PArena p_csv_area = Dowa_Arena_Create(4048);
+  keys = Dowa_Arena_Allocate(p_csv_area, sizeof(char*) * 10);
+
+  while (Dowa_File_ReadLine(f, line, 128) > 0) 
+  {
+    curr = line;
+    int pos = 0 ;
+
+    while (1)
+    {
+      comma = memchr(curr, ',', strlen(curr));
+      if (!comma)
+        break;
+      size_t diff = comma - curr;
+      keys[pos] = Dowa_Arena_Allocate(p_csv_area, diff+1);
+      memcpy(keys[pos], curr, diff);
+      curr = comma+1;
+      pos += 1;
+    }
+
+    int last = strlen(curr);
+    keys[pos] = Dowa_Arena_Allocate(p_csv_area, last);
+    memcpy(keys[pos], curr, last);
+
+    for (pos = 0; pos < 10; pos++)
+    {
+      if (!keys[pos])
+        break;
+      printf("%s, ", keys[pos]);
+    }
+    printf("\n\n");
+  }
+
+  return 0;
+}