annotate decodeurl.c @ 99:2bccbf473ff4

kemonopartydownloader.py: --cookies is an argument, not an option committer: GitHub <noreply@github.com>
author Paper <37962225+mrpapersonic@users.noreply.github.com>
date Sun, 14 Aug 2022 05:30:44 -0400
parents 23d0073daa79
children
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
72
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
1 // C port of decodeurl.cpp
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
2 #include <curl/curl.h>
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
3 #include <string.h>
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
4 #include <stdio.h>
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
5 #include <stdlib.h>
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
6
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
7 #define ENCODED_SIZE 8192
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
8
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
9 int main(int argc, char* argv[]) {
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
10 int c;
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
11 if (argc != 3) {
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
12 printf("usage: %s <input> <output>\n", argv[0]);
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
13 return 1;
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
14 }
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
15 char encoded[ENCODED_SIZE] = {'\0'};
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
16 CURL* curl = curl_easy_init();
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
17 char data[256];
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
18 FILE* in = fopen(argv[1], "r"); // this is unsafe, but meh
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
19 FILE* out = fopen(argv[2], "w");
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
20 if (in == NULL || out == NULL) {
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
21 printf("Failed to open file(s)!\n");
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
22 return 1;
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
23 }
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
24 char* p = &encoded[strlen(encoded)];
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
25 while ((c = fgetc(in)) != EOF) {
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
26 *p++ = c;
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
27 if (p == &encoded[ENCODED_SIZE-1]) break;
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
28 }
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
29 *p = '\0';
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
30 rewind(in); // we probably don't need this!!
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
31 char* decoded = curl_easy_unescape(curl, encoded, 0, NULL);
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
32 fprintf(out, "%s", decoded);
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
33 // fwrite(decoded, sizeof(char), sizeof(decoded), in);
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
34 curl_easy_cleanup(curl);
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
35 fclose(in);
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
36 fclose(out);
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
37 return 0;
23d0073daa79 Create decodeurl.c
Paper <37962225+mrpapersonic@users.noreply.github.com>
parents:
diff changeset
38 }