annotate playground/main.c @ 138:1f023b8bf9c3

[Test]
author June Park <parkjune1995@gmail.com>
date Fri, 09 Jan 2026 11:35:07 -0800
parents e7899c93da77
children 893d87124d16
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
126
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
1 #include <stdlib.h>
18
fa2b8af609d9 [Seobeo] Fixed a bug with pathing. Support SSL.
June Park <parkjune1995@gmail.com>
parents: 17
diff changeset
2 #include <stdio.h>
126
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
3 #include <string.h>
108
f07abbcd2ec5 [HgWeb] Will probably hold off on using it since it is not urgent.
June Park <parkjune1995@gmail.com>
parents: 71
diff changeset
4
126
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
5 int main() {
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
6 char *input[5] = {"Hello ", "Foo <<E", "N", "DD>", "Park <END> "};
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
7 char *key = "<END>";
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
8 int key_len = strlen(key);
108
f07abbcd2ec5 [HgWeb] Will probably hold off on using it since it is not urgent.
June Park <parkjune1995@gmail.com>
parents: 71
diff changeset
9
126
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
10 char **buffers = malloc(sizeof(char *) * 100);
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
11 int buffer_index = 0;
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
12 int key_ptr = 0;
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
13 for (int i = 0; i < 5; i++) {
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
14 char *packet = input[i];
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
15 int p_len = strlen(packet);
71
75de5903355c Giagantic changes that update Dowa library to be more align with stb style array and hashmap. Updated Seobeo to be caching on server side instead of file level caching. Deleted bunch of things I don't really use.
June Park <parkjune1995@gmail.com>
parents: 25
diff changeset
16
126
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
17 for (int j = 0; j < p_len; j++) {
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
18 if (packet[j] == key[key_ptr]) {
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
19 key_ptr++;
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
20
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
21 // If the WHOLE keyword is found
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
22 if (key_ptr == key_len) {
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
23 // 1. Print all previous "safe" buffers
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
24 // (The ones before the one where the keyword started)
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
25 for (int b = 0; b < buffer_index; b++)
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
26 printf("%s", buffers[b]);
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
27
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
28 // 2. Handle the "Current" packet truncation
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
29 // Calculate where the match started in THIS packet
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
30 // If key_ptr was satisfied across multiple packets,
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
31 // 'j' is the end of the match in the current packet.
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
32 int match_end_in_packet = j + 1;
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
33 int match_len_in_this_packet = (key_ptr <= match_end_in_packet) ? key_ptr : match_end_in_packet;
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
34
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
35 printf("%.*s\n", (match_end_in_packet - match_len_in_this_packet), packet);
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
36
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
37 free(buffers);
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
38 return 0;
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
39 }
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
40 } else {
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
41 // If a match fails, we must "flush" the buffers we were holding
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
42 if (key_ptr > 0) {
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
43 for (int b = 0; b < buffer_index; b++) printf("%s", buffers[b]);
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
44 buffer_index = 0;
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
45
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
46 if (packet[j] == key[0]) key_ptr = 1;
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
47 else {
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
48 printf("%c", packet[j]);
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
49 key_ptr = 0;
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
50 }
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
51 } else {
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
52 printf("%c", packet[j]);
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
53 }
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
54 }
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
55 }
71
75de5903355c Giagantic changes that update Dowa library to be more align with stb style array and hashmap. Updated Seobeo to be caching on server side instead of file level caching. Deleted bunch of things I don't really use.
June Park <parkjune1995@gmail.com>
parents: 25
diff changeset
56
126
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
57 // If we finish a packet and we are in the middle of a match, buffer it
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
58 if (key_ptr > 0) {
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
59 buffers[buffer_index++] = packet;
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
60 }
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
61 }
71
75de5903355c Giagantic changes that update Dowa library to be more align with stb style array and hashmap. Updated Seobeo to be caching on server side instead of file level caching. Deleted bunch of things I don't really use.
June Park <parkjune1995@gmail.com>
parents: 25
diff changeset
62
126
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
63 free(buffers);
e7899c93da77 Remove playground.
June Park <parkjune1995@gmail.com>
parents: 109
diff changeset
64 return 0;
1
adcfad6e86fb Updated naming and separated out some logic within seobeo.
June Park <parkjune1995@gmail.com>
parents:
diff changeset
65 }