ifirst stable version - fiche - A pastebin adjusted for gopher use Err vernunftzentrum.de 70 hgit clone git://vernunftzentrum.de/fiche.git URL:git://vernunftzentrum.de/fiche.git vernunftzentrum.de 70 1Log /ckeen/repos/fiche/log.gph vernunftzentrum.de 70 1Files /ckeen/repos/fiche/files.gph vernunftzentrum.de 70 1Refs /ckeen/repos/fiche/refs.gph vernunftzentrum.de 70 1LICENSE /ckeen/repos/fiche/file/LICENSE.gph vernunftzentrum.de 70 i--- Err vernunftzentrum.de 70 1commit 829c8e16d81ac4f88f192e103b50ea874850696a /ckeen/repos/fiche/commit/829c8e16d81ac4f88f192e103b50ea874850696a.gph vernunftzentrum.de 70 1parent bcbc2791960567465518a1914c19604da186f077 /ckeen/repos/fiche/commit/bcbc2791960567465518a1914c19604da186f077.gph vernunftzentrum.de 70 hAuthor: solusipse URL:mailto:solus1ps3@gmail.com vernunftzentrum.de 70 iDate: Fri, 6 Sep 2013 04:01:55 +0200 Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 ifirst stable version Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 iDiffstat: Err vernunftzentrum.de 70 i Makefile | 15 +++++++++++++++ Err vernunftzentrum.de 70 i README.md | 80 +++++++++++++++++++++++++++++++ Err vernunftzentrum.de 70 i fiche.c | 239 +++++++++++++++++++++++++++++++ Err vernunftzentrum.de 70 i fiche.h | 47 +++++++++++++++++++++++++++++++ Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i4 files changed, 381 insertions(+), 0 deletions(-) Err vernunftzentrum.de 70 i--- Err vernunftzentrum.de 70 1diff --git a/Makefile b/Makefile /ckeen/repos/fiche/file/Makefile.gph vernunftzentrum.de 70 i@@ -0,0 +1,15 @@ Err vernunftzentrum.de 70 i+# ----------------------------------- Err vernunftzentrum.de 70 i+# Fiche MAKEFILE Err vernunftzentrum.de 70 i+# https://github.com/solusipse/fiche Err vernunftzentrum.de 70 i+# solusipse.net Err vernunftzentrum.de 70 i+# ----------------------------------- Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+CC=gcc Err vernunftzentrum.de 70 i+CFLAGS=-pthread -O2 Err vernunftzentrum.de 70 i+prefix=/usr/local Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+all: fiche.c Err vernunftzentrum.de 70 i+ $(CC) -o fiche $(CFLAGS) fiche.c Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+install: fiche Err vernunftzentrum.de 70 i+ install -m 0755 fiche $(prefix)/bin Err vernunftzentrum.de 70 1diff --git a/README.md b/README.md /ckeen/repos/fiche/file/README.md.gph vernunftzentrum.de 70 i@@ -2,3 +2,83 @@ fiche Err vernunftzentrum.de 70 i ===== Err vernunftzentrum.de 70 i Err vernunftzentrum.de 70 i Command line pastebin for sharing terminal output. Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+## Installation ## Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+1. Clone into repository: Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ ``` Err vernunftzentrum.de 70 i+ https://github.com/solusipse/fiche.git Err vernunftzentrum.de 70 i+ ``` Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+2. Build program: Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ ``` Err vernunftzentrum.de 70 i+ make Err vernunftzentrum.de 70 i+ ``` Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+3. Install: Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ ``` Err vernunftzentrum.de 70 i+ sudo make install Err vernunftzentrum.de 70 i+ ``` Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+## Client-side usage ## Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+Self explanatory live examples: Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+``` Err vernunftzentrum.de 70 i+ls -la | nc localhost 9999 Err vernunftzentrum.de 70 i+``` Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+``` Err vernunftzentrum.de 70 i+cat file.txt | nc someserverrunningfiche.net 1234 Err vernunftzentrum.de 70 i+``` Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+``` Err vernunftzentrum.de 70 i+echo just testing! | nc code.solusipse.net 9999 Err vernunftzentrum.de 70 i+``` Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+If you already haven't set up your server on localhost, try third line! My server is providing terminal Err vernunftzentrum.de 70 i+pastebin server powered by fiche - ```code.solusipse.net``` on port ```9999```. Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+- To upload text you need to have netcat installed (to check if netcat is installed, simply type ```nc``` in terminal). Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+## Server-side usage ## Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+``` Err vernunftzentrum.de 70 i+usage: fiche [-bdpqs]. Err vernunftzentrum.de 70 i+ [-d host_domain.com] [-p port] [-s slug_size] Err vernunftzentrum.de 70 i+ [-o output_directory] [-b buffer_size] [-q queue_size] Err vernunftzentrum.de 70 i+``` Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+These are command line arguments. You don't have to provide any, but doing that is recommended. Without them, program Err vernunftzentrum.de 70 i+will use these default settings: Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+```C Err vernunftzentrum.de 70 i+domain = "http://localhost/"; Err vernunftzentrum.de 70 i+basedir= "~/code/"; Err vernunftzentrum.de 70 i+port = 9999; Err vernunftzentrum.de 70 i+slug_size = 4; Err vernunftzentrum.de 70 i+buffer_size = 8192; Err vernunftzentrum.de 70 i+queue_size = 100; Err vernunftzentrum.de 70 i+``` Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+### Basic arguments ### Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+Most important is providing **basedir** and **domain**. Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+Basedir should be **absolute** path to directory where you would like to store text files. Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+Domain should be provided in such format ```domain.com```. Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+Slug size: ```yourserver.com/SLUG_OF_CHOSEN_LENGTH/```. Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+### Parameters for advanced users ### Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+- Buffer size Err vernunftzentrum.de 70 i+- Queue size Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+### License ### Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+Fiche is MIT licensed. Err vernunftzentrum.de 70 1diff --git a/fiche.c b/fiche.c /ckeen/repos/fiche/file/fiche.c.gph vernunftzentrum.de 70 i@@ -0,0 +1,238 @@ Err vernunftzentrum.de 70 i+/* Err vernunftzentrum.de 70 i+Fiche - terminal pastebin Err vernunftzentrum.de 70 i+Still in development, not usable! Err vernunftzentrum.de 70 i+*/ Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+#include "fiche.h" Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+int main(int argc, char **argv) Err vernunftzentrum.de 70 i+{ Err vernunftzentrum.de 70 i+ srand((unsigned int) time(0)); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ set_basedir(); Err vernunftzentrum.de 70 i+ parse_parameters(argc, argv); Err vernunftzentrum.de 70 i+ startup_message(); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ int listen_socket, address_lenght, optval = 1; Err vernunftzentrum.de 70 i+ struct sockaddr_in server_address; Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ listen_socket = create_socket(); Err vernunftzentrum.de 70 i+ setsockopt(listen_socket, SOL_SOCKET, SO_REUSEADDR, (const void *)&optval , sizeof(int)); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ server_address = set_address(server_address); Err vernunftzentrum.de 70 i+ bind_to_port(listen_socket, server_address); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ while (1) perform_connection(listen_socket); Err vernunftzentrum.de 70 i+} Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+void *thread_connection(void *args) Err vernunftzentrum.de 70 i+{ Err vernunftzentrum.de 70 i+ char buffer[BUFSIZE]; Err vernunftzentrum.de 70 i+ int n, client = *(int *)args; Err vernunftzentrum.de 70 i+ bzero(buffer, BUFSIZE); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ int status = recv(client, buffer, BUFSIZE, 0); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ if (status != -1) Err vernunftzentrum.de 70 i+ { Err vernunftzentrum.de 70 i+ char slug[SLUG_SIZE]; Err vernunftzentrum.de 70 i+ generate_url(buffer, slug); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ char response[strlen(slug) + strlen(DOMAIN) + 2]; Err vernunftzentrum.de 70 i+ strcpy(response, DOMAIN); Err vernunftzentrum.de 70 i+ strcat(response, slug); Err vernunftzentrum.de 70 i+ strcat(response, "/\n"); Err vernunftzentrum.de 70 i+ write(client, response, strlen(response)); Err vernunftzentrum.de 70 i+ } Err vernunftzentrum.de 70 i+ else Err vernunftzentrum.de 70 i+ { Err vernunftzentrum.de 70 i+ printf("Invalid connection.\n"); Err vernunftzentrum.de 70 i+ write(client, "Use netcat.\n", 13); Err vernunftzentrum.de 70 i+ } Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ close(client); Err vernunftzentrum.de 70 i+ pthread_exit(NULL); Err vernunftzentrum.de 70 i+ return NULL; Err vernunftzentrum.de 70 i+} Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+void perform_connection(int listen_socket) Err vernunftzentrum.de 70 i+{ Err vernunftzentrum.de 70 i+ void *status = 0; Err vernunftzentrum.de 70 i+ pthread_t thread_id; Err vernunftzentrum.de 70 i+ struct sockaddr_in client_address; Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ int address_lenght = sizeof(client_address); Err vernunftzentrum.de 70 i+ int connection_socket = accept(listen_socket, (struct sockaddr *) &client_address, &address_lenght); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ struct timeval timeout; Err vernunftzentrum.de 70 i+ timeout.tv_sec = 10; Err vernunftzentrum.de 70 i+ timeout.tv_usec = 0; Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ if (setsockopt (connection_socket, SOL_SOCKET, SO_RCVTIMEO, (char *)&timeout, sizeof(timeout)) < 0) Err vernunftzentrum.de 70 i+ error(); Err vernunftzentrum.de 70 i+ if (setsockopt (connection_socket, SOL_SOCKET, SO_SNDTIMEO, (char *)&timeout, sizeof(timeout)) < 0) Err vernunftzentrum.de 70 i+ error(); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ get_client_address(client_address); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ if (pthread_create(&thread_id, NULL, &thread_connection, &connection_socket) != 0) Err vernunftzentrum.de 70 i+ error(); Err vernunftzentrum.de 70 i+ else Err vernunftzentrum.de 70 i+ pthread_detach(thread_id); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+} Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+void display_date() Err vernunftzentrum.de 70 i+{ Err vernunftzentrum.de 70 i+ time_t rawtime; Err vernunftzentrum.de 70 i+ struct tm *timeinfo; Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ time(&rawtime); Err vernunftzentrum.de 70 i+ timeinfo = localtime(&rawtime); Err vernunftzentrum.de 70 i+ printf("%s", asctime(timeinfo)); Err vernunftzentrum.de 70 i+} Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+void get_client_address(struct sockaddr_in client_address) Err vernunftzentrum.de 70 i+{ Err vernunftzentrum.de 70 i+ display_line(); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ struct hostent *hostp; Err vernunftzentrum.de 70 i+ char *hostaddrp; Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ hostp = gethostbyaddr((const char *)&client_address.sin_addr.s_addr, sizeof(client_address.sin_addr.s_addr), AF_INET); Err vernunftzentrum.de 70 i+ if (hostp == NULL) error(); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ hostaddrp = inet_ntoa(client_address.sin_addr); Err vernunftzentrum.de 70 i+ if (hostaddrp == NULL) error(); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ display_date(); Err vernunftzentrum.de 70 i+ printf("Client: %s (%s)\n", hostaddrp, hostp->h_name); Err vernunftzentrum.de 70 i+} Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+int create_socket() Err vernunftzentrum.de 70 i+{ Err vernunftzentrum.de 70 i+ int lsocket = socket(AF_INET, SOCK_STREAM, 0); Err vernunftzentrum.de 70 i+ if (lsocket < 0) Err vernunftzentrum.de 70 i+ error(); Err vernunftzentrum.de 70 i+ else return lsocket; Err vernunftzentrum.de 70 i+} Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+struct sockaddr_in set_address(struct sockaddr_in server_address) Err vernunftzentrum.de 70 i+{ Err vernunftzentrum.de 70 i+ bzero((char *) &server_address, sizeof(server_address)); Err vernunftzentrum.de 70 i+ server_address.sin_family = AF_INET; Err vernunftzentrum.de 70 i+ server_address.sin_addr.s_addr = htonl(INADDR_ANY); Err vernunftzentrum.de 70 i+ server_address.sin_port = htons((unsigned short)PORT); Err vernunftzentrum.de 70 i+ return server_address; Err vernunftzentrum.de 70 i+} Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+void bind_to_port(int listen_socket, struct sockaddr_in server_address) Err vernunftzentrum.de 70 i+{ Err vernunftzentrum.de 70 i+ if (bind(listen_socket, (struct sockaddr *) &server_address, sizeof(server_address)) < 0) Err vernunftzentrum.de 70 i+ error(); Err vernunftzentrum.de 70 i+ if (listen(listen_socket, QUEUE_SIZE) < 0) Err vernunftzentrum.de 70 i+ error(); Err vernunftzentrum.de 70 i+} Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+void generate_url(char *buffer, char *slug) Err vernunftzentrum.de 70 i+{ Err vernunftzentrum.de 70 i+ int i; Err vernunftzentrum.de 70 i+ int time_seed = time(0); Err vernunftzentrum.de 70 i+ memset(slug, '\0', sizeof(slug)); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ for (i = 0; i <= SLUG_SIZE - 1; i++) Err vernunftzentrum.de 70 i+ { Err vernunftzentrum.de 70 i+ int symbol_id = rand_r(&time_seed) % strlen(symbols); Err vernunftzentrum.de 70 i+ slug[i] = symbols[symbol_id]; Err vernunftzentrum.de 70 i+ } Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ while (create_directory(slug) == -1) Err vernunftzentrum.de 70 i+ { Err vernunftzentrum.de 70 i+ int symbol_id = rand() % strlen(symbols); Err vernunftzentrum.de 70 i+ slug[strlen(slug)] = symbols[symbol_id]; Err vernunftzentrum.de 70 i+ } Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ save_to_file(slug, buffer); Err vernunftzentrum.de 70 i+} Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+int create_directory(char *slug) Err vernunftzentrum.de 70 i+{ Err vernunftzentrum.de 70 i+ char *directory = malloc(100); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ strcpy(directory, BASEDIR); Err vernunftzentrum.de 70 i+ strcat(directory, slug); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ mkdir(BASEDIR, S_IRWXU | S_IRGRP | S_IROTH); Err vernunftzentrum.de 70 i+ int result = mkdir(directory, S_IRWXU | S_IRGRP | S_IROTH); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ free(directory); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ return result; Err vernunftzentrum.de 70 i+} Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+void save_to_file(char *slug, char *buffer) Err vernunftzentrum.de 70 i+{ Err vernunftzentrum.de 70 i+ char *directory = malloc(strlen(BASEDIR) + strlen(slug) + strlen("/index.html")); Err vernunftzentrum.de 70 i+ strcpy(directory, BASEDIR); Err vernunftzentrum.de 70 i+ strcat(directory, slug); Err vernunftzentrum.de 70 i+ strcat(directory, "/index.html"); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ FILE *fp; Err vernunftzentrum.de 70 i+ fp = fopen(directory, "w"); Err vernunftzentrum.de 70 i+ fprintf(fp, "%s", buffer); Err vernunftzentrum.de 70 i+ fclose(fp); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ printf("Saved to: %s\n", directory); Err vernunftzentrum.de 70 i+ free(directory); Err vernunftzentrum.de 70 i+} Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+void set_basedir() Err vernunftzentrum.de 70 i+{ Err vernunftzentrum.de 70 i+ BASEDIR = getenv("HOME"); Err vernunftzentrum.de 70 i+ strcat(BASEDIR, "/code/"); Err vernunftzentrum.de 70 i+} Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+void startup_message() Err vernunftzentrum.de 70 i+{ Err vernunftzentrum.de 70 i+ printf("Fiche started listening on port %d.\n", PORT); Err vernunftzentrum.de 70 i+ printf("Domain name: %s\n", DOMAIN); Err vernunftzentrum.de 70 i+ printf("Saving files to: %s\n", BASEDIR); Err vernunftzentrum.de 70 i+} Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+void parse_parameters(int argc, char **argv) Err vernunftzentrum.de 70 i+{ Err vernunftzentrum.de 70 i+ int c; Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+ while ((c = getopt (argc, argv, "p:b:q:s:d:o:")) != -1) Err vernunftzentrum.de 70 i+ switch (c) Err vernunftzentrum.de 70 i+ { Err vernunftzentrum.de 70 i+ case 'd': Err vernunftzentrum.de 70 i+ snprintf(DOMAIN, sizeof DOMAIN, "%s%s%s", "http://", optarg, "/"); Err vernunftzentrum.de 70 i+ break; Err vernunftzentrum.de 70 i+ case 'p': Err vernunftzentrum.de 70 i+ PORT = atoi(optarg); Err vernunftzentrum.de 70 i+ break; Err vernunftzentrum.de 70 i+ case 'b': Err vernunftzentrum.de 70 i+ BUFSIZE = atoi(optarg); Err vernunftzentrum.de 70 i+ printf("Buffer size set to: %d.\n", BUFSIZE); Err vernunftzentrum.de 70 i+ break; Err vernunftzentrum.de 70 i+ case 'q': Err vernunftzentrum.de 70 i+ QUEUE_SIZE = atoi(optarg); Err vernunftzentrum.de 70 i+ printf("Queue size set to: %d.\n", QUEUE_SIZE); Err vernunftzentrum.de 70 i+ break; Err vernunftzentrum.de 70 i+ case 's': Err vernunftzentrum.de 70 i+ SLUG_SIZE = atoi(optarg); Err vernunftzentrum.de 70 i+ printf("Slug size set to: %d.\n", SLUG_SIZE); Err vernunftzentrum.de 70 i+ break; Err vernunftzentrum.de 70 i+ case 'o': Err vernunftzentrum.de 70 i+ BASEDIR = optarg; Err vernunftzentrum.de 70 i+ if((BASEDIR[strlen(BASEDIR) - 1]) != '/') Err vernunftzentrum.de 70 i+ strcat(BASEDIR, "/"); Err vernunftzentrum.de 70 i+ break; Err vernunftzentrum.de 70 i+ default: Err vernunftzentrum.de 70 i+ printf("usage: fiche [-bdpqs].\n"); Err vernunftzentrum.de 70 i+ printf(" [-d host_domain.com] [-p port] [-s slug_size]\n"); Err vernunftzentrum.de 70 i+ printf(" [-o output_directory] [-b buffer_size] [-q queue_size]\n"); Err vernunftzentrum.de 70 i+ exit(1); Err vernunftzentrum.de 70 i+ } Err vernunftzentrum.de 70 i+} Err vernunftzentrum.de 70 i+\ No newline at end of file Err vernunftzentrum.de 70 1diff --git a/fiche.h b/fiche.h /ckeen/repos/fiche/file/fiche.h.gph vernunftzentrum.de 70 i@@ -0,0 +1,46 @@ Err vernunftzentrum.de 70 i+/* Err vernunftzentrum.de 70 i+Fiche - terminal pastebin Err vernunftzentrum.de 70 i+*/ Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+#ifndef FICHE_H Err vernunftzentrum.de 70 i+#define FICHE_H Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+#include Err vernunftzentrum.de 70 i+#include Err vernunftzentrum.de 70 i+#include Err vernunftzentrum.de 70 i+#include Err vernunftzentrum.de 70 i+#include Err vernunftzentrum.de 70 i+#include Err vernunftzentrum.de 70 i+#include Err vernunftzentrum.de 70 i+#include Err vernunftzentrum.de 70 i+#include Err vernunftzentrum.de 70 i+#include Err vernunftzentrum.de 70 i+#include Err vernunftzentrum.de 70 i+#include Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+int BUFSIZE = 8192; Err vernunftzentrum.de 70 i+int QUEUE_SIZE = 100; Err vernunftzentrum.de 70 i+int PORT = 9999; Err vernunftzentrum.de 70 i+int SLUG_SIZE = 4; Err vernunftzentrum.de 70 i+char *BASEDIR; Err vernunftzentrum.de 70 i+char DOMAIN[128] = "http://localhost/"; Err vernunftzentrum.de 70 i+const char *symbols = "abcdefghijklmnopqrstuvwxyz0123456789"; Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+int create_socket(); Err vernunftzentrum.de 70 i+int create_directory(char *slug); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+void bind_to_port(int listen_socket, struct sockaddr_in serveraddr); Err vernunftzentrum.de 70 i+void display_line(){printf("====================================\n");} Err vernunftzentrum.de 70 i+void error(){perror("ERROR"); exit(1);} Err vernunftzentrum.de 70 i+void display_date(); Err vernunftzentrum.de 70 i+void get_client_address(struct sockaddr_in client_address); Err vernunftzentrum.de 70 i+void perform_connection(int listen_socket); Err vernunftzentrum.de 70 i+void generate_url(char *buffer, char *slug); Err vernunftzentrum.de 70 i+void save_to_file(char *buffer, char *slug); Err vernunftzentrum.de 70 i+void startup_message(); Err vernunftzentrum.de 70 i+void set_basedir(); Err vernunftzentrum.de 70 i+void parse_parameters(int argc, char **argv); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+struct sockaddr_in set_address(struct sockaddr_in serveraddr); Err vernunftzentrum.de 70 i+ Err vernunftzentrum.de 70 i+#endif Err vernunftzentrum.de 70 i+\ No newline at end of file Err vernunftzentrum.de 70 .