main.c - fiche - A pastebin adjusted for gopher use
(HTM) git clone git://vernunftzentrum.de/fiche.git
(DIR) Log
(DIR) Files
(DIR) Refs
(DIR) LICENSE
---
main.c (3314B)
---
1 /*
2 Fiche - Command line pastebin for sharing terminal output.
3
4 -------------------------------------------------------------------------------
5
6 License: MIT (http://www.opensource.org/licenses/mit-license.php)
7 Repository: https://github.com/solusipse/fiche/
8 Live example: http://termbin.com
9
10 -------------------------------------------------------------------------------
11
12 usage: fiche [-DepbsdolBuw].
13 [-D] [-e] [-d domain] [-p port] [-s slug size]
14 [-o output directory] [-B buffer size] [-u user name]
15 [-l log file] [-b banlist] [-w whitelist]
16
17 Use netcat to push text - example:
18 $ cat fiche.c | nc localhost 9999
19
20 -------------------------------------------------------------------------------
21 */
22
23 #include "fiche.h"
24
25 #include <stdio.h>
26 #include <stdlib.h>
27 #include <unistd.h>
28 #include <getopt.h>
29
30
31 int main(int argc, char **argv) {
32
33 // Fiche settings instance
34 Fiche_Settings fs;
35
36 // Initialize settings instance to default values
37 fiche_init(&fs);
38
39 // Note: fiche_run is responsible for checking if these values
40 // were set correctly
41
42 // Note: according to getopt documentation, we don't need to
43 // copy strings, so we decided to go with pointer approach for these
44
45 // Parse input arguments
46 int c;
47 while ((c = getopt(argc, argv, "D6ep:b:s:d:o:P:l:B:u:w:")) != -1) {
48 switch (c) {
49
50 // domain
51 case 'd':
52 {
53 fs.domain = optarg;
54 }
55 break;
56
57 // port
58 case 'p':
59 {
60 fs.port = atoi(optarg);
61 }
62 break;
63
64 // slug size
65 case 's':
66 {
67 fs.slug_len = atoi(optarg);
68 }
69 break;
70
71 // custom protocol prefix
72 case 'P':
73 {
74 fs.prefix = optarg;
75 }
76 break;
77
78 // output directory path
79 case 'o':
80 {
81 fs.output_dir_path = optarg;
82 }
83 break;
84
85 // buffer size
86 case 'B':
87 {
88 fs.buffer_len = atoi(optarg);
89 }
90 break;
91
92 // user name
93 case 'u':
94 {
95 fs.user_name = optarg;
96 }
97 break;
98
99 // log file path
100 case 'l':
101 {
102 fs.log_file_path = optarg;
103 }
104 break;
105
106 // banlist file path
107 case 'b':
108 {
109 fs.banlist_path = optarg;
110 }
111 break;
112
113 // whitelist file path
114 case 'w':
115 {
116 fs.whitelist_path = optarg;
117 }
118 break;
119
120 // Display help in case of any unsupported argument
121 default:
122 {
123 printf("usage: fiche [-dpsSoBulbw].\n");
124 printf(" [-d domain] [-p port] [-P protocol] [-s slug size]\n");
125 printf(" [-o output directory] [-B buffer size] [-u user name]\n");
126 printf(" [-l log file] [-b banlist] [-w whitelist]\n");
127 return 0;
128 }
129 break;
130 }
131 }
132
133 return fiche_run(fs);
134 }
135
136